Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
С формулировкой задачи я определился:
открытие лонг: быстрая МА пересекает медленную МА снизу вверх, плюс фильтр времени
закрытие лонг: быстрая МА пересекает медленную МА сверху вниз
открытие шорт: быстрая МА пересекает медленную МА сверху вниз, плюс фильтр времени
закрытие шорт: быстрая МА пересекает медленную МА снизу вверх.
В упомянутом ранее примере для этого использовались CheckOpenLong, CheckCloseLong, CheckOpenShort, CheckCloseShort соответственно.
Если сделать два модуля, один с сигналами на открытие, а другой на закрытие, то, как я понимаю, в первом будут использоваться LongCondition и ShortCondition, как и в стандартной библиотеке модулей. Что использовать во втором модуле для закрытия?
А самое главное где? Что значит "... пересекает ..."? В этом и есть вся прелесть :)
Блин, я только еще больше запутался)) В статье "Создай торгового робота за 6 шагов!" как раз представлен первый модуль с сигналами на открытие по пересечению двух МА.
https://www.mql5.com/ru/articles/367
Что значит "пересекает"? Быстрая МА пересекает медленную МА снизу вверх - это когда разность значений FastMA-SlowMA на первом баре больше нуля, а на втором - меньше нуля. Сверху вниз - на первом баре меньше нуля, на втором больше нуля.
Вы сказали, что можно решить вопрос создав два модуля, с сигналами на открытие и закрытие. Можно ли для создания модуля с сигналами на закрытие за основу использовать модуль из указанной статьи?
...
Что значит "пересекает"? Быстрая МА пересекает медленную МА снизу вверх - это когда разность значений FastMA-SlowMA на первом баре больше нуля, а на втором - меньше нуля. Сверху вниз - на первом баре меньше нуля, на втором больше нуля.
...
Уже хорошо. Когда задачу конкретизируют - это очень правильно.
...
Вы сказали, что можно решить вопрос создав два модуля, с сигналами на открытие и закрытие. Можно ли для создания модуля с сигналами на закрытие за основу использовать модуль из указанной статьи?
Я неправильно выразился. Модуль торговых сигналов выдаёт сигналы "Пора уже ОТКРЫТЬ BUY" и "Пора уже ОТКРЫТЬ SELL". То есть выдают сигнал на ОТКРЫТИЕ. А вот дальше уже решает CExpert: закрыть и перевернуть существующую позицию или открыть позицию.
Возьмём модуль из статьи Создай торгового робота за 6 шагов! - что Вас в нём не устраивает?
Так, я хочу написать модуль с сигналами открытия по пересечению двух МА с фильтром времени, а закрытие происходило в следующих случах: поступление противоположного сигнала; наступление SL; наступление TP. Можно написать модуль (назовем его Сross2MA) по статье, и сгенерировать советник с модулями Cross2MA и SignalITF, но такой вариант не подходит, так как при закрытии будет проверяться и фильтр SignalITF.
Например: Есть 2МА, в SignalITF выставлена торговля только по понедельникам. Итак, в понедельник поступает сигнал на покупку, открывается позиция buy, по истечении времени, во вторник, когда еще не достигнут ни Sl ни TP, происходит обратное пересечение 2МА, и позиция Buy должна закрыться, но этого не происходит, потому что уже другой день недели.
Как должно быть: условия те же, 2МА, торговля по понедельникам: понедельник, поступает сигнал на покупку, открывается Buy, во вторник поступает сигнал по продажу, но так как уже вторник, открытие позиции Sell не происходит, только закрывается позиция Buy.
В LongCondition получается заключено две команды: открытие Buy и закрытие Sell. Нужно как то их разделить)
PeretsCHILI:
Так, я хочу написать модуль с сигналами открытия по пересечению двух МА с фильтром времени, а закрытие происходило в следующих случаях: поступление противоположного сигнала; наступление SL; наступление TP. ...
Модуль торговых сигналов МОЖЕТ только ВЫДАВАТЬ ДВА вида СИГНАЛА "ПОРА открывать BUY" и "ПОРА открывать SELL".
Stop loss и take profit мы контролировать не будем - так как если произошло закрытие по stop loss или по take profit это означает только одно: позиция закрыта и пора смотреть, что там выдаёт модуль торговых сигналов (другими словами, когда количество позиций равно нулю, мы начинаем всё по кругу: ждём сигнал).
Далее: неверное толкование работы модулей, так как никакого "противоположного сигнала" не существует - может быть так:
LongCondition может просто открыть покупку и держать ее независимо от любых условий, а закрытие чтобы было по стопу-профиту или вручную?
LongCondition класса CExpertSignal в принципе не может ничего "держать". CExpertSignal только ВЫДАЁТ ДВА СИГНАЛА: "Пора уже ОТКРЫТЬ BUY" и "Пора уже ОТКРЫТЬ SELL".
Хотите, чтобы советник собранный мастером никогда не закрывал? Тогда измените входной параметр советника "// Signal threshold value to close [0...100]" - банально установите планку весов для закрытия на значение "100".
А что тогда их закрывает?
Объект класса CExpert - он опрашивает все модули сигналов, оценивает их веса и суммирует результирующую оценку: вес сигнала
Про толкование модулей я понял. Все эти танцы с бубном происходят по тому, что оптимизировать советник буду следующим образом: 1.характеристики двух МА (период, сдвиг,сглаживание), стопы и тэйки по нулям; 2. оптимизация по стопов и тейков. 3. оптимизация трейлинга.
Загвоздка в следующем: если сгенерировать советник с Cross2MA и c фильтром SignalITF, то он будет работать следующим образом (условия те же, стоп и тэйки по нулям):
Понедельник, FastMA пересекает SlowMA снизу вверх, открывается позиция Buy, позиция держится до следующего понедельника, в следующий понедельник может быть 3 варианта:
1. FastMA пересекает SlowMA сверху вниз - закрывается текущая позиция, открывается позиция Sell.
2. Пересечений не наблюдается - позиция сохраняется.
3. FastMA пересекает SlowMA снизу вверх - позиция сохраняется.
И так до следующего понедельника. А между понедельниками много чего может случиться, 2 MA могут несколько раз пересечься, цена уйдет вниз.
Можно ли реализовать, к примеру, следующее (условия те же): во вторник FastMA пересекает SlowMA сверху вниз, открытие позиции Sell не происходит, потому что вторник, а не понедельник, но закрывается текущая позиция?
Кажется я понял как можно сделать это с применением threshold.
Пусть Cross2MA возвращает 80, а SignalITF возвращает 40.
threshold to open ставим 50, threshold to close ставим 30.
Если оба модуля дают сигнал, среднеарифметический выходит 60, больше порога в 50, открывается позиция.
Если срабатывает только Cross2MA, среднеарифметический 40, больше 30, текущая позиция закрывается, меньше 50, новая позиция не открывается.
Верно?
Вот только SignalITF возвращает empty_value.
Кажется я понял как можно сделать это с применением threshold.
Пусть Cross2MA возвращает 80, а SignalITF возвращает 40.
threshold to open ставим 50, threshold to close ставим 30.
Если оба модуля дают сигнал, среднеарифметический выходит 60, больше порога в 50, открывается позиция.
Если срабатывает только Cross2MA, среднеарифметический 40, больше 30, текущая позиция закрывается, меньше 50, новая позиция не открывается.
Верно?
Вот только SignalITF возвращает empty_value.
Правильной дорогой идёте :) Всё управление порогами открытия и закрытия - через входные параметеры эксперта сгенерированного Мастером MQL5.