#include //--- Inputs extern int StopLoss = 0; extern int TakeProfit = 75; extern int TakeProfit1 = 15; extern int TakeProfit2 = 30; extern int TakeProfit3 = 45; extern int TakeProfit4 = 60; extern int OpenOrder = 0; //0-off. 1-buy. 2-sell. extern int Slip = 30; extern double Lot = 1; extern double Lot1 = 0.01; extern double Lot2 = 0.01; extern double Lot3 = 0.01; extern double Lot4 = 0.01; extern int Magic = 0; bool CloseOrd1=true,CloseOrd2=true,CloseOrd3=true,CloseOrd4=true; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Check for open order conditions | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ void CloseOrders() { bool cl; for(int i=OrdersTotal()-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol()) { if(OrderMagicNumber()==Magic) { if(OrderType()==OP_BUY) { if(Bid-OrderOpenPrice()>TakeProfit1*Point) { if(CloseOrd1) cl=OrderClose(OrderTicket(),Lot1,Bid,Slip,Blue); CloseOrd1=false; } if(Bid-OrderOpenPrice()>TakeProfit2*Point) { if(CloseOrd2) cl=OrderClose(OrderTicket(),Lot2,Bid,Slip,Blue); CloseOrd2=false; } if(Bid-OrderOpenPrice()>TakeProfit3*Point) { if(CloseOrd3) cl=OrderClose(OrderTicket(),Lot3,Bid,Slip,Blue); CloseOrd3=false; } if(Bid-OrderOpenPrice()>TakeProfit4*Point) { if(CloseOrd4) cl=OrderClose(OrderTicket(),Lot4,Bid,Slip,Blue); CloseOrd4=false; } if(Bid-OrderOpenPrice()>TakeProfit*Point) { cl=OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Blue); } } } } } } return; } //+------------------------------------------------------------------+ //| OnTick function | //+------------------------------------------------------------------+ void OnTick() { int p=0; for(int i=OrdersTotal()-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) { if(OrderType()==OP_BUY) p++; } } } if(p<1) { CloseOrd1=true; CloseOrd2=true; CloseOrd3=true; CloseOrd4=true; OpenPos(); } if(p>0) CloseOrders(); Comment("\n Positions: ",p, "\n CloseOrd1: ",CloseOrd1, "\n CloseOrd2: ",CloseOrd2, "\n CloseOrd3: ",CloseOrd3, "\n CloseOrd4: ",CloseOrd4); //--- } //+------------------------------------------------------------------+