#property copyright "Souza" #property link "http://www.souzacompany.ubbi.com.br" extern int MagicNumber = 13141; extern bool SignalMail = FALSE; extern bool EachTickMode = TRUE; extern double Lots = 0.1; extern int Slippage = 3; extern bool StopLossMode = TRUE; extern int StopLoss = 12; extern bool TakeProfitMode = TRUE; extern int TakeProfit = 60; extern bool TrailingStopMode = TRUE; extern int TrailingStop = 11; extern double DecreaseFactor = 3.0; extern double MaximumRisk = 0.1; extern double Maxlots = 10000.0; extern bool SouzaSecurityLogic = FALSE; int gi_152; int gi_156; bool gi_160 = FALSE; double LotsOptimized() { double ld_0 = Lots; int li_8 = OrdersHistoryTotal(); int li_12 = 0; ld_0 = NormalizeDouble(AccountFreeMargin() * MaximumRisk / 1000.0, 1); if (DecreaseFactor > 0.0) { for (int li_16 = li_8 - 1; li_16 >= 0; li_16--) { if (OrderSelect(li_16, SELECT_BY_POS, MODE_HISTORY) == FALSE) { Print("Error in history!"); break; } if (OrderSymbol() != Symbol() || OrderType() > OP_SELL) continue; if (OrderProfit() > 0.0) break; if (OrderProfit() < 0.0) li_12++; } if (li_12 > 1) ld_0 = NormalizeDouble(ld_0 - ld_0 * li_12 / DecreaseFactor, 1); } if (ld_0 > Maxlots) ld_0 = Maxlots; if (ld_0 < 0.1) ld_0 = 0.1; return (ld_0); } int init() { gi_152 = Bars; if (EachTickMode) gi_156 = 0; else gi_156 = 1; return (0); } int deinit() { return (0); } int start() { int li_0; int li_4; int li_8; int li_12; double ld_20; double ld_28; double ld_36; double ld_44; double ld_52; double ld_60; double ld_68; double ld_76; double ld_84; double ld_92; double ld_100; double ld_108; double ld_116; double ld_124; double ld_132; double ld_140; double ld_148; double ld_156; double ld_164; double ld_172; double ld_180; double ld_188; double ld_196; double ld_204; double ld_212; double ld_220; bool li_228; if (IsDemo() == FALSE || TimeYear(TimeCurrent()) > 2007 || AccountNumber() < 405797 || AccountNumber() > 405797) Alert("Demo-version for Roger runs only on demo account and account number 405797 only year 2007 "); if (IsDemo() && TimeYear(TimeCurrent()) <= 2007 && AccountNumber() == 405797) { li_0 = 0; li_4 = 1; ld_36 = 3; if (EachTickMode && Bars != gi_152) gi_160 = FALSE; li_8 = OrdersTotal(); li_0 = 0; ld_44 = iStochastic(NULL, 0, 7, 10, 4, MODE_SMA, 0, MODE_SIGNAL, gi_156 + 0); ld_52 = iStochastic(NULL, 0, 7, 10, 4, MODE_SMA, 0, MODE_MAIN, gi_156 + 0); ld_60 = iStochastic(NULL, 0, 48, 7, 1, MODE_SMA, 0, MODE_SIGNAL, gi_156 + 0); ld_68 = iStochastic(NULL, 0, 48, 7, 1, MODE_SMA, 0, MODE_MAIN, gi_156 + 0); ld_76 = iMA(NULL, 0, 4, 8, MODE_SMMA, PRICE_WEIGHTED, 0); ld_84 = iMA(NULL, 0, 21, 8, MODE_SMMA, PRICE_WEIGHTED, 0); ld_92 = iStochastic(NULL, 0, 7, 10, 4, MODE_SMA, 0, MODE_SIGNAL, gi_156 + 0); ld_100 = iStochastic(NULL, 0, 7, 10, 4, MODE_SMA, 0, MODE_MAIN, gi_156 + 0); ld_108 = iStochastic(NULL, 0, 48, 7, 1, MODE_SMA, 0, MODE_SIGNAL, gi_156 + 0); ld_116 = iStochastic(NULL, 0, 48, 7, 1, MODE_SMA, 0, MODE_MAIN, gi_156 + 0); ld_124 = iMA(NULL, 0, 4, 8, MODE_SMMA, PRICE_WEIGHTED, 0); ld_132 = iMA(NULL, 0, 21, 8, MODE_SMMA, PRICE_WEIGHTED, 0); ld_140 = iMA(NULL, 0, 30, 0, MODE_EMA, PRICE_CLOSE, 0); ld_148 = iMA(NULL, 0, 100, 0, MODE_EMA, PRICE_CLOSE, 0); ld_156 = iMA(NULL, 0, 15, 0, MODE_EMA, PRICE_CLOSE, 0); ld_164 = iMA(NULL, 0, 1, 0, MODE_EMA, PRICE_CLOSE, 0); ld_172 = iMA(NULL, 0, 11, 0, MODE_EMA, PRICE_CLOSE, 0); ld_180 = iMA(NULL, 0, 1, 0, MODE_SMMA, PRICE_WEIGHTED, 0); ld_188 = iMA(NULL, PERIOD_M5, 1, 0, MODE_SMMA, PRICE_WEIGHTED, 0); ld_196 = iMA(NULL, 0, 3, 0, MODE_EMA, PRICE_CLOSE, 0); ld_204 = iMA(NULL, PERIOD_M5, 1, 0, MODE_EMA, PRICE_CLOSE, 0); ld_212 = iMA(NULL, PERIOD_M5, 3, 0, MODE_EMA, PRICE_CLOSE, 0); ld_220 = iMA(NULL, PERIOD_M5, 21, 0, MODE_EMA, PRICE_CLOSE, 0); li_228 = FALSE; for (int li_232 = 0; li_232 < li_8; li_232++) { OrderSelect(li_232, SELECT_BY_POS, MODE_TRADES); if (OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) { li_228 = TRUE; if (OrderType() == OP_BUY) { if (ld_164 < ld_140 - 109.0 * Point) ld_36 = 15; else ld_36 = 3; if (OrderOpenPrice() < Bid - ld_36 * Point && ld_140 < ld_148 + 30.0 * Point) li_0 = 3; if (OrderOpenPrice() < Bid - ld_36 * Point && ld_164 < ld_140 - 40.0 * Point) li_0 = 3; if (li_0 == 3 && (EachTickMode && !gi_160) || (!EachTickMode && Bars != gi_152)) { OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy"); if (!EachTickMode) gi_152 = Bars; li_228 = FALSE; } else { if (TrailingStopMode && TrailingStop > 0) { if (Bid - OrderOpenPrice() > Point * TrailingStop) { if (OrderStopLoss() < Bid - Point * TrailingStop) { OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen); if (!EachTickMode) gi_152 = Bars; } else { } } } } } else { if (ld_164 > ld_140 + 109.0 * Point) ld_36 = 15; else ld_36 = 3; if (OrderOpenPrice() > Ask + ld_36 * Point && ld_140 > ld_148 - 30.0 * Point) li_0 = 4; if (OrderOpenPrice() > Ask + ld_36 * Point && ld_164 > ld_140 - 40.0 * Point) li_0 = 4; if (li_0 == 4 && (EachTickMode && !gi_160) || (!EachTickMode && Bars != gi_152)) { OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell"); if (!EachTickMode) gi_152 = Bars; li_228 = FALSE; } else { if (TrailingStopMode && TrailingStop > 0) { if (OrderOpenPrice() - Ask > Point * TrailingStop) { if (OrderStopLoss() > Ask + Point * TrailingStop || OrderStopLoss() == 0.0) { OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange); if (!EachTickMode) gi_152 = Bars; } } } } } } } if (ld_140 > ld_148 + 41.0 * Point) li_4 = 2; if (ld_140 < ld_148 - 41.0 * Point) li_4 = 3; else li_4 = 1; if (SouzaSecurityLogic == FALSE) { if (Bid + 11.0 * Point < ld_180 && li_4 == 1 || li_4 == 2) li_0 = 1; if (Ask - 11.0 * Point > ld_180 && li_4 == 1 || li_4 == 3) li_0 = 2; if (Bid + 7.0 * Point < ld_180 && li_4 == 2) li_0 = 1; if (Ask - 7.0 * Point > ld_180 && li_4 == 3) li_0 = 2; if (ld_140 > ld_148 + 41.0 * Point && ld_164 < ld_140 - 8.0 * Point) li_0 = 1; if (ld_140 < ld_148 - 41.0 * Point && ld_164 > ld_140 + 8.0 * Point) li_0 = 2; if (ld_140 > ld_148 + 41.0 * Point && ld_204 < ld_212 - 10.0 * Point) li_0 = 1; if (ld_140 < ld_148 - 41.0 * Point && ld_204 > ld_212 + 10.0 * Point) li_0 = 2; if (Bid + 3.0 * Point < ld_188 && ld_44 > ld_52 && ld_60 > ld_68 && li_4 == 1 || li_4 == 2) li_0 = 1; if (Ask - 4.0 * Point > ld_188 && ld_92 < ld_100 && ld_108 < ld_116 && li_4 == 1 || li_4 == 3) li_0 = 2; } if (SouzaSecurityLogic == TRUE) { StopLoss = 60; TrailingStop = 18; if (ld_44 > ld_52 && ld_60 > ld_68 && ld_164 > ld_140 && ld_172 < ld_140) li_0 = 1; if (ld_92 < ld_100 && ld_108 < ld_116 && ld_164 < ld_140 && ld_172 > ld_140) li_0 = 2; if (ld_140 > ld_148 + 40.0 * Point && ld_164 < ld_140 - 10.0 * Point) li_0 = 1; if (ld_140 < ld_148 - 40.0 * Point && ld_164 > ld_140 + 10.0 * Point) li_0 = 2; if (ld_140 > ld_148 + 40.0 * Point && ld_204 < ld_212 - 11.0 * Point) li_0 = 1; if (ld_140 < ld_148 - 40.0 * Point && ld_204 > ld_212 + 11.0 * Point) li_0 = 2; } if (li_0 == 1 && (EachTickMode && !gi_160) || (!EachTickMode && Bars != gi_152)) { if (!li_228) { if (AccountFreeMargin() < 1000.0 * Lots) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return (0); } if (StopLossMode) ld_20 = Ask - StopLoss * Point; else ld_20 = 0.0; if (TakeProfitMode) ld_28 = Ask + TakeProfit * Point; else ld_28 = 0.0; li_12 = OrderSend(Symbol(), OP_BUY, LotsOptimized(), Ask, Slippage, ld_20, ld_28, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue); if (li_12 > 0) { if (OrderSelect(li_12, SELECT_BY_TICKET, MODE_TRADES)) { Print("BUY order opened : ", OrderOpenPrice()); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy"); } else Print("Error opening BUY order : ", GetLastError()); } if (EachTickMode) gi_160 = TRUE; if (!EachTickMode) gi_152 = Bars; return (0); } } if (li_0 == 2 && (EachTickMode && !gi_160) || (!EachTickMode && Bars != gi_152)) { if (!li_228) { if (AccountFreeMargin() < 1000.0 * Lots) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return (0); } if (StopLossMode) ld_20 = Bid + StopLoss * Point; else ld_20 = 0.0; if (TakeProfitMode) ld_28 = Bid - TakeProfit * Point; else ld_28 = 0.0; li_12 = OrderSend(Symbol(), OP_SELL, LotsOptimized(), Bid, Slippage, ld_20, ld_28, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink); if (li_12 > 0) { if (OrderSelect(li_12, SELECT_BY_TICKET, MODE_TRADES)) { Print("SELL order opened : ", OrderOpenPrice()); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell"); } else Print("Error opening SELL order : ", GetLastError()); } if (EachTickMode) gi_160 = TRUE; if (!EachTickMode) gi_152 = Bars; return (0); } } if (!EachTickMode) gi_152 = Bars; return (0); } return (0); }