#property copyright "Copyright © 2007, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" extern double step = 25.0; extern int StepMode = 0; extern double proffactor = 10.0; extern double mult = 1.5; extern double lotsbuy = 0.01; extern double lotssell = 0.01; extern double per_K = 200.0; extern double per_D = 20.0; extern double slow = 20.0; extern double zoneBUY = 50.0; extern double zoneSELL = 50.0; extern double Magicbuy = 555.0; extern double Magicsell = 556.0; double g_ord_open_price_176; double g_ord_open_price_184; double g_ord_lots_192; double g_ord_lots_200; double g_ord_lots_208; double g_ord_lots_216; double g_price_224; double g_price_232; double g_pos_240; double g_ticket_272; double g_ticket_280; double gd_288; double g_free_magrin_296; double gd_304; double gd_328; int gi_368 = D'17.09.2001 08:53:47'; int OrdersTotalMagicbuy(int a_magic_0) { int l_count_4 = 0; for (int l_pos_8 = 0; l_pos_8 < OrdersTotal(); l_pos_8++) { if (OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES)) if (OrderMagicNumber() == a_magic_0) l_count_4++; } return (l_count_4); } int OrdersTotalMagicsell(int a_magic_0) { int l_count_4 = 0; for (int l_pos_8 = 0; l_pos_8 < OrdersTotal(); l_pos_8++) { if (OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES)) if (OrderMagicNumber() == a_magic_0) l_count_4++; } return (l_count_4); } int orderclosebuy(int a_ticket_0) { double l_bid_16; string l_symbol_4 = Symbol(); for (int l_ord_total_12 = OrdersTotal(); l_ord_total_12 >= 0; l_ord_total_12--) { OrderSelect(l_ord_total_12, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == l_symbol_4 && OrderMagicNumber() == Magicbuy) { a_ticket_0 = OrderTicket(); OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES); g_ord_lots_192 = OrderLots(); l_bid_16 = MarketInfo(l_symbol_4, MODE_BID); RefreshRates(); OrderClose(a_ticket_0, g_ord_lots_192, l_bid_16, 3, Fuchsia); } } g_ord_lots_192 = lotsbuy; return (0); } int orderclosesell(int a_ticket_0) { double l_ask_16; string l_symbol_4 = Symbol(); for (int l_ord_total_12 = OrdersTotal(); l_ord_total_12 >= 0; l_ord_total_12--) { OrderSelect(l_ord_total_12, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == l_symbol_4 && OrderMagicNumber() == Magicsell) { a_ticket_0 = OrderTicket(); OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES); g_ord_lots_200 = OrderLots(); l_ask_16 = MarketInfo(l_symbol_4, MODE_ASK); RefreshRates(); OrderClose(a_ticket_0, g_ord_lots_200, l_ask_16, 3, Lime); } } g_ord_lots_200 = lotssell; return (0); } int start() { double ld_0; double ld_8; string l_symbol_16; double l_spread_24; double l_minlot_32; double ld_40; double ld_48; double l_bid_56; double l_ask_64; if (AccountNumber() == gi_368) { ld_0 = 0; ld_8 = 0; l_symbol_16 = OrderSymbol(); l_spread_24 = MarketInfo(l_symbol_16, MODE_SPREAD); l_minlot_32 = MarketInfo(l_symbol_16, MODE_MINLOT); if (l_minlot_32 == 0.01) { gd_328 = 2; gd_288 = MarketInfo(l_symbol_16, MODE_MAXLOT); } if (l_minlot_32 == 0.1) { gd_328 = 1; gd_288 = AccountBalance() / 2.0 / 1000.0; } if (OrdersTotalMagicbuy(Magicbuy) > 0) { for (g_pos_240 = 0; g_pos_240 < OrdersTotal(); g_pos_240++) { OrderSelect(g_pos_240, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magicbuy) { g_ticket_272 = OrderTicket(); OrderSelect(g_ticket_272, SELECT_BY_TICKET, MODE_TRADES); ld_40 += OrderLots(); g_ord_open_price_176 = OrderOpenPrice(); g_ord_lots_208 = OrderLots(); } } if (ld_40 + NormalizeDouble(g_ord_lots_208 * mult, gd_328) < gd_288) { if (StepMode == 0) { if (Ask <= g_ord_open_price_176 - step * Point) { g_ord_lots_192 = g_ord_lots_208 * mult; RefreshRates(); g_ticket_272 = OrderSend(Symbol(), OP_BUY, NormalizeDouble(g_ord_lots_192, gd_328), Ask, 3, 0, 0, "double Expert", Magicbuy, 0, Blue); } } if (StepMode == 1) { if (Ask <= g_ord_open_price_176 - (step + OrdersTotalMagicbuy(Magicbuy) + OrdersTotalMagicbuy(Magicbuy) - 2.0) * Point) { g_ord_lots_192 = g_ord_lots_208 * mult; RefreshRates(); g_ticket_272 = OrderSend(Symbol(), OP_BUY, NormalizeDouble(g_ord_lots_192, gd_328), Ask, 3, 0, 0, "double Expert", Magicbuy, 0, Blue); } } } } if (OrdersTotalMagicsell(Magicsell) > 0) { for (g_pos_240 = 0; g_pos_240 < OrdersTotal(); g_pos_240++) { OrderSelect(g_pos_240, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magicsell) { g_ticket_280 = OrderTicket(); OrderSelect(g_ticket_280, SELECT_BY_TICKET, MODE_TRADES); ld_48 += OrderLots(); g_ord_open_price_184 = OrderOpenPrice(); g_ord_lots_216 = OrderLots(); } } if (ld_48 + NormalizeDouble(g_ord_lots_216 * mult, gd_328) < gd_288) { if (StepMode == 0) { if (Bid >= g_ord_open_price_184 + step * Point) { g_ord_lots_200 = g_ord_lots_216 * mult; RefreshRates(); g_ticket_280 = OrderSend(Symbol(), OP_SELL, NormalizeDouble(g_ord_lots_200, gd_328), Bid, 3, 0, 0, "double Expert", Magicsell, 0, Red); } } if (StepMode == 1) { if (Bid >= g_ord_open_price_184 + (step + OrdersTotalMagicsell(Magicsell) + OrdersTotalMagicsell(Magicsell) - 2.0) * Point) { g_ord_lots_200 = g_ord_lots_216 * mult; RefreshRates(); g_ticket_280 = OrderSend(Symbol(), OP_SELL, NormalizeDouble(g_ord_lots_200, gd_328), Bid, 3, 0, 0, "double Expert", Magicsell, 0, Red); } } } } if (OrdersTotalMagicbuy(Magicbuy) < 1) if (iStochastic(NULL, 0, per_K, per_D, slow, MODE_LWMA, 1, MODE_MAIN, 1) > iStochastic(NULL, 0, per_K, per_D, slow, MODE_LWMA, 1, MODE_SIGNAL, 1) && iStochastic(NULL, 0, per_K, per_D, slow, MODE_LWMA, 1, MODE_SIGNAL, 1) > zoneBUY) g_ticket_272 = OrderSend(Symbol(), OP_BUY, lotsbuy, Ask, 3, 0, 0, "double Expert", Magicbuy, 0, Blue); if (OrdersTotalMagicsell(Magicsell) < 1) if (iStochastic(NULL, 0, per_K, per_D, slow, MODE_LWMA, 1, MODE_MAIN, 1) < iStochastic(NULL, 0, per_K, per_D, slow, MODE_LWMA, 1, MODE_SIGNAL, 1) && iStochastic(NULL, 0, per_K, per_D, slow, MODE_LWMA, 1, MODE_SIGNAL, 1) < zoneSELL) g_ticket_280 = OrderSend(Symbol(), OP_SELL, lotssell, Bid, 3, 0, 0, "double Expert", Magicsell, 0, Red); for (g_pos_240 = 0; g_pos_240 < OrdersTotal(); g_pos_240++) { OrderSelect(g_pos_240, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magicbuy) { g_ticket_272 = OrderTicket(); OrderSelect(g_ticket_272, SELECT_BY_TICKET, MODE_TRADES); ld_0 += OrderProfit(); g_ord_open_price_176 = OrderOpenPrice(); } } g_price_224 = OrdersTotalMagicbuy(Magicbuy) * proffactor * Point + g_ord_open_price_176; l_bid_56 = MarketInfo(Symbol(), MODE_BID); if (ld_0 > 0.0) if (Bid >= g_price_224) orderclosebuy(g_ticket_272); for (g_pos_240 = 0; g_pos_240 < OrdersTotal(); g_pos_240++) { OrderSelect(g_pos_240, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magicsell) { g_ticket_280 = OrderTicket(); OrderSelect(g_ticket_280, SELECT_BY_TICKET, MODE_TRADES); ld_8 += OrderProfit(); g_ord_open_price_184 = OrderOpenPrice(); } } g_price_232 = g_ord_open_price_184 - OrdersTotalMagicsell(Magicsell) * proffactor * Point; l_ask_64 = MarketInfo(Symbol(), MODE_ASK); if (ld_8 > 0.0) if (Ask <= g_price_232) orderclosesell(g_ticket_280); g_free_magrin_296 = AccountFreeMargin(); gd_304 = AccountBalance(); for (g_pos_240 = 0; g_pos_240 < OrdersTotal(); g_pos_240++) { OrderSelect(g_pos_240, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magicbuy) g_ticket_272 = OrderTicket(); if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magicsell) g_ticket_280 = OrderTicket(); } if (OrdersTotalMagicbuy(Magicbuy) == 0) { ld_0 = 0; g_ticket_272 = 0; g_price_224 = 0; } if (OrdersTotalMagicsell(Magicsell) == 0) { ld_8 = 0; g_ticket_280 = 0; g_price_232 = 0; } Comment("FreeMargin = ", NormalizeDouble(g_free_magrin_296, 0), " Balance = ", NormalizeDouble(gd_304, 0), " maxLot = ", NormalizeDouble(gd_288, gd_328), "\n", "Totalbuy = ", OrdersTotalMagicbuy(Magicbuy), " Lot = ", ld_40, " Totalsell = ", OrdersTotalMagicsell(Magicsell), " Lot = ", ld_48, "\n", "---------------------------------------------------------------", "\n", "Profitbuy = ", ld_0, "\n", "Profitsell = ", ld_8); for (int li_72 = 0; li_72 < 2; li_72 += 2) { ObjectDelete("rect" + li_72); ObjectCreate("rect" + li_72, OBJ_HLINE, 0, 0, g_price_232); ObjectSet("rect" + li_72, OBJPROP_COLOR, Red); ObjectSet("rect" + li_72, OBJPROP_WIDTH, 1); ObjectSet("rect" + li_72, OBJPROP_RAY, FALSE); } for (int li_76 = 0; li_76 < 2; li_76 += 2) { ObjectDelete("rect1" + li_76); ObjectCreate("rect1" + li_76, OBJ_HLINE, 0, 0, g_price_224); ObjectSet("rect1" + li_76, OBJPROP_COLOR, Blue); ObjectSet("rect1" + li_76, OBJPROP_WIDTH, 1); ObjectSet("rect1" + li_76, OBJPROP_RAY, FALSE); } } return (0); }