#property copyright "Copyright © 2009, FXPROMaker Trading Solutions, http://www.fxpromaker.com" #property link "http://www.fxpromaker.com" #import "mtd.dll" void Define(int a0, double a1, double a2, double& a3[], double& a4[], double& a5[], double& a6[], int a7, int a8, double a9, double a10, int& a11[], int& a12[], int& a13[], int& a14[], int& a15[], int& a16[], double& a17[], double& a18[], double& a19[], double& a20[], double& a21[], double& a22[]); void Calculate(bool& a0[], bool& a1[], bool& a2[], double& a3[], double& a4[], int& a5[], int& a6[], int& a7[], int& a8[], int& a9[], int& a10[], int& a11[], int& a12[], int& a13[], double a14, double a15, double a16, int a17); void Condition(int& a0[], int& a1[], int& a2[], int& a3[], int& a4[], int& a5[], int& a6[], int& a7[], int& a8[], int& a9[], double& a10[], double& a11[], double& a12[], double& a13[], double& a14[], double& a15[], double& a16[], double& a17[], double& a18[], double& a19[], double& a20[], double& a21[], double& a22[], double& a23[], double& a24[], double& a25[], double& a26[], double& a27[], int& a28[], double a29, double a30, double a31, double a32, double a33, double a34, double a35, double a36, double a37, int a38, int a39); #import int gi_76 = 9; int gi_80 = 26; int gi_84 = 52; bool gi_88 = TRUE; int gi_92 = 2; bool gi_96; bool gi_100; int gi_104; int gi_108 = 1; extern double StartLots = 0.1; double gd_120 = 0.0; double gd_128 = 0.0; extern bool Compounding = FALSE; extern int CompoundEach = 1800; extern int Risk = 1; double gd_148 = 0.0; int gi_156 = 2; int g_spread_160; int g_spread_164; int gia_168[] = {0}; int gia_172[] = {0}; int gia_176[] = {0}; int gia_180[] = {0}; double gda_184[] = {0}; double gda_188[] = {0}; double gda_192[] = {0}; int g_datetime_196 = 0; bool gba_200[] = {1}; extern int Magic = 98765; double gda_208[] = {10}; double gda_212[] = {20}; int gia_216[] = {0}; double gda_220[] = {0}; int g_ticket_224 = 0; int g_magic_228 = 171819; double gda_232[] = {0}; double gda_236[] = {0}; bool gba_240[] = {0}; bool gba_244[] = {0}; extern bool CloseAllNow = FALSE; int gi_252 = D'01.01.2008 03:30'; int gi_256 = D'04.10.2009 04:30'; string gs_260 = "This version is expired. Visit www.fxpromaker.com"; string gs_268 = "This EA does not trade from December, 20 till January, 7"; string gs_276 = "Invalid Account. Visit www.fxpromaker.com"; string gs_284 = "We recommend you to trade on NZDUSD only"; string gs_292 = "Set \"Allow DLL Imports\""; int CalculateCurrentOrders(string as_unused_0) { int l_count_8 = 0; int l_count_12 = 0; int l_ord_total_16 = OrdersTotal(); for (int l_pos_20 = 0; l_pos_20 < l_ord_total_16; l_pos_20++) { if (OrderSelect(l_pos_20, SELECT_BY_POS, MODE_TRADES) == FALSE) break; if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if (OrderType() == OP_BUY) l_count_8++; if (OrderType() == OP_SELL) l_count_12++; } } if (l_count_8 > 0) return (l_count_8); return (-l_count_12); } void CheckForSignals() { double l_ichimoku_4; double l_ichimoku_12; double lda_36[5]; for (int li_0 = 1; li_0 <= Bars - 1; li_0++) { l_ichimoku_4 = iIchimoku(NULL, 0, gi_76, gi_80, gi_84, MODE_CHINKOUSPAN, li_0); l_ichimoku_12 = iIchimoku(NULL, 0, gi_76, gi_80, gi_84, MODE_CHINKOUSPAN, li_0 + 1); if (l_ichimoku_4 >= Open[1] && l_ichimoku_12 <= Open[1] || l_ichimoku_4 <= Open[1] && l_ichimoku_12 >= Open[1]) break; } double l_ichimoku_20 = iIchimoku(NULL, 0, gi_76, gi_80, gi_84, MODE_SENKOUSPANA, li_0); double l_ichimoku_28 = iIchimoku(NULL, 0, gi_76, gi_80, gi_84, MODE_SENKOUSPANA, li_0); for (li_0 = gi_108; li_0 <= gi_108 + gi_92; li_0++) lda_36[li_0] = iIchimoku(NULL, 0, gi_76, gi_80, gi_84, MODE_SENKOUSPANB, li_0); gi_96 = FALSE; if (Open[gi_108 + gi_92] < lda_36[gi_108 + gi_92] && Close[gi_108 + gi_92] < lda_36[gi_108 + gi_92]) { gi_96 = TRUE; if (gi_88 && l_ichimoku_4 <= l_ichimoku_28 && l_ichimoku_4 >= l_ichimoku_20 && l_ichimoku_20 < l_ichimoku_28) gi_96 = FALSE; else { for (li_0 = gi_108; li_0 < gi_108 + gi_92; li_0++) if (Open[li_0] >= Close[li_0] || Open[li_0] < lda_36[li_0]) gi_96 = FALSE; } } gi_100 = FALSE; if (Open[gi_108 + gi_92] < lda_36[gi_108 + gi_92] && Close[gi_108 + gi_92] < lda_36[gi_108 + gi_92]) { gi_100 = TRUE; for (li_0 = gi_108; li_0 < gi_108 + gi_92; li_0++) if (Open[li_0] <= Close[li_0] || Open[li_0] > lda_36[li_0]) gi_100 = FALSE; } } void CheckForOpen() { if (gi_100 && gi_104 != -1) { gi_104 = -1; return; } if (gi_96 && gi_104 != 1) { gi_104 = 1; return; } } void Refresh() { gia_168[0] = TimeCurrent(); gia_172[0] = Hour(); gia_176[0] = gia_168[0] - 3600 * gia_172[0] - 60 * Minute() - Seconds(); g_spread_164 = MarketInfo(Symbol(), MODE_SPREAD); if (g_spread_160 != g_spread_164) { Print("Spread was changed. OldSpread=", g_spread_160, "CurSpread=", g_spread_164); g_spread_160 = g_spread_164; } } void dayRange() { gia_180[0] = iBarShift(NULL, 0, gia_176[0], FALSE); int li_0 = gia_180[0] + 1; gda_184[0] = iHigh(NULL, 0, iHighest(NULL, 0, MODE_HIGH, li_0, 0)); gda_188[0] = iLow(NULL, 0, iLowest(NULL, 0, MODE_LOW, li_0, 0)); } void Profits() { gd_148 = 0; for (int l_pos_0 = OrdersTotal() - 1; l_pos_0 >= 0; l_pos_0--) { OrderSelect(l_pos_0, SELECT_BY_POS, MODE_TRADES); if (StringSubstr(OrderSymbol(), 0, 6) == StringSubstr(Symbol(), 0, 6) && OrderMagicNumber() == Magic) gd_148 += OrderProfit(); } } void SetCloseAllNow() { for (int l_pos_0 = OrdersTotal() - 1; l_pos_0 >= 0; l_pos_0--) { OrderSelect(l_pos_0, SELECT_BY_POS, MODE_TRADES); if (StringSubstr(OrderSymbol(), 0, 6) == StringSubstr(Symbol(), 0, 6) && OrderMagicNumber() == Magic) { if (OrderType() == OP_BUY || OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE); if (OrderType() != OP_BUY && OrderType() != OP_SELL) OrderDelete(OrderTicket()); } } } int init() { if (!IsDemo() && !IsTesting()) Alert(gs_276); if (StringSubstr(Symbol(), 0, 6) != "NZDUSD") Alert(gs_284); if (!IsDllsAllowed()) { Alert(gs_292); return (0); } Comment(" "); g_spread_160 = MarketInfo(Symbol(), MODE_SPREAD); return (0); } int start() { string ls_unused_172; string ls_unused_180; string ls_unused_608; int l_file_760; int l_datetime_764; double lda_768[10]; double lda_824[10]; if (!IsDemo() && !IsTesting()) { Comment(gs_276); return (-1); } if (StringSubstr(Symbol(), 0, 6) != "NZDUSD") { Comment(gs_284); return (-1); } if (!IsDllsAllowed()) { Comment(gs_292); return (-1); } if (CloseAllNow == TRUE) { SetCloseAllNow(); return (0); } double l_imacd_0 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 0); double l_imacd_8 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 1); double l_imacd_16 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 0); double l_imacd_24 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 1); double l_imacd_32 = iMACD(NULL, PERIOD_H4, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 0); double l_imacd_40 = iMACD(NULL, PERIOD_H4, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 1); double l_imacd_48 = iMACD(NULL, PERIOD_H4, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 0); double l_imacd_56 = iMACD(NULL, PERIOD_H4, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 1); double l_imacd_64 = iMACD(NULL, PERIOD_H4, 3, 13, 4, PRICE_CLOSE, MODE_MAIN, 0); double l_imacd_72 = iMACD(NULL, PERIOD_H4, 3, 13, 4, PRICE_CLOSE, MODE_SIGNAL, 0); double l_ima_80 = iMA(NULL, PERIOD_H4, 26, 0, MODE_EMA, PRICE_CLOSE, 0); double l_ima_88 = iMA(NULL, PERIOD_H4, 26, 0, MODE_EMA, PRICE_CLOSE, 1); double l_ima_96 = iMA(NULL, PERIOD_H4, 26, 0, MODE_LWMA, PRICE_CLOSE, 2); double l_ima_104 = iMA(NULL, PERIOD_H4, 6, 0, MODE_EMA, PRICE_CLOSE, 0); double l_ima_112 = iMA(NULL, PERIOD_H4, 6, 1, MODE_EMA, PRICE_CLOSE, 1); double l_ima_120 = iMA(NULL, PERIOD_H4, 6, 2, MODE_EMA, PRICE_CLOSE, 2); double l_ima_128 = iMA(NULL, PERIOD_H4, 14, 0, MODE_SMA, PRICE_MEDIAN, 0); double l_ima_136 = iMA(NULL, PERIOD_H4, 14, 0, MODE_SMA, PRICE_MEDIAN, 1); double l_ima_144 = iMA(NULL, PERIOD_H4, 14, 0, MODE_SMA, PRICE_MEDIAN, 2); double ld_152 = 0; double ld_160 = 1; int li_unused_188 = 1; double ld_192 = 0.0001; double ld_unused_200 = 0.0; int li_unused_208 = 20; int li_unused_212 = 100; int li_unused_216 = 10; int li_unused_220 = 50; int li_unused_224 = 5000; int li_unused_228 = 0; int li_unused_232 = 0; int li_unused_236 = 24; bool li_240 = TRUE; bool li_244 = TRUE; int li_unused_248 = 1; int li_unused_252 = 1; int li_unused_256 = 1; bool li_260 = TRUE; bool li_264 = TRUE; bool li_268 = TRUE; int li_unused_272 = 1; int li_unused_276 = 1; int li_unused_280 = 10; int li_unused_284 = 3; int li_unused_288 = 3; int li_unused_292 = 4; int li_unused_296 = 3; int li_unused_300 = 3; int li_unused_304 = 5; int li_unused_308 = 5; int li_unused_312 = 3; int li_unused_316 = 5; int li_unused_320 = 4; bool li_324 = TRUE; int li_328 = 2; int li_unused_332 = 3; int li_unused_336 = 4; int li_340 = 5; int li_344 = 6; int li_348 = 7; int li_352 = 8; int li_356 = 9; int li_360 = 10; int li_unused_364 = 11; int li_368 = 12; int li_unused_372 = 13; int li_unused_376 = 14; int li_unused_380 = 15; int li_384 = 16; int li_unused_388 = 1; double ld_unused_392 = 15.0; double ld_unused_400 = 20.0; double ld_unused_408 = 50.0; bool li_416 = FALSE; int li_unused_420 = 0; int li_unused_424 = 0; int li_unused_428 = 0; int li_unused_452 = 0; int li_unused_456 = 1; int li_unused_460 = 0; bool li_476 = FALSE; bool li_480 = FALSE; double ld_unused_484 = 0.0; double ld_unused_492 = 1000.0; int li_unused_516 = 0; int li_unused_520 = 0; int li_unused_524 = 0; int li_unused_528 = 0; int li_unused_532 = 0; double ld_unused_552 = 0.0; int li_unused_604 = 0; int lia_616[] = {0}; int lia_620[] = {0}; lia_620[0] = Period(); int lia_624[] = {0}; int lia_628[] = {0}; int lia_632[] = {0}; int lia_636[] = {0}; int lia_640[] = {0}; int lia_644[] = {0}; double lda_648[] = {0}; double lda_652[] = {0}; double lda_656[] = {0}; double lda_660[] = {0}; double lda_664[] = {0}; double lda_668[] = {0}; double lda_672[] = {0}; double lda_676[] = {0}; double lda_680[] = {0}; double lda_684[] = {0}; double lda_696[] = {0}; double lda_700[] = {0}; int lia_704[] = {0}; int lia_708[] = {0}; int lia_712[] = {0}; double lda_716[] = {0}; double lda_720[] = {0}; double lda_724[] = {0}; double lda_728[] = {0}; int lia_732[] = {0}; int lia_736[] = {0}; int li_740 = 0; int li_744 = 20; int li_748 = 100; int li_752 = 2000; int l_slippage_756 = 10; if (Digits == 5 && StringSubstr(Symbol(), 0, 6) == "NZDUSD") l_slippage_756 = 100; Profits(); if (!IsTesting()) { l_datetime_764 = TimeCurrent(); if (gda_208[0] == 10.0 && gda_212[0] == 20.0) { l_file_760 = FileOpen("ddata.dat", FILE_BIN|FILE_READ); if (l_file_760 > 0) { FileReadArray(l_file_760, lda_768, 0, 10); FileClose(l_file_760); } if (l_datetime_764 - lda_768[9] <= 1800.0 || (TimeDayOfWeek(lda_768[9]) >= 5 && TimeDayOfWeek(l_datetime_764) <= 1)) { gda_208[0] = lda_768[4]; gda_212[0] = lda_768[5]; gia_216[0] = lda_768[6]; gda_220[0] = lda_768[8]; g_datetime_196 = lda_768[9]; gba_200[0] = 0; } else { gba_200[0] = 1; SetCloseAllNow(); } } else { if (l_datetime_764 - g_datetime_196 > 1800) { if (TimeDayOfWeek(lda_768[9]) < 5 || TimeDayOfWeek(l_datetime_764) > 1) { gba_200[0] = 1; SetCloseAllNow(); } } } } CheckForSignals(); for (int l_pos_772 = 0; l_pos_772 < OrdersTotal(); l_pos_772++) { OrderSelect(l_pos_772, SELECT_BY_POS, MODE_TRADES); if (StringSubstr(OrderSymbol(), 0, 6) == StringSubstr(Symbol(), 0, 6) && OrderMagicNumber() == Magic) Define(OrderType(), OrderLots(), OrderOpenPrice(), lda_716, lda_720, lda_724, lda_728, NormalizeDouble(StrToDouble(OrderComment()), 0), OrderTicket(), OrderTakeProfit(), OrderStopLoss(), lia_704, lia_708, lia_624, lia_628, lia_640, lia_644, lda_656, lda_660, lda_676, lda_672, lda_684, lda_680); } if (CalculateCurrentOrders(Symbol()) == 0) CheckForOpen(); Refresh(); int li_unused_776 = 0; int li_unused_780 = 0; if (g_ticket_224 > 0) { if (OrderSelect(g_ticket_224, SELECT_BY_TICKET) == TRUE) { if (StringFind(OrderComment(), "[sl]") != -1) li_unused_776 = 1; if (StringFind(OrderComment(), "[tp]") != -1) li_unused_780 = 1; } else Alert("OrderSelect() error - ", GetLastError()); } int lia_784[] = {0}; int lia_788[] = {0}; int lia_792[] = {0}; if (Period() < li_744) lia_792[0] = Time[3]; else { if (Period() > li_752) lia_792[0] = Time[0]; else { if (Period() <= li_748) lia_792[0] = Time[2]; else lia_792[0] = Time[1]; } } if (High[0] > High[1] && High[1] > High[2] && High[2] > High[3] && Open[0] > Open[1] && Open[1] > Open[2] && Open[2] > Open[3] && lia_792[0] > Time[2]) lia_784[0] = 1; if (High[0] < High[1] && High[1] < High[2] && High[2] < High[3] && Open[0] < Open[1] && Open[1] < Open[2] && Open[2] < Open[3] && lia_792[0] < Time[1]) lia_788[0] = 1; Calculate(gba_200, gba_240, gba_244, gda_208, gda_212, lia_792, lia_784, lia_788, gia_216, lia_624, lia_628, gia_168, gia_172, gia_176, Bid, Ask, Point, Digits); double l_lotstep_796 = MarketInfo(Symbol(), MODE_LOTSTEP); double l_minlot_804 = MarketInfo(Symbol(), MODE_MINLOT); int li_812 = 1300; if (Risk != 1) li_812 = 950; if (l_lotstep_796 == 0.1) gi_156 = TRUE; if (Compounding == TRUE) { gd_128 = NormalizeDouble(l_lotstep_796 * MathFloor(AccountBalance() * StartLots / (CompoundEach * l_lotstep_796)), gi_156); li_812 = MathCeil(10 * li_812 * gd_128); } else gd_128 = StartLots; if (gd_128 < l_minlot_804) Alert("Minimal lotsize you can open with this broker is ", NormalizeDouble(l_minlot_804, gi_156)); gd_120 = gd_128; dayRange(); if (lia_624[0] != lia_628[0]) { if (lia_624[0] > lia_628[0]) OrderSelect(lia_624[0], SELECT_BY_TICKET, MODE_TRADES); if (lia_624[0] < lia_628[0]) OrderSelect(lia_628[0], SELECT_BY_TICKET, MODE_TRADES); if (StringSubstr(OrderSymbol(), 0, 6) == StringSubstr(Symbol(), 0, 6) && OrderMagicNumber() == Magic) { if (OrderType() == OP_BUY) { if ((li_240 && NormalizeDouble(StrToDouble(OrderComment()), 0) == li_324 && l_imacd_0 > 0.0 && l_imacd_0 < l_imacd_16 && l_imacd_8 > l_imacd_24 && l_imacd_0 > ld_152 * ld_192 && Bid - OrderOpenPrice() >= 1.0 * ld_192) || (NormalizeDouble(StrToDouble(OrderComment()), 0) != li_348 && NormalizeDouble(StrToDouble(OrderComment()), 0) != li_352 && NormalizeDouble(StrToDouble(OrderComment()), 0) != li_360 && TimeCurrent() - OrderOpenTime() > 1500 && iLow(NULL, PERIOD_M15, 1) > OrderOpenPrice() && Low[2] >= Low[1] && Bid < Low[1] - 3.0 * ld_192 && Bid - OrderOpenPrice() <= 2.0 * ld_192 && Bid - OrderOpenPrice() >= 0.0 * ld_192) || (!li_244 && NormalizeDouble(StrToDouble(OrderComment()), 0) == li_328 && l_imacd_32 > 0.0 && l_imacd_32 < l_imacd_48 && l_imacd_40 > l_imacd_56 && l_imacd_32 > ld_160 * ld_192) || (li_260 && NormalizeDouble(StrToDouble(OrderComment()), 0) == li_348 && l_imacd_64 <= l_imacd_72 && Bid > OrderOpenPrice() + 1.0 * ld_192) || (li_260 && NormalizeDouble(StrToDouble(OrderComment()), 0) == li_348 && Bid > OrderOpenPrice() + 15.0 * ld_192) || (li_264 && NormalizeDouble(StrToDouble(OrderComment()), 0) == li_352 && l_ima_120 < l_ima_96 && l_ima_112 > l_ima_88 && l_ima_104 > l_ima_80) || (li_264 && NormalizeDouble(StrToDouble(OrderComment()), 0) == li_352 && l_imacd_64 <= l_imacd_72 && Bid > OrderOpenPrice() + 1.0 * ld_192) || (li_264 && NormalizeDouble(StrToDouble(OrderComment()), 0) == li_352 && Bid > l_ima_80 && iLow(NULL, PERIOD_H4, 0) < l_ima_80 && l_ima_80 < OrderOpenPrice() - 4.0 * ld_192 && l_imacd_64 < 0.0) || (li_268 && NormalizeDouble(StrToDouble(OrderComment()), 0) == li_360 && l_imacd_64 <= l_imacd_72 && Bid > OrderOpenPrice() + 1.0 * ld_192 && OrderProfit() > 1.0) || (NormalizeDouble(StrToDouble(OrderComment()), 0) == li_324 && OrdersTotal() > 0 && Bid <= iHigh(NULL, PERIOD_M5, 0) - 3.0 * ld_192 && Bid - OrderOpenPrice() >= 10.0 * ld_192 && Bid - OrderOpenPrice() <= 20.0 * ld_192) || li_416 == TRUE || (NormalizeDouble(StrToDouble(OrderComment()), 0) == li_340 && Bid <= High[0] - 3.0 * ld_192 && Bid - OrderOpenPrice() >= 7.0 * ld_192 && Bid - OrderOpenPrice() <= 100.0 * ld_192) || (NormalizeDouble(StrToDouble(OrderComment()), 0) == li_344 && Bid <= iHigh(NULL, PERIOD_M5, 0) - 3.0 * ld_192 && Bid - OrderOpenPrice() >= 10.0 * ld_192 && Bid - OrderOpenPrice() <= 20.0 * ld_192) || (NormalizeDouble(StrToDouble(OrderComment()), 0) == li_348 && OrdersTotal() >= 1 && Bid <= iHigh(NULL, PERIOD_H4, 0) - 5.0 * ld_192 && Bid - OrderOpenPrice() >= 10.0 * ld_192 && Bid - OrderOpenPrice() <= 80.0 * ld_192) || (NormalizeDouble(StrToDouble(OrderComment()), 0) == li_352 && Bid <= iHigh(NULL, PERIOD_H4, 0) - 3.0 * ld_192 && Bid - OrderOpenPrice() >= 10.0 * ld_192 && Bid - OrderOpenPrice() <= 20.0 * ld_192 && OrderProfit() > 1.0) || (li_268 && NormalizeDouble(StrToDouble(OrderComment()), 0) == li_360 && Bid <= iHigh(NULL, PERIOD_H4, 0) - 4.0 * ld_192 && Bid - OrderOpenPrice() >= 9.0 * ld_192 && Bid - OrderOpenPrice() <= 15.0 * ld_192 && OrderProfit() > 1.0) || (NormalizeDouble(StrToDouble(OrderComment()), 0) == li_348 && li_476 && iOpen(NULL, PERIOD_H1, 0) < l_ima_128) || (NormalizeDouble(StrToDouble(OrderComment()), 0) == li_368 && iHigh(NULL, 0, 2) < l_ima_128 && l_ima_136 < l_ima_144 && Bid > OrderOpenPrice())) lia_616[0] = 1; } } if (OrderType() == OP_SELL) { if ((li_240 && NormalizeDouble(StrToDouble(OrderComment()), 0) == li_324 && l_imacd_0 < 0.0 && l_imacd_0 > l_imacd_16 && l_imacd_8 < l_imacd_24 && MathAbs(l_imacd_0) > ld_152 * ld_192 && OrderOpenPrice() - Ask >= 1.0 * ld_192) || (NormalizeDouble(StrToDouble(OrderComment()), 0) != li_384 && NormalizeDouble(StrToDouble(OrderComment()), 0) != li_348 && NormalizeDouble(StrToDouble(OrderComment()), 0) != li_352 && NormalizeDouble(StrToDouble(OrderComment()), 0) != li_360 && TimeCurrent() - OrderOpenTime() > 1500 && High[2] <= High[1] && High[1] < OrderOpenPrice() && Bid > High[1] + 3.0 * ld_192 && OrderOpenPrice() - Ask <= 2.0 * ld_192 && OrderOpenPrice() - Ask >= 0.0 * ld_192) || (!li_244 && NormalizeDouble(StrToDouble(OrderComment()), 0) == li_328 && l_imacd_32 < 0.0 && l_imacd_32 > l_imacd_48 && l_imacd_40 < l_imacd_56 && MathAbs(l_imacd_32) > ld_160 * ld_192) || (li_260 && NormalizeDouble(StrToDouble(OrderComment()), 0) == li_348 && l_imacd_64 >= l_imacd_72 && Ask < OrderOpenPrice() - 1.0 * ld_192) || (li_260 && NormalizeDouble(StrToDouble(OrderComment()), 0) == li_348 && Ask < OrderOpenPrice() - 15.0 * ld_192) || (li_264 && NormalizeDouble(StrToDouble(OrderComment()), 0) == li_356 && l_ima_120 > l_ima_96 && l_ima_112 < l_ima_88 && l_ima_104 < l_ima_80) || (li_264 && NormalizeDouble(StrToDouble(OrderComment()), 0) == li_356 && l_imacd_64 >= l_imacd_72 && Ask < OrderOpenPrice() - 1.0 * ld_192) || (li_264 && NormalizeDouble(StrToDouble(OrderComment()), 0) == li_356 && Bid < l_ima_80 && iHigh(NULL, PERIOD_H4, 0) > l_ima_80 && l_ima_80 > OrderOpenPrice() + 4.0 * ld_192 && l_imacd_64 > 0.0) || (li_268 && NormalizeDouble(StrToDouble(OrderComment()), 0) == li_360 && l_imacd_64 >= l_imacd_72 && Ask < OrderOpenPrice() - 1.0 * ld_192 && OrderProfit() > 1.0) || (NormalizeDouble(StrToDouble(OrderComment()), 0) == li_324 && Bid > iLow(NULL, PERIOD_M5, 0) + 3.0 * ld_192 && OrderOpenPrice() - Ask >= 10.0 * ld_192 && OrderOpenPrice() - Ask <= 20.0 * ld_192) || (NormalizeDouble(StrToDouble(OrderComment()), 0) == li_344 && Bid > iLow(NULL, PERIOD_M5, 0) + 3.0 * ld_192 && OrderOpenPrice() - Ask >= 10.0 * ld_192 && OrderOpenPrice() - Ask <= 20.0 * ld_192) || li_416 == TRUE || (NormalizeDouble(StrToDouble(OrderComment()), 0) == li_340 && Ask > Low[0] + 3.0 * ld_192 && OrderOpenPrice() - Ask >= 7.0 * ld_192 && OrderOpenPrice() - Ask <= 100.0 * ld_192) || (NormalizeDouble(StrToDouble(OrderComment()), 0) == li_348 && OrdersTotal() >= 1 && Ask > iLow(NULL, PERIOD_H4, 0) + 5.0 * ld_192 && OrderOpenPrice() - Ask >= 10.0 * ld_192 && OrderOpenPrice() - Ask <= 80.0 * ld_192) || (NormalizeDouble(StrToDouble(OrderComment()), 0) == li_356 && Bid > iLow(NULL, PERIOD_H4, 0) + 3.0 * ld_192 && OrderOpenPrice() - Ask >= 10.0 * ld_192 && OrderOpenPrice() - Ask <= 20.0 * ld_192 && OrderProfit() > 1.0) || (NormalizeDouble(StrToDouble(OrderComment()), 0) == li_360 && Bid > iLow(NULL, PERIOD_H4, 0) + 4.0 * ld_192 && OrderOpenPrice() - Ask >= 9.0 * ld_192 && OrderOpenPrice() - Ask <= 15.0 * ld_192) || (NormalizeDouble(StrToDouble(OrderComment()), 0) == li_348 && li_480 && iOpen(NULL, PERIOD_H1, 0) > l_ima_128) || (NormalizeDouble(StrToDouble(OrderComment()), 0) == li_368 && iLow(NULL, 0, 2) > l_ima_128 && l_ima_136 > l_ima_144 && Ask < OrderOpenPrice())) lia_616[0] = 2; } } Condition(lia_616, lia_620, gia_180, gia_216, lia_628, lia_624, lia_732, lia_736, lia_708, lia_704, gda_208, gda_212, gda_220, lda_660, lda_656, lda_664, lda_696, lda_700, gda_232, gda_236, lda_668, lda_728, lda_724, lda_720, lda_716, gda_184, gda_188, gda_192, lia_712, Bid, Ask, Point, l_lotstep_796, l_minlot_804, gd_120, gd_128, StartLots, gd_148, Digits, li_812); double ld_816 = (g_spread_164 - 4.0 * MathPow(10, Digits - 4)) * Point; if ((TimeCurrent() >= gi_252 && TimeCurrent() <= gi_256) || lia_628[li_740] > 0 || lia_624[li_740] > 0) { if ((Month() > 1 && Month() < 12) || (Month() == 1 && Day() >= 7) || (Month() == 12 && Day() < 20)) { if (lia_732[li_740] == 1) { if (NormalizeDouble(lda_696[li_740] - lda_664[li_740], Digits) > g_spread_164 * Point) { g_ticket_224 = OrderSend(Symbol(), OP_SELLSTOP, NormalizeDouble(lda_668[li_740], gi_156), NormalizeDouble(lda_664[li_740], Digits), l_slippage_756, NormalizeDouble(lda_696[li_740], Digits), NormalizeDouble(lda_700[li_740] + ld_816, Digits), DoubleToStr(lia_712[li_740], 0), Magic, 0, CLR_NONE); if (g_ticket_224 > 0 && lia_644[li_740] > 0) OrderDelete(lia_644[li_740]); gda_220[li_740] = gda_208[li_740] - gda_212[li_740]; } } if (lia_736[li_740] == 1) { if (NormalizeDouble(lda_664[li_740] - lda_696[li_740], Digits) > g_spread_164 * Point) { g_ticket_224 = OrderSend(Symbol(), OP_BUYSTOP, NormalizeDouble(lda_668[li_740], gi_156), NormalizeDouble(lda_664[li_740], Digits), l_slippage_756, NormalizeDouble(lda_696[li_740], Digits), NormalizeDouble(lda_700[li_740] - ld_816, Digits), DoubleToStr(lia_712[li_740], 0), Magic, 0, CLR_NONE); if (g_ticket_224 > 0 && lia_640[li_740] > 0) OrderDelete(lia_640[li_740]); gda_220[li_740] = gda_208[li_740] - gda_212[li_740]; } } Comment("SMART_1.23_demo", "\n", AccountCompany(), "\n", "Balance: ", AccountBalance(), "\n", "Leverage: 1:", AccountLeverage(), "\n", "AccountStopoutLevel: ", AccountStopoutLevel(), "\n", Symbol(), "\n", "Spread: ", g_spread_164, "\n", "Time: ", Hour(), ":", Minute(), ":", Seconds()); } else Comment(gs_268); } else Comment(gs_260); if (!IsTesting()) { if (l_datetime_764 >= g_datetime_196 + 180) { lda_824[0] = Ask; lda_824[1] = Bid; lda_824[2] = lda_656[0]; lda_824[3] = lda_660[0]; lda_824[4] = gda_208[0]; lda_824[5] = gda_212[0]; lda_824[6] = gia_216[0]; lda_824[7] = gba_200[0]; lda_824[8] = gda_220[0]; lda_824[9] = l_datetime_764; g_datetime_196 = l_datetime_764; l_file_760 = FileOpen("ddata.dat", FILE_BIN|FILE_WRITE); if (l_file_760 > 0) { FileWriteArray(l_file_760, lda_824, 0, 10); FileClose(l_file_760); } } } for (l_pos_772 = 0; l_pos_772 < OrdersTotal(); l_pos_772++) { OrderSelect(l_pos_772, SELECT_BY_POS, MODE_TRADES); if (StringSubstr(OrderSymbol(), 0, 6) == StringSubstr(Symbol(), 0, 6) && OrderType() == OP_BUY && lia_624[li_740] != 0 && OrderMagicNumber() == Magic) { if (lia_624[li_740] > OrderTicket()) if (NormalizeDouble(lda_676[li_740], Digits) != NormalizeDouble(OrderTakeProfit(), Digits) || NormalizeDouble(lda_684[li_740], Digits) != NormalizeDouble(OrderStopLoss(), Digits)) OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(lda_684[li_740], Digits), NormalizeDouble(lda_676[li_740], Digits), 0, CLR_NONE); } if (StringSubstr(OrderSymbol(), 0, 6) == StringSubstr(Symbol(), 0, 6) && OrderType() == OP_SELL && lia_628[li_740] != 0 && OrderMagicNumber() == Magic) { if (lia_628[li_740] > OrderTicket()) if (NormalizeDouble(lda_672[li_740], Digits) != NormalizeDouble(OrderTakeProfit(), Digits) || NormalizeDouble(lda_680[li_740], Digits) != NormalizeDouble(OrderStopLoss(), Digits)) OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(lda_680[li_740], Digits), NormalizeDouble(lda_672[li_740], Digits), 0, CLR_NONE); } } double l_ord_open_price_828 = 0; double l_ord_open_price_836 = 0; for (l_pos_772 = 0; l_pos_772 < OrdersTotal(); l_pos_772++) { OrderSelect(l_pos_772, SELECT_BY_POS, MODE_TRADES); if (StringSubstr(OrderSymbol(), 0, 6) == StringSubstr(Symbol(), 0, 6) && OrderMagicNumber() == g_magic_228) { if (OrderType() == OP_BUYLIMIT) { lia_632[li_740] = OrderTicket(); l_ord_open_price_828 = OrderOpenPrice(); } if (OrderType() == OP_SELLLIMIT) { lia_636[li_740] = OrderTicket(); l_ord_open_price_836 = OrderOpenPrice(); } } } int li_844 = 60; int li_848 = 10; int li_852 = 30; int li_856 = 100; int li_860 = 25; if (lia_632[li_740] == 0 && lia_636[li_740] == 0) { if (lia_624[li_740] == 0 && lia_628[li_740] == 0) { if (gia_216[li_740] >= 0) { lda_664[li_740] = Ask - li_844 * MathPow(10, Digits - 4) * Point; lda_700[li_740] = lda_664[li_740] + li_860 * MathPow(10, Digits - 4) * Point; lda_696[li_740] = lda_664[li_740] - li_848 * MathPow(10, Digits - 4) * Point; OrderSend(Symbol(), OP_BUYLIMIT, NormalizeDouble(StartLots, gi_156), NormalizeDouble(lda_664[li_740], Digits), l_slippage_756, NormalizeDouble(lda_696[li_740], Digits), NormalizeDouble(lda_700[li_740], Digits), 0, g_magic_228, 0, CLR_NONE); return (0); } lda_664[li_740] = Bid + li_844 * MathPow(10, Digits - 4) * Point; lda_700[li_740] = lda_664[li_740] - li_860 * MathPow(10, Digits - 4) * Point; lda_696[li_740] = lda_664[li_740] + li_848 * MathPow(10, Digits - 4) * Point; OrderSend(Symbol(), OP_SELLLIMIT, NormalizeDouble(StartLots, gi_156), NormalizeDouble(lda_664[li_740], Digits), l_slippage_756, NormalizeDouble(lda_696[li_740], Digits), NormalizeDouble(lda_700[li_740], Digits), 0, g_magic_228, 0, CLR_NONE); return (0); } } if (lia_624[li_740] > 0 || lia_628[li_740] > 0) { if (lia_632[li_740] > 0) OrderDelete(lia_632[li_740]); if (lia_636[li_740] > 0) OrderDelete(lia_636[li_740]); return (0); } if (lia_632[li_740] > 0 && Ask - l_ord_open_price_828 <= li_852 * MathPow(10, Digits - 4) * Point || Ask - l_ord_open_price_828 >= li_856 * MathPow(10, Digits - 4) * Point) OrderDelete(lia_632[li_740]); if (lia_636[li_740] > 0 && (-Bid) + l_ord_open_price_836 <= li_852 * MathPow(10, Digits - 4) * Point || (-Bid) + l_ord_open_price_836 >= li_856 * MathPow(10, Digits - 4) * Point) OrderDelete(lia_636[li_740]); return (0); }