Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Узнай, как растет твой рейтинг
Europa
984
Europa 2012.01.24 13:19 

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

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

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 2012.01.24 13:28  
for(i=OrdersTotal() - 1 ; i >= 0; i--)
Sceptic Philozoff
Модератор
17846
Sceptic Philozoff 2012.01.24 13:29  

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

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

Или даже

for(i=0; i<OrdersTotal();i++)
Vladislav Andruschenko
86661
Vladislav Andruschenko 2012.01.24 13:44  
Mathemat:

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

Или даже

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

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

Замените

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

на

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

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

Или даже

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

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

PapaYozh
3768
PapaYozh 2012.01.24 14:26  
Europa:

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

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


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

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

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

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

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

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

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

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

 

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