Советнк останавливаеться - страница 2

 

возможно, в проверках по условиям дело

if (iCustom(NULL, 0, "111111",z,k,2,1)!=0)

заменить где как надо на

(....)<0

(....)>0

 
if (iCustom(NULL, 0, "1111111",z,k,2,1)!=0){
      TotalOrders=OrdersTotal(); 
           for (i=0; i<=TotalOrders; i++){
                 if (OrderSelect(0,SELECT_BY_POS)==true){
                    if (OrderType()==OP_SELL) {rezult=OrderClose(OrderTicket(),OrderLots(),Ask,5,Red);
                                               if(rezult==false) return;
                                               }
                 if (OrderSelect(0,SELECT_BY_POS)==true){   
                    if (OrderType()==OP_BUYSTOP) {rezult=OrderDelete(OrderTicket(),Green);                    
                                                  if(rezult==false) return;               
                                                 }
                 }
                 }
           }  
                       
     if (OrdersTotal()==0){ rezultorder=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Bid-StopLoss*Point,Bid+TakeProfit*Point);
                                         if(rezultorder==false) return;}            
      //OrderSend(Symbol(),OP_SELLSTOP,Lot,Bid-StopLoss*Point,3,Bid-StopLoss*Point+OPStopLoss*Point,Bid-StopLoss*Point-OPTakeProfit*Point);
       }
      if (iCustom(NULL, 0, "1111111",z,k,3,1)!=0){
      TotalOrders=OrdersTotal();
        for (i=0; i<=TotalOrders; i++){
                 if (OrderSelect(0,SELECT_BY_POS)==true){
                    if (OrderType()==OP_BUY) {rezult=OrderClose(OrderTicket(),OrderLots(),Bid,5,Red);
                                                                      if(rezult==false) return;
                                             }      
                 if (OrderSelect(0,SELECT_BY_POS)==true){   
                    if (OrderType()==OP_SELLSTOP) {rezult=OrderDelete(OrderTicket(),Green);
                                                                                if(rezult==false) return;
                                                  }
                 }   
                 }
        }              
     if (OrdersTotal()==0){ rezultorder=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Ask+StopLoss*Point,Ask-TakeProfit*Point);
                                                               if(rezultorder==false) return;}
    // OrderSend(Symbol(),OP_BUYSTOP,Lot,Ask+StopLoss*Point,3,Ask+StopLoss*Point-OPStopLoss*Point,Ask+StopLoss*Point+OPTakeProfit*Point);
         }
  }
Не здесь всё ровно, в индикаторе везде записываеться ноль, и только когда индикатор формирует сигнал, там пишеться значение отличное от нуля вернее значение цены стрелки.... Вот посмотрите я немно подправил код, интересно будет ли он открывать позицию в течении часа (работаю по часа), когда действует сигнал. Пока не закроет и не откроет позицию......
 
nikelodeon >>:
Не здесь всё ровно, в индикаторе везде записываеться ноль, и только когда индикатор формирует сигнал, там пишеться значение отличное от нуля вернее значение цены стрелки.... Вот посмотрите я немно подправил код, интересно будет ли он открывать позицию в течении часа (работаю по часа), когда действует сигнал. Пока не закроет и не откроет позицию......

Если советник далек от пипсовки, то можно сразу после торговой операции return. избавит от большинства возможных ошибок.

переписать проще, если правильно понял) должно получиться следующее

bool Buy=false,Sell=false;
if (iCustom(NULL, 0, "1111111",z,k,2,1)!=0) Buy=true;
if (iCustom(NULL, 0, "1111111",z,k,3,1)!=0) Sell=true;
//+------------------------------------------------------------------+
int TotalBuy=0,TotalSell=0,TotalBuyStop=0,TotalSellStop=0;
for(i=0;i<OrdersTotal();i++)
   {
   if (OrderSelect(i,SELECT_BY_POS)==true)
      {
      if (OrderType()==OP_SELL)
         {
         TotalSell++;
         if(Buy)
            {
            OrderClose(OrderTicket(),OrderLots(),Ask,5,Red);
            return(0);
            }
         }
      if (OrderType()==OP_BUYSTOP)
         {
         TotalBuyStop++;
         if(Buy)
            {
            OrderDelete(OrderTicket(),Green);                    
            return(0);
            }
         }
      if (OrderType()==OP_BUY)
         {
         TotalBuy++;
         if(Sell)
            {
            OrderClose(OrderTicket(),OrderLots(),Bid,5,Red);
            return(0);
            }
         }
      if (OrderType()==OP_SELLSTOP)
         {
         TotalSellStop++;
         if(Sell)
            {
            OrderDelete(OrderTicket(),Green);                    
            return(0);
            }
         }
      }
   }
//+------------------------------------------------------------------+
if(Buy)
   {
   if(TotalBuy<1)
      {
      OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Bid-StopLoss*Point,Bid+TakeProfit*Point);
      return(0);
      }
   if(TotalSellStop<1)
      {
      OrderSend(Symbol(),OP_SELLSTOP,Lot,Bid-StopLoss*Point,3,Bid-StopLoss*Point+OPStopLoss*Point,Bid-StopLoss*Point-OPTakeProfit*Point);
      return(0);
      }
if(Sell)
   {
   if(TotalSell<1)
      {
      OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Ask+StopLoss*Point,Ask-TakeProfit*Point);
      return(0);
      }
   if(TotalBuyStop<1)
      {
      OrderSend(Symbol(),OP_BUYSTOP,Lot,Ask+StopLoss*Point,3,Ask+StopLoss*Point-OPStopLoss*Point,Ask+StopLoss*Point+OPTakeProfit*Point);
      return(0);
      }
   }
//+------------------------------------------------------------------+
 

Спасибо всем, обязательно поробую