Очень нужен взгляд со стороны и добрый совет.
По алгоритму открываю один рыночный бай и пять бай-лимитов. В случае срабатывания профита по баю удаляю отложенные функцией:
//=========================================================================
// Закрытие отложенных ордеров
//=========================================================================
int closewaitorders()
{
k=0;
Alert(OrdersTotal());
for(k=1; k<=OrdersTotal(); k++)
{
if (OrderSelect(k-1,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol()!=Symb)
continue;
o_Ticket=OrderTicket();
if (OrderType()>1)
Ans=OrderDelete(o_Ticket);
if (Ans==false)
{
Alert(GetLastError()," для ордера ", o_Ticket);
}
}
}
return (0);
}
В результате информирует, что OrdersTotal()=5, и это правда! Потом вместо пяти циклов по for(k=1; k<=OrdersTotal(); k++) делает только три, удаляет отложенные 2,4 и 6 ордера, а 3 и 5 просто не замечает. Истерика!!! Спасите! Заранее благодарен.
ошибка в цикле.
for(k=OrdersTotal()-1; k>=0; k--)
Для вставки кода используйте SRC
ошибка в цикле.
Для вставки кода используйте SRC
Сработала хреновина. Огромное спасибо! Да продлит Аллах Ваши годы и гаишники не отберут права!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Очень нужен взгляд со стороны и добрый совет.
По алгоритму открываю один рыночный бай и пять бай-лимитов. В случае срабатывания профита по баю удаляю отложенные функцией:
//=========================================================================
// Закрытие отложенных ордеров
//=========================================================================
int closewaitorders()
{
k=0;
Alert(OrdersTotal());
for(k=1; k<=OrdersTotal(); k++)
{
if (OrderSelect(k-1,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol()!=Symb)
continue;
o_Ticket=OrderTicket();
if (OrderType()>1)
Ans=OrderDelete(o_Ticket);
if (Ans==false)
{
Alert(GetLastError()," для ордера ", o_Ticket);
}
}
}
return (0);
}
В результате информирует, что OrdersTotal()=5, и это правда! Потом вместо пяти циклов по for(k=1; k<=OrdersTotal(); k++) делает только три, удаляет отложенные 2,4 и 6 ордера, а 3 и 5 просто не замечает. Истерика!!! Спасите! Заранее благодарен.