[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 166

 
Xaoss1990:

Господа профессионалы, оптять нуждаюсь в Вашей помощи!

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

OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
Magic = OrderMagicNumber();
orderticket = OrderTicket();

if (OrdersTotal() == 1 && Magic == 111 && OrderType( ) == 0) {
if (H1_BUY_5 == 0 || H1_BUY_1 == 0) {
OrderClose(orderticket, lots, Bid, 5, Yellow);
if (OrdersTotal() == 1) OrderDelete(orderticket, Brown);
}

}



Вот это условие выбирает только бай-ордера,

if (OrdersTotal() == 1 && Magic == 111 && OrderType( ) == 0)

так что удалить отложенник не получится

 
Roger:


Наверное, потоу, что сначала вычисляете лот, а потом

Спасибо, поменял вычисление лота, но все равно не работает.
 
Sancho77:
Спасибо, поменял вычисление лота, но все равно не работает.


А как не работает, что в логах пишет?

Проверьте какие значения принимает np, здесь

if (OrderSelect(np, SELECT_BY_POS, MODE_TRADES)) {
      ClosePosBySelect();}
    }
 
В журнале нет сообщений об ошибках. Может посмотрите целиком код советника? Должен закрывать 1/3 лота если срабатывает стоплосс, уже передвинутый в безубыток тралом.
Файлы:
 
Sancho77:
В журнале нет сообщений об ошибках. Может посмотрите целиком код советника? Должен закрывать 1/3 лота если срабатывает стоплосс, уже передвинутый в безубыток тралом.

У-у-у-у как все запущено. В общем - все неправильно, легче выбросить и написать новый. Параметры заданы неверно, функции вызываются неверно, куча лишних ненужных вычислений. Годится для пособия - как не надо писать код.
 
Roger:

У-у-у-у как все запущено. В общем - все неправильно, легче выбросить и написать новый. Параметры заданы неверно, функции вызываются неверно, куча лишних ненужных вычислений. Годится для пособия - как не надо писать код.
Ладно, начнем сначала)
 
Sancho77:
...Должен закрывать 1/3 лота если срабатывает стоплосс, уже передвинутый в безубыток тралом.
Гляжу я на все это и думаю сам себе - нафига браться за такие задачи, если нетвердо знаешь основы? Такое самообучение дает больше пользы, чем вреда. Искра мысли тонет в ворохе ошибок.
 
granit77:
Гляжу я на все это и думаю сам себе - нафига браться за такие задачи, если нетвердо знаешь основы? Такое самообучение дает больше пользы, чем вреда. Искра мысли тонет в ворохе ошибок.

Наверное, хотел сказать больше вреда, чем пользы.
 
Ага, описка.
 

Подскажите, пожалуйста, господа спецы!

Представьте ситуацию: сработал стоп, из-за срабатывания N-го условия. Но через пару свечек, N-ое условие отпало. С помощью каких функций можно снова заключить сделку после отпадания N-го условия. То есть нужно определить, что сработал стоп какое-то количество баров назад ИМЕННО из-за N-го условия, и так-как N-ое условие отпало, заключить сделку повторно!!!