double gd_76 = 300.0; double gd_84 = 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_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_224 = TRUE; bool gi_228 = FALSE; extern bool UseAlert = FALSE; int gi_236 = 0; int gi_240 = 0; bool gi_244 = FALSE; bool gi_248 = FALSE; int gi_unused_252 = 14; int gi_unused_256 = 0; int g_count_260 = 0; int gi_264 = 1; int gi_268; double g_ima_272; double g_ima_280; double g_ima_288; double g_ima_296; double gd_328; double gd_344; double gd_360; int g_bars_368 = 0; string gs_372 = ""; bool gi_380 = FALSE; bool gi_384 = FALSE; extern bool Trade = FALSE; int init() { return (0); } int deinit() { return (0); } int start() { if (AccountNumber() != 200887) { Comment("Invalid NAME"); return (0); } if (IsVisualMode()) { Comment("Not work on VisualMode"); return (0); } if (WindowExpertName() != "EAKSP0309") { Comment("Invalid EA"); return (0); } if (LoseStop && gi_384) { 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_244 = TRUE; if (!Trade) { Comment("Not Trade Time"); return (0); } if (AC_digits) gi_264 = 10; else gi_264 = 1; if (gd_84 > 0.0) gi_224 = FALSE; int li_0 = MarketInfo(Symbol(), MODE_SPREAD) / gi_264; 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_360 = MaxLose * Lots; gi_236 = 0; g_ima_272 = iMA(NULL, 0, 50, 0, MODE_EMA, PRICE_CLOSE, 1); g_ima_280 = iMA(NULL, 0, 100, 0, MODE_EMA, PRICE_CLOSE, 1); g_ima_288 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, 1); g_ima_296 = iMA(NULL, 0, 400, 0, MODE_EMA, PRICE_CLOSE, 1); if (TYPE_C && g_ima_272 > g_ima_280 && g_ima_280 > g_ima_288 && g_ima_288 > g_ima_296 && (g_ima_272 - g_ima_296) / Point / gi_264 >= 80.0 && (g_ima_272 - g_ima_296) / Point / gi_264 <= 89.0 && (g_ima_272 - g_ima_280) / Point * gi_264 >= gi_96 * gi_264) { gi_236 = 1; gd_344 = l_tickvalue_4 * TYPE_C_TP * gi_264 * Lots; gs_372 = "TYPE_C : Ready to BUY"; if (UseAlert && !gi_380) { Alert("TYPE_C Ready to BUY ", Symbol()); gi_380 = TRUE; } Comment(gs_372 + "\n" + "Lot : " + Lots + "\n" + "Spread : " + li_0 + "\n" + "SecureProfit : " + gd_344 + "\n" + "Digits : " + Digits); } if (TYPE_D && g_ima_272 > g_ima_280 && g_ima_280 > g_ima_288 && g_ima_288 > g_ima_296 && (g_ima_272 - g_ima_296) / Point / gi_264 >= 90.0 && (g_ima_272 - g_ima_296) / Point / gi_264 <= 99.0 && (g_ima_272 - g_ima_280) / Point * gi_264 >= gi_96 * gi_264) { gi_236 = 1; gd_344 = l_tickvalue_4 * TYPE_D_TP * gi_264 * Lots; gs_372 = "TYPE_D : Ready to BUY"; if (UseAlert && !gi_380) { Alert("TYPE_D Ready to BUY ", Symbol()); gi_380 = TRUE; } Comment(gs_372 + "\n" + "Lot : " + Lots + "\n" + "Spread : " + li_0 + "\n" + "SecureProfit : " + gd_344 + "\n" + "Digits : " + Digits); } if (TYPE_E && g_ima_272 > g_ima_280 && g_ima_280 > g_ima_288 && g_ima_288 > g_ima_296 && (g_ima_272 - g_ima_296) / Point / gi_264 >= 110.0 && (g_ima_272 - g_ima_296) / Point / gi_264 <= 139.0 && (g_ima_272 - g_ima_280) / Point * gi_264 >= gi_96 * gi_264) { gi_236 = 1; gd_344 = l_tickvalue_4 * TYPE_E_TP * gi_264 * Lots; gs_372 = "TYPE_E : Ready to BUY"; if (UseAlert && !gi_380) { Alert("TYPE_E Ready to BUY ", Symbol()); gi_380 = TRUE; } Comment(gs_372 + "\n" + "Lot : " + Lots + "\n" + "Spread : " + li_0 + "\n" + "SecureProfit : " + gd_344 + "\n" + "Digits : " + Digits); } if (TYPE_A && g_ima_272 > g_ima_280 && g_ima_280 > g_ima_288 && g_ima_288 > g_ima_296 && (g_ima_272 - g_ima_296) / Point / gi_264 >= 40.0 && (g_ima_272 - g_ima_296) / Point / gi_264 <= 49.0 && (g_ima_272 - g_ima_280) / Point * gi_264 >= gi_96 * gi_264) { gi_236 = 1; gs_372 = "TYPE_A : Ready to BUY"; gd_344 = l_tickvalue_4 * TYPE_A_TP * gi_264 * Lots; if (UseAlert && !gi_380) { Alert("TYPE_A Ready to BUY ", Symbol()); gi_380 = TRUE; } Comment(gs_372 + "\n" + "Lot : " + Lots + "\n" + "Spread : " + li_0 + "\n" + "SecureProfit : " + gd_344 + "\n" + "Digits : " + Digits); } if (TYPE_B && g_ima_272 > g_ima_280 && g_ima_280 > g_ima_288 && g_ima_288 > g_ima_296 && (g_ima_272 - g_ima_296) / Point / gi_264 >= 70.0 && (g_ima_272 - g_ima_296) / Point / gi_264 <= 79.0 && (g_ima_272 - g_ima_280) / Point * gi_264 >= gi_96 * gi_264) { gi_236 = 1; gd_344 = l_tickvalue_4 * TYPE_B_TP * gi_264 * Lots; gs_372 = "TYPE_B : Ready to BUY"; if (UseAlert && !gi_380) { Alert("TYPE_B Ready to BUY ", Symbol()); gi_380 = TRUE; } Comment(gs_372 + "\n" + "Lot : " + Lots + "\n" + "Spread : " + li_0 + "\n" + "SecureProfit : " + gd_344 + "\n" + "Digits : " + Digits); } if (TYPE_C && g_ima_272 < g_ima_280 && g_ima_280 < g_ima_288 && g_ima_288 < g_ima_296 && (g_ima_296 - g_ima_272) / Point / gi_264 >= 80.0 && (g_ima_296 - g_ima_272) / Point / gi_264 <= 89.0 && (g_ima_280 - g_ima_272) / Point * gi_264 >= gi_96 * gi_264) { gi_236 = 2; gs_372 = "TYPE_C : Ready to SELL"; gd_344 = l_tickvalue_4 * TYPE_C_TP * gi_264 * Lots; if (UseAlert && !gi_380) { Alert("TYPE_C Ready to SELL ", Symbol()); gi_380 = TRUE; } Comment(gs_372 + "\n" + "Lot : " + Lots + "\n" + "Spread : " + li_0 + "\n" + "SecureProfit : " + gd_344 + "\n" + "Digits : " + Digits); } if (TYPE_D && g_ima_272 < g_ima_280 && g_ima_280 < g_ima_288 && g_ima_288 < g_ima_296 && (g_ima_296 - g_ima_272) / Point / gi_264 >= 90.0 && (g_ima_296 - g_ima_272) / Point / gi_264 <= 99.0 && (g_ima_280 - g_ima_272) / Point * gi_264 >= gi_96 * gi_264) { gi_236 = 2; gs_372 = "TYPE_D : Ready to SELL"; gd_344 = l_tickvalue_4 * TYPE_D_TP * gi_264 * Lots; if (UseAlert && !gi_380) { Alert("TYPE_D Ready to SELL ", Symbol()); gi_380 = TRUE; } Comment(gs_372 + "\n" + "Lot : " + Lots + "\n" + "Spread : " + li_0 + "\n" + "SecureProfit : " + gd_344 + "\n" + "Digits : " + Digits); } if (TYPE_E && g_ima_272 < g_ima_280 && g_ima_280 < g_ima_288 && g_ima_288 < g_ima_296 && (g_ima_296 - g_ima_272) / Point / gi_264 >= 110.0 && (g_ima_296 - g_ima_272) / Point / gi_264 <= 139.0 && (g_ima_280 - g_ima_272) / Point * gi_264 >= gi_96 * gi_264) { gi_236 = 2; gs_372 = "TYPE_E : Ready to SELL"; gd_344 = l_tickvalue_4 * TYPE_E_TP * gi_264 * Lots; if (UseAlert && !gi_380) { Alert("TYPE_E Ready to SELL ", Symbol()); gi_380 = TRUE; } Comment(gs_372 + "\n" + "Lot : " + Lots + "\n" + "Spread : " + li_0 + "\n" + "SecureProfit : " + gd_344 + "\n" + "Digits : " + Digits); } if (TYPE_A && g_ima_272 < g_ima_280 && g_ima_280 < g_ima_288 && g_ima_288 < g_ima_296 && (g_ima_296 - g_ima_272) / Point / gi_264 >= 40.0 && (g_ima_296 - g_ima_272) / Point / gi_264 <= 49.0 && (g_ima_280 - g_ima_272) / Point * gi_264 >= gi_96 * gi_264) { gi_236 = 2; gs_372 = "TYPE_A : Ready to SELL"; gd_344 = l_tickvalue_4 * TYPE_A_TP * gi_264 * Lots; if (UseAlert && !gi_380) { Alert("TYPE_A Ready to SELL ", Symbol()); gi_380 = TRUE; } Comment(gs_372 + "\n" + "Lot : " + Lots + "\n" + "Spread : " + li_0 + "\n" + "SecureProfit : " + gd_344 + "\n" + "Digits : " + Digits); } if (TYPE_B && g_ima_272 < g_ima_280 && g_ima_280 < g_ima_288 && g_ima_288 < g_ima_296 && (g_ima_296 - g_ima_272) / Point / gi_264 >= 70.0 && (g_ima_296 - g_ima_272) / Point / gi_264 <= 79.0 && (g_ima_280 - g_ima_272) / Point * gi_264 >= gi_96 * gi_264) { gi_236 = 2; gs_372 = "TYPE_B : Ready to SELL"; gd_344 = l_tickvalue_4 * TYPE_B_TP * gi_264 * Lots; if (UseAlert && !gi_380) { Alert("TYPE_B Ready to SELL ", Symbol()); gi_380 = TRUE; } Comment(gs_372 + "\n" + "Lot : " + Lots + "\n" + "Spread : " + li_0 + "\n" + "SecureProfit : " + gd_344 + "\n" + "Digits : " + Digits); } if (gi_236 == 0) { g_count_260 = 0; gi_380 = FALSE; if (SafetyMode) gd_344 = l_tickvalue_4 * SafetySecureProfit * gi_264 * Lots; gs_372 = "-Not Ready-"; Comment(gs_372 + "\n" + "Lot : " + Lots + "\n" + "Spread : " + li_0 + "\n" + "SecureProfit : " + gd_344 + "\n" + "Digits : " + Digits); } if (gi_236 == 1 && iLow(NULL, 0, 1) > g_ima_272 && Bid <= g_ima_272 + 1 * gi_264 * Point && OpenOrders(Magic) == 0 && g_bars_368 != Bars) { if (gd_84 == 0.0) gd_328 = g_ima_296 - gi_176 * gi_264 * Point; else gd_328 = Ask - gd_84 * gi_264 * Point; BuyOrder(0, 0, Lots, Magic); gi_240 = 1; if (SMail) SendMail("EAKSP03 BUY Order", Symbol() + " Buy 1st Position at " + Ask); if (OpenOrders(Magic) > 0) g_bars_368 = Bars; g_count_260++; return (0); } if (gi_236 == 2 && iHigh(NULL, 0, 1) < g_ima_272 && Bid >= g_ima_272 - 1 * gi_264 * Point && OpenOrders(Magic) == 0 && g_bars_368 != Bars) { if (gd_84 == 0.0) gd_328 = g_ima_296 + gi_176 * gi_264 * Point; else gd_328 = Bid + gd_84 * gi_264 * Point; SellOrder(0, 0, Lots, Magic); gi_240 = 2; if (SMail) SendMail("EAKSP03 SELL Order", Symbol() + " SELL 1st Position at " + Bid); if (OpenOrders(Magic) > 0) g_bars_368 = Bars; g_count_260++; return (0); } gi_268 = OpenOrders(Magic); if (gi_268 > 0 && OrderPlus(Magic) >= gd_344 && !gi_228) { gi_228 = TRUE; if (SMail) SendMail("EAKSP03 Close Order", Symbol() + " All position were closed. You win!"); } if (gi_268 > 0 && gd_360 + OrderPlus(Magic) <= 0.0 && !gi_228) { gi_228 = TRUE; if (SMail) SendMail("EAKSP03 Close Order", Symbol() + " All position were closed. You lose."); gi_248 = TRUE; } if (OpenOrders(Magic) == 0) { gi_240 = 0; gi_228 = FALSE; if (gi_244) { Trade = FALSE; gi_244 = FALSE; } if (gi_248) gi_384 = TRUE; } if (gi_228) { CloseAll(Magic); if (gi_244) { Trade = FALSE; gi_244 = FALSE; } return (0); } gi_240 = GetDirection(Magic); gi_268 = OpenOrders(Magic); if (gi_268 == 1 && gi_224) { if (gi_240 == 1 && Bid <= g_ima_280 + PositionADJ * gi_264 * Point) { BuyOrder(gd_328, gd_76 * gi_264, 2.0 * Lots, Magic); if (SMail) SendMail("EAKSP03 BUY Order", Symbol() + " Buy 2nd Position at " + Ask); } if (gi_240 == 2 && Bid >= g_ima_280 - PositionADJ * gi_264 * Point) { SellOrder(gd_328, gd_76 * gi_264, 2.0 * Lots, Magic); if (SMail) SendMail("EAKSP03 SELL Order", Symbol() + " SELL 2nd Position at " + Bid); } } if (gi_268 == 2 && gi_224) { if (gi_240 == 1 && Bid <= g_ima_288 + PositionADJ * gi_264 * Point) { BuyOrder(gd_328, gd_76 * gi_264, 4.0 * Lots, Magic); if (SMail) SendMail("EAKSP03 BUY Order", Symbol() + " Buy 3rd Position at " + Ask); } if (gi_240 == 2 && Bid >= g_ima_288 - PositionADJ * gi_264 * Point) { SellOrder(gd_328, gd_76 * gi_264, 4.0 * Lots, Magic); if (SMail) SendMail("EAKSP03 SELL Order", Symbol() + " SELL 3rd Position at " + Bid); } } if (gi_268 == 3 && gi_224) { if (gi_240 == 1 && Bid <= g_ima_296 + PositionADJ * gi_264 * Point) { BuyOrder(gd_328, gd_76 * gi_264, 8.0 * Lots, Magic); if (SMail) SendMail("EAKSP03 BUY Order", Symbol() + " Buy 4th Position at " + Ask); } if (gi_240 == 2 && Bid >= g_ima_296 - PositionADJ * gi_264 * Point) { SellOrder(gd_328, gd_76 * gi_264, 8.0 * Lots, Magic); if (SMail) SendMail("EAKSP03 SELL Order", Symbol() + " SELL 4th Position at " + Bid); } } return (0); } void BuyOrder(double ad_unused_0, double ad_unused_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, 0, 0, "EAKSP03 BUY", a_magic_24, 0, Blue); } void SellOrder(double ad_unused_0, double ad_unused_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, 0, 0, "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 l_free_magrin_44 = AccountFreeMargin(); 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(l_free_magrin_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); }