Обсуждение статьи "Библиотека для простого и быстрого создания программ для MetaTrader (Часть VIII): События модификации ордеров и позиций" - страница 3
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
При поступлении тика, по которому устанавливается и одновременно активируется (триггерится) отложенный ордер (я тестировал с Buy Stop) ваш движок не регистрирует все события...
Приходит событие TRADE_EVENT_PENDING_ORDER_PLASED, но не TRADE_EVENT_PENDING_ORDER_ACTIVATED.
Код у меня примерно такой:
Сначала в цикле нахожу индекс старого (обработанного) события, а затем, начиная с него, перебираю все новые до конца. Так вот, в ситуации, когда по одному тику лимитный ордер установлен и стриггерен приходит одно событие об установке... Прокомментируйте, пожалуйста.
ProcessTradeEvents() вызываю в OnTick() следом за engine.OnTick(rates_data).Ордер ставил ваш же движок. Может быть, я всё же вызывал, когда еще не было активации... Сейчас я с ручным ордером проверю.
Ордер ставил ваш же движок. Может быть, я всё же вызывал, когда еще не было активации... Сейчас я с ручным ордером проверю.
Да, кажется, это мои руки кривые...
Да, кажется, это мои руки кривые...
Здравствуйте.
Я столкнулся с такой проблемой при тестировании TestDoEasyPart08.mq5 - не срабатывают StopLoss и TakeProfit. Хотя они выставляются - соответствующие линии на графике появляются, и сообщения в журнал приходят. Если включить TrailStop, то TakeProfit срабатывает, а StopLoss по-прежнему нет. В чём может быть причина?
P.S. На другом компьютере (ноутбуке) запускаю тот же код - работает всё нормально. Хотя там стоит такой же метатрейдер.
Здравствуйте.
Я столкнулся с такой проблемой при тестировании TestDoEasyPart08.mq5 - не срабатывают StopLoss и TakeProfit. Хотя они выставляются - соответствующие линии на графике появляются, и сообщения в журнал приходят. Если включить TrailStop, то TakeProfit срабатывает, а StopLoss по-прежнему нет. В чём может быть причина?
P.S. На другом компьютере (ноутбуке) запускаю тот же код - работает всё нормально. Хотя там стоит такой же метатрейдер.
Добрый вечер! Покажите для начала, хотя бы, те сообщения, которые в журнал приходят.
С уважением, Владимир.
Здравствуйте.
Я столкнулся с такой проблемой при тестировании TestDoEasyPart08.mq5 - не срабатывают StopLoss и TakeProfit. Хотя они выставляются - соответствующие линии на графике появляются, и сообщения в журнал приходят. Если включить TrailStop, то TakeProfit срабатывает, а StopLoss по-прежнему нет. В чём может быть причина?
P.S. На другом компьютере (ноутбуке) запускаю тот же код - работает всё нормально. Хотя там стоит такой же метатрейдер.
Если выставляются стоп (лимит)-ордера, то их срабатывание зависит не от программы, а от брокера. Приказ на выставление стоп (лимит)-ордеров отправляется на сервер программой, а их срабатывание зависит от брокера. Раз они выставляются (их линии отображены на графике), то со стороны программы нет ошибок. Скорее всего, цена не доходит до стоп(лимит)-ордеров.
Добрый вечер! Покажите для начала, хотя бы, те сообщения, которые в журнал приходят.
С уважением, Владимир.
MrBrooklin, Артём.
Я это в тестере стратегий делал (как я понимаю, брокер здесь ни при чём).
Сообщения такие:
2022.07.03 11:16:39.380 2022.01.03 07:00:00 instant buy 0.1 @Si at 81011 sl: 80960 tp: 81060 (81010 / 81011 / 81010)
2022.07.03 11:16:39.380 2022.01.03 07:00:00 deal #2 buy 0.1 @Si at 81011 done (based on order #2)
2022.07.03 11:16:39.380 2022.01.03 07:00:00 deal performed [#2 buy 0.1 @Si at 81011]
2022.07.03 11:16:39.380 2022.01.03 07:00:00 order performed buy 0.1 at 81011 [#2 buy 0.1 @Si at 81011]
Но на другом компьютере (ноутбуке), на котором StopLoss и TakeProfit срабатывают корректно, сообщения такие:
2022.07.03 11:23:18.383 2022.01.03 07:00:12 instant buy 0.1 @Si at 81047 sl: 80996 tp: 81096 (81046 / 81047 / 81046)
2022.07.03 11:23:18.383 2022.01.03 07:00:12 deal #2 buy 0.1 @Si at 81047 done (based on order #2)
2022.07.03 11:23:18.383 2022.01.03 07:00:12 deal performed [#2 buy 0.1 @Si at 81047]
2022.07.03 11:23:18.383 2022.01.03 07:00:12 order performed buy 0.1 at 81047 [#2 buy 0.1 @Si at 81047]
2022.07.03 11:23:18.514 2022.01.03 07:00:12 - Позиция открыта: 2022.01.03 07:00:12.490 -
2022.07.03 11:23:18.514 2022.01.03 07:00:12 @Si Открыт 0.10 Buy #2 [0.10 Market order Buy #2] по цене 81047, sl 80996, tp 81096, магик 123
Действительно, на две строчки больше..
Чтобы несколько упростить, я написал советник с таким нехитрым кодом:
Смысл в том, что при нажатии (а точнее при отжатии) клавиши "Z" открывается Buy, а при нажатии клавиши "A" открывается Sell.
Запустил его в тестере. Результат тот же - на настольном ПК StopLoss и TakeProfit не срабатывают, а на ноутбуке срабатывают, т.е. всё работает корректно.
Я также пробовал в тестере запускать код, ссылка на который приведена в конце этой статьи на ПК и на ноутбуке, и то же самое - на ПК не работает, на ноутбуке работает.
Т.е. напрашивается вывод, что либо есть какая-то настройка у тестера, которая разрешает срабатывание sl и tp (о которой я не знаю), либо сам тестер работает некорректно...
MrBrooklin, Артём.
Я это в тестере стратегий делал (как я понимаю, брокер здесь ни при чём).
Сообщения такие:
2022.07.03 11:16:39.380 2022.01.03 07:00:00 instant buy 0.1 @Si at 81011 sl: 80960 tp: 81060 (81010 / 81011 / 81010)
2022.07.03 11:16:39.380 2022.01.03 07:00:00 deal #2 buy 0.1 @Si at 81011 done (based on order #2)
2022.07.03 11:16:39.380 2022.01.03 07:00:00 deal performed [#2 buy 0.1 @Si at 81011]
2022.07.03 11:16:39.380 2022.01.03 07:00:00 order performed buy 0.1 at 81011 [#2 buy 0.1 @Si at 81011]
Но на другом компьютере (ноутбуке), на котором StopLoss и TakeProfit срабатывают корректно, сообщения такие:
2022.07.03 11:23:18.383 2022.01.03 07:00:12 instant buy 0.1 @Si at 81047 sl: 80996 tp: 81096 (81046 / 81047 / 81046)
2022.07.03 11:23:18.383 2022.01.03 07:00:12 deal #2 buy 0.1 @Si at 81047 done (based on order #2)
2022.07.03 11:23:18.383 2022.01.03 07:00:12 deal performed [#2 buy 0.1 @Si at 81047]
2022.07.03 11:23:18.383 2022.01.03 07:00:12 order performed buy 0.1 at 81047 [#2 buy 0.1 @Si at 81047]
2022.07.03 11:23:18.514 2022.01.03 07:00:12 - Позиция открыта: 2022.01.03 07:00:12.490 -
2022.07.03 11:23:18.514 2022.01.03 07:00:12 @Si Открыт 0.10 Buy #2 [0.10 Market order Buy #2] по цене 81047, sl 80996, tp 81096, магик 123
Действительно, на две строчки больше..
Чтобы несколько упростить, я написал советник с таким нехитрым кодом:
Смысл в том, что при нажатии (а точнее при отжатии) клавиши "Z" открывается Buy, а при нажатии клавиши "A" открывается Sell.
Запустил его в тестере. Результат тот же - на настольном ПК StopLoss и TakeProfit не срабатывают, а на ноутбуке срабатывают, т.е. всё работает корректно.
Я также пробовал в тестере запускать код, ссылка на который приведена в конце этой статьи на ПК и на ноутбуке, и то же самое - на ПК не работает, на ноутбуке работает.
Т.е. напрашивается вывод, что либо есть какая-то настройка у тестера, которая разрешает срабатывание sl и tp (о которой я не знаю), либо сам тестер работает некорректно...
Спред в тестере равен 1. И на ПК и на ноутбуке. Символ @Si.
А разве это может как-то влиять?
Я думал, что может быть как-нибудь проскальзывание (slippage) влияет и пробовал его менять. Но не помогает..
Спред в тестере равен 1. И на ПК и на ноутбуке. Символ @Si.
А разве это может как-то влиять?
Я думал, что может быть как-нибудь проскальзывание (slippage) влияет и пробовал его менять. Но не помогает..
В одном из случаев цена явно не доходит до стоп-уровня