{\rtf1\fbidis\ansi\ansicpg1256\deff0\deflang13313{\fonttbl{\f0\fmodern\fprq1\fcharset0 Courier New;}{\f1\fswiss\fcharset0 Arial;}} {\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\ltrpar\lang2057\f0\fs20 #define SIGNAL_NONE 0\par #define SIGNAL_BUY 1\par #define SIGNAL_SELL 2\par #define SIGNAL_CLOSEBUY 3\par #define SIGNAL_CLOSESELL 4\par \lang1033\f1\par extern int MagicNumber = 0;\par extern bool SignalMail = False;\par extern bool EachTickMode = [[EAB_EachTickMode]];\par extern double Lots = [[EAB_Lots]];\par extern int Slippage = [[EAB_Slippage]];\par extern bool StopLossMode = [[EAB_StopLossMode]];\par extern int StopLoss = [[EAB_StopLoss]];\par extern bool TakeProfitMode = [[EAB_TakeProfitMode]];\par extern int TakeProfit = [[EAB_TakeProfit]];\par extern bool TrailingStopMode = [[EAB_TrailingStopMode]];\par extern int TrailingStop = [[EAB_TrailingStop]];\par \par int BarCount;\par int Current;\par bool TickCheck = False;\par //+------------------------------------------------------------------+\par //| expert initialization function |\par //+------------------------------------------------------------------+\par int init() \{\par BarCount = Bars;\par \par if (EachTickMode) Current = 0; else Current = 1;\par \par return(0);\par \}\par //+------------------------------------------------------------------+\par //| expert deinitialization function |\par //+------------------------------------------------------------------+\par int deinit() \{\par return(0);\par \}\par //+------------------------------------------------------------------+\par //| expert start function |\par //+------------------------------------------------------------------+\par int start() \{\par int Order = SIGNAL_NONE;\par int Total, Ticket;\par double StopLossLevel, TakeProfitLevel;\par \par \par \par if (EachTickMode && Bars != BarCount) TickCheck = False;\par Total = OrdersTotal();\par Order = SIGNAL_NONE;\par \par //+------------------------------------------------------------------+\par //| Variable Begin |\par //+------------------------------------------------------------------+\par \par [[EAB_Var]]\par [[EAB_VarBuy]]\par [[EAB_VarSell]]\par [[EAB_VarCloseBuy]]\par [[EAB_VarCloseSell]]\par \par //+------------------------------------------------------------------+\par //| Variable End |\par //+------------------------------------------------------------------+\par \par //Check position\par bool IsTrade = False;\par \par for (int i = 0; i < Total; i ++) \{\par OrderSelect(i, SELECT_BY_POS, MODE_TRADES);\par if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) \{\par IsTrade = True;\par if(OrderType() == OP_BUY) \{\par //Close\par \par //+------------------------------------------------------------------+\par //| Signal Begin(Exit Buy) |\par //+------------------------------------------------------------------+\par \par [[EAB_SignalCloseBuy]]\par \par //+------------------------------------------------------------------+\par //| Signal End(Exit Buy) |\par //+------------------------------------------------------------------+\par \par if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) \{\par OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);\par if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");\par if (!EachTickMode) BarCount = Bars;\par IsTrade = False;\par continue;\par \}\par //Trailing stop\par if(TrailingStopMode && TrailingStop > 0) \{ \par if(Bid - OrderOpenPrice() > Point * TrailingStop) \{\par if(OrderStopLoss() < Bid - Point * TrailingStop) \{\par OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);\par if (!EachTickMode) BarCount = Bars;\par continue;\par \}\par \}\par \}\par \} else \{\par //Close\par \par //+------------------------------------------------------------------+\par //| Signal Begin(Exit Sell) |\par //+------------------------------------------------------------------+\par \par [[EAB_SignalCloseSell]]\par \par //+------------------------------------------------------------------+\par //| Signal End(Exit Sell) |\par //+------------------------------------------------------------------+\par \par if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) \{\par OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);\par if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");\par if (!EachTickMode) BarCount = Bars;\par IsTrade = False;\par continue;\par \}\par //Trailing stop\par if(TrailingStopMode && TrailingStop > 0) \{ \par if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) \{\par if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) \{\par OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);\par if (!EachTickMode) BarCount = Bars;\par continue;\par \}\par \}\par \}\par \}\par \}\par \}\par \par //+------------------------------------------------------------------+\par //| Signal Begin(Entry) |\par //+------------------------------------------------------------------+\par \par [[EAB_SignalBuy]]\par [[EAB_SignalSell]]\par \par //+------------------------------------------------------------------+\par //| Signal End |\par //+------------------------------------------------------------------+\par \par //Buy\par if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) \{\par if(!IsTrade) \{\par //Check free margin\par if (AccountFreeMargin() < (1000 * Lots)) \{\par Print("We have no money. Free Margin = ", AccountFreeMargin());\par return(0);\par \}\par \par if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;\par if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;\par \par Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);\par if(Ticket > 0) \{\par if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) \{\par \tab\tab\tab\tab Print("BUY order opened : ", OrderOpenPrice());\par if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");\par \tab\tab\tab\} else \{\par \tab\tab\tab\tab Print("Error opening BUY order : ", GetLastError());\par \tab\tab\tab\}\par \}\par if (EachTickMode) TickCheck = True;\par if (!EachTickMode) BarCount = Bars;\par return(0);\par \}\par \}\par \par //Sell\par if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) \{\par if(!IsTrade) \{\par //Check free margin\par if (AccountFreeMargin() < (1000 * Lots)) \{\par Print("We have no money. Free Margin = ", AccountFreeMargin());\par return(0);\par \}\par \par if (StopLossMode) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;\par if (TakeProfitMode) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;\par \par Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);\par if(Ticket > 0) \{\par if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) \{\par \tab\tab\tab\tab Print("SELL order opened : ", OrderOpenPrice());\par if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");\par \tab\tab\tab\} else \{\par \tab\tab\tab\tab Print("Error opening SELL order : ", GetLastError());\par \tab\tab\tab\}\par \}\par if (EachTickMode) TickCheck = True;\par if (!EachTickMode) BarCount = Bars;\par return(0);\par \}\par \}\par \par if (!EachTickMode) BarCount = Bars;\par \par return(0);\par \}\par //+------------------------------------------------------------------+\par \par /*\par \par Templage Tags\par [[EAB_EachTickMode]]: SignalMode('True' or 'False')\par [[EAB_Lots]]: Lots(ex. '1.0')\par [[EAB_Slippage]]: Pip(s) of Slippage(ex. '3')\par [[EAB_StopLossMode]]: Enable/Disable StopLoss('True' or 'False')\par [[EAB_StopLoss]]: Pip(s) of StopLoss(ex. '30')\par [[EAB_TakeProfitMode]]: Enable/Disable TakeProfit('True' or 'False')\par [[EAB_TakeProfit]]: Pip(s) of TakeProfit(ex. '60')\par [[EAB_TrailingStopMode]]: Enable/Disable TrailingStop('True' or 'False')\par [[EAB_TrailingStop]]: Pip(s) of TrailingStop(ex. '30')\par [[EAB_Var]]: Definion of 'Variables'\par [[EAB_VarBuy]]: Definition of Variables for 'Buy logics'\par [[EAB_VarSell]]: Definition of Variables for 'Sell logics'\par [[EAB_VarCloseBuy]]: Definition of Variables for 'Close(Buy) logics'\par [[EAB_VarCloseSell]]: Definition of Variables for 'Close(Sell) logics'\par [[EAB_SignalBuy]]: Conditional operator for 'Buy logics'\par [[EAB_SignalSell]]: Conditional operator for 'Sell logics'\par [[EAB_SignalCloseBuy]]: Conditional operator for 'Close(Buy) logics'\par [[EAB_SignalCloseSell]]: Conditional operator for 'Close(Sell) logics' \par */\par \par }