Need help with script please :( need close opened order into EA

 

Hi:) Please help me with code , need close order in this situation

if (v_kumoBreakoutSignal == 0 )

Here all code 

Thank you!


//+------------------------------------------------------------------+
//|                                                            T.mq4 |
//|                                                       Daniyar |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Daniyar"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict


extern   string   ICHIMOKU             = "***************************************************";
extern   int      e_tenkan_sen         = 8; 
extern   int      e_kijun_sen          = 21;
extern   int      e_senkou_span_b      = 55;
extern   int      e_Ichimoku_shift     = 0;
extern   int      e_breakout_distance  = 10;



extern   string   ORDINI                     = "***************************************************";
extern   double   e_TakeProfit               = 100;
extern   double   e_Stoploss                 = 25;
extern   double   e_TrailingStop             = 35;
extern   double   e_TrailingStep             = 5;
extern   double   e_Lots                     = 0.1;
extern   int      e_MagicID                  = 23456;


double   g_Point = 0.0001;

int init(){
   double Poin;
   if (Point == 0.00001) Poin = 0.0001; 
   else 
      if (Point == 0.001) Poin = 0.01; 
      else Poin = Point; 
      
   g_Point = Poin;
   return(0);
}

int deinit(){
   return(0);
}


int start(){

   
   int v_total=OrdersTotal();
   if(v_total<1) {
      // no opened orders identified
      if(AccountFreeMargin()<(1000*e_Lots)){
         Print("We have no money. Free Margin = ", AccountFreeMargin());
         return(0);  
      }
   }
   else{
     int v_i = 0;
     while (v_i < v_total){
      
      if((OrderSelect(v_i, SELECT_BY_POS, MODE_TRADES)==true) && (OrderMagicNumber() == e_MagicID)){
         if (e_TrailingStop > 0){
            
            TrailingStop();
            return(0);
         }
      }   
      v_i++;
     }
   }

   int v_kumoBreakoutSignal  = kumoBreakoutSignal();
   int v_ticket;
  

   if (v_kumoBreakoutSignal == 1 ){
      RefreshRates();
      v_ticket=OrderSend(Symbol(), OP_BUY, e_Lots, Ask, 3, Ask - (e_Stoploss*g_Point), Ask + (e_TakeProfit*g_Point), "Kumo Breakout EA", e_MagicID, 0, Green);
      if(v_ticket>0){
         if(OrderSelect(v_ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
      }
      else Print("Error opening BUY order : ",GetLastError()); 
      return(0); 
   }
      
   if (v_kumoBreakoutSignal == 2 ){
      RefreshRates();
      v_ticket=OrderSend(Symbol(), OP_SELL, e_Lots, Bid, 3, Bid + (e_Stoploss*g_Point), Bid - (e_TakeProfit*g_Point), "Kumo Breakout EA", e_MagicID, 0, Red);
      
      if(v_ticket>0){
         if(OrderSelect(v_ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
      }
      else Print("Error opening SELL order : ",GetLastError()); 
      return(0); 
   }
       
   if (v_kumoBreakoutSignal == 0 ){
      RefreshRates();


          
      
      Need to close opened order
    
      
      
      
           
   }
   return(0);
}


int kumoBreakoutSignal(){
   
   
   int v_kumoBreakout = 0;
   int i;
   
   double v_SENKOUSPANA = iIchimoku(NULL, 0, e_tenkan_sen, e_kijun_sen, e_senkou_span_b, MODE_SENKOUSPANA, e_Ichimoku_shift);
   double v_SENKOUSPANB = iIchimoku(NULL, 0, e_tenkan_sen, e_kijun_sen, e_senkou_span_b, MODE_SENKOUSPANB, e_Ichimoku_shift);
   

   





if (Bid > v_SENKOUSPANA && Bid > v_SENKOUSPANB)
      for(i = 0; i <= e_breakout_distance; i++)
         if (Low[i] < iIchimoku(NULL, 0, e_tenkan_sen, e_kijun_sen, e_senkou_span_b, MODE_SENKOUSPANA, i) && Low[i] < iIchimoku(NULL, 0, e_tenkan_sen, e_kijun_sen, e_senkou_span_b, MODE_SENKOUSPANB, i)) 
            return (1);
   
   //segnale SHORT?
   if (Bid < v_SENKOUSPANA && Bid < v_SENKOUSPANB)
      for(i = 0; i <= e_breakout_distance; i++)
         if (High[i] > iIchimoku(NULL, 0, e_tenkan_sen, e_kijun_sen, e_senkou_span_b, MODE_SENKOUSPANA, i) && High[i] > iIchimoku(NULL, 0, e_tenkan_sen, e_kijun_sen, e_senkou_span_b, MODE_SENKOUSPANB, i)) 
            return (2);   
   return(v_kumoBreakout);
}






void TrailingStop(){
   RefreshRates();

   if (OrderType() == OP_BUY)
    if ((Bid - OrderOpenPrice()) > (e_TrailingStop * g_Point))
      if (OrderStopLoss() < Bid - (e_TrailingStop + e_TrailingStep - 1) * g_Point) {
         OrderModify(OrderTicket(), OrderOpenPrice(), Ask - e_TrailingStop * g_Point, OrderTakeProfit(), 0, Green);
         return;
      }
  if (OrderType()==OP_SELL)
    if ((OrderOpenPrice() - Ask) > (e_TrailingStop * g_Point))
      if (OrderStopLoss() > Ask + (e_TrailingStop + e_TrailingStep - 1) * g_Point || OrderStopLoss()==0) {
         OrderModify(OrderTicket(), OrderOpenPrice(), Ask + e_TrailingStop * g_Point, OrderTakeProfit(), 0, Red);
         return;
      }
      
}

 

Apologies. I deleted this post in error.

Daniyar Nadyrshin:

Hi:) Please help me with code , need close order in this situation

if (v_kumoBreakoutSignal == 0 )

Here all code 

Thank you!


//+------------------------------------------------------------------+
//|                                                            T.mq4 |
//|                                                       Daniyar |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Daniyar"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict


extern   string   ICHIMOKU             = "***************************************************";
extern   int      e_tenkan_sen         = 8; 
extern   int      e_kijun_sen          = 21;
extern   int      e_senkou_span_b      = 55;
extern   int      e_Ichimoku_shift     = 0;
extern   int      e_breakout_distance  = 10;



extern   string   ORDINI                     = "***************************************************";
extern   double   e_TakeProfit               = 100;
extern   double   e_Stoploss                 = 25;
extern   double   e_TrailingStop             = 35;
extern   double   e_TrailingStep             = 5;
extern   double   e_Lots                     = 0.1;
extern   int      e_MagicID                  = 23456;


double   g_Point = 0.0001;

int init(){
   double Poin;
   if (Point == 0.00001) Poin = 0.0001; 
   else 
      if (Point == 0.001) Poin = 0.01; 
      else Poin = Point; 
      
   g_Point = Poin;
   return(0);
}

int deinit(){
   return(0);
}


int start(){

   
   int v_total=OrdersTotal();
   if(v_total<1) {
      // no opened orders identified
      if(AccountFreeMargin()<(1000*e_Lots)){
         Print("We have no money. Free Margin = ", AccountFreeMargin());
         return(0);  
      }
   }
   else{
     int v_i = 0;
     while (v_i < v_total){
      
      if((OrderSelect(v_i, SELECT_BY_POS, MODE_TRADES)==true) && (OrderMagicNumber() == e_MagicID)){
         if (e_TrailingStop > 0){
            
            TrailingStop();
            return(0);
         }
      }   
      v_i++;
     }
   }

   int v_kumoBreakoutSignal  = kumoBreakoutSignal();
   int v_ticket;
  

   if (v_kumoBreakoutSignal == 1 ){
      RefreshRates();
      v_ticket=OrderSend(Symbol(), OP_BUY, e_Lots, Ask, 3, Ask - (e_Stoploss*g_Point), Ask + (e_TakeProfit*g_Point), "Kumo Breakout EA", e_MagicID, 0, Green);
      if(v_ticket>0){
         if(OrderSelect(v_ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
      }
      else Print("Error opening BUY order : ",GetLastError()); 
      return(0); 
   }
      
   if (v_kumoBreakoutSignal == 2 ){
      RefreshRates();
      v_ticket=OrderSend(Symbol(), OP_SELL, e_Lots, Bid, 3, Bid + (e_Stoploss*g_Point), Bid - (e_TakeProfit*g_Point), "Kumo Breakout EA", e_MagicID, 0, Red);
      
      if(v_ticket>0){
         if(OrderSelect(v_ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
      }
      else Print("Error opening SELL order : ",GetLastError()); 
      return(0); 
   }
       
   if (v_kumoBreakoutSignal == 0 ){
      RefreshRates();

      HepsiniKapat();
           
   }
   return(0);
}


int kumoBreakoutSignal(){
   
   
   int v_kumoBreakout = 0;
   int i;
   
   double v_SENKOUSPANA = iIchimoku(NULL, 0, e_tenkan_sen, e_kijun_sen, e_senkou_span_b, MODE_SENKOUSPANA, e_Ichimoku_shift);
   double v_SENKOUSPANB = iIchimoku(NULL, 0, e_tenkan_sen, e_kijun_sen, e_senkou_span_b, MODE_SENKOUSPANB, e_Ichimoku_shift);
   

   





if (Bid > v_SENKOUSPANA && Bid > v_SENKOUSPANB)
      for(i = 0; i <= e_breakout_distance; i++)
         if (Low[i] < iIchimoku(NULL, 0, e_tenkan_sen, e_kijun_sen, e_senkou_span_b, MODE_SENKOUSPANA, i) && Low[i] < iIchimoku(NULL, 0, e_tenkan_sen, e_kijun_sen, e_senkou_span_b, MODE_SENKOUSPANB, i)) 
            return (1);
   
   //segnale SHORT?
   if (Bid < v_SENKOUSPANA && Bid < v_SENKOUSPANB)
      for(i = 0; i <= e_breakout_distance; i++)
         if (High[i] > iIchimoku(NULL, 0, e_tenkan_sen, e_kijun_sen, e_senkou_span_b, MODE_SENKOUSPANA, i) && High[i] > iIchimoku(NULL, 0, e_tenkan_sen, e_kijun_sen, e_senkou_span_b, MODE_SENKOUSPANB, i)) 
            return (2);   
   return(v_kumoBreakout);
}






void TrailingStop(){
   RefreshRates();
   bool rest;
   if (OrderType() == OP_BUY)
    if ((Bid - OrderOpenPrice()) > (e_TrailingStop * g_Point))
      if (OrderStopLoss() < Bid - (e_TrailingStop + e_TrailingStep - 1) * g_Point) {
        rest= OrderModify(OrderTicket(), OrderOpenPrice(), Ask - e_TrailingStop * g_Point, OrderTakeProfit(), 0, Green);
         return;
      }
  if (OrderType()==OP_SELL)
    if ((OrderOpenPrice() - Ask) > (e_TrailingStop * g_Point))
      if (OrderStopLoss() > Ask + (e_TrailingStop + e_TrailingStep - 1) * g_Point || OrderStopLoss()==0) {
        rest= OrderModify(OrderTicket(), OrderOpenPrice(), Ask + e_TrailingStop * g_Point, OrderTakeProfit(), 0, Red);
         return;
      }
      
}

int HepsiniKapat()
{
  int total = OrdersTotal();
  bool rest;
  for(int i=total-1;i>=0;i--)
  {
    rest=OrderSelect(i, SELECT_BY_POS);
    int type   = OrderType();

    bool result = false;
    
    switch(type)
    {
      //Close opened long positions
      case OP_BUY       : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, CLR_NONE );
                          break;
      
      //Close opened short positions
      case OP_SELL      : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, CLR_NONE );
                          break;

      //Close pending orders
      case OP_BUYLIMIT  :
      case OP_BUYSTOP   :
      case OP_SELLLIMIT :
      case OP_SELLSTOP  : result = OrderDelete( OrderTicket() );
    }
    
    if(result == false)
    {
       if (GetLastError()>0) Alert("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() );
      Sleep(3000);
    }  
  }
  
  return(0);
}




Reason: