疑似作假用的
extern int Pips = 10; extern double Lots = 0.1; int 历史文件; bool 读取成功 = TRUE; bool gi_96 = FALSE ; int gi_100 = 999999; int gi_104 = 0; int gi_108; int gi_112 = 0; int gi_116 = 0; double gd_120; int GetTime(int ai_0) { FileSeek(历史文件, ai_0 + 148, SEEK_SET); int li_4 = FileReadInteger(历史文件); return (li_4); } int FindTimePlace(int 时刻) { int li_4; int li_8; int li_12 = 0; int li_16 = FileSize(历史文件) - 148 - 44; int li_20 = GetTime(li_12); int li_24 = GetTime(li_16); while (li_20 < 时刻 && 时刻 < li_24) { li_8 = (li_12 + li_16) / 2; li_8 -= li_8 % 44; if (li_8 == li_12) break; li_4 = GetTime(li_8); if (时刻 >= li_4) { li_12 = li_8; li_20 = GetTime(li_12); } else { li_16 = li_8; li_24 = GetTime(li_16); } } if (时刻 <= li_24) { FileSeek(历史文件, li_12 + 148, SEEK_SET); return (1); } return (0); } void init() { 历史文件 = FileOpenHistory(Symbol() + Period() + ".hst", FILE_BIN | FILE_READ); if (历史文件 > 0) 读取成功 = TRUE; else { 读取成功 = FALSE; return; } 读取成功 = FindTimePlace(Time[0]); if (!读取成功) FileClose(历史文件); } void deinit() { if (读取成功) FileClose(历史文件); } int GetPrices(int &ai_0, int &ai_4, int &ai_8) { ai_0 = FileReadInteger(历史文件); FileSeek(历史文件, 8, SEEK_CUR); ai_4 = FileReadDouble(历史文件) / Point + 0.1; ai_8 = FileReadDouble(历史文件) / Point + 0.1; FileSeek(历史文件, 16, SEEK_CUR); if (FileTell(历史文件) + 44 <= FileSize(历史文件)) return (1); return (0); } int GetTimeTrade(double &ad_0) { int li_8; int li_12; int li_16; while (true) { if (!GetPrices(li_8, li_12, li_16)) return (-1); if (gi_96) { if (li_16 > gi_104) { gi_104 = li_16; gi_108 = li_8; continue; } if (gi_104 - li_12 < Pips) continue; gi_96 = FALSE; gi_100 = li_12; ad_0 = gi_104 * Point; } else { if (li_12 < gi_100) { gi_100 = li_12; gi_108 = li_8; continue; } if (li_16 - gi_100 < Pips) continue; gi_96 = TRUE; gi_104 = li_16; ad_0 = gi_100 * Point; } break; } int li_ret_20 = gi_108; gi_108 = li_8; return (li_ret_20); } void CloseOrder(int a_ticket_0) { OrderSelect(a_ticket_0, SELECT_BY_TICKET); if (OrderType() == OP_BUY) { OrderClose(a_ticket_0, OrderLots(), Bid, 0); return; } OrderClose(a_ticket_0, OrderLots(), Ask, 0); } int ReverseOrder(int a_ticket_0) { if (a_ticket_0 == 0) a_ticket_0 = OrderSend(Symbol(), OP_BUY, Lots, Ask, 0, 0, 0); else { OrderSelect(a_ticket_0, SELECT_BY_TICKET); if (OrderType() == OP_BUY) { OrderClose(a_ticket_0, OrderLots(), Bid, 0); a_ticket_0 = OrderSend(Symbol(), OP_SELL, Lots, Bid, 0, 0, 0); } else { OrderClose(a_ticket_0, OrderLots(), Ask, 0); a_ticket_0 = OrderSend(Symbol(), OP_BUY, Lots, Ask, 0, 0, 0); } } return (a_ticket_0); } void System() { if (gi_116 == 0) gi_116 = GetTimeTrade(gd_120); else if (gi_116 < 0) return; if (Time[0] == gi_116) { if (NormalizeDouble(Bid - gd_120, Digits) == 0.0) { gi_116 = GetTimeTrade(gd_120); if (gi_116 < 0) { CloseOrder(gi_112); return; } gi_112 = ReverseOrder(gi_112); } } } void start() { if (读取成功) { System(); return; } }
发表评论