Scientific journal
Modern high technologies
ISSN 1812-7320
"Перечень" ВАК
ИФ РИНЦ = 0,940

OPTIMIZATION AND TESTING OF AN ADVISOR IN THE CLIENT TERMINAL METATRADER 5

Kondrateva T.N. 1 Triputa I.G. 1 Prudnikov S.Е. 1
1 Don State Technical University
4093 KB
The subject of the research is the parameters of the automatic trading system in the client terminal MetaTrader 5. The USD / EUR currency pair quotes were taken for testing in the period from 09/20/2018 to 10/20/2018 with timeframes in 1M, 5M, 15M, 30M, 1H. For 1D and 1W timeframes, the adviser was tested for a longer period of time – from 07/04/2018 to 07.10.2018. Testing took place dozens of times at each time interval in order to find the most optimal parameters on a part of the graph during the testing period. Also presented is an analysis of the dependence of the number of transactions on the days of the week, months and time of day. Forecasting on the «yesterday’s» behavior of market participants in combination with an automated trading system allows the trader to minimize risks when trading on the stock market. The goal of the article is to test and optimize the key parameters of the indicators of the automatic trading system on the multi-market platform Metatrader 5, written in the specialized high-level object-oriented programming language MetaQuotes Language. To achieve this goal, features of interaction between the Stochastic Oscillator and Bollinger Bands indicators were considered, rules were developed whereby signals to open a trade from one indicator are confirmed or, on the contrary, refuted by others. The results obtained in the process of testing a trading advisor online allow us to draw conclusions about the possibility of using an automated trading system for trading in financial markets. The study found the optimal parameters for different time intervals, as well as the corresponding amount of profit (in USD).
technical analysis
forecasting
programming
graph
trend
indicator
automatic trading system
transaction

Проблема анализа фондового рынка является одной из наиболее приоритетных для большинства исследователей и его участников. При этом сегодня выделяются четыре основных метода (рис. 1).

kobd1.tif

Рис. 1. Методы анализа фондового рынка (разработано авторами)

kobd2.tif

Рис. 2. Основные подходы к созданию торгового советника (разработано авторами)

Технический анализ – это анализ изменения рыночных цен по графикам, с целью прогнозирования вероятного направления движения цены в будущем. В его основе три источника информации: цена, объем и время. Он отличается от фундаментального анализа тем, что не рассматривает причины изменения цены. В настоящее время распространена практика использования фундаментального анализа для выбора объектов инвестирования, а технического – для выбора времени для проведения торговых операций с этими объектами [1].

При использовании инструментов технического анализа трейдер руководствуется графическим изображением, при этом он может быть абсолютно не знаком с деятельностью компании, ценными бумагами которой он торгует. Также существует ряд инструментов, облегчающих процесс торговли, в основе которых заложены постулаты теханализа [2, 3]. Чтобы полностью автоматизировать процесс совершения сделок и управления портфелем, полностью исключить эмоции из процесса торговли и, как следствие, минимизировать риски потери средств, следует переложить рутинную работу на автоматические торговые системы – советники [4, 5].

Цель исследования: создание и тестирование в режиме реального времени на исторических данных для валютной пары EUR/USD автоматической торговой системы (АТС) на платформе MetaTrader 5, руководствуясь методами технического анализа.

Материалы и методы исследования

Выделяют ряд основных подходов к созданию торгового советника (рис. 2), каждый из которых требует от трейдера определенных знаний и умений.

Например, создание «черного ящика» требует понимания работы нейронной сети и навыков работы со специализированным программным обеспечением. Программирование АТС произведено в специальном разделе торгового терминала MetaTrader5 – MetaEditor, с использованием преимуществ 1, 2 и 4 подходов [6, 7].

Торговый робот работает на основе двух индикаторов – Stochastic Oscillator и Bollinger Bands. Bollinger Bands (полосы Боллинджера) – это основной индикатор, представляющий из себя две линии, ограничивающие динамику цены сверху и снизу. Цена, достигая одной из этих линий, подаёт сигнал на открытие сделки. Если цена подходит к верхней линии, то подаётся сигнал на продажу, если к нижней, то на покупку (рис. 3).

kobd3.tif

Рис. 3. Полосы Боллинджера (разработано авторами)

