![Разбираем примеры торговых стратегий в клиентском терминале](https://c.mql5.com/2/88/examples-of-trading-strategies_15479_387_3725_600x314.jpg)
Разбираем примеры торговых стратегий в клиентском терминале
Содержание
Введение
В начале 1990-х годов на западных финансовых рынках был представлен график японских свечей и свечные паттерны, подготовленные техническим аналитиком Стивом Нисоном. С тех пор знание свечных паттернов стало для трейдеров таким же обязательным, как и умение применять классический технический анализ.
С некоторых пор в клиентском терминале в каталоге советников появилась новая папка Free Robots:
В этой папке находятся 28 советников — примеров торговых стратегий для самостоятельного изучения и применения принципов, заложенных в стратегии, для собственных разработок. Торговые стратегии, представленные в папке Free Robots, — это советники, торгующие по свечным паттернам, подкрепляемым сигналами от индикаторов.
Для подтверждения сигналов, поступающих от свечных паттернов, используются значения одного из четырёх индикаторов-осцилляторов: CCI, MFI, RSI и Stochastic Oscillator. Таким образом, для изучения представлены 7 советников, торгующих по свечным паттернам (в каждом по два паттерна — один паттерн для длинных, и один — для коротких позиций), и каждый из этих советников представлен в четырёх экземплярах — по количеству подтверждающих индикаторов.
Обзор торговых стратегий
Каждая из торговых стратегий использует по два однотипных, но разных по направлению и названию, паттерна:
1. BlackCrows WhiteSoldiers
![]() | 3 White Soldiers: Паттерн на покупку "Три белых солдата" — 3 подряд идущие белые свечи с телом достаточного размера. Являются сигналом о возможном развороте нисходящего (медвежьего) тренда. |
![]() | 3 Black Crows: Паттерн на продажу "Три черные вороны" — 3 подряд идущие черные свечи с телом достаточного размера. Являются сигналом о возможном развороте восходящего (бычьего) тренда. |
На основе свечных паттернов, описанных выше, в терминале представлены четыре учебных советника:
- BlackCrows WhiteSoldiers CCI.mq5 — советник, торгующий по паттернам 3 White Soldiers и 3 Black Crows с подтверждением сигналов по индикатору CCI.
- BlackCrows WhiteSoldiers MFI.mq5 — советник, торгующий по паттернам 3 White Soldiers и 3 Black Crows с подтверждением сигналов по индикатору MFI.
- BlackCrows WhiteSoldiers RSI.mq5 — советник, торгующий по паттернам 3 White Soldiers и 3 Black Crows с подтверждением сигналов по индикатору RSI.
- BlackCrows WhiteSoldiers Stoch.mq5 — советник, торгующий по паттернам 3 White Soldiers и 3 Black Crows с подтверждением сигналов по индикатору Stochastic Oscillator.
2. BullishBearish Engulfing
![]() | Bullish Engulfing: Паттерн на покупку "Бычье поглощение" возникает в случае, когда при нисходящем тренде после медвежьей свечи появляется бычья свеча, тело которой полностью поглощает тело медвежьей свечи. Является сигналом о возможном развороте нисходящего (медвежьего) тренда. |
![]() | Bearish Engulfing: Паттерн на продажу "Медвежье поглощение" возникает в случае, когда при восходящем тренде после бычьей свечи появляется медвежья свеча, тело которой полностью поглощает тело бычьей свечи. Является сигналом о возможном развороте восходящего (бычьего) тренда. |
На основе свечных паттернов, описанных выше, в терминале представлены четыре учебных советника:
- BullishBearish Engulfing CCI.mq5 — советник, торгующий по паттернам Bullish Engulfing и Bearish Engulfing с подтверждением сигналов по индикатору CCI.
- BullishBearish Engulfing MFI.mq5 — советник, торгующий по паттернам Bullish Engulfing и Bearish Engulfing с подтверждением сигналов по индикатору MFI.
- BullishBearish Engulfing RSI.mq5 — советник, торгующий по паттернам Bullish Engulfing и Bearish Engulfing с подтверждением сигналов по индикатору RSI.
- BullishBearish Engulfing Stoch.mq5 — советник, торгующий по паттернам Bullish Engulfing и Bearish Engulfing с подтверждением сигналов по индикатору Stochastic Oscillator.
3. BullishBearish Harami
![]() | Bullish Harami: Паттерн на покупку "Бычья модель Харами" возникает в случае, когда при нисходящем тренде после длинной медвежьей свечи появляется бычья свеча с телом, полностью расположенным внутри тела медвежьей свечи. Является сигналом о возможном развороте нисходящего (медвежьего) тренда. |
![]() | Bearish Harami: Паттерн на продажу "Медвежья модель Харами" возникает в случае, когда при восходящем тренде после длинной бычьей свечи появляется медвежья свеча с телом, полностью расположенным внутри тела бычьей свечи. Является сигналом о возможном развороте восходящего (бычьего) тренда. |
На основе свечных паттернов, описанных выше, в терминале представлены четыре учебных советника:
- BullishBearish Harami CCI.mq5 — советник, торгующий по паттернам Bullish Harami и Bearish Harami с подтверждением сигналов по индикатору CCI.
- BullishBearish Harami MFI.mq5 — советник, торгующий по паттернам Bullish Harami и Bearish Harami с подтверждением сигналов по индикатору MFI.
- BullishBearish Harami RSI.mq5 — советник, торгующий по паттернам Bullish Harami и Bearish Harami с подтверждением сигналов по индикатору RSI.
- BullishBearish Harami Stoch.mq5 — советник, торгующий по паттернам Bullish Harami и Bearish Harami с подтверждением сигналов по индикатору Stochastic Oscillator.
4. BullishBearish MeetingLines
![]() | Bullish Meeting Lines: Паттерн на покупку "Бычьи встречающиеся свечи" представляет собой комбинацию медвежьей и бычьей свечей, у которых совпадают (или очень близки) цены закрытия. Длина тел обеих свечей больше средней. Является сигналом о возможном развороте нисходящего (медвежьего) тренда. |
![]() | Bearish Meeting Lines: Паттерн на продажу "Медвежьи встречающиеся свечи" представляет собой комбинацию бычьей и медвежьей свечей, у которых совпадают (или очень близки) цены закрытия. Длина тел обеих свечей больше средней. Является сигналом о возможном развороте восходящего (бычьего) тренда. |
На основе свечных паттернов, описанных выше, в терминале представлены четыре учебных советника:
- BullishBearish MeetingLines CCI.mq5 — советник, торгующий по паттернам Bullish Meeting Lines и Bearish Meeting Lines с подтверждением сигналов по индикатору CCI.
- BullishBearish MeetingLines MFI.mq5 — советник, торгующий по паттернам Bullish Meeting Lines и Bearish Meeting Lines с подтверждением сигналов по индикатору MFI.
- BullishBearish MeetingLines RSI.mq5 — советник, торгующий по паттернам Bullish Meeting Lines и Bearish Meeting Lines с подтверждением сигналов по индикатору RSI.
- BullishBearish MeetingLines Stoch.mq5 — советник, торгующий по паттернам Bullish Meeting Lines и Bearish Meeting Lines с подтверждением сигналов по индикатору Stochastic Oscillator.
5. DarkCloud PiercingLine
![]() | Piercing Line: Паттерн на покупку "Просвет в облаках" представляет собой комбинацию медвежьей и бычьей свечей. Является противоположным аналогом паттерна Dark Cloud Cover (Завеса из темных облаков). Сначала идет большая черная свеча, следующая имеет низкое открытие (ниже минимума предыдущей) и закрытие выше середины первой свечи. Является сигналом о возможном развороте нисходящего (медвежьего) тренда. |
![]() | Dark Cloud Cover: Паттерн на продажу "Завеса из темных облаков" представляет собой комбинацию бычьей и медвежьей свечей. Сначала идет большая белая свеча, следующая свеча имеет высокое открытие (выше максимума предыдущей) и закрытие ниже середины первой свечи. Это один из немногих случаев, когда учитываются максимум и минимум. Является сигналом о возможном развороте восходящего (бычьего) тренда. |
На основе свечных паттернов, описанных выше, в терминале представлены четыре учебных советника:
- DarkCloud PiercingLine CCI.mq5 — советник, торгующий по паттернам PiercingLine и Dark Cloud Cover с подтверждением сигналов по индикатору CCI.
- DarkCloud PiercingLine MFI.mq5 — советник, торгующий по паттернам PiercingLine и Dark Cloud Cover с подтверждением сигналов по индикатору MFI.
- DarkCloud PiercingLine RSI.mq5 — советник, торгующий по паттернам PiercingLine и Dark Cloud Cover с подтверждением сигналов по индикатору RSI.
- DarkCloud PiercingLine Stoch.mq5 — советник, торгующий по паттернам PiercingLine и Dark Cloud Cover с подтверждением сигналов по индикатору Stochastic Oscillator.
6. HangingMan Hammer
![]() | Hammer: Паттерн на покупку "Молот" представляет из себя свечу с маленьким телом и длинной нижней тенью, появившейся после нисходящей тенденции. Появление "Молота" – это сильный сигнал того, что господство медвежьего рынка подходит к концу. |
![]() | Hanging Man: Паттерн на продажу "Повешенный" представляет из себя свечу с маленьким телом и длинной нижней тенью, появившейся после восходящей тенденции. Появление "Повешенного" сигнализирует об окончании повышательной тенденции. |
На основе свечных паттернов, описанных выше, в терминале представлены четыре учебных советника:
- HangingMan Hammer CCI.mq5 — советник, торгующий по паттернам Hammer и Hanging Man с подтверждением сигналов по индикатору CCI.
- HangingMan Hammer MFI.mq5 — советник, торгующий по паттернам Hammer и Hanging Man с подтверждением сигналов по индикатору MFI.
- HangingMan Hammer RSI.mq5 — советник, торгующий по паттернам Hammer и Hanging Man с подтверждением сигналов по индикатору RSI.
- HangingMan Hammer Stoch.mq5 — советник, торгующий по паттернам Hammer и Hanging Man с подтверждением сигналов по индикатору Stochastic Oscillator.
7. MorningEvening StarDoji
![]() | Morning Star: Паттерн на покупку "Утренняя звезда" состоит из трех свечей, возникает при нисходящем тренде: 1. За длинной черной свечей идет свеча с маленьким телом (цвет не имеет значения), которое не пересекается с телом черной свечи. 2. Маленькое тело второй свечи означает, что рынок перешел от нисходящей тенденции к равновесию сил быков и медведей. 3. Третьей свечей этой модели является бычья свеча, тело которой обычно не пересекается с телом второй свечи, а уровень закрытия располагается внутри тела первой (медвежьей) свечи. Паттерн является сигналом о возможном развороте нисходящего (медвежьего) тренда. |
![]() | Morning Doji Star: Паттерн на покупку "Утренняя звезда доджи" является частным случаем паттерна "Утренняя звезда" (Morning Star). В этом случае вторая свеча паттерна имеет одинаковые цены открытия и закрытия — то есть вторая свеча не имеет тела. Паттерн является сигналом о возможном развороте нисходящего (медвежьего) тренда. |
![]() | Evening Star: Паттерн на продажу "Вечерняя звезда" также состоит из трех свечей, возникает при восходящем тренде: 1. За длинной белой свечей идет свеча с маленьким телом (цвет не имеет значения), которое не пересекается с телом белой свечи. 2. Маленькое тело второй свечи означает, что рынок перешел от восходящей тенденции к равновесию сил быков и медведей. 3. Третьей свечей этой модели является черная свеча, тело которой обычно не пересекается с телом второй свечи, а уровень закрытия располагается внутри тела первой (бычьей) свечи. Паттерн является сигналом о возможном развороте восходящего (бычьего) тренда. |
![]() | Evening Doji Star: Паттерн на продажу "Вечерняя звезда доджи" является частным случаем паттерна "Вечерняя звезда" (Evening Star). В этом случае вторая свеча паттерна имеет одинаковые цены открытия и закрытия — то есть вторая свеча не имеет тела. Паттерн является сигналом о возможном развороте нисходящего (медвежьего) тренда. |
На основе свечных паттернов, описанных выше, в терминале представлены четыре учебных советника:
- MorningEvening StarDoji CCI.mq5 — советник, торгующий по паттернам Morning Star (Morning Doji Star) и Evening Star (Evening Doji Star) с подтверждением сигналов по индикатору CCI.
- MorningEvening StarDoji MFI.mq5 — советник, торгующий по паттернам Morning Star (Morning Doji Star) и Evening Star (Evening Doji Star) с подтверждением сигналов по индикатору MFI.
- MorningEvening StarDoji RSI.mq5 — советник, торгующий по паттернам Morning Star (Morning Doji Star) и Evening Star (Evening Doji Star) с подтверждением сигналов по индикатору RSI.
- MorningEvening StarDoji Stoch.mq5 — советник, торгующий по паттернам Morning Star (Morning Doji Star) и Evening Star (Evening Doji Star) с подтверждением сигналов по индикатору Stochastic Oscillator.
Все индикаторы, используемые в советниках, служат для подтверждения входов в длинную или короткую позицию (при наличии соответствующих сигналов от свечных паттернов) и для закрытия открытых позиций по сигналам индикаторов.
В таблицах ниже представлены используемые значения индикаторов для подтверждения входов в позицию и для закрытия открытых позиций:
Индикатор | Покупка | Продажа |
---|---|---|
CCI | CCI (1)<-50 — значение индикатора CCI на последнем завершенном баре меньше -50 | CCI(1)>50 — значение индикатора CCI на последнем завершенном баре больше 50 |
MFI | MFI(1)<40 — значение индикатора MFI на последнем завершенном баре меньше 40 | MFI(1)>60 — значение индикатора MFI на последнем завершенном баре больше 60 |
RSI | RSI(1)<40 — значение линии индикатора RSI на последнем завершенном баре меньше 40 | RSI(1)>60 — значение индикатора RSI на последнем завершенном баре больше 60 |
Stochastic | Stochastic Signal(1)<30 — значение сигнальной линии индикатора Stochastic на последнем завершенном баре меньше 30 | Stochastic Signal(1)>70 — значение сигнальной линии индикатора Stochastic на последнем завершенном баре больше 70 |
Сигналы технических индикаторов для закрытия позиций возникают, когда значение индикатора пересекает границу экстремальной зоны, а именно – вход или выход в/из зоны перекупленности или перепроданности.
Индикатор | Закрытие длинной позиции | Закрытие короткой позиции |
---|---|---|
CCI | Пересечение индикатором CCI сверху вниз уровня 80 или уровня -80 | Пересечение индикатора CCI снизу вверх уровня -80 или уровня 80 |
MFI | Пересечение индикатором MFI сверху вниз уровня 70 или уровня 30 | Пересечение индикатором MFI снизу вверх уровня 30 или уровня 70 |
RSI | Пересечение индикатора RSI сверху вниз уровня 70 или уровня 30 | Пересечение индикатора RSI снизу вверх уровня 30 или уровня 70 |
Stochastic | Пересечение сигнальной линией индикатора Stochastic сверху вниз уровня 80 или уровня 20 | Пересечение сигнальной линией индикатора Stochastic снизу вверх уровня 20 или уровня 80 |
Один отдельно взятый советник работает по паре противоположных по направленности свечных паттернов, и представлен в четырёх вариантах подтверждающих индикаторов.
В итоге имеем 7 * 4 = 28 различных советников, организованных по одной, идентичной для всех, схеме. Рассмотрим единую логику всех советников при помощи блок-схем.
Разбираем общую логику
Если открыть в редакторе кода любой из представленных советников, изучить его код, то увидим простую схему:
Логика советников построена на флагах и переменных, объявленных на глобальном уровне:
- ExtSignalOpen — сигнал на открытие позиции. 1 — Buy, -1 — Sell, 0 — нет сигнала,
- ExtSignalClose — сигнал на закрытие позиции. 2 — long, -2 — short, 0 — нет сигнала,
- ExtPatternInfo — текстовое описание текущего найденного паттерна,
- ExtDirection — направление открываемой позиции. Текстовое описание,
- ExtPatternDetected — флаг найденного паттерна (true/false),
- ExtConfirmed — флаг подтверждённого индикатором сигнала паттерна (true/false),
- ExtCloseByTime — флаг того, что требуется закрытие по времени удержания позиции (true/false),
- ExtCheckPassed — флаг успешности получения данных (true/false).
Логика советника последовательна и состоит из блока инициализации флагов в обработчике OnInit() и четыре этапа работы в обработчике OnTick().
- Этап 1 — проверка появления нового бара и обновление окружения и состояния флагов,
- Этап 2 — открытие позиции,
- Этап 3 — закрытие позиции,
- Этап 4 — закрытие позиции по истечении её времени удержания.
Рассмотрим логику работы советника.
Блок-схема логики работы советника
В блок-схеме отображены четыре этапа работы советника:
Этап 1:
- Проверяем появление нового бара.
Если новый бар — проверяем текущее состояние: - Проверяем свечные формации на наличие паттерна.
- Если паттерн найден — проверяем подтверждение сигнала паттерна по индикатору.
- Если сигнал паттерна подтверждён — распечатываем информацию о найденном паттерне в журнале и устанавливаем флаги открытия позиции.
Этап 2:
- Если есть сигнал на открытие позиции и такой позиции не существует — распечатываем в журнале сообщение о сигнале на открытие позиции и открываем позицию.
- Если позиция открыта — сбрасываем флаг открытия позиции.
Этап 3:
- Если есть сигнал на закрытие позиции и такая позиция существует — распечатываем в журнале сообщение о сигнале на закрытие позиции и закрываем позицию.
- Если позиции нет — сбрасываем флаг закрытия позиции.
Этап 4:
- Если есть сигнал на закрытие позиции по истечению времени её удержания и такая позиция существует — закрываем позицию с истёкшим временем удержания.
- Если позиции нет — сбрасываем флаг закрытия позиции по истечению времени её удержания.
Список функций
Рассмотрим список функций советника и их краткое описание:
CheckState() — проверка состояние окружения:
- Если паттерн не найден — возвращает false.
- Если получена ошибка при подтверждении паттерна индикатором — возвращает false.
- Если паттерн не подтверждён сигналом индикатора — сбрасывается флаг открытия позиции.
- Если задано закрытие по истечению времени удержания позиции — устанавливается соответствующий флаг.
PositionOpen() — открытие позиции:
- Обновляются данные торгового окружения.
- В зависимости от сигнала и, соответственно, типа позиции, корректируются цены установки StopLoss и TakeProfit на допустимые значения относительно цены открытия и ограничений сервера.
- Открывается позиция.
- Если позиция не открыта — сообщается в журнале об ошибке и возвращается false.
- При успешном открытии возвращается true.
CloseBySignal() — закрытие позиции по сигналу:
- Если нет сигнала на закрытие — возврат из функции.
- Определяется тип закрываемой позиции по направлению сигнала.
- Закрываются все позиции, открытые советником, с типом, определённым по направлению сигнала.
CloseByTime() — закрытие позиций с истёкшим временем удержания:
- Если нет позиций, открытых советником — возврат из функции.
- Закрываются все позиции, открытые советником, время удержания которых истекло.
PositionExist() — возвращает флаг существования позиции по направлению сигнала:
- Определяется тип позиции, соответствующий направлению сигнала.
- Возвращается флаг существования позиции, открытой экспертом с типом, определённым по направлению сигнала.
PositionExpiredByTimeExist() — возвращает флаг существования позиции с истёкшим временем удержания:
- Определяется количество баров жизни позиции.
- Возвращается флаг существования позиции, если её время удержания больше заданного в настройках количества баров.
BarsHold() — возвращает количество баров удержания позиции:
- Определяется и возвращается количество баров между временем открытия позиции и текущим временем сервера.
Open(), Close(), Low(), High() — возвращают соответствующую цену бара по индексу:
- Запрашиваются соответствующие цены с указанного бара.
- Если цены не получены, устанавливается флаг ошибки.
- Возвращаются полученные цены.
MidPoint(), MidOpenClose(), AvgBody() — возвращают расчётные средние цены.
CheckPattern() — проверка существования паттерна:
- Выполняется алгоритм поиска паттерна в Short-направлении.
- Если паттерн найден — устанавливается флаг найденного паттерна и возвращается true.
- Выполняется алгоритм поиска паттерна в Long-направлении.
- Если паттерн найден — устанавливается флаг найденного паттерна и возвращается true.
- Если паттерны не найдены — возвращается флаг ошибки, который может быть установлен в значение false в функциях получения цен.
CheckConfirmation() — проверяет и устанавливает флаг подтверждения сигнала паттерна сигналом от индикатора.
CheckCloseSignal() — проверяет условия для сигнала к закрытию позиций по значениям индикатора, при наличии сигнала устанавливает флаг закрытия позиции.
Заключение
Все 28 советников, предлагаемые к рассмотрению в папке Experts\Free Robots, работают по одной и той же логике. Разница в них лишь в алгоритмах поиска свечных паттернов и в получении данных от четырёх индикаторов для подтверждения сигналов паттернов. Соответственно, любой из этих советников можно использовать как шаблон для создания на его основе других советников, работающих по другим свечным формациям, и получающим подтверждения паттернов от иных индикаторов. Всё, что для этого нужно сделать, это поменять логику поиска паттернов в Long- и Short-направлении в функции CheckPattern(), вызываемой из функции CheckState(), обращение к которой происходит на первом шаге работы советника:
//+------------------------------------------------------------------+ //| Returns true in case of successful pattern check | //+------------------------------------------------------------------+ bool CheckPattern() { ExtPatternDetected=false; //--- check if there is a pattern ExtSignalOpen=SIGNAL_NOT; ExtPatternInfo="\r\nPattern not detected"; ExtDirection=""; //--- check 3 Black Crows if((Open(3)-Close(3)>AvgBody(1)) && // long black (Open(2)-Close(2)>AvgBody(1)) && (Open(1)-Close(1)>AvgBody(1)) && (MidPoint(2)<MidPoint(3)) && // lower midpoints (MidPoint(1)<MidPoint(2))) { ExtPatternDetected=true; ExtSignalOpen=SIGNAL_SELL; ExtPatternInfo="\r\n3 Black Crows detected"; ExtDirection="Sell"; return(true); } //--- check 3 White Soldiers if((Close(3)-Open(3)>AvgBody(1)) && // long white (Close(2)-Open(2)>AvgBody(1)) && (Close(1)-Open(1)>AvgBody(1)) && (MidPoint(2)>MidPoint(3)) && // higher midpoints (MidPoint(1)>MidPoint(2))) { ExtPatternDetected=true; ExtSignalOpen=SIGNAL_BUY; ExtPatternInfo="\r\n3 White Soldiers detected"; ExtDirection="Buy"; return(true); } //--- result of checking return(ExtCheckPassed); }
Для замены подтверждающего индикатора необходимо во входных параметрах вписать требуемые свойства индикатора вместо указанных, например, для CCI:
//--- Input parameters input int InpAverBodyPeriod=12; // period for calculating average candlestick size input int InpPeriodCCI =37; // CCI period input ENUM_APPLIED_PRICE InpPrice=PRICE_CLOSE; // price type
В обработчике OnInit() заменить блок создания, например, CCI на создание другого индикатора:
//+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { Print("InpSL=", InpSL); Print("InpTP=", InpTP); //--- set parameters for trading operations ExtTrade.SetDeviationInPoints(InpSlippage); // slippage ExtTrade.SetExpertMagicNumber(InpMagicNumber); // Expert Advisor ID ExtTrade.LogLevel(LOG_LEVEL_ERRORS); // logging level ExtAvgBodyPeriod=InpAverBodyPeriod; //--- indicator initialization ExtIndicatorHandle=iCCI(_Symbol, _Period, InpPeriodCCI, InpPrice); if(ExtIndicatorHandle==INVALID_HANDLE) { Print("Error creating CCI indicator"); return(INIT_FAILED); } //--- OK return(INIT_SUCCEEDED); }
И далее в советнике в функции подтверждения сигналов паттернов CheckConfirmation() и в функции закрытия позиций по сигналам индикатора CheckCloseSignal() использовать данные нового индикатора с требуемыми значениями для подтверждения Long- и Short-направлений паттернов:
//+------------------------------------------------------------------+ //| Returns true in case of successful confirmation check | //+------------------------------------------------------------------+ bool CheckConfirmation() { ExtConfirmed=false; //--- if there is no pattern, do not search for confirmation if(!ExtPatternDetected) return(true); //--- get the value of the stochastic indicator to confirm the signal double signal=CCI(1); if(signal==EMPTY_VALUE) { //--- failed to get indicator value, check failed return(false); } //--- check the Buy signal if(ExtSignalOpen==SIGNAL_BUY && (signal<-50)) { ExtConfirmed=true; ExtPatternInfo+="\r\n Confirmed: CCI<-50"; } //--- check the Sell signal if(ExtSignalOpen==SIGNAL_SELL && (signal>50)) { ExtConfirmed=true; ExtPatternInfo+="\r\n Confirmed: CCI>50"; } //--- successful completion of the check return(true); }
//+------------------------------------------------------------------+ //| Check if there is a signal to close | //+------------------------------------------------------------------+ bool CheckCloseSignal() { ExtSignalClose=false; //--- if there is a signal to enter the market, do not check the signal to close if(ExtSignalOpen!=SIGNAL_NOT) return(true); //--- check if there is a signal to close a long position if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80))) { //--- there is a signal to close a long position ExtSignalClose=CLOSE_LONG; ExtDirection="Long"; } //--- check if there is a signal to close a short position if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)>80) && (CCI(2)<80))) { //--- there is a signal to close a short position ExtSignalClose=CLOSE_SHORT; ExtDirection="Short"; } //--- successful completion of the check return(true); }
Таким образом видим, что данные советники представляют неплохой шаблон для создания и тестирования собственных алгоритмов для проверки различных свечных формаций с подтверждением от практически любого подходящего индикатора.
![Разработка системы репликации (Часть 44): Проект Chart Trade (III)](https://c.mql5.com/2/73/Desenvolvendo_um_sistema_de_Replay_Parte_44___LOGO.png)
![Нейросети в трейдинге: Модели пространства состояний](https://c.mql5.com/2/88/logo-neuronetworks_in_trading_15546_388_3728.png)
![Алгоритм миграции животных — Animal Migration Optimization (AMO)](https://c.mql5.com/2/88/logo-midjourney_image_15543_389_3742__1.png)
![Как опередить любой рынок?](https://c.mql5.com/2/74/Gain_An_Edge_Over_Any_Market___LOGO.png)
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Попробуйте сравнить коды поиска паттернов и описания этих формаций
Сравнил, поэтому и возник вопрос:
Сравнил, поэтому и возник вопрос:
Я не делал эти коды. Поэтому и написал: Если заметите несоответствие - просто добавьте в своём коде.
Я так понимаю, что это часть обновления MT5. У себя добавлю - при очередном обновлении терминала затрется.
Я так понимаю, что это часть обновления MT5. У себя добавлю - при очередном обновлении терминала затрется.
Что мешает скопировать советник в отдельную свою папку и там менять всё, как нужно?
Они же учебные, просто примеры.
Они же учебные, просто примеры.
На ошибках учимся .. делать ошибки ;)