Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
fxsaber, 2018.02.19 08:39
На неттинге одновременно на одном и том же символе может быть открытая позиция и несколько маркет-ордеров любого направления. Например, BUY-позиция и BUY-ордер.
В библиотеке MT5-ордера и MT5-позиции являются одной сущностью - MT4-ордера. По этой причина в данной ситуации на неттинг-счете возможно получить на одном символе несколько BUY/SELL-MT4-ордеров. Это не ошибка и ни к чему нехорошему привести не может. Но пишу об этом, если кого-то такая ситуация удивит.
Правда, мне не удалось найти такой демо-счет.
Больше теоретическое предупреждение. На практике не встречал.
Ниже код, который компилируется без предупреждений под MQL4/5
Спасибо @Andrey Voytenko за предложение такого решения!
Ниже код, который компилируется без предупреждений под MQL4/5
Спасибо @Andrey Voytenko за предложение такого решения!
Для чего этот хак?
Для чего этот хак?
В примере закомментированы long-типы. Если их оставить, то в MQL5 и NoStrict-MQL4 не будет предупреждений. Но в strict-MQL4 - возникнут.
Чтобы можно было писать кроссплатформенные библиотеки без соответствующих Warnings, и добавлен данный функционал.
Пользоваться им совершенно не требуется. Это дополнительное удобство для тех, перед кем может встать кроссплатформенная задача подобного рода.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Робот из МТ4 на МТ5
fxsaber, 2018.03.08 09:27
Я пытаюсь реализовать стратегию (которая, очевидно, прекрасно работает в MT4), но уперся в кирпичную стену.
Советник начинает новую последовательность сделок каждый раз, когда генерируется новый сигнал, поэтому для каждой торгуемой пары обычно запускается несколько последовательностей.
У каждой сделки есть SL и TP, и советнику необходимо отслеживать, что произошло (SL или TP) с самой последней сделкой в каждой последовательности, проверяя историю ордеров.
К сожалению, это не представляется возможным, судя по заметкам в библиотеке (см. ниже) и различным попыткам заставить систему работать:
// В MT4 OrderSelect в режиме SELECT_BY_TICKET выбирает тикет независимо от MODE_TRADES / MODE_HISTORY,
// так как "Номер тикета является уникальным идентификатором ордера".
// В MT5 номер билета НЕ является уникальным,
// поэтому OrderSelect в режиме SELECT_BY_TICKET имеет следующие приоритеты выбора для сопоставления билетов:
// MODE_TRADES: существующая позиция> существующий ордер> сделка> отмененный ордер
// MODE_HISTORY: сделка> отмененный ордер> существующая позиция> существующий ордер
Экспериментируя, я убедился, что номер тикета всегда меняется после события SL/TP, и что единственной общей информацией является магический номер - даже комментарий к ордеру не сохраняется.
При тестировании размещение первоначального ордера с SL, TP, магическим номером и торговым комментарием возвращает тикет №2 и отображает всю ожидаемую информацию.
Однако, когда SL или TP достигается, тикет №2 исчезает, и его нельзя извлечь ни с помощью SELECT_BY_POS, ни с помощью SELECT_BY_TICKET.
Вместо этого (при условии отсутствия другой торговой активности) появляется тикет №3, в котором не установлен комментарий к ордеру.
При отсутствии последовательности в отношении номера билета и комментария к ордеру, на который можно было бы сослаться, похоже, нет простого способа определить последний ордер в данной последовательности :(
Надеюсь, @fxsaber найдет решение или предложит обходной путь :)
К сожалению, я не понял суть проблемы.
Извините за поздний ответ :(
Проблема в том, что торговая информация 'MODE_HISTORY' в принципе непригодна для использования, потому что:
1) когда сделка закрывается, номер тикета меняется ... вы можете легко проверить это, открыв сделку на покупку / продажу с TP и SL - если сделка открывается как тикет #2, то после срабатывания SL или TP она станет тикетом #3 в пуле истории
2) магическое число потеряно
3) теряется комментарий к билету
Таким образом, если в коде эксперта нужно проверить, закрылась ли сделка с прибылью или убытком, это невозможно, поскольку нет информации, позволяющей идентифицировать сделку.
Я надеюсь, что вы сможете изменить ситуацию, чтобы сохранить магическое число и сделать так, чтобы комментарий к сделке вел себя как в MT4 - возможно, вы найдете способ сохранить и номер тикета.
Извините за поздний ответ :(
Проблема в том, что торговая информация 'MODE_HISTORY' в основном непригодна для использования, потому что:
1) когда сделка закрывается, номер тикета меняется ... вы можете легко проверить это, открыв сделку на покупку / продажу с TP и SL - если сделка открывается как тикет #2, то после срабатывания SL или TP она станет тикетом #3 в пуле истории.
2) магическое число теряется
3) комментарий к билету потерян
Таким образом, если в коде эксперта нужно проверить, закрылась ли сделка с прибылью или убытком, это невозможно, поскольку нет информации, позволяющей идентифицировать сделку.
Я надеюсь, что вы сможете изменить ситуацию, чтобы сохранить магическое число и заставить торговый комментарий вести себя как в MT4 - возможно, вы сможете найти способ сохранить и номер тикета.
Пример
Результат
stop loss!!!
PS Русская ветка обсуждения.