kobd4.tif

Рис. 4. Подтверждения сигнала (разработано авторами)

Индикатор Bollinger Bands подаёт сигналы на открытие сделки, которые подтверждаются или, наоборот опровергаются индикатором Stochastic Oscillator [8, 9].

Осциллятор стохастик состоит из двух линий: SOH – быстрой, ( %К), и SOL – медленной ( %D). Осциллятор стохастик показывает положение каждой цены закрытия в предыдущем интервале максимальных и минимальных цен. Если при сигнале на покупку линия %K находилась ниже уровня 20, а затем поднялась выше, то такой сигнал можно считать подтверждённым, иначе – нет. При сигнале на продажу для подтверждения сигнала линия %K должна находиться выше уровня 80, затем опуститься ниже (рис. 4).

Советник тестировался в течение месяца на графике USD/EUR в промежутке с 20.09.2018 по 20.10.2018 при таймфреймах в 1М, 5M, 15M, 30M, 1H. Для таймфреймов 1D и 1W советник тестировался на более длительном промежутке времени – 6 месяцев, с 07.04.2018 по 07.10.2018. Тестирование проходило несколько десятков раз на каждом таймфрейме с целью нахождения наиболее оптимальных параметров на участке графика в период тестирования.

В качестве изменяемых параметров были взяты: InpLots (размер лота, количество акций/валюты купленных или проданных за одно действие/одну сделку); InpSL (коэффициент при вычислении StopLoss, определяет линию StopLoss); InpTakeProfit, InpDeviations.

Пересекая линию StopLoss, сделка закрывается с убытком, зависящим от разницы между текущей ценой (на момент открытия сделки) и линией StopLoss при продаже и разницы между линией StopLoss и цены открытия сделки при покупке. Чем меньше значение этого параметра, тем быстрее закроется сделка, при движении цен в убыток сделке соответственно чем больше значение, тем медленнее. Небольшой коэффициент StopLoss ведёт к быстрому завершению сделки в случае, если цена пошла против наших ожиданий, что, с одной стороны, может уменьшить убыток от неприбыльной сделки, что в результате увеличит нашу прибыль. Но с другой, линия StopLoss «недалеко» от текущей цены не даёт шанса рынку изменить тренд. Дойдя до линии StopLoss цена может пойти в обратную сторону – нужную нам (к линии TakeProfit) и потенциально принести прибыль.

На графике (рис. 5) видно, что если поднять линию TakeProfit сделки № 1 выше, цена не достала бы до этой линии и изменила бы направление, что привело бы к закрытию сделки по линии Stoploss, то есть с убытком. Сделка № 2 закрылась по линии StopLoss. Опустив эту линию ниже, убытки были бы больше, ведь цена не изменила своего направления. Цель тестирования – найти такой параметр InpSL, при котором неприбыльные сделки закрывались максимально быстро, но при этом не закрывались потенциально прибыльные сделки.

kobd5.tif

Рис. 5. График сделок (разработано авторами)

kobd6.tif

Рис. 6. Линия TakeProfit (разработано авторами)

kobd7a.tif kobd7b.tif

InpDeviations = 2.60 InpDeviations = 5.60

Рис. 7. График с параметром InpDeviations (разработано авторами)

kobd8.tif

Рис. 8. Расположение линий StopLoss, TakeProfit, полос Боллинджера

InpTakeProfit – коэффициент при вычислении TakeProfit, определяет линию TakeProfit. Пересекая линию TakeProfit, сделка закрывается с прибылью. Чем больше этот коэффициент, тем дальше от цены открытия будет находиться линия TakeProfit. Разница между ценой открытия сделки и линией TakeProfit при продаже и разница между линией TakeProfit и ценой открытия определяют нашу прибыль. Чем больше разница, тем прибыльней сделка. Установив слишком близко к цене открытия линию TakeProfit, мы увеличиваем число прибыльных сделок, но уменьшаем прибыль от каждой из них, соответственно, увеличивая расстояние от цены открытия до линии TakeProfit, мы уменьшаем количество сделок, но повышаем прибыль с каждой из них. При слишком высоком уровне TakeProfit цена может не дойти до него, изменив направление своего движения к уровню StopLoss.

