//---- Trades limits extern double Lots = 1; extern double TakeProfit = 300; extern double TrailingStop = 100; extern double StopLoss = 50; extern int Slippage = 5; extern double MaximumRisk = 0.3; extern bool UseMM=false; //--- Global variables extern int MagicNumber = 34567; string ExpertComment = "TEST EA"; int NumberOfTries = 5; //+------------------------------------------------------------------ int init() { return(0); } int deinit() { return(0); } //+------------------------------------------------------------------ bool isNewSymbol(string current_symbol) { //loop through all the opened order and compare the symbols int total = OrdersTotal(); for(int cnt = 0 ; cnt < total ; cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); string selected_symbol = OrderSymbol(); if (current_symbol == selected_symbol && OrderMagicNumber()==MagicNumber) return (False); } return (True); } //+------------------------------------------------------------------+ int start() { int cnt, ticket, total,n,trend,signal; bool BuyCondition , SellCondition,CloseBuyCondition ,CloseSellCondition ; bool up1, up2, down1, down2; if(Bars<50) {Print("bars less than 50"); return(0);} //Symbo settings: RefreshRates(); Slippage = MarketInfo(Symbol(),MODE_SPREAD); double O=iOpen(NULL,PERIOD_D1,0); double pricenow=iMA(NULL,0,2,0,MODE_EMA,PRICE_OPEN,1); double tsvbear=iCustom(NULL,0,"T.S.V._Bullish & Bearish",3,3000,1,1); double tsvbull=iCustom(NULL,0,"T.S.V._Bullish & Bearish",3,3000,2,1); double mom=iMomentum(NULL,0,24,PRICE_CLOSE,1); if (signal==1) BuyCondition=false; if (signal==-1) SellCondition=false; if ((pricenow>O && mom>100 && tsvbull>0) && signal!=1) {signal=1; BuyCondition=true; CloseSellCondition=true;} if ((pricenow0) && signal!=-1) {signal=-1; SellCondition=true; CloseBuyCondition=true;} total = OrdersTotal(); if (UseMM) Lots=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1); if(total < 1 || isNewSymbol(Symbol())) { if(BuyCondition) //<-- BUY condition { ticket = OpenOrder(OP_BUY); //<-- Open BUY order return(0); } if(SellCondition) //<-- SELL condition { ticket = OpenOrder(OP_SELL); //<-- Open SELL order return(0); } return(0); } for(cnt=0;cnt0) { if(OrderMagicNumber() == MagicNumber) { if(type==OP_BUY) { if(Bid-OrderOpenPrice()>Point*TrailingStop) { if(OrderStopLoss()(Point*TrailingStop)) { if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red); } } } } } }