Скачать MetaTrader 5

Чудный ордер

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

А именно самый первый открытый ордер, не хочет закрываться и все тут.... причем "чудо" проявляется как в тестере, так и при реальной торговле на демке.

Подскажите плиз где засада???

if (Buy)
     {
      for(i=OrdersTotal(); i>0;i--)
           {
            if(OrderSelect(i,SELECT_BY_POS))
              {
               if (OrderType() == OP_SELL)                        
               OrderClose( OrderTicket(),OrderLots(), Ask, 20, 0 );  
              }
           }     
     }
     
   if (Sell)
     {
      for(i=OrdersTotal(); i>0;i--)
           {
            if(OrderSelect(i,SELECT_BY_POS))
              {
               if (OrderType() == OP_BUY)                        
               OrderClose( OrderTicket(),OrderLots(), Bid, 20, 0 );  
              }
           }
     }
Alexey
1365
Alexey  
for(i=OrdersTotal() - 1 ; i >= 0; i--)
Sceptic Philozoff
Модератор
17844
Sceptic Philozoff  

Что-то со счетчиком, наверно. Попробуй

for(i=OrdersTotal()-1; i>=0;i--)

Или даже

for(i=0; i<OrdersTotal();i++)
Vladislav Andruschenko
95829
Vladislav Andruschenko  
Mathemat:

Что-то со счетчиком, наверно. Попробуй

Или даже

for(i=OrdersTotal()-1; i>=0;i--)
Этот вариант при закрытии верен. 
PapaYozh
3768
PapaYozh  

Вам же уже указали на ошибку.

Замените

for(i=OrdersTotal(); i>0;i--)

на

for(i=OrdersTotal()-1; i>=0;i--)
Europa
984
Europa  
Mathemat:

Что-то со счетчиком, наверно. Попробуй

Или даже

Однако и правда!!! Оба варианта верны.

Спасибо Алексей!!! 

PapaYozh
3768
PapaYozh  
Europa:

Однако и правда!!! Оба варианта верны.

Спасибо Алексей!!!


Верен там только первый.
Europa
984
Europa  
PapaYozh:

Верен там только первый.

Со вторым тоже закрывает
PapaYozh
3768
PapaYozh  
Europa:

Со вторым тоже закрывает

второй вариант будет закрывать с пропусками (если ордеров должно закрыться больше 1-го, то они будут закрываться через один)
Sceptic Philozoff
Модератор
17844
Sceptic Philozoff  
Склоняюсь к тому, что этот вариант все же "устойчивее":
for(i=OrdersTotal()-1; i>=0;i--)
Europa
984
Europa  
PapaYozh:

второй вариант будет закрывать с пропусками (если ордеров должно закрыться больше 1-го, то они будут закрываться через один)

Вот второй вариант for(i=0; i<OrdersTotal();i++)

Закрывает все пачками и ПЕРВЫЙ ТОЖЕ!!! еще раз спасибо!

 

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