Разобрался. Похоже нужно было нормалиизовать все цены. сразу заработало
for(int i=OrdersTotal()-1; i>=0; i--)
Да. Исправил. Спасибо. Только появилась другая проблема )
Почему - то советник выставляет иногда по 3-4 одинаковых ордера. Раньше сразу сотнями выставлял, а теперь иногда нормально по одному, а иногда сразу 3-4. Может быть такое, что советник когда послал ордер на сервер и ждет ответа, то пришел новый тик, но первый ордер не выставился и он снова отправляет запрос на сервер?
}
Не пойму где ошибка. Советник каждый тик определяет цену открытия и сл. Проверяет их через эту функцию. Но она то работает, то нет.
АГа! Нашел! Оказывается когда срабатывет ордер, то его тип меняется, и фунция перестает его видеть. Т.к. я указываю только OP_SELLLIMIT, то когда он становиться рыночным он его не видит, и выставляет следующий.
Сам с собой общаюсь ). Но это не важно, главное результат есть.
Форум - вещь!!! )))
АГа! Нашел! Оказывается когда срабатывет ордер, то его тип меняется, и фунция перестает его видеть. Т.к. я указываю только OP_SELLLIMIT, то когда он становиться рыночным он его не видит, и выставляет следующий.
Сам с собой общаюсь ). Но это не важно, главное результат есть.
Форум - вещь!!! )))
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте! Пишу советник, который определяет уровни и на них выставляет ордера. Возникла проблема в том, что он выставляет множество ордеров на одном и том же уровне. В коде пишу функцию:
bool fu_exist_order(double open_price, double sl_price)
{
int count =0;
bool order_exist=true;
if(OrdersTotal()==0)order_exist=false;
for(int i=OrdersTotal(); i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS)==true)
{
if(OrderSymbol()!=Symbol())continue;
if(OrderType()!=OP_SELLLIMIT)continue;
if(OrderOpenPrice()==open_price && OrderStopLoss()==sl_price)count++;
Print(count);
}
}
Print(order_exist);
return(order_exist);
}
но эффекта нет.
Подскажите, пожалуйста, как правильно написать функцию? Нужно чтобы советник перед тем как выставить ордер проверял, а нет ли уже такого ордера с такими же ценой открытия и стоплосом.