extern double TP = 0.0; extern double SL = 0.0; int gi_unused_92 = 80; int gi_96 = 5; extern bool TYPE_A = TRUE; extern int TYPE_A_TP = 15; extern bool TYPE_B = TRUE; extern int TYPE_B_TP = 15; extern bool TYPE_C = TRUE; extern int TYPE_C_TP = 20; extern bool TYPE_D = TRUE; extern int TYPE_D_TP = 30; extern bool TYPE_E = TRUE; extern int TYPE_E_TP = 15; extern int MaxLose = 15000; extern bool LoseStop = FALSE; extern bool AutoLot = TRUE; extern double OneLotMoney = 100000.0; extern double Lots = 0.1; double gd_unused_168 = 15.0; int gi_unused_176 = 500; extern int Magic = 151515; extern int MaxSpread = 5; int gi_unused_188 = 1; extern bool TimeFilter = FALSE; extern int StartTime = 13; extern int EndTime = 2; extern bool SafetyMode = TRUE; extern int SafetySecureProfit = 5; extern int PositionADJ = 1; extern bool SMail = FALSE; extern bool AC_digits = FALSE; bool gi_unused_224 = TRUE; bool gi_228 = FALSE; extern bool UseAlert = FALSE; bool gi_unused_236 = FALSE; int gi_240 = 0; int gi_244 = 0; bool gi_248 = FALSE; bool gi_252 = FALSE; int gi_unused_256 = 14; int gi_unused_260 = 0; int g_count_264 = 0; int gi_268 = 1; int gi_272; double g_ima_276; double g_ima_284; double g_ima_292; double g_ima_300; double gd_332; double gd_340; double gd_356; double gd_372; int g_bars_380 = 0; string gs_384 = ""; bool gi_392 = FALSE; bool gi_396 = FALSE; extern bool Trade = FALSE; int init() { return (0); } int deinit() { return (0); } int start() { if (AccountNumber() != 704649 && AccountNumber() != 519684 && AccountNumber() != 201276 && AccountNumber() != 581135 && AccountNumber() != 200887 && AccountNumber() != 8915 && AccountNumber() != 215170) { Comment("Invalid NAME"); return (0); } if (IsVisualMode()) { Comment("Not work on VisualMode"); return (0); } if (WindowExpertName() != "EAKSP0310") { Comment("Invalid EA"); return (0); } if (LoseStop && gi_396) { Comment("Lose Stop"); return (0); } if (!TimeFilter) Trade = TRUE; if (TimeFilter && TimeHour(TimeCurrent()) == StartTime) Trade = TRUE; if (TimeFilter && TimeHour(TimeCurrent()) == EndTime && OpenOrders(Magic) == 0) Trade = FALSE; if (TimeFilter && TimeHour(TimeCurrent()) == EndTime && OpenOrders(Magic) != 0) gi_248 = TRUE; if (!Trade) { Comment("Not Trade Time"); return (0); } if (AC_digits) gi_268 = 10; else gi_268 = 1; int li_0 = MarketInfo(Symbol(), MODE_SPREAD) / gi_268; if (li_0 > MaxSpread && OpenOrders(Magic) == 0) { Comment("SPREAD is too wide!"); return (0); } if (AutoLot) Lots = lotSizeCalc(OneLotMoney); double l_tickvalue_4 = MarketInfo(Symbol(), MODE_TICKVALUE); gd_372 = MaxLose * Lots; gi_240 = 0; g_ima_276 = iMA(NULL, 0, 50, 0, MODE_EMA, PRICE_CLOSE, 1); g_ima_284 = iMA(NULL, 0, 100, 0, MODE_EMA, PRICE_CLOSE, 1); g_ima_292 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, 1); g_ima_300 = iMA(NULL, 0, 400, 0, MODE_EMA, PRICE_CLOSE, 1); if (TYPE_C && g_ima_276 > g_ima_284 && g_ima_284 > g_ima_292 && g_ima_292 > g_ima_300 && (g_ima_276 - g_ima_300) / Point / gi_268 >= 80.0 && (g_ima_276 - g_ima_300) / Point / gi_268 <= 89.0 && (g_ima_276 - g_ima_284) / Point * gi_268 >= gi_96 * gi_268) { gi_240 = 1; gd_356 = l_tickvalue_4 * TYPE_C_TP * gi_268 * Lots; gs_384 = "TYPE_C : Ready to BUY"; if (UseAlert && !gi_392) { Alert("TYPE_C Ready to BUY ", Symbol()); gi_392 = TRUE; } Comment(gs_384 + "\n" + "Lot : " + Lots + "\n" + "Spread : " + li_0 + "\n" + "SecureProfit : " + gd_356 + "\n" + "Digits : " + Digits); } if (TYPE_D && g_ima_276 > g_ima_284 && g_ima_284 > g_ima_292 && g_ima_292 > g_ima_300 && (g_ima_276 - g_ima_300) / Point / gi_268 >= 90.0 && (g_ima_276 - g_ima_300) / Point / gi_268 <= 99.0 && (g_ima_276 - g_ima_284) / Point * gi_268 >= gi_96 * gi_268) { gi_240 = 1; gd_356 = l_tickvalue_4 * TYPE_D_TP * gi_268 * Lots; gs_384 = "TYPE_D : Ready to BUY"; if (UseAlert && !gi_392) { Alert("TYPE_D Ready to BUY ", Symbol()); gi_392 = TRUE; } Comment(gs_384 + "\n" + "Lot : " + Lots + "\n" + "Spread : " + li_0 + "\n" + "SecureProfit : " + gd_356 + "\n" + "Digits : " + Digits); } if (TYPE_E && g_ima_276 > g_ima_284 && g_ima_284 > g_ima_292 && g_ima_292 > g_ima_300 && (g_ima_276 - g_ima_300) / Point / gi_268 >= 110.0 && (g_ima_276 - g_ima_300) / Point / gi_268 <= 139.0 && (g_ima_276 - g_ima_284) / Point * gi_268 >= gi_96 * gi_268) { gi_240 = 1; gd_356 = l_tickvalue_4 * TYPE_E_TP * gi_268 * Lots; gs_384 = "TYPE_E : Ready to BUY"; if (UseAlert && !gi_392) { Alert("TYPE_E Ready to BUY ", Symbol()); gi_392 = TRUE; } Comment(gs_384 + "\n" + "Lot : " + Lots + "\n" + "Spread : " + li_0 + "\n" + "SecureProfit : " + gd_356 + "\n" + "Digits : " + Digits); } if (TYPE_A && g_ima_276 > g_ima_284 && g_ima_284 > g_ima_292 && g_ima_292 > g_ima_300 && (g_ima_276 - g_ima_300) / Point / gi_268 >= 40.0 && (g_ima_276 - g_ima_300) / Point / gi_268 <= 49.0 && (g_ima_276 - g_ima_284) / Point * gi_268 >= gi_96 * gi_268) { gi_240 = 1; gs_384 = "TYPE_A : Ready to BUY"; gd_356 = l_tickvalue_4 * TYPE_A_TP * gi_268 * Lots; if (UseAlert && !gi_392) { Alert("TYPE_A Ready to BUY ", Symbol()); gi_392 = TRUE; } Comment(gs_384 + "\n" + "Lot : " + Lots + "\n" + "Spread : " + li_0 + "\n" + "SecureProfit : " + gd_356 + "\n" + "Digits : " + Digits); } if (TYPE_B && g_ima_276 > g_ima_284 && g_ima_284 > g_ima_292 && g_ima_292 > g_ima_300 && (g_ima_276 - g_ima_300) / Point / gi_268 >= 70.0 && (g_ima_276 - g_ima_300) / Point / gi_268 <= 79.0 && (g_ima_276 - g_ima_284) / Point * gi_268 >= gi_96 * gi_268) { gi_240 = 1; gd_356 = l_tickvalue_4 * TYPE_B_TP * gi_268 * Lots; gs_384 = "TYPE_B : Ready to BUY"; if (UseAlert && !gi_392) { Alert("TYPE_B Ready to BUY ", Symbol()); gi_392 = TRUE; } Comment(gs_384 + "\n" + "Lot : " + Lots + "\n" + "Spread : " + li_0 + "\n" + "SecureProfit : " + gd_356 + "\n" + "Digits : " + Digits); } if (TYPE_C && g_ima_276 < g_ima_284 && g_ima_284 < g_ima_292 && g_ima_292 < g_ima_300 && (g_ima_300 - g_ima_276) / Point / gi_268 >= 80.0 && (g_ima_300 - g_ima_276) / Point / gi_268 <= 89.0 && (g_ima_284 - g_ima_276) / Point * gi_268 >= gi_96 * gi_268) { gi_240 = 2; gs_384 = "TYPE_C : Ready to SELL"; gd_356 = l_tickvalue_4 * TYPE_C_TP * gi_268 * Lots; if (UseAlert && !gi_392) { Alert("TYPE_C Ready to SELL ", Symbol()); gi_392 = TRUE; } Comment(gs_384 + "\n" + "Lot : " + Lots + "\n" + "Spread : " + li_0 + "\n" + "SecureProfit : " + gd_356 + "\n" + "Digits : " + Digits); } if (TYPE_D && g_ima_276 < g_ima_284 && g_ima_284 < g_ima_292 && g_ima_292 < g_ima_300 && (g_ima_300 - g_ima_276) / Point / gi_268 >= 90.0 && (g_ima_300 - g_ima_276) / Point / gi_268 <= 99.0 && (g_ima_284 - g_ima_276) / Point * gi_268 >= gi_96 * gi_268) { gi_240 = 2; gs_384 = "TYPE_D : Ready to SELL"; gd_356 = l_tickvalue_4 * TYPE_D_TP * gi_268 * Lots; if (UseAlert && !gi_392) { Alert("TYPE_D Ready to SELL ", Symbol()); gi_392 = TRUE; } Comment(gs_384 + "\n" + "Lot : " + Lots + "\n" + "Spread : " + li_0 + "\n" + "SecureProfit : " + gd_356 + "\n" + "Digits : " + Digits); } if (TYPE_E && g_ima_276 < g_ima_284 && g_ima_284 < g_ima_292 && g_ima_292 < g_ima_300 && (g_ima_300 - g_ima_276) / Point / gi_268 >= 110.0 && (g_ima_300 - g_ima_276) / Point / gi_268 <= 139.0 && (g_ima_284 - g_ima_276) / Point * gi_268 >= gi_96 * gi_268) { gi_240 = 2; gs_384 = "TYPE_E : Ready to SELL"; gd_356 = l_tickvalue_4 * TYPE_E_TP * gi_268 * Lots; if (UseAlert && !gi_392) { Alert("TYPE_E Ready to SELL ", Symbol()); gi_392 = TRUE; } Comment(gs_384 + "\n" + "Lot : " + Lots + "\n" + "Spread : " + li_0 + "\n" + "SecureProfit : " + gd_356 + "\n" + "Digits : " + Digits); } if (TYPE_A && g_ima_276 < g_ima_284 && g_ima_284 < g_ima_292 && g_ima_292 < g_ima_300 && (g_ima_300 - g_ima_276) / Point / gi_268 >= 40.0 && (g_ima_300 - g_ima_276) / Point / gi_268 <= 49.0 && (g_ima_284 - g_ima_276) / Point * gi_268 >= gi_96 * gi_268) { gi_240 = 2; gs_384 = "TYPE_A : Ready to SELL"; gd_356 = l_tickvalue_4 * TYPE_A_TP * gi_268 * Lots; if (UseAlert && !gi_392) { Alert("TYPE_A Ready to SELL ", Symbol()); gi_392 = TRUE; } Comment(gs_384 + "\n" + "Lot : " + Lots + "\n" + "Spread : " + li_0 + "\n" + "SecureProfit : " + gd_356 + "\n" + "Digits : " + Digits); } if (TYPE_B && g_ima_276 < g_ima_284 && g_ima_284 < g_ima_292 && g_ima_292 < g_ima_300 && (g_ima_300 - g_ima_276) / Point / gi_268 >= 70.0 && (g_ima_300 - g_ima_276) / Point / gi_268 <= 79.0 && (g_ima_284 - g_ima_276) / Point * gi_268 >= gi_96 * gi_268) { gi_240 = 2; gs_384 = "TYPE_B : Ready to SELL"; gd_356 = l_tickvalue_4 * TYPE_B_TP * gi_268 * Lots; if (UseAlert && !gi_392) { Alert("TYPE_B Ready to SELL ", Symbol()); gi_392 = TRUE; } Comment(gs_384 + "\n" + "Lot : " + Lots + "\n" + "Spread : " + li_0 + "\n" + "SecureProfit : " + gd_356 + "\n" + "Digits : " + Digits); } if (gi_240 == 0) { g_count_264 = 0; gi_392 = FALSE; if (SafetyMode) gd_356 = l_tickvalue_4 * SafetySecureProfit * gi_268 * Lots; gs_384 = "-Not Ready-"; Comment(gs_384 + "\n" + "Lot : " + Lots + "\n" + "Spread : " + li_0 + "\n" + "SecureProfit : " + gd_356 + "\n" + "Digits : " + Digits); } if (gi_240 == 1 && iLow(NULL, 0, 1) > g_ima_276 && Bid <= g_ima_276 + 1 * gi_268 * Point && OpenOrders(Magic) == 0 && g_bars_380 != Bars) { if (SL == 0.0) gd_340 = 0; else gd_340 = Ask - SL * gi_268 * Point; if (TP == 0.0) gd_332 = 0; else gd_332 = Ask + TP * gi_268 * Point; BuyOrder(gd_340, gd_332, Lots, Magic); gi_244 = 1; if (SMail) SendMail("EAKSP03 BUY Order", Symbol() + " Buy 1st Position at " + Ask); if (OpenOrders(Magic) > 0) g_bars_380 = Bars; g_count_264++; return (0); } if (gi_240 == 2 && iHigh(NULL, 0, 1) < g_ima_276 && Bid >= g_ima_276 - 1 * gi_268 * Point && OpenOrders(Magic) == 0 && g_bars_380 != Bars) { if (SL == 0.0) gd_340 = 0; else gd_340 = Bid + SL * gi_268 * Point; if (TP == 0.0) gd_332 = 0; else gd_332 = Bid - TP * gi_268 * Point; SellOrder(gd_340, gd_332, Lots, Magic); gi_244 = 2; if (SMail) SendMail("EAKSP03 SELL Order", Symbol() + " SELL 1st Position at " + Bid); if (OpenOrders(Magic) > 0) g_bars_380 = Bars; g_count_264++; return (0); } gi_272 = OpenOrders(Magic); if (gi_272 > 0 && OrderPlus(Magic) >= gd_356 && !gi_228) { gi_228 = TRUE; if (SMail) SendMail("EAKSP03 Close Order", Symbol() + " All position were closed. You win!"); } if (gi_272 > 0 && gd_372 + OrderPlus(Magic) <= 0.0 && !gi_228) { gi_228 = TRUE; if (SMail) SendMail("EAKSP03 Close Order", Symbol() + " All position were closed. You lose."); gi_252 = TRUE; } if (OpenOrders(Magic) == 0) { gi_244 = 0; gi_228 = FALSE; if (gi_248) { Trade = FALSE; gi_248 = FALSE; } if (gi_252) gi_396 = TRUE; } if (gi_228) { CloseAll(Magic); if (gi_248) { Trade = FALSE; gi_248 = FALSE; } return (0); } gi_244 = GetDirection(Magic); gi_272 = OpenOrders(Magic); if (gi_244 == 1) { if (SL == 0.0) gd_340 = 0; else gd_340 = Ask - SL * gi_268 * Point; if (TP == 0.0) gd_332 = 0; else gd_332 = Ask + TP * gi_268 * Point; } if (gi_244 == 2) { if (SL == 0.0) gd_340 = 0; else gd_340 = Bid + SL * gi_268 * Point; if (TP == 0.0) gd_332 = 0; else gd_332 = Bid - TP * gi_268 * Point; } if (gi_272 == 1) { if (gi_244 == 1 && Bid <= g_ima_284 + PositionADJ * gi_268 * Point) { BuyOrder(gd_340, gd_332, 2.0 * Lots, Magic); if (SMail) SendMail("EAKSP03 BUY Order", Symbol() + " Buy 2nd Position at " + Ask); } if (gi_244 == 2 && Bid >= g_ima_284 - PositionADJ * gi_268 * Point) { SellOrder(gd_340, gd_332, 2.0 * Lots, Magic); if (SMail) SendMail("EAKSP03 SELL Order", Symbol() + " SELL 2nd Position at " + Bid); } } if (gi_272 == 2) { if (gi_244 == 1 && Bid <= g_ima_292 + PositionADJ * gi_268 * Point) { BuyOrder(gd_340, gd_332, 4.0 * Lots, Magic); if (SMail) SendMail("EAKSP03 BUY Order", Symbol() + " Buy 3rd Position at " + Ask); } if (gi_244 == 2 && Bid >= g_ima_292 - PositionADJ * gi_268 * Point) { SellOrder(gd_340, gd_332, 4.0 * Lots, Magic); if (SMail) SendMail("EAKSP03 SELL Order", Symbol() + " SELL 3rd Position at " + Bid); } } if (gi_272 == 3) { if (gi_244 == 1 && Bid <= g_ima_300 + PositionADJ * gi_268 * Point) { BuyOrder(gd_340, gd_332, 8.0 * Lots, Magic); if (SMail) SendMail("EAKSP03 BUY Order", Symbol() + " Buy 4th Position at " + Ask); } if (gi_244 == 2 && Bid >= g_ima_300 - PositionADJ * gi_268 * Point) { SellOrder(gd_340, gd_332, 8.0 * Lots, Magic); if (SMail) SendMail("EAKSP03 SELL Order", Symbol() + " SELL 4th Position at " + Bid); } } return (0); } void BuyOrder(double a_price_0, double a_price_8, double a_lots_16, int a_magic_24) { bool l_ticket_28; while (!l_ticket_28) l_ticket_28 = OrderSend(Symbol(), OP_BUY, a_lots_16, Ask, 3, a_price_0, a_price_8, "EAKSP03 BUY", a_magic_24, 0, Blue); } void SellOrder(double a_price_0, double a_price_8, double a_lots_16, int a_magic_24) { bool l_ticket_28; while (!l_ticket_28) l_ticket_28 = OrderSend(Symbol(), OP_SELL, a_lots_16, Bid, 3, a_price_0, a_price_8, "EAKSP03 SELL", a_magic_24, 0, Red); } void CloseAll(int a_magic_0) { int l_ord_close_8; for (int l_pos_4 = OrdersTotal() - 1; l_pos_4 >= 0; l_pos_4--) { OrderSelect(l_pos_4, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == a_magic_0) { if (OrderType() == OP_BUY) l_ord_close_8 = OrderClose(OrderTicket(), OrderLots(), Bid, 3, Blue); if (OrderType() == OP_SELL) l_ord_close_8 = OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red); } } } int GetDirection(int a_magic_0) { int li_ret_4 = 0; for (int l_pos_8 = OrdersTotal() - 1; l_pos_8 >= 0; l_pos_8--) { OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == a_magic_0) { if (OrderType() == OP_BUY) li_ret_4 = 1; if (OrderType() == OP_SELL) li_ret_4 = 2; } } return (li_ret_4); } double OrderPlus(int a_magic_0) { double ld_ret_4 = 0; for (int l_pos_12 = OrdersTotal() - 1; l_pos_12 >= 0; l_pos_12--) { OrderSelect(l_pos_12, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == a_magic_0) ld_ret_4 += OrderProfit(); } return (ld_ret_4); } int OpenOrders(int a_magic_0) { int l_count_4 = 0; for (int l_pos_8 = 0; l_pos_8 < OrdersTotal(); l_pos_8++) { OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == a_magic_0) l_count_4++; } return (l_count_4); } double lotSizeCalc(double ad_0) { double ld_ret_8 = 0; int li_16 = 0; double l_lotsize_20 = MarketInfo(Symbol(), MODE_LOTSIZE); double l_maxlot_28 = MarketInfo(Symbol(), MODE_MAXLOT); double l_minlot_36 = MarketInfo(Symbol(), MODE_MINLOT); double ld_44 = AccountBalance(); double ld_52 = ad_0; string ls_60 = AccountCurrency(); if (ls_60 == "JPY") ld_52 = 100.0 * ad_0; if (l_minlot_36 >= 1.0) li_16 = 0; else { if (l_minlot_36 >= 0.1) li_16 = 1; else if (l_minlot_36 >= 0.01) li_16 = 2; } ld_ret_8 = NormalizeDouble(ld_44 / ld_52, li_16); if (ld_ret_8 < l_minlot_36) ld_ret_8 = l_minlot_36; if (ld_ret_8 > l_maxlot_28) ld_ret_8 = l_maxlot_28; return (ld_ret_8); }