А где задавать вопросы по программированию советника

 

Интересует как можно закрыть открытый ордер, если при открытии не выставляем СТОПЛОС? Т.е. нужно закрыть по условиям, пока не смог разобраться, может кто подскажет?

 
5 раз прочел, ничЁ не понял :)
 
 
sergeyka2003:

Интересует как можно закрыть открытый ордер, если при открытии не выставляем СТОПЛОС? Т.е. нужно закрыть по условиям, пока не смог разобраться, может кто подскажет?

int start()
  {
  if (OrdersTotal()!=0)
    {
     for(int i=OrdersTotal();i>=0;i--)   
      {  
       if (OrderSelect(i,SELECT_BY_POS)==true)  
         { 
          if (OrderType()==OP_BUY && OrderStopLoss()==0) OrderClose(OrderTicket(),OrderLots(),Bid,0,0); 
          if (OrderType()==OP_SELL && OrderStopLoss()==0) OrderClose(OrderTicket(),OrderLots(),Ask,0,0); 
         }
      }
    } 
   return(0);
  }
Наверное так :)
 
Europa:
Наверное так :)

А если у меня открыт ЕДИНОВРЕМЕННО только ОДИН ордер на Бай или Сел?
 
Запомнить номер тикета открытого ордера или присвоить ордеру оригинальный магик номер или возможно оригинальный комментарий, далее по этим данным отличить ваш ордер от других при наступлении нужных условий и закрыть его.
 
sergeyka2003:

А если у меня открыт ЕДИНОВРЕМЕННО только ОДИН ордер на Бай или Сел?

Закроет все
 

При тестировании у меня открывает Ордер, а закрыть не может!

1 2010.10.26 00:02 buy 1 0.10 1.39583 0.00000 0.00000 0.00 10000.00

2 2010.10.27 23:59 close at stop 1 0.10 1.37739 0.00000 0.00000 -184.47 9815.53


 
Europa:

Закроет все

Так что не закрывает (см. выше)
 
   //открыли Ордер
      ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"macd sample",16384,0,Green); // открыть тикет и настроить где печатать
         if(ticket>0) //открыт ордер - тогда
           {
             
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
            Print("BUY order opened : ",OrderOpenPrice(),"  Значение = ",red ,"  Значение = ",blue); // печать ордера Что,Где,Когда?
                        
           }
         else Print("Error opening BUY order : ",GetLastError()); //не смогли открыть БАЙ ордер
         return(0); 
         }
         
   
  
//попытался закрыть.... не получается... ПОДСКАЖИТЕ КАК???
  if (OrdersTotal()!=0)
    {
     for(i=OrdersTotal();i>=0;i--)   
      {  
       if (OrderSelect(i,SELECT_BY_POS)==true)  
         { 
          if (OrderType()==OP_BUY && OrderStopLoss()==0) OrderClose(OrderTicket(),OrderLots(),Bid,0,0); 
          if (OrderType()==OP_SELL && OrderStopLoss()==0) OrderClose(OrderTicket(),OrderLots(),Ask,0,0) ;
         }
      }
    }  

При тестировании у меня открывает Ордер, а закрыть не может!

1 2010.10.26 00:02 buy 1 0.10 1.39583 0.00000 0.00000 0.00 10000.00

2 2010.10.27 23:59 close at stop 1 0.10 1.37739 0.00000 0.00000 -184.47 9815.53


 
yuripk:
Запомнить номер тикета открытого ордера или присвоить ордеру оригинальный магик номер или возможно оригинальный комментарий, далее по этим данным отличить ваш ордер от других при наступлении нужных условий и закрыть его.

         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"macd sample",16384,0,Green); // открыть тикет и настроить где печатать
         if(ticket>0) //открыт ордер - тогда
           {
             
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
            Print("BUY order opened : ",OrderOpenPrice(),"  Значение = ",red ,"  Значение = ",blue); // печать ордера Что,Где,Когда?
                        
           }
         else Print("Error opening BUY order : ",GetLastError()); //не смогли открыть БАЙ ордер
         return(0); 
         }
         
   
    if (OrdersTotal()!=0)
    {
       if (OrderSelect(16384,SELECT_BY_TICKET)==true)  
         { 
          if (OrderType()==OP_BUY && OrderStopLoss()==0) OrderClose(16384,OrderLots(),Bid,0,0); 
          if (OrderType()==OP_SELL && OrderStopLoss()==0) OrderClose(16384,OrderLots(),Ask,0,0) ;
         }
    } 

с МАГИК НОМЕРОМ похоже что тоже не выходит...

Причина обращения: