Всем привет!
Тут на днях столкнулся с таким явлением, как реквоты и 138-ая!
Советник сначала работал нормально, и затем, после трех суток тестирования на демо перестал работать, точнее, ни одной открытой сделки... проверил...
Работал советник с начала каждого нового тика нового бара:
И вот на каждом новом баре первого тика начали сыпаться реквоты (138-ые). Соответственно, советник не открывал ордера на последующих тиках и ждал первый тик начала открытия нового бара....
В учебнике МКЛ4 порылся, и вот решил спросить, правильно ли будет обработать 138-ую и 135-ую ошибку оператором цикла While нижеследующим образом ?
... мозг закипел, никак не соображу... как избавиться от реквотов на первом тике нового бара...
В Вашем коде (с циклом) не заложено условие выхода из него (единственное условие - открытие ордера, не предусматривает негативного развития событий, например пропадание связи с сервером). Правильнее ограничить количество попыток переменной, а также, делать паузу после каждой попытки.
if (!IsTradeContextBusy() && IsTradeAllowed()) { while (tries < NumberOfTries) { RefreshRates(); ticket = OrderSend (_symbol, OP_BUY, _volume, NDD (Ask), _slippage, NDD (_stoploss), NDD (_takeprofit), _comment, _magic, _expiration, _arrow_color); if (ticket <= 0) {tries++;} else {tries = NumberOfTries;} Sleep (RetryTime * 1000); } }
Вот один из вариантов такого решения - эта простая форма (без обработки конкретных ошибок). Хотите более "навароченный" вариант - берите упомянутые функции KimIV. Есть ещё библиотека LibOrderReliable (мне она больше нравится) - её не трудно отыскать в Интернете.
Используйте функции KimIV и не придётся ломать голову над этими техническими вопросами. Лучше тратить время на разработку стратегии и условий входа-выхода.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет!
Тут на днях столкнулся с таким явлением, как реквоты и 138-ая!
Советник сначала работал нормально, и затем, после трех суток тестирования на демо перестал работать, точнее, ни одной открытой сделки... проверил...
Работал советник с начала каждого нового тика нового бара:
И вот на каждом новом баре первого тика начали сыпаться реквоты (138-ые). Соответственно, советник не открывал ордера на последующих тиках и ждал первый тик начала открытия нового бара....
В учебнике МКЛ4 порылся, и вот решил спросить, правильно ли будет обработать 138-ую и 135-ую ошибку оператором цикла While нижеследующим образом ?
... мозг закипел, никак не соображу... как избавиться от реквотов на первом тике нового бара...