Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
sergey
32
sergey  

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

Europa
984
Europa  
5 раз прочел, ничЁ не понял :)
Alexandr Bryzgalov
45186
Alexandr Bryzgalov  
Europa
984
Europa  
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);
  }
Наверное так :)
sergey
32
sergey  
Europa:
Наверное так :)

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

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

Закроет все
sergey
32
sergey  

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

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


sergey
32
sergey  
Europa:

Закроет все

Так что не закрывает (см. выше)
sergey
32
sergey  
   //открыли Ордер
      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


sergey
32
sergey  
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) ;
         }
    } 

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

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий