Структура рулит. Учимся структурировать программы, изучаем возможности, ошибки, решения и т.п. - страница 14
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В этом случае придется где-то хранить историю отработанных сигналов, что очень накладно. Снова обратимся к пересечению 2 средних. Допустим, мы перезапустили советник. Нового пересечения на вход нет, советник каким-то образом должен восстановить свою историю сделок и понять, что раньше было пересечение и что сейчас он должен находится в состоянии покупки, и что этот сигнал им был уже отработан и новую позицию открывать не надо, а надо найти свою старую позицию, но ее просто так не найти, потому что текущая позиция не обязательно принадлежит только ему одному... В общем кошмар кошмарный. Мы упираемся в тернистый путь предложенный hrenfx'ом: писать свой исторический тестер внутри каждого робота, который бы собирал бы исторические сигналы, рассчитывал отработаны они или нет, затем сихранизировал объемы стратегий и т.д. и т.п. В итоге сложность разработок возрастает на порядок, а надежного решение так и нет.
История сигналов это индикатор, индикаторы для этого и созданы чтоб производить расчёты, генерировать сигналы, и выгружать их в советник.
И не надо говорить что индикаторы перерисовываются, пишите не перерисовывающиеся индикаторы и будет вам счастье.
Нас никому не сбить с пути, нам похеру куда идти :)
Как неважно!? Да в любой стратегии на уровне ее логики всегда известно ее текущее состояние!
Стратегии нет никакой нужды знать свою историю. Стратегия должна смотреть вперёд, а не назад. То что произошло - произошло уже в прошлом и его не вернуть.
Возьмем простую стратегию на пересечении двух средних: у нее только два состояния, она либо в покупке либо в продаже. Без запоминания своей позиции, она будет открывать длинную позицию, всякий раз, когда увидит что быстрая средняя находится выше медленной. И что делать синхронизатору? Говорить ей: "нет, у тебя уже есть длинная позиция, открыть еще одну не дам!"
:)
Ну я уже писал, вы решаете несуществующую проблему. Проблема кажется реальной только при "ордерном" мышлении. При неттинговом её не сушествует.
Я говорю не о вашем или моём мышлении, я говорю о мышлении программы (стратегии).
В ордерной системе координат стратегия является производителем дискретных сигналов на покупку/продажу/закрытие. В неттинговой - стратегия производит на выходе число (double) - рекомендуемую рыночную позицию.
Давайте на примере двух машек покажу как будет производить свой продукт переворотная неттинговая TC, скажем при торговле постоянным лотом (псевдокод):
Это всё.
Стратегия будет удерживать на выходе +1 до тех пор пока короткая машка выше длинной, и -1 когда она ниже.
Решения о том какие ордера выставлять/закрывать для удержания этих поз в соответствующие моменты принимает рыночный драйвер. Стратегии ни к чему с этим заморачиваться, её роль более аристократическая, ей вся это меркантильная суета по барабану. Драйвер берёт рекомендованную позицию по инструменту вычитает из неё фактическую, разность выводит на рынок. Если разность равна нулю - ничего не делает.
Мое решение универсально, стратегия сама решает сколько ордеров и в какую сторону она может держать открытыми.
Хочет одну позицию на покупку и две на продажу - не проблема.
Тут можно смеяться? Это как раз проблема. Называется "лок".
У меня все потенциальные локи разлочиваются ДО подачи совокупной позиции нескольких входных стратегий на рыночный драйвер:
В базовом классе есть вся необходимая информация для принятия решений. На уровень терминала выходит чистая нет позиция, в то время как сама стратегия работает в комфортном мультипозиционном режиме.
Эксперт созданный по предложенному мной шаблону, автоматически будет обладать свойствами мульти-эксперта. Ничего делать и дописывать не придется. Позиции разных экспертов на одном инструменте не будут коллапсировать в неттинг, какой-нибудь гридер или локер в таком паттерне запрограммировать также легко как и любую другую стратегию. Иными словами достигается полная унификация программной реализации не зависимо от логики эксперта!
...
Стратегия будет удерживать на выходе +1 до тех пор пока короткая машка выше длинной, и -1 когда она ниже.
Решения о том какие ордера выставлять/закрывать для удержания этих поз в соответствующие моменты принимает рыночный драйвер. Стратегии ни к чему с этим заморачиваться, её роль более аристократическая, ей вся это меркантильная суета по барабану.
А стратегия должна вообще париться насчёт каких-то там ордеров? У меня эти мелкие вопросы решает рыночный драйвер.
...
Это все конечно очень хорошо, но что делать стратегиям, чья текущая "рекомендация" зависит от ранее открытой позиции. Допустим стратегия активно пирамидит и в ней такое условие (псевдокод):
Еще пример, как система рекомендаций будет обрабатывать такое простенькое условие (псевдокод):
В реальности таких условий может быть вагон и маленькая тележка.Вот она базовая заморочка. Я с ней прекрасно знаком, облазил здесь все закоулки. И она неверна.
Стратегии нет никакой нужды знать свою историю. Стратегия должна смотреть вперёд, а не назад. То что произошло - произошло уже в прошлом и его не вернуть.
ты чего кричишь :) он совсем про другое сказал.
в любой стратегии на уровне ее логики всегда известно ее текущее состояние!
Это все конечно очень хорошо, но что делать стратегиям, чья текущая "рекомендация" зависит от ранее открытой позиции. Допустим стратегия активно пирамидит и в ней такое условие (псевдокод):
Этим стратегиям безусловно нужно лечиться. На уровне философии торговли. А именно залечивать именно эту дыру в голове: "текущая рекомендация зависит от ранее открытой позиции."
Текущая рекомендованная позиция никогда не должна зависеть от ранее произведённых на рынке действий.
ты чего кричишь :) он совсем про другое сказал.
тут написано про текущее состояние а не историю.Я общаюсь не с тем что он сказал, а с тем что он имел в виду. Он имел в виду предыдущее текущее состояние.
:)
:)
На самом деле для моей схемы нет принципиальных препятствий для создания стратегий учитывающих прошлую торговлю.
Более академичным языком: Система без памяти может легко смоделировать систему с памятью. Для этого память просто выносится вовне - становится для системы ещё одним входным индикатором. Этого вполне достаточно. Сама стратегия при этом остаётся "системой без памяти" и это хорошо и правильно.
Текущая рекомендованная позиция никогда не должна зависеть от ранее произведённых на рынке действий.
Что делать роботам, "выдающим свои рекомендации", чьи сигналы одномоментны? Робот увидел большую свечу верх - сигнал на покупку. Следующий бар уже обычный, сигнала никакого нет. Если робот не помнит своего состояния то его рекомендация на этом баре уже нулевая, а у робота который помнит не нулевая а длинная позиция. А ведь это два одинаковых робота.
Я общаюсь не с тем что он сказал, а с тем что он имел в виду. Он имел в виду предыдущее текущее состояние.
Дело в том что у топикстартера скорее всего не стратегия, а прогнозатор цены.
Модуль MM это прослойка между прогнозатором и драйвером, и результаты его работы могут быть любыми, от капитализации и ограничения риска (относительная просадка на X ... часов/сделок/пунктов движения ) до радикального переворота рекомендуемой прогнозатором позиции.
Что делать роботам, "выдающим свои рекомендации", чьи сигналы одномоментны? Робот увидел большую свечу верх - сигнал на покупку. Следующий бар уже обычный, сигнала никакого нет. Если робот не помнит своего состояния то его рекомендация на этом баре уже нулевая, а у робота который помнит не нулевая а длинная позиция. А ведь это два одинаковых робота.
Этим роботам нужно однозначно лечиться. Лечение может быть совсем несложным. Нужна только мотивация. Это основное.
А чтоб появилась мотивация, нужно увидеть и заценить колоссальное превосходство неттингового мышления над ордерным. А пока они больны я их и близко не подпущу к здоровому населению - пусть отсиживаются в карантине..
:)