
Разработка торговой системы на основе индикатора RSI
Введение
Думаю, все, кто как-то связан с миром трейдинга, хоть раз да слышали фразу "Тренд — твой друг" (Trend is your friend). Она означает, что нужно торговать по тренду и не нужно торговать против тренда. Все же иногда можно торговать против тренда, например, во время коррекций. Если не знаете, что такое коррекции, не переживайте — мы поговорим о них и о тренде в следующих строках. Но нужно понимать, что даже если торговать против тренда, необходимо соблюдать осторожность и строго управлять рисками, поскольку такие сделки будут более рискованными.
Здесь мы поговорим о трендах, которые могут существовать на рынках. Мы уже говорили о них в разных статьях, и вот почему я так часто об этом говорю:
- Важно определить движение рынка, так как в соответствии с ним мы будем принимать наши решения.
- Повторение помогает углубить понимание и разобраться в разных сторонах вопроса, особенно если рассматривать его в разных контекстах.
- Возможно, вы впервые читаете мою статью. Поэтому я хотел бы дать полное представление о предмете этой конкретной статьи.
Необходимо определить направление рынка (направление тренда). Прежде чем научиться это делать, надо разобраться, что это означает.
Если посмотреть на рынок, можно увидеть, что на рынке может быть три различных направления в зависимости от ценового действия: восходящий тренд, нисходящий тренд и боковой тренд. Каждый вид рыночного тренда характеризуется контролирующей деятельностью определенных участников рынка.
- Восходящий тренд:
Во время такого тренда большую часть времени рынок контролируют покупатели, что и приводит к росту цен. На таком рынке цена движется вверх, образуя более высокие минимумы и более высокие максимумы.
- Нисходящий тренд:
Во время такого тренда большую часть времени рынок контролируют продавцы, что и приводит к снижению цен. На таком рынке цена движется вниз, образуя более низкие минимумы и более низкие максимумы.
- Боковое движение:
Боковое движение обозначает баланс между покупателями и продавцами, никто из них явно не превалирует. Это любое движение, которое нельзя отнести ни к восходящему, ни к нисходящему тренду. Ниже приведены некоторые примеры таких боковых движений.
После определения тренда, нужно узнать сильный это тренд или слабый. Определить это можно с помощью импульса (моментума). Импульс — это концепция для измерения скорости движения рынка или тренда. Эта концепция импульса очень важна в торговле и анализе движения рынка. Есть много инструментов, основанных на этой концепции. В этой статье мы рассмотрим один из них — популярный и часто используемый индикатор Индекса относительной силы RSI. Научимся легко и эффективно использовать этот полезный инструмент, а также создадим торговую систему на основе стратегий RSI. Темы, которые мы рассмотрим в этой статье:
В этих разделах мы многое узнаем об этом полезном инструменте. Рассмотрим RSI и способы его расчета. Также познакомимся с идеями относительно концепции индикатора. Все это будет в разделе "Определение RSI". Затем рассмотрим стратегии по индикатору RSI, которые могут быть полезны в торговле. В части "Схема системы по стратегии RSI" мы изучим схемы стратегий RSI, чтобы подготовиться к дальнейшему написанию кода. Такая схема позволит визуально определить, что же должна делать программа. Наконец, мы увидим, как написать программу на основе RSI, которая поможет сделать торговле проще и эффективнее.
В этой и во всех других статьях мы используем торговую платформу MetaTrader 5 и встроенный в MetaTrader 5 редактор языка MetaQuotes Language Editor — весь программный код будет написан с использованием этого редактора.
Платформу MetaTrader 5 можно скачать по этой ссылке: https://www.metatrader5.com/ru/download
Дополнительную информацию можно найти в ранее опубликованной статье в этой серии: "Как и зачем разрабатывать собственную систему для алгоритмической торговли"
Примечание. Все содержание настоящей статьи предназначено только для целей обучения и не предназначена для других целей. Все, что вы применяете на практике на основе этой статьи, вы делаете исключительно на свой страх и риск, автор не гарантирует никаких результатов.
Теперь давайте приступим к изучению этой темы, еще одного блока знаний, который поможет нам стать лучше.
Определение RSI
RSI — индекс относительной силы — это индикатор, созданный Уэллсом Уайлдером. Основная цель индикатора — измерить текущую силу торгового инструмента в сравнении с его историей. Для этого индикатор сравнивает изменения цены в дни роста и дни падения.
Индикатор RSI — это импульс, он показывает скорость восходящего или нисходящего движения рынка. Это осциллятором, который ограничивается уровнями — его значения колеблются между уровнями 0 и 100. Это опережающий индикатор, поскольку он может опережать цены и показывать потенциальное движение до того, как оно происходит. RSI был разработан как решение двух основных проблем индикаторов импульса: способность поглощать внезапные или беспорядочные движения и возможность ограничить значения диапазоном от 0 до 100.
RSI показывает:
- Потенциальные движения, которые нельзя увидеть, анализируя только график.
- Четкие уровни поддержки и сопротивления.
- Сигналы расхождения, которые могут указывать на развороты — это расхождения между значением RSI и ценой.
- Колебания выше уровня 70 и ниже уровня 30, что может предупреждать о возможных разворотах.
Расчет и построение индикатора RSI состоит из следующих шагов:
- Находим положительные или восходящие движения из 14 закрытий
- Находим отрицательные или нисходящие движения из 14 закрытий
- Среднее (AVG) от 14 положительных движений = Сумма положительных движений / 14
- AVG от 14 отрицательных движений = Сумма отрицательных движений / 14
- RS = AVG от 14 положительных движений / Среднее от 14 отрицательных движений
- RSI = 100 - [100 /(1+RS)]
Рассмотрим пример расчета, чтобы лучше понять.
- Предположим, у нас есть такие закрытия за 14 дней:
День | Цена |
---|---|
1 | 100 |
2 | 105 |
3 | 120 |
4 | 110 |
5 | 100 |
6 | 115 |
7 | 120 |
8 | 130 |
9 | 125 |
10 | 135 |
11 | 140 |
12 | 130 |
13 | 140 |
14 | 145 |
Для таких данных расчет RSI будет следующим:
Сначала рассчитываем положительное движение и отрицательное движение, вычитая каждый день из предыдущего:День | Цена | Положительные значения | Отрицательные движения |
---|---|---|---|
1 | 100 | 0 | 0 |
2 | 105 | 5 | 0 |
3 | 120 | 15 | 0 |
4 | 110 | 0 | 10 |
5 | 100 | 0 | 10 |
6 | 115 | 15 | 0 |
7 | 120 | 5 | 0 |
8 | 130 | 10 | 0 |
9 | 125 | 0 | 5 |
10 | 135 | 10 | 0 |
11 | 140 | 5 | 0 |
12 | 130 | 0 | 10 |
13 | 140 | 10 | 0 |
14 | 145 | 5 | 0 |
- Сумма положительных движений = 80
- Сумма отрицательных движений = 35
- AVG от 14 положительных движений = Сумма положительных движений / 14
- AVG от 14 положительных движений = 80 / 14 = 5.7
- AVG от 14 отрицательных движений = Сумма отрицательных движений / 14
- AVG от 14 отрицательных движений = 35 / 14 = 2.5
- Затем считаем RS (относительную силу):
- RS = AVG от 14 положительных движений / AVG от 14 отрицательных движений
- RS = 5.7 / 2.5 = 2.29
- Далее считаем сам RSI:
- RSI = 100 - [100 / (1 + RS)]
- RSI = 100 - [100 / (1 + 2.29)] = 69.57
- Расчет следующего среднего движения:
- Следующее среднее положительное движение = [{(Предыдущее среднее положительное движение * 13) + Сегодняшнее положительное движение (если есть)}/14]
- Следующее среднее отрицательное движение = [{(Предыдущее среднее отрицательное движение * 13) + сегодняшнее отрицательное движение (если существует)}/14]
- Находим относительную силу RS:
- RS = Следующее среднее положительное движение / Следующее среднее отрицательное движение
- Находим RSI:
- RSI = 100 - [ 100 / (1+ RS)]
- Период RSI
- Тип цены, на основе которой будет рассчитываться индикатор
- Цвет линии RSI
- Стиль линии RSI
- Толщина линии RSI
- Уровень 0 — минимальное значения диапазона показателей индикатора.
- Уровень 100 — максимальное значения диапазона показателей индикатора.
- Уровень 30 — зона перепроданности.
- Уровень 70 — зона перекупленности.
- Значение RSI < 50 = Покупка
- Значение RSI > 70 = тейк-профит
- Значение RSI > 50 = короткая сделка
- Значение RSI < 30 = тейк-профит
- Во время бокового движения:
- Значение RSI < 30 = покупка
- Значение RSI > 50 = тейк-профит
- Значение RSI > 70 = короткая сделка
- Значение RSI < 50 = тейк-профит
- Стратегия RSI для восходящего тренда
- Стратегия RSI для нисходящего тренда
- Стратегия RSI для бокового тренда
Затем рассчитываем среднее значение за 14 дней для положительных и отрицательных движений:
В итоге имеем:
Это были шаги для расчета первого значения RSI. Ниже показано, как рассчитывается индикатор после первого расчета:
Это были шаги расчета индикатора RSI. Однако нам не нужно проводить все эти расчеты вручную — здесь эта информация приведена только для того, чтобы лучше понять суть RSI. Эта информация может дать более эффективное представление о том, как использовать индикатор для достижения лучших результатов в торговле. В платформе MetaTrader уже есть готовый к использованию встроенный индикатор RSI, поэтому не нужно его вычислять. Встроенный индикатор можно сразу запустить на графике и начать использовать. Ниже показано, как это сделать.
Выполните несколько шагов в торговом терминале MetaTrader 5:
Как только вы выберете Индекс относительной силы (RSI) из списка осцилляторов, появится следующее окно параметров индикатора:
Выбираем предпочтительные параметры и нажимаем OK. Индикатор RSI отобразится на графике:
Индикатор RSI отображается в отдельном окне под основным графиком. В этом окне показаны четыре ценовых уровня, которые обозначают следующее:
Есть еще один уровень, который по умолчанию не отображается — уровень середины диапазона, равен 50.
Стратегия RSI
В этой части посмотрим, как использовать индикатор RSI — индекс относительной силы. Для этого воспользуемся простой стратегией, которая будет отличаться в зависимости от направления рынка.
Увидим, как можно использовать RSI во время восходящего, нисходящего и бокового тренда. Конкретное использование напрямую связано с зоной перекупленности, средним диапазоном и зоной перепроданности. Сначала нужно понять, как ведет себя RSI во время разных типов тренда на рынке, поскольку очевидно, что поведение его отличается в зависимости от движения рынка. После этого можно определить простые стратегии для каждого из трендов. Главная цель — научиться использовать такую стратегию и находить новые идеи, которые могут быть полезны для торговли. В этой части мы увидим, как RSI реагирует на каждый тренд или тип движения. Однако обратите внимание, что стратегии представлены только в целях обучения, чтобы показать, как можно применять RSI для анализа рыночных данных. Обязательно всегда тестируйте каждую стратегию перед использованием в своей торговле — некоторые стратегии могут не подходить для вашего стиля торговли, особенно когда речь идет об образовательных стратегиях.
На таком рынке большую часть времени значения RSI движутся между серединой диапазона и уровнем 70 (уровень перекупленности).
Торговая стратегия при растущем тренде:
На таком рынке большую часть времени значения RSI движутся между серединой диапазона и уровнем 30 (уровень перепроданности).
Торговая стратегия будет такой:
RSI большую часть времени движется между уровнями 30 и 70.
Торговая стратегия будет такой:
Схема системы по стратегии RSI
В этой части мы рассмотрим, какие инструкции будем давать компьютеру при торговле по стратегии на основе RSI.
Мы уже рассмотрели 4 стратегии, которые можем реализовать в виде торговых систем: покупка при растущем тренде, короткая продажа при падающем, длинная и короткая сделка при боковом. Подробные схемы для каждой стратегии показаны ниже.
Думаю, тут все понятно. Теперь, когда мы подготовили схемы для каждой стратегии, которую хотим реализовать в торговой системе, можно переходить к написанию программы. Перейдем к следующей части этой статьи и напишем код торговой системы.
Торговая система по RSI
Теперь посмотрим, как написать код торговой системы на основе рассмотренных выше торговых стратегий RSI. Для начала открываем торговый терминал MetaTrader 5, затем IDE (MetaQuotes Language Editor) для написания кодов, нажав F4 или любым другим способом:
Or you can click on the IDE button on the MetaTrader 5 toolbar:
The following window will appear in the newly opened MetaEditor IDE:
Create a new file, in which you will write the code of the trading system:
Выберите первый вариант, чтобы создать новый файл советника. Дополнительную информацию можно найти в ранее опубликованной статье в этой серии: "Как и зачем разрабатывать собственную систему для алгоритмической торговли"
Ниже представлен код простого советника на основе RSI, который выводит значения RSI в виде комментариев на графике:
//+------------------------------------------------------------------+ //| Simple RSI System.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Тиковая функция эксперта | //+------------------------------------------------------------------+ void OnTick() { //Создаем массив цен double RSIArray[]; //Идентификация свойств RSI int RSIDef = iRSI(_Symbol, _Period, 14, PRICE_CLOSE); //Сортировка массива цен ArraySetAsSeries(RSIArray,true); //Идентификация советника CopyBuffer(RSIDef,0,0,1,RSIArray); //Расчет советника double RSIValue = NormalizeDouble(RSIArray[0],2); //комментарий со значением RSI на графике Comment("RSI Value is ",RSIValue); } //+------------------------------------------------------------------+
Теперь запустим созданную программу:
Запускаем двойным кликом на файле и перетаскиваем на график, после чего появится следующее окно:
Нажимаем Ok, и программа запустится на графике:
- Стратегия RSI для восходящего тренда
Вот как выглядит код:
//+------------------------------------------------------------------+ //| RSI - Uptrend Strategy.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Тиковая функция эксперта | //+------------------------------------------------------------------+ void OnTick() { //Создаем массив цен double RSIArray[]; //Идентификация свойств RSI int RSIDef = iRSI(_Symbol, _Period, 14, PRICE_CLOSE); //Сортировка массива цен ArraySetAsSeries(RSIArray,true); //Идентификация советника CopyBuffer(RSIDef,0,0,1,RSIArray); //Расчет советника double RSIValue = NormalizeDouble(RSIArray[0],2); //Генерация сигнала на основе значения RSI if(RSIValue<50) Comment ("Uptrend - BUY"); if(RSIValue>70) Comment ("Uptrend - TAKE PROFIT"); } //+------------------------------------------------------------------+
Запускаем на графике из окна Навигатора, как показано ниже. Убедитесь, что нет ошибок или предупреждений:
Исполняем код перетащив файл на график или кликнув на нем дважды, нажимаем OK в окне программы, и она запустится на графике:
Генерирует такие сигналы:
- Сигнал на покупку:
- Сигнал тейк-профита:
- Стратегия RSI для нисходящего тренда
Код:
//+------------------------------------------------------------------+ //| RSI - Downtrend Strategy.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Тиковая функция эксперта | //+------------------------------------------------------------------+ void OnTick() { //Создаем массив цен double RSIArray[]; //Идентификация свойств RSI int RSIDef = iRSI(_Symbol, _Period, 14, PRICE_CLOSE); //Сортировка массива цен ArraySetAsSeries(RSIArray,true); //Идентификация советника CopyBuffer(RSIDef,0,0,1,RSIArray); //Расчет советника double RSIValue = NormalizeDouble(RSIArray[0],2); //Генерация сигнала на основе значения RSI if(RSIValue>50) Comment ("Downtrend - SHORT"); if(RSIValue<30) Comment ("Downtrend - TAKE PROFIT"); } //+------------------------------------------------------------------+
Запускаем на графике из окна Навигатора, как показано ниже. Убедитесь, что нет ошибок или предупреждений:
Исполняем код перетащив файл на график или кликнув на нем дважды, нажимаем OK в окне программы, и она запустится на графике:
Работающая программа будет генерировать сигналы:
- Короткий сигнал:
- Сигнал тейк-профита:
- Стратегия RSI для бокового тренда
А ниже код этой стратегии. Я разделю стратегию на два отдельных кода для лучшего понимания: одна программа будет для сигнала на покупку и тейк-профит, а другая — для сигнала на продажу и тейк-профит, и обе они будут работать во время бокового движения:
- Сигнал на покупку
//+------------------------------------------------------------------+ //| RSI - Sideways Strategy - Buy.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Тиковая функция эксперта | //+------------------------------------------------------------------+ void OnTick() { //Создаем массив цен double RSIArray[]; //Идентификация свойств RSI int RSIDef = iRSI(_Symbol, _Period, 14, PRICE_CLOSE); //Сортировка массива цен ArraySetAsSeries(RSIArray,true); //Идентификация советника CopyBuffer(RSIDef,0,0,1,RSIArray); //Расчет советника double RSIValue = NormalizeDouble(RSIArray[0],2); //Генерация сигнала на основе значения RSI if(RSIValue<30) Comment ("Sideways - BUY"); if(RSIValue>50) Comment ("Sideways - TAKE PROFIT"); } //+------------------------------------------------------------------+
Запускаем на графике из окна Навигатора, как показано ниже. Убедитесь, что нет ошибок или предупреждений:
Исполняем код перетащив файл на график или кликнув на нем дважды, нажимаем OK в окне программы, и она запустится на графике:
Работающая программа будет генерировать сигналы как показано ниже:
- Сигнал на покупку:
- Сигнал тейк-профита:
- Короткий сигнал
//+------------------------------------------------------------------+ //| RSI - Sideways Strategy - Short.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Тиковая функция эксперта | //+------------------------------------------------------------------+ void OnTick() { //Создаем массив цен double RSIArray[]; //Идентификация свойств RSI int RSIDef = iRSI(_Symbol, _Period, 14, PRICE_CLOSE); //Сортировка массива цен ArraySetAsSeries(RSIArray,true); //Идентификация советника CopyBuffer(RSIDef,0,0,1,RSIArray); //Расчет советника double RSIValue = NormalizeDouble(RSIArray[0],2); //Генерация сигнала на основе значения RSI if(RSIValue>70) Comment ("Sideways - SHORT"); if(RSIValue<50) Comment ("Sideways - TAKE PROFIT"); } //+------------------------------------------------------------------+
Запускаем на графике из окна Навигатора, как показано ниже. Убедитесь, что нет ошибок или предупреждений:
Исполняем код перетащив файл на график или кликнув на нем дважды, нажимаем OK в окне программы, и она запустится на графике:
Работающая программа будет генерировать сигналы:
- Короткий сигнал:
- Сигнал тейк-профита:
Пожалуй, это все о том, как создавать и использовать простые стратегии на основе индекса относительной силы RSI, одного из самых популярных индикаторов в трейдинге. Мы узнали, как использовать этот индикатор для различных рыночных трендов.
Еще раз подчеркну, что статья предназначена только для образовательных целей — она рассказывает об очередном полезном инструменте технического анализа. Если же вы собираетесь использовать что-либо из этой статьи для собственной торговли, обязательно протестируйте перед использованием: то, что может быть полезно для кого-то, может оказаться бесполезным для вас, вашей торговой стратегии или плана.
Заключение
В этой статье я попытался рассказать об одном из самых мощных инструментов в торговле и техническом анализе — RSI. Мы узнали, что он связан с концепцией импульса, которая является одной из самых важных концепций в рыночных движениях и трейдинге. Я попытался объяснить построение RSI и детали расчета только для того, чтобы стало понятнее как можно использовать этот индикатор.
Кроме того, статья содержит простую стратегией, которую можно использовать в торговле, а также ее варианты для различных рыночных движений и тенденций. Итак, теперь вы знаете, как использовать его во время восходящего, нисходящего и бокового тренда. Есть много разных стратегий, которые можно эффективно использовать и которые могут оказаться полезными в торговле. Поэтому рекомендую продолжать читать об RSI и других индикаторах.
Мы также научились писать код торговой системы на основе этих стратегий. MQL5 и программирование в целом помогают эффективно, точно и легко использовать различные полезные торговые и аналитические инструменты, делая нашу жизнь проще.
Рекомендую читателям самим пробовать написать код и применять на практике то, что узнали из этой статьи. Такая практика может улучшить понимание и осознание того, что вы узнали, и может дать хорошую базу для новых идей. Надеюсь, статья будет для вас полезной и поможет вам в достижении торговых целей.
Перевод с английского произведен MetaQuotes Ltd.
Оригинальная статья: https://www.mql5.com/en/articles/10528





- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Честно, я не понимаю, для кого такие статьи. Если это идея для сообщества алготрейдеров, то надо прикреплять ее бэктесты хотя бы на чем-то хотя бы за какие-то периоды. Иначе ее нет смысла даже рассматривать, как и море других идей, которые не работают. Если это обучение новичков созданию роботов, то такие статей уже великое множество.
Поддерживаю. Бессмысленная трата денег администрацией MQL5. Кто вообще эти статьи читает?
I support. Pointless waste of money by the MQL5 administration. Who even reads these articles?
Thanks for your comments. these articles are going to share technical indicators and simple strategies based on their basic concept for educational purposes only to open up new ideas and profitable strategies for us after understanding the basics and that is their main purpose. Therefore, testing is not necessary as I only share the basic concepts and I confirm that in every article everyone should test any strategy before using it, and when I share topics about my profitable strategies, I will definitely share their testing so that share his results . and how profitable they are.
I also have to say that these articles may not be helpful to you, but from the comments I've received, they are very helpful to many other readers. It is normal that we cannot create something suitable for all people, so I encourage you to keep looking for what will be useful for you, and I want you to share your topics with us in order to learn from them.
thank you.
Поддерживаю. Бессмысленная трата денег администрацией MQL5. Кто вообще эти статьи читает?