Ошибки, баги, вопросы - страница 2410
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Пример кода можете показать? Как закрыть позицию по EURUSD по цене GPBUSD?
Если запросто, то Вам не составит труда. Буду очень признателен.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Vladimir Karputov, 2019.03.24 05:58
Запросто. Прямая зависимость от кривизны кода. Я сам такое вытворял :). Недостаточно продуманная система контроля инициализации класса символов. И плюс к этому статические переменные.
В общем без кода от вопрошаемого дальше говорить бессмысленно.
В режиме отладки, визуализации ошибка отсутствует. Закрытие позиции происходит не торговым приказом, а по стоплоссу:
Вполне возможна логическая ошибка в коде, скорее всего здесь, посмотрю, конечно, пока не знаю как - в отладке ошибки нет:
удается установить стоп для ордера по цене 1.60704, на 3000 пунктов выше от текущей цены позиции.
Тестер в этом случае должен был бы запретить установку стопа.
Вот в лог смотрю:
приказ в изменение стопа отправляется для gpbusd, выделенная строка, а фактически исполняется для eurusd- следущая.
вот код установки стопа
где
OrderSend( req, res )нативная функция mql, не перегруженная.
то есть вот здесь
пишет, что устанавливает стоп для gbpusd, так и должно быть, а фактически
OrderSend( req, res )устанавливает его для eurusd
Вот в лог смотрю:
приказ в изменение стопа отправляется для gpbusd, выделенная строка, а фактически исполняется для eurusd- следущая.
тут 2 ошибки.
№1. Ваша ошибка. Где-то в коде. Вы устанавливаете СЛ для позиции по EURUSD используя цену GBPUSD. Терминал против этого ничего не должен иметь.
№2. Баг терминала. Если этот СЛ срабатывает по несуществующей на тот момент цене в потоке EURUSD, используя цену GBPUSD.
Вот в лог смотрю:
приказ в изменение стопа отправляется для gpbusd, выделенная строка, а фактически исполняется для eurusd- следущая.
вот код установки стопа
где
нативная функция mql, не перегруженная.
https://www.mql5.com/ru/docs/constants/structures/mqltraderequest
Видимо при отправке запроса на модификацию, приоритет имеет поле position а не symbol. Распечатайте req.position
Пожалуйста запустите этот код: Multicurrency iMA Trend 2.
В настройках (параметр Symbols) указать "EURUSD,GBPUSD").
У меня на конфигурации
все SL закрывались по ценам своего символа. То есть ошибок перехлёста цен нет.
Пожалуйста запустите этот код: Multicurrency iMA Trend 2.
В настройках (параметр Symbols) указать "EURUSD,GBPUSD").
У меня на конфигурации
все SL закрывались по ценам своего символа. То есть ошибок перехлёста цен нет.
Спасибо, ошибка локализована. Пост ниже.
тут 2 ошибки.
№1. Ваша ошибка. Где-то в коде. Вы устанавливаете СЛ для позиции по EURUSD используя цену GBPUSD. Терминал против этого ничего не должен иметь.
№2. Баг терминала. Если этот СЛ срабатывает по несуществующей на тот момент цене в потоке EURUSD, используя цену GBPUSD.
https://www.mql5.com/ru/docs/constants/structures/mqltraderequest
Видимо при отправке запроса на модификацию, приоритет имеет поле position а не symbol. Распечатайте req.position
Да, вы оказались правы, моя ошибка логическая:
в структуре:
MqlTradeRequest m_request;
m_request.position = #3
m_request.symbol = GBPUSD
m_request.sl = 1.60704
фактический номер позиции для GBPUSD #4
при выполнении OrderSend тестер устанавливает стоп для символа, соответствующего позиции #3, это eurusd.
Ошибки тестера:
- не проверяет соответствие m_request.position и m_request.symbol;
- устанавливает стоп 1.60704 для бай позиции, символ eurusd, у которого текущая цена 1.30935;
- на следующем тике исполняет стоп по цене 1.60704, хотя фактическая цена 1.30935.
Всем спасибо. Надеюсь разработчики платформы увидят пост.
Да, вы оказались правы, моя ошибка логическая:
в структуре:
MqlTradeRequest m_request;
m_request.position = #3
m_request.symbol = GBPUSD
m_request.sl = 1.60704
фактический номер позиции для GBPUSD #4
при выполнении OrderSend тестер устанавливает стоп для символа, соответствующего позиции #3, это eurusd.
Ошибки тестера:
- не проверяет соответствие m_request.position и m_request.symbol;
- устанавливает стоп 1.60704 для бай позиции, символ eurusd, у которого текущая цена 1.30935;
- на следующем тике исполняет стоп по цене 1.60704, хотя фактическая цена 1.30935.
Всем спасибо. Надеюсь разработчики платформы увидят пост.
Исполнение стопа для бай позиции по 1.60704 при текущей цене 1.30935 не является ошибкой. А вот установка для бай стопа на уровень 1.60704 при текущей цене 1.30935 это ошибка.