#property copyright "Copyright2009, Patrick Doucette" #property link "http://www.cash-cruiser.com" int g_magic_76 = 1234567; extern double Lots = 0.01; extern bool Micro_Account = FALSE; int gi_92 = 50; int gi_96 = 60; double gd_100 = 1.055; double gd_108 = 80.0; double gd_116 = 30.0; int g_slippage_124 = 5; int gi_128 = 1; int gi_132 = 3; double gd_136 = 100.01; bool gi_unused_144 = FALSE; bool gi_148 = FALSE; double gd_152 = 5000.0; bool gi_160 = FALSE; int init() { int li_0; int l_digits_4 = MarketInfo(Symbol(), MODE_DIGITS); if (l_digits_4 == 2 || l_digits_4 == 4) li_0 = 1; if (l_digits_4 == 3 || l_digits_4 == 5) li_0 = 10; if (gd_108 > 0.0) gd_108 = NormalizeDouble(gd_108 * li_0, Digits); else gd_108 = 0; gd_108 *= Point; if (gd_116 > 0.0) gd_116 = NormalizeDouble(gd_116 * li_0, Digits); else gd_116 = 0; gd_116 *= Point; if (g_slippage_124 > 0.0) g_slippage_124 = NormalizeDouble(g_slippage_124 * li_0, Digits); else g_slippage_124 = 0; g_slippage_124 *= Point; if (gi_128 > 0.0) gi_128 = NormalizeDouble(gi_128 * li_0, Digits); else gi_128 = 0; gi_128 *= Point; if (gi_132 > 0.0) gi_132 = NormalizeDouble(gi_132 * li_0, Digits); else gi_132 = 0; gi_132 *= Point; return (0); } int deinit() { GlobalVariableDel("next_level_" + Symbol()); GlobalVariableDel("test_next_level__" + Symbol()); return (0); } int start() { double l_global_var_0; double ld_8; double ld_16; bool li_24 = FALSE; bool li_28 = FALSE; double ld_32 = 0; double ld_40 = 0; int li_48 = 0; if (IsTesting() == TRUE) { if (OrdersTotal() < gi_92) { for (double l_pos_52 = 1; l_pos_52 < gi_96; l_pos_52++) { if (Ask <= gd_100 - gd_108 * l_pos_52 + gi_128 * Point && Ask >= gd_100 - gd_108 * l_pos_52 - gi_128 * Point) li_24 = TRUE; if (Bid <= gd_100 + gd_108 * l_pos_52 + gi_128 * Point && Bid >= gd_100 + gd_108 * l_pos_52 - gi_128 * Point) li_28 = TRUE; } } li_48 = OrdersTotal() - 1; for (l_pos_52 = li_48; l_pos_52 >= 0.0; l_pos_52--) { OrderSelect(l_pos_52, SELECT_BY_POS, MODE_TRADES); if ((OrderOpenPrice() <= Ask + gi_132 * Point && OrderOpenPrice() >= Ask - gi_132 * Point) || (OrderOpenPrice() <= Bid + gi_132 * Point && OrderOpenPrice() >= Bid - gi_132 * Point) && OrderMagicNumber() == g_magic_76) { li_24 = FALSE; li_28 = FALSE; } } if (gi_160 == FALSE && gi_148 == FALSE) { if (li_24 == TRUE) { ld_8 = OrderSend(Symbol(), OP_BUY, Lots, NormalizeDouble(Ask, Digits), g_slippage_124, 0, 0, "Buy(#" + 1 + ")", g_magic_76, 0, DodgerBlue); if (ld_8 != 1.0) Print("Error# " + GetLastError()); } if (li_28 == TRUE) { ld_16 = OrderSend(Symbol(), OP_SELL, Lots, NormalizeDouble(Bid, Digits), g_slippage_124, 0, 0, "Sell(#" + 1 + ")", g_magic_76, 0, DeepPink); if (ld_16 != 1.0) Print("Error# " + GetLastError()); } for (l_pos_52 = 0; l_pos_52 < OrdersTotal(); l_pos_52++) { OrderSelect(l_pos_52, SELECT_BY_POS, MODE_TRADES); if (OrderType() <= OP_SELL && OrderMagicNumber() == g_magic_76 && OrderTakeProfit() == 0.0) { if (OrderType() == OP_BUY) OrderModify(OrderTicket(), OrderOpenPrice(), 0, OrderOpenPrice() + gd_116, 0, CLR_NONE); else OrderModify(OrderTicket(), OrderOpenPrice(), 0, OrderOpenPrice() - gd_116, 0, CLR_NONE); } } for (l_pos_52 = 1; l_pos_52 < gi_96; l_pos_52++) { if (Ask - (gd_100 - gd_108 * l_pos_52) < gd_108) GlobalVariableSet("test_next_level_" + Symbol(), gd_100 - gd_108 * l_pos_52); if (gd_100 + gd_108 * l_pos_52 - Bid < gd_108) GlobalVariableSet("test_next_level_" + Symbol(), gd_100 + gd_108 * l_pos_52); } l_global_var_0 = GlobalVariableGet("test_next_level_" + Symbol()); for (l_pos_52 = 1; l_pos_52 < gi_96 - 1; l_pos_52++) { ld_32 += gd_100 + gd_108 * gi_96 - (gd_100 - gd_108 * (gi_96 - l_pos_52)); ld_40 = 100000.0 * ld_32 * Lots / 2.0; } if (OrdersTotal() < gi_92) if (OrdersTotal() >= gi_92) Comment("Full ", gi_92, " positions opened"); return (0); } if (gi_160 == FALSE && gi_148 == TRUE) { if (li_24 == TRUE) { ld_8 = OrderSend(Symbol(), OP_BUY, LotsOptimized(), NormalizeDouble(Ask, Digits), g_slippage_124, 0, 0, "Buy(#" + 1 + ")", g_magic_76, 0, DodgerBlue); if (ld_8 != 1.0) Print("Error# " + GetLastError()); } if (li_28 == TRUE) { ld_16 = OrderSend(Symbol(), OP_SELL, LotsOptimized(), NormalizeDouble(Bid, Digits), g_slippage_124, 0, 0, "Sell(#" + 1 + ")", g_magic_76, 0, DeepPink); if (ld_16 != 1.0) Print("Error# " + GetLastError()); } for (l_pos_52 = 0; l_pos_52 < OrdersTotal(); l_pos_52++) { OrderSelect(l_pos_52, SELECT_BY_POS, MODE_TRADES); if (OrderType() <= OP_SELL && OrderMagicNumber() == g_magic_76 && OrderTakeProfit() == 0.0) { if (OrderType() == OP_BUY) OrderModify(OrderTicket(), OrderOpenPrice(), 0, OrderOpenPrice() + gd_116, 0, CLR_NONE); else OrderModify(OrderTicket(), OrderOpenPrice(), 0, OrderOpenPrice() - gd_116, 0, CLR_NONE); } } for (l_pos_52 = 1; l_pos_52 < gi_96; l_pos_52++) { if (Ask - (gd_100 - gd_108 * l_pos_52) < gd_108) GlobalVariableSet("test_next_level_" + Symbol(), gd_100 - gd_108 * l_pos_52); if (gd_100 + gd_108 * l_pos_52 - Bid < gd_108) GlobalVariableSet("test_next_level_" + Symbol(), gd_100 + gd_108 * l_pos_52); } l_global_var_0 = GlobalVariableGet("test_next_level_" + Symbol()); for (l_pos_52 = 1; l_pos_52 < gi_96 - 1; l_pos_52++) { ld_32 += gd_100 + gd_108 * gi_96 - (gd_100 - gd_108 * (gi_96 - l_pos_52)); ld_40 = 100000.0 * ld_32 * LotsOptimized() / 2.0; } if (OrdersTotal() < gi_92) if (OrdersTotal() >= gi_92) Comment("Full ", gi_92, " positions opened"); return (0); } if (gi_160 == TRUE && gi_148 == FALSE) { if (li_24 == TRUE) { ld_8 = OrderSend(Symbol(), OP_BUY, Lots, NormalizeDouble(Ask, Digits), g_slippage_124, 0, 0, "Buy(#" + 1 + ")", g_magic_76, 0, DodgerBlue); if (ld_8 != 1.0) Print("Error# " + GetLastError()); } if (li_28 == TRUE) { ld_16 = OrderSend(Symbol(), OP_SELL, Lots, NormalizeDouble(Bid, Digits), g_slippage_124, 0, 0, "Sell(#" + 1 + ")", g_magic_76, 0, DeepPink); if (ld_16 != 1.0) Print("Error# " + GetLastError()); } for (l_pos_52 = 1; l_pos_52 < gi_96; l_pos_52++) { if (Ask - (gd_100 - gd_108 * l_pos_52) < gd_108) GlobalVariableSet("test_next_level_" + Symbol(), gd_100 - gd_108 * l_pos_52); if (gd_100 + gd_108 * l_pos_52 - Bid < gd_108) GlobalVariableSet("test_next_level_" + Symbol(), gd_100 + gd_108 * l_pos_52); } l_global_var_0 = GlobalVariableGet("test_next_level_" + Symbol()); for (l_pos_52 = 1; l_pos_52 < gi_96 - 1; l_pos_52++) { ld_32 += gd_100 + gd_108 * gi_96 - (gd_100 - gd_108 * (gi_96 - l_pos_52)); ld_40 = 100000.0 * ld_32 * Lots / 2.0; } if (OrdersTotal() < gi_92) if (OrdersTotal() >= gi_92) Comment("Full ", gi_92, " positions opened"); if (100.0 * (AccountEquity() / AccountBalance()) >= gd_136) { for (l_pos_52 = 0; l_pos_52 < OrdersTotal(); l_pos_52++) { OrderSelect(l_pos_52, SELECT_BY_POS, MODE_TRADES); if (OrderType() <= OP_SELL && OrderSymbol() == Symbol()) { if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), g_slippage_124, Yellow); else OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), g_slippage_124, Yellow); } l_pos_52--; } } return (0); } if (gi_160 == TRUE && gi_148 == TRUE) { if (li_24 == TRUE) { ld_8 = OrderSend(Symbol(), OP_BUY, LotsOptimized(), NormalizeDouble(Ask, Digits), g_slippage_124, 0, 0, "Buy(#" + 1 + ")", g_magic_76, 0, DodgerBlue); if (ld_8 != 1.0) Print("Error# " + GetLastError()); } if (li_28 == TRUE) { ld_16 = OrderSend(Symbol(), OP_SELL, LotsOptimized(), NormalizeDouble(Bid, Digits), g_slippage_124, 0, 0, "Sell(#" + 1 + ")", g_magic_76, 0, DeepPink); if (ld_16 != 1.0) Print("Error# " + GetLastError()); } for (l_pos_52 = 1; l_pos_52 < gi_96; l_pos_52++) { if (Ask - (gd_100 - gd_108 * l_pos_52) < gd_108) GlobalVariableSet("test_next_level_" + Symbol(), gd_100 - gd_108 * l_pos_52); if (gd_100 + gd_108 * l_pos_52 - Bid < gd_108) GlobalVariableSet("test_next_level_" + Symbol(), gd_100 + gd_108 * l_pos_52); } l_global_var_0 = GlobalVariableGet("test_next_level_" + Symbol()); for (l_pos_52 = 1; l_pos_52 < gi_96 - 1; l_pos_52++) { ld_32 += gd_100 + gd_108 * gi_96 - (gd_100 - gd_108 * (gi_96 - l_pos_52)); ld_40 = 100000.0 * ld_32 * LotsOptimized() / 2.0; } if (OrdersTotal() < gi_92) if (OrdersTotal() >= gi_92) Comment("Full ", gi_92, " positions opened"); if (100.0 * (AccountEquity() / AccountBalance()) >= gd_136) { for (l_pos_52 = 0; l_pos_52 < OrdersTotal(); l_pos_52++) { OrderSelect(l_pos_52, SELECT_BY_POS, MODE_TRADES); if (OrderType() <= OP_SELL && OrderSymbol() == Symbol()) { if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), g_slippage_124, Yellow); else OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), g_slippage_124, Yellow); } l_pos_52--; } } return (0); } } else { if (OrdersTotal() < gi_92) { for (l_pos_52 = 1; l_pos_52 < gi_96; l_pos_52++) { if (Ask == gd_100 - gd_108 * l_pos_52) li_24 = TRUE; if (Bid == gd_100 + gd_108 * l_pos_52) li_28 = TRUE; } } li_48 = OrdersTotal() - 1; for (l_pos_52 = li_48; l_pos_52 >= 0.0; l_pos_52--) { OrderSelect(l_pos_52, SELECT_BY_POS, MODE_TRADES); if (OrderOpenPrice() == Ask || OrderOpenPrice() == Bid && OrderMagicNumber() == g_magic_76) { li_24 = FALSE; li_28 = FALSE; } } if (gi_160 == FALSE && gi_148 == FALSE) { if (li_24 == TRUE) { ld_8 = OrderSend(Symbol(), OP_BUY, Lots, NormalizeDouble(Ask, Digits), g_slippage_124, 0, 0, "Buy(#" + 1 + ")", g_magic_76, 0, DodgerBlue); if (ld_8 != 1.0) Print("Error# " + GetLastError()); } if (li_28 == TRUE) { ld_16 = OrderSend(Symbol(), OP_SELL, Lots, NormalizeDouble(Bid, Digits), g_slippage_124, 0, 0, "Sell(#" + 1 + ")", g_magic_76, 0, DeepPink); if (ld_16 != 1.0) Print("Error# " + GetLastError()); } for (l_pos_52 = 0; l_pos_52 < OrdersTotal(); l_pos_52++) { OrderSelect(l_pos_52, SELECT_BY_POS, MODE_TRADES); if (OrderType() <= OP_SELL && OrderMagicNumber() == g_magic_76 && OrderTakeProfit() == 0.0) { if (OrderType() == OP_BUY) OrderModify(OrderTicket(), OrderOpenPrice(), 0, OrderOpenPrice() + gd_116, 0, CLR_NONE); else OrderModify(OrderTicket(), OrderOpenPrice(), 0, OrderOpenPrice() - gd_116, 0, CLR_NONE); } } for (l_pos_52 = 1; l_pos_52 < gi_96; l_pos_52++) { if (Ask - (gd_100 - gd_108 * l_pos_52) < gd_108) GlobalVariableSet("next_level_" + Symbol(), gd_100 - gd_108 * l_pos_52); if (gd_100 + gd_108 * l_pos_52 - Bid < gd_108) GlobalVariableSet("next_level_" + Symbol(), gd_100 + gd_108 * l_pos_52); } l_global_var_0 = GlobalVariableGet("next_level_" + Symbol()); for (l_pos_52 = 1; l_pos_52 < gi_96 - 1; l_pos_52++) { ld_32 += gd_100 + gd_108 * gi_96 - (gd_100 - gd_108 * (gi_96 - l_pos_52)); ld_40 = 100000.0 * ld_32 * Lots / 2.0; } if (OrdersTotal() < gi_92) if (OrdersTotal() >= gi_92) Comment("Full ", gi_92, " positions opened"); return (0); } if (gi_160 == FALSE && gi_148 == TRUE) { if (li_24 == TRUE) { ld_8 = OrderSend(Symbol(), OP_BUY, LotsOptimized(), NormalizeDouble(Ask, Digits), g_slippage_124, 0, 0, "Buy(#" + 1 + ")", g_magic_76, 0, DodgerBlue); if (ld_8 != 1.0) Print("Error# " + GetLastError()); } if (li_28 == TRUE) { ld_16 = OrderSend(Symbol(), OP_SELL, LotsOptimized(), NormalizeDouble(Bid, Digits), g_slippage_124, 0, 0, "Sell(#" + 1 + ")", g_magic_76, 0, DeepPink); if (ld_16 != 1.0) Print("Error# " + GetLastError()); } for (l_pos_52 = 0; l_pos_52 < OrdersTotal(); l_pos_52++) { OrderSelect(l_pos_52, SELECT_BY_POS, MODE_TRADES); if (OrderType() <= OP_SELL && OrderMagicNumber() == g_magic_76 && OrderTakeProfit() == 0.0) { if (OrderType() == OP_BUY) OrderModify(OrderTicket(), OrderOpenPrice(), 0, OrderOpenPrice() + gd_116, 0, CLR_NONE); else OrderModify(OrderTicket(), OrderOpenPrice(), 0, OrderOpenPrice() - gd_116, 0, CLR_NONE); } } for (l_pos_52 = 1; l_pos_52 < gi_96; l_pos_52++) { if (Ask - (gd_100 - gd_108 * l_pos_52) < gd_108) GlobalVariableSet("next_level_" + Symbol(), gd_100 - gd_108 * l_pos_52); if (gd_100 + gd_108 * l_pos_52 - Bid < gd_108) GlobalVariableSet("next_level_" + Symbol(), gd_100 + gd_108 * l_pos_52); } l_global_var_0 = GlobalVariableGet("next_level_" + Symbol()); for (l_pos_52 = 1; l_pos_52 < gi_96 - 1; l_pos_52++) { ld_32 += gd_100 + gd_108 * gi_96 - (gd_100 - gd_108 * (gi_96 - l_pos_52)); ld_40 = 100000.0 * ld_32 * LotsOptimized() / 2.0; } if (OrdersTotal() < gi_92) if (OrdersTotal() >= gi_92) Comment("Full ", gi_92, " positions opened"); return (0); } if (gi_160 == TRUE && gi_148 == FALSE) { if (li_24 == TRUE) { ld_8 = OrderSend(Symbol(), OP_BUY, Lots, NormalizeDouble(Ask, Digits), g_slippage_124, 0, 0, "Buy(#" + 1 + ")", g_magic_76, 0, DodgerBlue); if (ld_8 != 1.0) Print("Error# " + GetLastError()); } if (li_28 == TRUE) { ld_16 = OrderSend(Symbol(), OP_SELL, Lots, NormalizeDouble(Bid, Digits), g_slippage_124, 0, 0, "Sell(#" + 1 + ")", g_magic_76, 0, DeepPink); if (ld_16 != 1.0) Print("Error# " + GetLastError()); } for (l_pos_52 = 1; l_pos_52 < gi_96; l_pos_52++) { if (Ask - (gd_100 - gd_108 * l_pos_52) < gd_108) GlobalVariableSet("next_level_" + Symbol(), gd_100 - gd_108 * l_pos_52); if (gd_100 + gd_108 * l_pos_52 - Bid < gd_108) GlobalVariableSet("next_level_" + Symbol(), gd_100 + gd_108 * l_pos_52); } l_global_var_0 = GlobalVariableGet("next_level_" + Symbol()); for (l_pos_52 = 1; l_pos_52 < gi_96 - 1; l_pos_52++) { ld_32 += gd_100 + gd_108 * gi_96 - (gd_100 - gd_108 * (gi_96 - l_pos_52)); ld_40 = 100000.0 * ld_32 * Lots / 2.0; } if (OrdersTotal() < gi_92) if (OrdersTotal() >= gi_92) Comment("Full ", gi_92, " positions opened"); if (100.0 * (AccountEquity() / AccountBalance()) >= gd_136) { for (l_pos_52 = 0; l_pos_52 < OrdersTotal(); l_pos_52++) { OrderSelect(l_pos_52, SELECT_BY_POS, MODE_TRADES); if (OrderType() <= OP_SELL && OrderSymbol() == Symbol()) { if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), g_slippage_124, Yellow); else OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), g_slippage_124, Yellow); } l_pos_52--; } } return (0); } if (gi_160 == TRUE && gi_148 == TRUE) { if (li_24 == TRUE) { ld_8 = OrderSend(Symbol(), OP_BUY, LotsOptimized(), NormalizeDouble(Ask, Digits), g_slippage_124, 0, 0, "Buy(#" + 1 + ")", g_magic_76, 0, DodgerBlue); if (ld_8 != 1.0) Print("Error# " + GetLastError()); } if (li_28 == TRUE) { ld_16 = OrderSend(Symbol(), OP_SELL, LotsOptimized(), NormalizeDouble(Bid, Digits), g_slippage_124, 0, 0, "Sell(#" + 1 + ")", g_magic_76, 0, DeepPink); if (ld_16 != 1.0) Print("Error# " + GetLastError()); } for (l_pos_52 = 1; l_pos_52 < gi_96; l_pos_52++) { if (Ask - (gd_100 - gd_108 * l_pos_52) < gd_108) GlobalVariableSet("next_level_" + Symbol(), gd_100 - gd_108 * l_pos_52); if (gd_100 + gd_108 * l_pos_52 - Bid < gd_108) GlobalVariableSet("next_level_" + Symbol(), gd_100 + gd_108 * l_pos_52); } l_global_var_0 = GlobalVariableGet("next_level_" + Symbol()); for (l_pos_52 = 1; l_pos_52 < gi_96 - 1; l_pos_52++) { ld_32 += gd_100 + gd_108 * gi_96 - (gd_100 - gd_108 * (gi_96 - l_pos_52)); ld_40 = 100000.0 * ld_32 * LotsOptimized() / 2.0; } if (OrdersTotal() < gi_92) if (OrdersTotal() >= gi_92) Comment("Full ", gi_92, " positions opened"); if (100.0 * (AccountEquity() / AccountBalance()) >= gd_136) { for (l_pos_52 = 0; l_pos_52 < OrdersTotal(); l_pos_52++) { OrderSelect(l_pos_52, SELECT_BY_POS, MODE_TRADES); if (OrderType() <= OP_SELL && OrderSymbol() == Symbol()) { if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), g_slippage_124, Yellow); else OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), g_slippage_124, Yellow); } l_pos_52--; } } return (0); } } return (0); } double LotsOptimized() { double l_lots_0 = Lots; if (Micro_Account == TRUE) { l_lots_0 = NormalizeDouble(MathFloor(AccountBalance() / gd_152) / 100.0 - 0.005, 2); if (l_lots_0 < 0.01) l_lots_0 = 0.01; return (l_lots_0); } l_lots_0 = NormalizeDouble(MathFloor(AccountBalance() / gd_152) / 100.0 - 0.05, 1); if (l_lots_0 < 0.1) l_lots_0 = 0.1; return (l_lots_0); }