Rosh: Если бесконечно в цикле будете пытаться отправить ордер по цене, которая устарела по каким-то причинам, то конечно это будет расценено как грубая ошибка программирования. Такой советник не будет допущен однозначно. В случае реквоты нужно либо отправить новый запрос с новыми ценами, если устраивает, либо отказаться от продолжения и ждать своей цены. Но никак не долбиться в закрытые двери.
Спасибо. Очень вразумительно обьяснили. Кстати, не могли бы Вы также обьяснить зачем указывать цену рыночному ордеру (MARKET ORDER)?
antslag: Почему есть такое ограничение как: советник должен быть прибыльным в период с 1 января 2011. Дискриминация какая-то.
Ну, потому, что даже из 100% прибыльных на истории в тестере советников, большинство на реале (на чемпионате) окажется убыточными. Оптимизация в тестере - есть подгонка под историю, и тестер является весьма совершенным инструментом такой подгонки. Почти все это знают, но "Слаб человек, слаб...", и желаемое выдают за действительное. А уж если Вам не удалось даже на истории оптимизировать Ваш советник в прибыль, значит в реале его шансы = 0. Какие соображения в противовес ?
Почитал документацию. Обнаружил несколько ошибок. Начну по порядку:
В документации указано что для рыночного ордера нужно пять полей:
action (я использую TRADE_ACTION_DEAL)
symbol
volume
type (например ORDER_TYPE_BUY)
type_filling
Все поля понятны кроме type_filling. В документации на этом сайте указываются три идентификатора для этого поля: ORDER_FILLING_FOK, ORDER_FILLING_IOC и ORDER_FILLING_RETURN. Метаедитор выдаёт ошибку при попытке использования двух первых идентификаторов. В документации Метаедитора даются другие идентификаторы: ORDER_FILLING_AON, ORDER_FILLING_CANCEL и ORDER_FILLING_RETURN. Нужно исправить документацию на mql5.com чтобы соответствовала документации в Метаедиторе.
Если в качестве type_filling использовать любой из трёх возможных идентификаторов (ORDER_FILLING_AON, ORDER_FILLING_CANCEL и ORDER_FILLING_RETURN), то тестер выдаёт ошибку о неправильных стоплоссах. Чтобы избежать этих ошибок, нужно добавить шестое поле price, тогда всё зароаботает. Но тогда возвращаемся к моему ворпосу: зачем маркет ордеру цена? Тут наверно где-то ошибка.
Почитал документацию. Обнаружил несколько ошибок. Начну по порядку:
В документации указано что для рыночного ордера нужно пять полей:
action (я использую TRADE_ACTION_DEAL)
symbol
volume
type (например ORDER_TYPE_BUY)
type_filling
Все поля понятны кроме type_filling. В документации на этом сайте указываются три идентификатора для этого поля: ORDER_FILLING_FOK, ORDER_FILLING_IOC и ORDER_FILLING_RETURN. Метаедитор выдаёт ошибку при попытке использования двух первых идентификаторов. В документации Метаедитора даются другие идентификаторы: ORDER_FILLING_AON, ORDER_FILLING_CANCEL и ORDER_FILLING_RETURN. Нужно исправить документацию на mql5.com чтобы соответствовала документации в Метаедиторе.
Если в качестве type_filling использовать любой из трёх возможных идентификаторов (ORDER_FILLING_AON, ORDER_FILLING_CANCEL и ORDER_FILLING_RETURN), то тестер выдаёт ошибку о неправильных стоплоссах. Чтобы избежать этих ошибок, нужно добавить шестое поле price, тогда всё зароаботает. Но тогда возвращаемся к моему ворпосу: зачем маркет ордеру цена? Тут наверно где-то ошибка.
1. Справка выкладывается на сайт с опережением. В новом билде будут эти идентификаторы.
2. Для рыночных ордеров указывать уровни StopLoss и TakeProfit нельзя.
Если бесконечно в цикле будете пытаться отправить ордер по цене, которая устарела по каким-то причинам, то конечно это будет расценено как грубая ошибка программирования. Такой советник не будет допущен однозначно. В случае реквоты нужно либо отправить новый запрос с новыми ценами, если устраивает, либо отказаться от продолжения и ждать своей цены. Но никак не долбиться в закрытые двери.
Спасибо. Очень вразумительно обьяснили. Кстати, не могли бы Вы также обьяснить зачем указывать цену рыночному ордеру (MARKET ORDER)?
Спасибо. Очень вразумительно обьяснили. Кстати, не могли бы Вы также обьяснить зачем указывать цену рыночному ордеру (MARKET ORDER)?
Не совсем понял вопроса. В справке сказано (https://www.mql5.com/ru/docs/constants/structures/mqltraderequest):
Market Execution
Торговый ордер на открытие позиции в режиме Market Execution (режим исполнения торговых приказов по рынку). Требуется указание 5 полей:
Можно также задать значения полей magic и comment.
Почему есть такое ограничение как: советник должен быть прибыльным в период с 1 января 2011. Дискриминация какая-то.
а что означает сие загадочная запись:
а что означает сие загадочная запись:
Не совсем понял вопроса. В справке сказано (https://www.mql5.com/ru/docs/constants/structures/mqltraderequest):
Почитал документацию. Обнаружил несколько ошибок. Начну по порядку:
- action (я использую TRADE_ACTION_DEAL)
- symbol
- volume
- type (например ORDER_TYPE_BUY)
- type_filling
Все поля понятны кроме type_filling. В документации на этом сайте указываются три идентификатора для этого поля: ORDER_FILLING_FOK, ORDER_FILLING_IOC и ORDER_FILLING_RETURN. Метаедитор выдаёт ошибку при попытке использования двух первых идентификаторов. В документации Метаедитора даются другие идентификаторы: ORDER_FILLING_AON, ORDER_FILLING_CANCEL и ORDER_FILLING_RETURN. Нужно исправить документацию на mql5.com чтобы соответствовала документации в Метаедиторе.Почитал документацию. Обнаружил несколько ошибок. Начну по порядку:
- action (я использую TRADE_ACTION_DEAL)
- symbol
- volume
- type (например ORDER_TYPE_BUY)
- type_filling
Все поля понятны кроме type_filling. В документации на этом сайте указываются три идентификатора для этого поля: ORDER_FILLING_FOK, ORDER_FILLING_IOC и ORDER_FILLING_RETURN. Метаедитор выдаёт ошибку при попытке использования двух первых идентификаторов. В документации Метаедитора даются другие идентификаторы: ORDER_FILLING_AON, ORDER_FILLING_CANCEL и ORDER_FILLING_RETURN. Нужно исправить документацию на mql5.com чтобы соответствовала документации в Метаедиторе.1. Справка выкладывается на сайт с опережением. В новом билде будут эти идентификаторы.
2. Для рыночных ордеров указывать уровни StopLoss и TakeProfit нельзя.
1. Справка выкладывается на сайт с опережением. В новом билде будут эти идентификаторы.
2. Для рыночных ордеров указывать уровни StopLoss и TakeProfit нельзя.
Спасибо. Но ошибка о стоплоссах выдаётся даже если они не указываются. Я использую только пять полей
Только при добавлении поля price, ошибка о стоплоссах исчезает.
Спасибо. Но ошибка о стоплоссах выдаётся даже если они не указываются. Я использую только пять полей
Только при добавлении поля price, ошибка о стоплоссах исчезает.