extern int shortcciperiod; extern int longcciperiod; extern int shortmaperiod; extern int longmaperiod; extern int stoploss; extern int takeprofit; bool notrades; int tradeconditions; int trend; int magicnumber=1234; int init() { tradeconditions = 1; double shortcci=iCCI(Symbol(),0,shortcciperiod,PRICE_OPEN,0); double longcci=iCCI(Symbol(),0,longcciperiod,PRICE_OPEN,0); if (shortcci > 0 && longcci > 0) trend=1; if (shortcci < 0 && longcci < 0) trend=-1; int allexpertorders=0; for (int alltheorders=OrdersTotal(); alltheorders > 0; alltheorders--) { OrderSelect(alltheorders,SELECT_BY_POS,MODE_TRADES); if (OrderSymbol()==Symbol() && OrderMagicNumber()==magicnumber) allexpertorders++; } return(0); } int start() { RefreshRates(); double shortcci=iCCI(Symbol(),0,shortcciperiod,PRICE_OPEN,0); double longcci=iCCI(Symbol(),0,longcciperiod,PRICE_OPEN,0); double shortema=iMA(Symbol(),0,shortmaperiod,0,MODE_EMA,PRICE_OPEN,0); double longema=iMA(Symbol(),0,longmaperiod,0,MODE_EMA,PRICE_OPEN,0); double emavalue=shortema-longema; if (tradeconditions == 0) tradeconditions++; if (tradeconditions > 0) { if (shortcci > 0 && longcci > 0 && emavalue > 0) { OrderSend(Symbol(),OP_BUY,1,Ask,1,Ask-stoploss*Point,Ask+takeprofit*Point,NULL,magicnumber,0,Blue); tradeconditions=-1; trend=1; Alert(trend); } if (shortcci < 0 && longcci < 0 && emavalue < 0) { OrderSend(Symbol(),OP_SELL,1,Bid,1,Bid+stoploss*Point,Bid-takeprofit*Point,NULL,magicnumber,0,Red); tradeconditions=-1; trend=-1; Alert(trend); } } if (tradeconditions < 0) { if (trend > 0) { if (shortcci < 0 && longcci < 0) { OrderSelect(0,SELECT_BY_POS,MODE_TRADES); OrderClose(OrderTicket(),1,Bid,1,Blue); tradeconditions=1; } } if (trend < 0) { if (shortcci > 0 && longcci > 0) { OrderSelect(0,SELECT_BY_POS,MODE_TRADES); OrderClose(OrderTicket(),1,Ask,1,Red); tradeconditions=1; } } } } int deinit() { return(0); }