На графике (рис. 6) наглядно видно, что из себя представляют линии TakeProfit. Первая линия с параметром InpTakeProfit = 71. Вторая линия с параметром InpTakeProfit = 105. Цель тестирования – найти такой параметр InpSL, при котором AV*C было максимальным, где AV – средняя прибыль сделок, C – количество сделок.

InpDeviations – параметр, регулирующий расстояние между полосами Боллинджера. Чем больше расстояние между ними, тем сложнее цене будет пробить эти полосы, соответственно, тем меньше сигналов на открытие сделки будет поступать. Но при этом сигналы на открытие будут более достоверными. Меньшее расстояние между ними увеличивает число сигналов на открытие позиции, но такие сигналы можно считать менее достоверными. Увеличивая расстояние между полосами Боллинджера, уменьшается число как прибыльных, так и убыточных сделок.

На рис. 7 представлены графики с параметром InpDeviations = 2.60 (небольшое расстояние между линиями Боллинджера) и с параметром InpDeviations = 5.60 (достаточно большое расстояние от линии цен до полос Боллинджера).

Цель исследования – найти наиболее оптимальный параметр InpDeviations, при котором отсеивалось бы большое количество убыточных сделок, сохранив при этом большое количество прибыльных сделок.

Расположение линий StopLoss, TakeProfit, Полос Боллинджера на графике отражено на рис. 8 (разработано авторами).

Результаты исследования и их обсуждения

В ходе исследования были найдены оптимальные параметры для различных временных интервалов, а также соответствующий им размер прибыли (USD). Результаты представлены в таблице.

Оптимальные параметры работы системы

 

1M

5M

15M

30M

1H

1D

1W

InpLots

0,3

0,3

0,3

0,3

0,3

0,3

0,3

InpSL

39

17

17

16

9

22

22

InpTakeProfit

80

72

127

143

172

88

122

InpDeviations

5,10

4,60

6,30

13,65

4,65

2,65

2,22

Прибыль

130

14

–10

24

18

–80

–30

Исследования показали, что наиболее эффективная торговля происходит на таймфрейме = 1М, так как советник обрабатывает не цену открытия или закрытия бара, а каждый тик (движение графика с интервалом = 1 секунда).

Для анализа зависимости количества сделок от дней недели, месяцев и времени суток исследование проводилось на графике в течение 12 месяцев с 07.10.2017 по 07.10.2018 на графике EURUSD на таймфрейме 1М. На рис. 9 (разработано авторами) представлена диаграмма зависимости количества сделок от дней недели.

kobd9a.tif

Входы по дням недели

kobd9b.tif

Прибыли и убытки по дням недели

Рис. 9. Диаграмма зависимости количества сделок от дней недели

kobd10a.tif

Прибыли и убытки по месяцам

kobd10b.tif

Входы по месяцам

Рис. 10. Диаграмма по месяцам (разработано авторами)

kobd11a.tif

Входы по часам (Азия, Европа, США)

kobd11b.tif

Прибыли и убытки по часам

Рис. 11. Диаграмма частоты сделок в течение дня (разработано авторами)

По диаграмме видно, что зависимости количества сделок от дней недели нет. Так же как и прибыльных и убыточных сделок от дня недели.

На диаграмме месяцев, так же как и на диаграмме дней недели, чёткой зависимости нет (рис. 11). Самый прибыльный месяц – февраль, самый убыточный месяц – апрель.

На диаграмме частоты сделок в течение дня (рис. 11) дело обстоит совершенно иначе.

Явно выражены пики активности с 9–10 часов утра и 15–16, а также время спокойствия: 1–2 и 19–20.

Выводы

Было установлено, что учет свойств повторения ситуаций на рынке, возможность прогнозирования по «вчерашнему» поведению участников рынка в сочетании с автоматической торговой системой позволяет трейдеру минимизировать риски при торговле на фондовом рынке.

Стоит отметить, что были получены достоверные значения параметров АТС при тестировании советника в режиме онлайн, что позволит вести прибыльную торговлю для любых временных периодов. Но столь значительное упрощение работы не освобождает трейдера от разработки торговой стратегии, являющейся основой программирования советника.

Исследование поддержано РФФИ, научный проект № 17-01-00888 а.