#property copyright "Profit" #property link "Profit" extern bool Thunder_1 = TRUE; extern bool Thunder_2 = TRUE; extern bool Thunder_3 = TRUE; extern bool Thunder_4 = TRUE; extern int Hour_Start_Trade = 22; extern int Hour_Stop_Trade = 5; extern double Lots = 0.1; extern double max_lot = 100.0; extern bool LotsOptimized = TRUE; extern int LotDecimal = 1; extern int Risk = 50; extern int MaxTrades = 5; extern double mypoint = 0.0001; extern bool Virtual_TP = TRUE; extern bool Fractal_SL = TRUE; extern double StopLoss = 32.0; extern double TakeProfit = 6.0; extern int slippage = 3; extern double MaxSpread = 4.0; extern int FractalRange = 32; extern int ATR_Level = 15; extern int PriceFromFractal = 3; extern bool Time_Protection = TRUE; extern int MagicNumber1 = 371443; extern int MagicNumber2 = 3714431; extern int MagicNumber3 = 3714432; extern int MagicNumber4 = 3714433; string gs_208; int gi_216 = 60; int gi_220 = 3; int gi_224 = 140; int gi_228 = 2; int gi_232 = 170; int gi_236 = 1; int gi_240 = 200; int gi_244 = 1; int gi_248 = 240; int gi_252 = 4; extern bool Volatility_Filter = TRUE; extern double sec = 0.001; extern double se2c = 0.001; extern double se3c = 0.0012; int gi_284 = 55; bool gi_288 = TRUE; bool gi_292 = TRUE; bool gi_296 = TRUE; bool gi_300 = TRUE; bool gi_304 = TRUE; bool gi_308 = TRUE; bool gi_312 = TRUE; bool gi_316 = TRUE; double g_minlot_320 = 0.0; double g_maxlot_328 = 0.0; int g_lotsize_336 = 0; int g_leverage_340 = 0; double g_lots_344; double g_lots_352; int gi_360 = 0; int g_count_364 = 0; int g_count_368 = 0; int g_count_372 = 0; int g_count_376 = 0; int g_count_380 = 0; int gi_384 = 0; int gi_388 = 0; int gi_392 = 0; int gi_396 = 0; int gi_400 = 0; int gi_404 = 0; int gi_408 = 0; int gi_412 = 0; int gi_416 = 0; int gi_420 = 0; double g_ord_open_price_424 = 0.0; double g_ord_open_price_432 = 0.0; double g_ord_open_price_440 = 0.0; double g_ord_open_price_448 = 0.0; double g_ord_open_price_456 = 0.0; double g_ord_open_price_464 = 0.0; double g_ord_open_price_472 = 0.0; double g_ord_open_price_480 = 0.0; double g_ord_open_price_488 = 0.0; double g_ord_open_price_496 = 0.0; double g_price_520 = 0.0; double g_price_528 = 0.0; double g_ifractals_536; double g_ifractals_544; double gd_unused_552; double gd_unused_560; double g_ifractals_568; double g_ifractals_576; double gd_unused_584; double gd_unused_592; int gi_600 = 0; int gi_unused_604 = 0; double gd_608 = 0.0; int gi_616 = 0; string gs_best_620 = "Best"; bool gi_628 = FALSE; bool gi_632 = FALSE; double gd_636 = 0.0; double gd_644 = 0.0; double gd_652 = 0.0; double gd_660 = 0.0; double gd_668 = 0.0; double gd_676 = 0.0; double gd_684 = 0.0; double gd_692 = 0.0; double gd_700 = 0.0; double gd_708 = 0.0; double gd_716 = 0.0; double gd_724 = 0.0; double gd_732 = 0.0; double gd_740 = 0.0; double gd_748 = 0.0; double gd_756 = 0.0; int gi_unused_764 = 0; int gi_unused_768 = 0; int gi_unused_772 = 0; int gi_unused_776 = 0; int gi_unused_780 = 0; int gi_unused_784 = 0; int gi_unused_788 = 0; double gd_792 = 0.0; double gd_800 = 0.0; double gd_808 = 0.0; double gd_816 = 0.0; double gd_832 = 0.0; double gd_840 = 0.0; double gd_848 = 0.0; double gd_856 = 0.0; double gd_864 = 0.0; double gd_872 = 0.0; double gd_880 = 0.0; double gd_888 = 0.0; double gd_896 = 0.0; double gd_904 = 0.0; double gd_912 = 0.0; double gd_920 = 0.0; double gd_928 = 0.0; double gd_936 = 0.0; double gd_944 = 0.0; double gd_952 = 0.0; double gd_960 = 0.0; double gd_968 = 0.0; double gd_unused_976 = 0.0; double gd_unused_984 = 0.0; double gd_unused_992 = 0.0; double gd_1000 = 0.0; double gd_1008 = 0.0; double gd_1016 = 0.0; double gd_1024; double gd_1032 = 0.0; double gd_1040 = 0.0; double gd_1048 = 0.0; double gd_1056 = 0.0; double gd_1064 = 0.0; double gd_1072 = 0.0; double gd_1080 = 0.0; int init() { return (0); } int deinit() { return (0); } int start() { if (!IsDllsAllowed()) { gs_208 = "Warning: Wrong EA Settings => Please check \" AllowDLL Imports\" under Tools -> Options -> ExpertAdvisors."; Alert(gs_208); Print(gs_208); return; } HideTestIndicators(TRUE); findMyOrders(); onScreenComment(98); g_price_520 = TakeProfit; g_price_528 = 0; for (int li_0 = 1; li_0 < Bars; li_0++) { if (iFractals(NULL, PERIOD_M15, MODE_UPPER, li_0) != 0.0) { g_ifractals_536 = iFractals(NULL, PERIOD_M15, MODE_UPPER, li_0); gd_unused_560 = Time[li_0]; break; } } for (int li_4 = 1; li_4 < Bars; li_4++) { if (iFractals(NULL, PERIOD_M15, MODE_LOWER, li_4) != 0.0) { g_ifractals_544 = iFractals(NULL, PERIOD_M15, MODE_LOWER, li_4); gd_unused_552 = Time[li_4]; break; } } for (int li_8 = 1; li_8 < Bars; li_8++) { if (iFractals(NULL, PERIOD_H1, MODE_UPPER, li_8) != 0.0) { g_ifractals_568 = iFractals(NULL, PERIOD_H1, MODE_UPPER, li_8); gd_unused_592 = Time[li_8]; break; } } for (int li_12 = 1; li_12 < Bars; li_12++) { if (iFractals(NULL, PERIOD_H1, MODE_LOWER, li_12) != 0.0) { g_ifractals_576 = iFractals(NULL, PERIOD_H1, MODE_LOWER, li_12); gd_unused_584 = Time[li_4]; break; } } gi_600 = MathRound((g_ifractals_536 - g_ifractals_544) / mypoint); gi_unused_604 = MathRound((g_ifractals_568 - g_ifractals_576) / mypoint); gd_608 = 0; gd_608 = g_ifractals_536 - (g_ifractals_536 - g_ifractals_544) / 2.0; gi_616 = MathRound(iATR(Symbol(), PERIOD_M15, 4, 0) / mypoint); bool li_16 = FALSE; if (Close[0] <= g_ifractals_568 && Close[0] >= g_ifractals_576) li_16 = TRUE; g_count_364 = 0; g_count_368 = 0; g_count_372 = 0; g_count_376 = 0; g_count_380 = 0; gi_384 = 0.0; gi_388 = 0.0; gi_392 = 0.0; gi_396 = 0.0; gi_400 = 0.0; gi_404 = 0.0; gi_408 = 0.0; gi_412 = 0.0; gi_416 = 0.0; gi_420 = 0.0; g_ord_open_price_424 = 0.0; g_ord_open_price_432 = 0.0; g_ord_open_price_440 = 0.0; g_ord_open_price_448 = 0.0; g_ord_open_price_456 = 0.0; g_ord_open_price_464 = 0.0; g_ord_open_price_472 = 0.0; g_ord_open_price_480 = 0.0; g_ord_open_price_488 = 0.0; g_ord_open_price_496 = 0.0; for (int l_pos_20 = 0; l_pos_20 < OrdersTotal(); l_pos_20++) { OrderSelect(l_pos_20, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber1 || OrderMagicNumber() == MagicNumber2 || OrderMagicNumber() == MagicNumber3 || OrderMagicNumber() == MagicNumber4) { g_count_364++; if (OrderType() == OP_BUY) { gi_404++; g_ord_open_price_464 = OrderOpenPrice(); } if (OrderType() == OP_SELL) { gi_384++; g_ord_open_price_424 = OrderOpenPrice(); } } else { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber1) { g_count_368++; if (OrderType() == OP_BUY) { gi_408++; g_ord_open_price_472 = OrderOpenPrice(); } if (OrderType() == OP_SELL) { gi_388++; g_ord_open_price_432 = OrderOpenPrice(); } } else { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber2) { g_count_372++; if (OrderType() == OP_BUY) { gi_412++; g_ord_open_price_480 = OrderOpenPrice(); } if (OrderType() == OP_SELL) { gi_392++; g_ord_open_price_440 = OrderOpenPrice(); } } else { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber3) { g_count_376++; if (OrderType() == OP_BUY) { gi_416++; g_ord_open_price_488 = OrderOpenPrice(); } if (OrderType() == OP_SELL) { gi_396++; g_ord_open_price_448 = OrderOpenPrice(); } } else { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber4) { g_count_380++; if (OrderType() == OP_BUY) { gi_420++; g_ord_open_price_496 = OrderOpenPrice(); } if (OrderType() == OP_SELL) { gi_400++; g_ord_open_price_456 = OrderOpenPrice(); } } } } } } } if (Virtual_TP == TRUE) { for (int l_pos_24 = 0; l_pos_24 < OrdersTotal(); l_pos_24++) { OrderSelect(l_pos_24, SELECT_BY_POS, MODE_TRADES); if (OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber1) { if (Bid >= OrderOpenPrice() + TakeProfit * mypoint) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Bid, slippage, Orange); } } if (OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber2) { if (Bid >= OrderOpenPrice() + (TakeProfit - 2.0) * mypoint) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Bid, slippage, Orange); } } if (OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber3) { if (Bid >= OrderOpenPrice() + (TakeProfit - 1.0) * mypoint) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Bid, slippage, Orange); } } if (OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber4) { if (Bid >= OrderOpenPrice() + (TakeProfit - 2.0) * mypoint) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Bid, slippage, Orange); } } if (OrderType() == OP_SELL && OrderMagicNumber() == MagicNumber1) { if (Ask <= OrderOpenPrice() - TakeProfit * mypoint) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Ask, slippage, Orange); } } if (OrderType() == OP_SELL && OrderMagicNumber() == MagicNumber2) { if (Ask <= OrderOpenPrice() - (TakeProfit - 2.0) * mypoint) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Ask, slippage, Orange); } } if (OrderType() == OP_SELL && OrderMagicNumber() == MagicNumber3) { if (Ask <= OrderOpenPrice() - (TakeProfit - 1.0) * mypoint) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Ask, slippage, Orange); } } if (OrderType() == OP_SELL && OrderMagicNumber() == MagicNumber4) { if (Ask <= OrderOpenPrice() - (TakeProfit - 2.0) * mypoint) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Ask, slippage, Orange); } } } } if (Time_Protection == TRUE) { for (int l_pos_28 = 0; l_pos_28 < OrdersTotal(); l_pos_28++) { OrderSelect(l_pos_28, SELECT_BY_POS, MODE_TRADES); if (OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber1 || OrderMagicNumber() == MagicNumber2 || OrderMagicNumber() == MagicNumber3 || OrderMagicNumber() == MagicNumber4) { if (TimeCurrent() - OrderOpenTime() > 60 * gi_216 && TimeCurrent() - OrderOpenTime() < 60 * gi_224 && Bid >= OrderOpenPrice() + gi_220 * mypoint) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Bid, slippage, Orange); Print("Prot. Level 1 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } if (TimeCurrent() - OrderOpenTime() > 60 * gi_224 && TimeCurrent() - OrderOpenTime() < 60 * gi_232 && Bid >= OrderOpenPrice() + gi_228 * mypoint) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Bid, slippage, Orange); Print("Prot. Level 2 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } if (TimeCurrent() - OrderOpenTime() > 60 * gi_232 && TimeCurrent() - OrderOpenTime() < 60 * gi_240 && Bid >= OrderOpenPrice() + gi_236 * mypoint) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Bid, slippage, Orange); Print("Prot. Level 3 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } if (TimeCurrent() - OrderOpenTime() > 60 * gi_240 && TimeCurrent() - OrderOpenTime() < 60 * gi_248 && Bid >= OrderOpenPrice() - gi_244 * mypoint) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Bid, slippage, Orange); Print("Prot. Level 4 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } if (TimeCurrent() - OrderOpenTime() > 60 * gi_248 && Bid >= OrderOpenPrice() - gi_252 * mypoint) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Bid, slippage, Orange); Print("Prot. Level 5 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } if (DayOfWeek() == 5 && Hour() >= 19) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Bid, slippage, Orange); Print("Prot. Level 5 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } } if (OrderType() == OP_SELL && OrderMagicNumber() == MagicNumber1 || OrderMagicNumber() == MagicNumber2 || OrderMagicNumber() == MagicNumber3 || OrderMagicNumber() == MagicNumber4) { if (TimeCurrent() - OrderOpenTime() > 60 * gi_216 && TimeCurrent() - OrderOpenTime() < 60 * gi_224 && Ask <= OrderOpenPrice() - gi_220 * mypoint) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Ask, slippage, Orange); Print("Prot. Level 1 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } if (TimeCurrent() - OrderOpenTime() > 60 * gi_224 && TimeCurrent() - OrderOpenTime() < 60 * gi_232 && Ask <= OrderOpenPrice() - gi_228 * mypoint) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Ask, slippage, Orange); Print("Prot. Level 2 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } if (TimeCurrent() - OrderOpenTime() > 60 * gi_232 && TimeCurrent() - OrderOpenTime() < 60 * gi_240 && Ask <= OrderOpenPrice() - gi_236 * mypoint) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Ask, slippage, Orange); Print("Prot. Level 3 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } if (TimeCurrent() - OrderOpenTime() > 60 * gi_240 && TimeCurrent() - OrderOpenTime() < 60 * gi_248 && Ask <= OrderOpenPrice() + gi_244 * mypoint) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Ask, slippage, Orange); Print("Prot. Level 4 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } if (TimeCurrent() - OrderOpenTime() > 60 * gi_248 && Ask <= OrderOpenPrice() + gi_252 * mypoint) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Ask, slippage, Orange); Print("Prot. Level 5 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } if (DayOfWeek() == 5 && Hour() >= 19) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Ask, slippage, Orange); Print("Prot. Level 5 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } } } } if (Volatility_Filter == TRUE) { if (iOpen(Symbol(), PERIOD_M5, 0) >= Ask + sec) return; if (iOpen(Symbol(), PERIOD_M5, 0) <= Bid - sec) return; if (iOpen(Symbol(), PERIOD_M5, 1) >= Ask + se2c) return; if (iOpen(Symbol(), PERIOD_M5, 1) <= Bid - se2c) return; if (iOpen(Symbol(), PERIOD_M5, 2) >= Ask + se3c) return; if (iOpen(Symbol(), PERIOD_M5, 2) <= Bid - se3c) return; } if (Ask - Bid > MaxSpread * mypoint) return (0); gi_360 = NormalizeDouble(MaxTrades / 2, 0); g_minlot_320 = MarketInfo(Symbol(), MODE_MINLOT); g_maxlot_328 = MarketInfo(Symbol(), MODE_MAXLOT); g_leverage_340 = AccountLeverage(); g_lotsize_336 = MarketInfo(Symbol(), MODE_LOTSIZE); g_lots_344 = MathMin(g_maxlot_328, MathMax(g_minlot_320, Lots)); if (LotsOptimized && Risk > 0.0 && AccountFreeMargin() > Ask * g_lots_344 * g_lotsize_336 / g_leverage_340) g_lots_344 = NormalizeDouble(AccountFreeMargin() * Risk / g_lotsize_336, LotDecimal); else g_lots_344 = g_minlot_320; g_lots_344 = MathMax(g_minlot_320, MathMin(g_maxlot_328, NormalizeDouble(g_lots_344 / g_minlot_320, 0) * g_minlot_320)); g_lots_344 = NormalizeDouble(g_lots_344 / gi_360, LotDecimal); if (g_lots_344 > max_lot) g_lots_344 = max_lot; if (AccountFreeMargin() < Ask * g_lots_344 * g_lotsize_336 / g_leverage_340) { Print("Low Account Balance. Lots = ", g_lots_344, " , Free Margin = ", AccountFreeMargin()); Comment("Low Account Balance. Lots = ", g_lots_344, " , Free Margin = ", AccountFreeMargin()); return; } double l_iclose_32 = iClose(Symbol(), PERIOD_M15, 0); double l_iopen_40 = iOpen(Symbol(), PERIOD_M15, 0); double l_ilow_48 = iLow(Symbol(), PERIOD_M15, 0); double l_ihigh_56 = iHigh(Symbol(), PERIOD_M15, 0); double l_irsi_64 = iRSI(NULL, PERIOD_M15, 6, PRICE_CLOSE, 0); double l_irsi_72 = iRSI(NULL, PERIOD_M1, 20, PRICE_CLOSE, 0); double ld_80 = NormalizeDouble(iMA(NULL, 0, 8, 0, MODE_SMA, PRICE_WEIGHTED, 1), 4); double ld_88 = NormalizeDouble(iMA(NULL, 0, 8, 0, MODE_SMA, PRICE_WEIGHTED, 1), 4); double l_icci_96 = iCCI(Symbol(), PERIOD_M15, 14, PRICE_CLOSE, 0); double l_icci_104 = iCCI(Symbol(), PERIOD_M5, 42, PRICE_CLOSE, 0); double l_icci_112 = iCCI(Symbol(), PERIOD_M1, 210, PRICE_CLOSE, 0); double l_icci_120 = iCCI(Symbol(), PERIOD_M1, 80, PRICE_CLOSE, 0); double l_imomentum_128 = iMomentum(Symbol(), PERIOD_M1, 60, PRICE_CLOSE, 0); double l_imomentum_136 = iMomentum(Symbol(), PERIOD_M5, 4, PRICE_CLOSE, 0); double l_imomentum_144 = iMomentum(Symbol(), PERIOD_M15, 14, PRICE_CLOSE, 0); double l_iwpr_152 = iWPR(Symbol(), PERIOD_M1, 14, 0); double l_iwpr_160 = iWPR(Symbol(), PERIOD_M5, 14, 0); double l_iwpr_168 = iWPR(Symbol(), PERIOD_M15, 14, 0); double l_iforce_176 = iForce(Symbol(), PERIOD_M5, 13, MODE_SMA, PRICE_CLOSE, 0); double l_ibands_184 = iBands(Symbol(), PERIOD_M5, 20, 2, 0, PRICE_WEIGHTED, MODE_UPPER, 1); double l_ibands_192 = iBands(Symbol(), PERIOD_M5, 20, 2, 0, PRICE_WEIGHTED, MODE_BASE, 1); double l_ibands_200 = iBands(Symbol(), PERIOD_M5, 20, 2, 0, PRICE_WEIGHTED, MODE_LOWER, 1); double l_ima_208 = iMA(Symbol(), PERIOD_M5, 1, 0, MODE_EMA, PRICE_HIGH, 0); double l_ima_216 = iMA(Symbol(), PERIOD_M5, 1, 0, MODE_EMA, PRICE_MEDIAN, 0); double l_ima_224 = iMA(Symbol(), PERIOD_M5, 1, 0, MODE_EMA, PRICE_LOW, 0); double l_ibands_232 = iBands(Symbol(), PERIOD_M5, 20, 2, 0, PRICE_WEIGHTED, MODE_UPPER, 0); double l_ibands_240 = iBands(Symbol(), PERIOD_M5, 20, 2, 0, PRICE_WEIGHTED, MODE_BASE, 0); double l_ibands_248 = iBands(Symbol(), PERIOD_M5, 20, 2, 0, PRICE_WEIGHTED, MODE_LOWER, 0); double l_ima_256 = iMA(Symbol(), PERIOD_M1, 1, 0, MODE_EMA, PRICE_HIGH, 0); double l_ima_264 = iMA(Symbol(), PERIOD_M1, 1, 0, MODE_EMA, PRICE_MEDIAN, 0); double l_ima_272 = iMA(Symbol(), PERIOD_M1, 1, 0, MODE_EMA, PRICE_LOW, 0); if (IsTradeTime() && g_count_364 < MaxTrades && li_16) { if (!ExistPosition1() && Thunder_1 == TRUE) { if (DayOfWeek() == 0 || DayOfWeek() == 5 && Hour() >= 14) return (0); if (l_irsi_64 < 30.0 || l_irsi_72 < 36.0 && ld_80 >= Ask + 20.0 * mypoint) { if (gi_408 < 1 && gi_288) { g_price_520 = 0; g_price_528 = 0; if (!Virtual_TP) g_price_520 = Ask + TakeProfit * mypoint; g_price_528 = Ask - StopLoss * mypoint; if (NormalizeDouble(g_lots_344 + g_lots_344 / gi_360, LotDecimal) < max_lot) g_lots_352 = NormalizeDouble(g_lots_344 + g_lots_344 / gi_360, LotDecimal); else g_lots_352 = g_lots_344; OrderSend(Symbol(), OP_BUY, g_lots_352, Ask, slippage, g_price_528, g_price_520, "EURGBP_1", MagicNumber1, 0, Green); gi_288 = FALSE; gi_292 = TRUE; } } if (l_irsi_64 > 70.0 || l_irsi_72 > 64.0 && ld_88 <= Bid - 20.0 * mypoint) { if (gi_388 < 1 && gi_292) { g_price_520 = 0; g_price_528 = 0; if (!Virtual_TP) g_price_520 = Bid - TakeProfit * mypoint; g_price_528 = Bid + StopLoss * mypoint; if (NormalizeDouble(g_lots_344 + g_lots_344 / gi_360, LotDecimal) < max_lot) g_lots_352 = NormalizeDouble(g_lots_344 + g_lots_344 / gi_360, LotDecimal); else g_lots_352 = g_lots_344; OrderSend(Symbol(), OP_SELL, g_lots_352, Bid, slippage, g_price_528, g_price_520, "EURGBP_1", MagicNumber1, 0, Red); gi_292 = FALSE; gi_288 = TRUE; } } if (l_irsi_64 < 60.0 && l_irsi_64 > 40.0) { gi_292 = TRUE; gi_288 = TRUE; } } } if (IsTradeTime() && gi_600 < FractalRange && gi_616 < ATR_Level && g_count_364 < MaxTrades && li_16) { if (!ExistPosition2() && Thunder_2 == TRUE) { if (DayOfWeek() == 0 || DayOfWeek() == 5 && Hour() >= 14) return (0); if (l_icci_104 <= -150.0 && l_icci_112 <= -120.0 || l_icci_96 <= -150.0 && l_icci_112 <= -120.0 && Bid <= gd_608 - PriceFromFractal * mypoint) { if (gi_412 < gi_360 && gi_296) { g_price_520 = 0; g_price_528 = 0; if (Virtual_TP) g_price_520 = g_ifractals_536; g_price_528 = Ask - StopLoss * mypoint; OrderSend(Symbol(), OP_BUY, g_lots_344, Ask, slippage, g_price_528, g_price_520, "EURGBP_2", MagicNumber2, 0, Green); gi_296 = FALSE; gi_300 = TRUE; } } if (l_icci_104 >= 150.0 && l_icci_112 >= 120.0 || l_icci_96 >= 150.0 && l_icci_112 >= 120.0 && Ask >= gd_608 + PriceFromFractal * mypoint) { if (gi_392 < gi_360 && gi_300) { g_price_520 = 0; g_price_528 = 0; if (Virtual_TP) g_price_520 = g_ifractals_544; g_price_528 = Bid + StopLoss * mypoint; OrderSend(Symbol(), OP_SELL, g_lots_344, Bid, slippage, g_price_528, g_price_520, "EURGBP_2", MagicNumber2, 0, Red); gi_300 = FALSE; gi_296 = TRUE; } } if (l_icci_96 < 50.0 && l_icci_96 > -50.0) { gi_300 = TRUE; gi_296 = TRUE; } } if (!ExistPosition3() && Thunder_3 == TRUE) { if (DayOfWeek() == 0 || DayOfWeek() == 5 && Hour() >= 14) return (0); if (l_imomentum_136 >= 99.85 && l_icci_120 <= -200.0 && Bid <= gd_608 - PriceFromFractal * mypoint) { if (gi_416 < gi_360 && gi_304) { g_price_520 = 0; g_price_528 = 0; if (Virtual_TP) g_price_520 = g_ifractals_536; if (Fractal_SL) g_price_528 = g_ifractals_544 - StopLoss * mypoint; else g_price_528 = Ask - StopLoss * mypoint; OrderSend(Symbol(), OP_BUY, g_lots_344, Ask, slippage, g_price_528, g_price_520, "EURGBP_3", MagicNumber3, 0, Green); gi_304 = FALSE; gi_308 = TRUE; } } if (l_imomentum_136 <= 100.15 && l_icci_120 >= 200.0 && Ask >= gd_608 + PriceFromFractal * mypoint) { if (gi_396 < gi_360 && gi_308) { g_price_520 = 0; g_price_528 = 0; if (Virtual_TP) g_price_520 = g_ifractals_544; if (Fractal_SL) g_price_528 = g_ifractals_536 + StopLoss * mypoint; else g_price_528 = Bid + StopLoss * mypoint; OrderSend(Symbol(), OP_SELL, g_lots_344, Bid, slippage, g_price_528, g_price_520, "EURGBP_2", MagicNumber2, 0, Red); gi_308 = FALSE; gi_304 = TRUE; } } if (l_icci_120 >= -50.0 && l_icci_120 <= 50.0) { gi_308 = TRUE; gi_304 = TRUE; } } if (!ExistPosition4() && Thunder_4 == TRUE) { if (DayOfWeek() == 0 || DayOfWeek() == 5 && Hour() >= 14) return (0); if (l_iwpr_160 <= -90.0 && l_ima_224 < l_ibands_200 && Ask <= gd_608 - PriceFromFractal * mypoint) { if (gi_420 < gi_360 && gi_312) { g_price_520 = 0; g_price_528 = 0; if (Virtual_TP) g_price_520 = g_ifractals_536; if (Fractal_SL) g_price_528 = Ask - FractalRange * mypoint; else g_price_528 = Ask - StopLoss * mypoint; OrderSend(Symbol(), OP_BUY, g_lots_344, Ask, slippage, g_price_528, g_price_520, "EURGBP_4", MagicNumber4, 0, Green); gi_312 = FALSE; gi_316 = TRUE; } } if (l_iwpr_160 >= -10.0 && l_ima_208 > l_ibands_184 && Bid >= gd_608 + PriceFromFractal * mypoint) { if (gi_400 < gi_360 && gi_316) { g_price_520 = 0; g_price_528 = 0; if (Virtual_TP) g_price_520 = g_ifractals_544; if (Fractal_SL) g_price_528 = Bid + FractalRange * mypoint; else g_price_528 = Bid + StopLoss * mypoint; OrderSend(Symbol(), OP_SELL, g_lots_344, Bid, slippage, g_price_528, g_price_520, "EURGBP_2", MagicNumber2, 0, Red); gi_316 = FALSE; gi_312 = TRUE; } } if (l_irsi_64 < 60.0 && l_irsi_64 > 40.0) { gi_316 = TRUE; gi_312 = TRUE; } } } return (0); } int IsTradeTime() { if (Hour_Start_Trade < Hour_Stop_Trade && TimeHour(TimeCurrent()) < Hour_Start_Trade || TimeHour(TimeCurrent()) >= Hour_Stop_Trade) return (0); if (Hour_Start_Trade > Hour_Stop_Trade && (TimeHour(TimeCurrent()) < Hour_Start_Trade && TimeHour(TimeCurrent()) >= Hour_Stop_Trade)) return (0); if (Hour_Stop_Trade == 0) Hour_Stop_Trade = 24; if (Hour() == Hour_Stop_Trade - 1 && Minute() >= gi_284) return (0); return (1); } bool ExistPosition1() { bool li_ret_0 = FALSE; for (int l_pos_4 = 0; l_pos_4 < OrdersTotal(); l_pos_4++) { if (OrderSelect(l_pos_4, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber1) { if (OrderType() == OP_BUY || OrderType() == OP_SELL) { li_ret_0 = TRUE; break; } } } } return (li_ret_0); } bool ExistPosition2() { bool li_ret_0 = FALSE; for (int l_pos_4 = 0; l_pos_4 < OrdersTotal(); l_pos_4++) { if (OrderSelect(l_pos_4, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber2) { if (OrderType() == OP_BUY || OrderType() == OP_SELL) { li_ret_0 = TRUE; break; } } } } return (li_ret_0); } bool ExistPosition3() { bool li_ret_0 = FALSE; for (int l_pos_4 = 0; l_pos_4 < OrdersTotal(); l_pos_4++) { if (OrderSelect(l_pos_4, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber3) { if (OrderType() == OP_BUY || OrderType() == OP_SELL) { li_ret_0 = TRUE; break; } } } } return (li_ret_0); } bool ExistPosition4() { bool li_ret_0 = FALSE; for (int l_pos_4 = 0; l_pos_4 < OrdersTotal(); l_pos_4++) { if (OrderSelect(l_pos_4, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber4) { if (OrderType() == OP_BUY || OrderType() == OP_SELL) { li_ret_0 = TRUE; break; } } } } return (li_ret_0); } void onScreenComment(int ai_0) { string ls_44; string ls_unused_52; string ls_60; string ls_68; string ls_76; string l_dbl2str_4 = DoubleToStr(balanceDeviation(2), 2); string l_dbl2str_12 = DoubleToStr(balanceDeviation(1), 2); string l_dbl2str_20 = DoubleToStr(dollarCount(1), 2); string l_dbl2str_28 = DoubleToStr(dollarCount(2), 2); string ls_36 = "\n" + gs_best_620 + " run-time statistics : \n\n"; string ls_unused_84 = "\n"; if (Minute() < 10) ls_60 = Hour() + ":0" + Minute(); else ls_60 = Hour() + ":" + Minute(); string ls_92 = "\n" + "Fractal Envelope : " + gi_600 + " pips\n" + "MidFractal : " + DoubleToStr(gd_608, 4) + " \n" + "ATR(5) : " + gi_616 + " pips\n\n" + "Buy Active : " + DoubleToStr(gd_848, 2) + " (" + DoubleToStr(gd_1032, 2) + " %)" + "\n" + "Sell Active : " + DoubleToStr(gd_856, 2) + " (" + DoubleToStr(gd_1040, 2) + " %)" + "\n" + "Total Here : " + DoubleToStr(gd_936, 2) + " (" + DoubleToStr(gd_1048, 2) + ") (" + DoubleToStr(gd_652, 2) + " %)" + "\n" + "Grand Total : " + DoubleToStr(gd_928, 2) + " (" + DoubleToStr(gd_1072, 2) + ") (" + DoubleToStr(gd_660, 2) + " %)" + "\n" + "\n" + "L O T S : " + DoubleToStr(g_lots_344, 2) + "\n" + "E Q U I T Y : " + DoubleToStr(AccountEquity(), 2) + "\n\n\n" + "EA ini FREE dan terus dikembangkan..." + "\n" + "Anda dapat konsultasi / diskusi cara penggunaan ataupun pengembangannya" + "\n" + "sebagai wujud partisipasi anda dalam mendukung berlanjutnya kreatifitas kami......" + "\n" + "diharapkan bantuan berupa donasi seikhlasnya... " + "\n" + "hubungi : r_khaled@ymail.com" + "\n" + "Abdul Rahman ==> BCA : 7990026640 / LR : U7067895"; string ls_100 = "Current Time : " + ls_60 + "\n" + "Account Leverage : " + "1 : " + AccountLeverage() + "\n" + "Account Type : " + AccountServer() + "\n" + "Drawdown : " + l_dbl2str_4 + "%\n"; if (gi_632 == FALSE && gi_628 == FALSE) ls_44 = "Managing ALL orders in this terminal\n"; switch (ai_0) { case 91: Comment(gs_best_620 + " is waiting for the next tick to begin."); return; case 98: Comment(ls_36 + ls_44 + ls_76 + ls_68 + ls_100 + ls_92); return; case 99: Comment(" "); return; return; } } void findMyOrders() { gd_792 = 0; gd_800 = 0; gd_808 = 0; gd_816 = 0; gd_636 = 0; gd_644 = 0; gd_652 = 0; gd_660 = 0; gd_668 = 0; gd_676 = 0; gd_684 = 0; gd_692 = 0; gd_700 = 0; gd_708 = 0; gd_716 = 0; gd_724 = 0; gd_732 = 0; gd_748 = 0; gd_740 = 0; gd_756 = 0; gd_832 = 0; gd_840 = 0; gd_848 = 0; gd_856 = 0; gd_864 = 0; gd_872 = 0; gd_880 = 0; gd_888 = 0; gd_896 = 0; gd_904 = 0; gd_912 = 0; gd_920 = 0; gd_928 = 0; gd_936 = 0; gd_944 = 0; gd_952 = 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 (OrderType() == OP_BUY) { gd_636++; gd_792 += OrderProfit(); gd_800 += (OrderOpenPrice() - MarketInfo(OrderSymbol(), MODE_BID)) / MarketInfo(OrderSymbol(), MODE_POINT); gd_832 += OrderLots(); } if (Symbol() == Symbol() && OrderSymbol() == Symbol() && OrderType() == OP_BUY) { gd_652++; gd_848 += OrderLots(); gd_816 += OrderProfit(); } else { if (OrderType() == OP_SELL) { gd_644++; gd_792 += OrderProfit(); gd_800 += (OrderOpenPrice() - MarketInfo(OrderSymbol(), MODE_ASK)) / MarketInfo(OrderSymbol(), MODE_POINT); gd_840 += OrderLots(); } } if (Symbol() == Symbol() && OrderSymbol() == Symbol() && OrderType() == OP_SELL) { gd_660++; gd_856 += OrderLots(); gd_808 += OrderProfit(); } else { if (OrderType() == OP_BUYSTOP) gd_668++; else { if (OrderType() == OP_SELLSTOP) gd_676++; else { if (OrderType() == OP_BUYLIMIT) gd_684++; else if (OrderType() == OP_SELLLIMIT) gd_692++; } } } } gd_700 = gd_668 + gd_684; gd_708 = gd_676 + gd_692; gd_748 = gd_700 + gd_708; gd_732 = gd_636 + gd_644; gd_716 = gd_668 + gd_684 + gd_636; gd_724 = gd_676 + gd_692 + gd_644; gd_756 = gd_732 + gd_748; gd_896 = gd_864 + gd_880; gd_904 = gd_872 + gd_888; gd_944 = gd_896 + gd_904; gd_912 = gd_864 + gd_880 + gd_832; gd_920 = gd_872 + gd_888 + gd_840; gd_952 = gd_928 + gd_944; gd_928 = gd_832 + gd_840; gd_740 = gd_652 + gd_660; gd_936 = gd_848 + gd_856; g_lotsize_336 = MarketInfo(Symbol(), MODE_LOTSIZE); gd_960 = AccountBalance() / g_lotsize_336; gd_968 = AccountEquity() / g_lotsize_336; gd_1000 = gd_848; gd_1008 = gd_856; gd_1016 = gd_848 - gd_856; gd_1032 = gd_1000 / gd_968; gd_1040 = gd_1008 / gd_968; gd_1048 = (gd_1000 + gd_1008) / gd_968; if (gd_848 - gd_856 > 0.0) gd_1024 = 100.0 * ((gd_848 - gd_856) / gd_968); else if (gd_848 - gd_856 < 0.0) gd_1024 = 100.0 * ((-1.0 * (gd_848 - gd_856)) / gd_968); gd_1056 = gd_816 + gd_808; gd_1064 = gd_1000 + gd_1008; gd_1072 = gd_928 / gd_968; gd_1080 = gd_968 / gd_960; } double balanceDeviation(int ai_0) { double ld_ret_4; if (ai_0 == 2) { ld_ret_4 = (AccountEquity() / AccountBalance() - 1.0) / (-0.01); if (ld_ret_4 > 0.0) return (ld_ret_4); return (0); } if (ai_0 == 1) { ld_ret_4 = 100.0 * (AccountEquity() / AccountBalance() - 1.0); if (ld_ret_4 > 0.0) return (ld_ret_4); return (0); } return (0.0); } double dollarCount(int ai_0) { if (ai_0 == 1) { if (gd_792 > 0.0) return (gd_792); return (0); } if (ai_0 == 2) { if (gd_792 < 0.0) return (MathAbs(gd_792)); return (0); } return (0.0); }