Назад в библиотеку

Разработка механической торговой системы, основанной на торговой стратегии «Углы Ганна»

Авторы: Прокопович А.Г., Марковская Н.В.
Источник: А.Г. Прокопович, Н.В. Марковская // Стохастическое и компьютерное моделирование систем и процессов : сборник научных статей / Учреждение образования «Гродненский гос. ун-т им. Я.Купалы»; редкол.: Л.В. Рудикова, Ю.И. Воротницкий, А.М. Кадан, Е.В. Колузаева. – Гродно : ГрГУ, 2011. – С. 289-293

Аннотация

В статье рассмотрен метод «углов Ганна» и на его основе выполнено программирование торговой стратегии. Данная тема актуальна в связи с ростом деятельности частных лиц и компаний на фондовых и финансовых биржевых рынках.

Введение

Если сформулировать по возможности точное определение, то международный валютный рынок FOREX (Foreign Exchange Market) представляет собой совокупность операций по купле-продаже иностранной валюты, и предоставлению ссуд на конкретных условиях с выполнением на определенную дату. Основными участниками валютного рынка являются: коммерческие банки, валютные биржи, центральные банки, фирмы, инвестиционные фонды, брокерские компании; постоянно растет непосредственное участие в валютных операциях частных лиц. В данной работе проводится анализ метода Ганна, который позволяет нам оценивать рынок FOREX и производить операции на нём, рассмотрено построение алгоритма оценки рынка и систематизация действий на основе его анализа с помощью программных средств [1].

Главная часть

Объект исследования является финансовый рынок Форекс. Предмет – теория углов Ганна. Целью является разработка торговой стратегии и анализ графиков финансового рынка методом технического анализа углов Ганна [2].

Для прогнозирования цены нам необходимо выбрать правильную шкалу. Если известна верная шкала и базисная цена, то возможно предсказать не только будущую цену, но и то, когда рынок, вероятнее всего, будет торговаться по этой цене. Если известно, какую шкалу применять и известны данные о базисной цене и будущей дате, то возможно определить место, где угол будет находиться в течение данного периода времени.

Рассмотрим построение углов Ганна. Первый и самый важный восходящий угол, который нужно построить, – это угол 1x1, строящийся как одна единицы цены к одной единице времени. С геометрической стороны он проводится под углом в 45 градусов. Второй восходящий угол, который нужно построить, – это угол 2x1, состоящий из двух единиц цены к одной единице времени. Третий восходящий угол, который нужно построить, – это угол 1x2, состоящий из одной единицы цены к двум единицам времени. Аналогично строятся нисходящие углы [4].

Можно выделить основные правила, по которым применяются углы. Разработка торговой системы имеет в своей основе трехступенчатый процесс:

  1. Определите тип требуемой системы: она может следовать за трендом или же быть основанной на поддержке-сопротивлении.
  2. Механизм входа, базирующийся на одном из правил Ганна, обсуждается особенно часто: покупать или продавать, когда рынок достигает угла. Покупая каждый раз при достижении цены 45-градусной линии, контракт считается всегда сильным, если он держится над углом 1x1 от основания и слабым, если он чуть ниже линии 1x1 от вершины. Когда рынок слаб, лучшая возможность продажи появляется при его подъеме до линии 1x1, идущей вниз от двухдневной вершины, но не над ней; а лучшая покупка будет, когда рынок останавливается на 1x1 от основания.
  3. Правило всех углов: когда рынок прорывает угол, он будет двигаться к следующему углу. Дело в том, что со временем важность угла ослабевает, и рынок, в конечном итоге, прорывает его [1].

Разработка торговой стратегии ведётся в терминале MetaTrader 4. Торговый терминал MetaTrader 4 по достоинству оценили сотни тысяч трейдеров во всем мире. Сейчас трейдер может реализовать свои идеи в виде прикладной программы, самостоятельно написав пользовательский индикатор или скрипт для выполнения разовых операций или создать советник – автоматическую торговую систему (торговый робот). Составление прикладных программ для торгового терминала MetaTrader 4 требует знания языка MQL4.

Язык программирования MetaQuotes Language 4 – это уже язык четвертого поколения, который был также разработан компанией MetaQuotes Software Corp. на основании собственного многолетнего опыта. MQL4 – это первый язык программирования, учитывающий все тонкости при совершении торговых операций на финансовых рынках [3].

Созданная система называется «советник». Она позволяет анализировать график валютных пар, и делать прогнозы, на основе которых происходит покупка и продажа.

На основе изучения теории Ганна, была разработана программа советник “Gann zigzag”. Она основывается на теории углов Ганна и индикаторе ZigZag разработанном ранее. Этот индикатор был выбран из-за его высокой точности и, применённых в нём, методов анализа рынка, схожих с методом Ганна.

Суть индикатора ZigZag в прогнозирование ломаной линии, следующей вдоль графика цены и поиске максимумов и минимумов цены, основанном на сравнениях отношений цены к времени. Проанализировав, сделан вывод, что в эту ломаную линию можно вписать углы Ганна.

Сначала представим алгоритм анализа индикатора.

Проведём цикл по барам. Сначала программа записывает индекс текущего бара, его время и количество баров на графике. Потом проверяет, был ли на предыдущем баре отрисован экстремум. И, проверяет, был ли это максимум или минимум. Определяем, куда движется график: вверх или вниз, сравнивая текущий бар с предыдущим баром. На этом шаге производятся анализ на выполнение условий:

Сочетание этих условий дает информацию об изменении направления линий и, следовательно, об экстремумах графика.

Теперь покажем, какими основными изменениями программы был преобразован индикатор в механическую торговую систему. Первым шагом определяем количество свободных средств с помощью функции AccountFreeMargin, которая возвращает количество свободных средств на счёте.

if (AccountFreeMargin () < (1000*lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());
AlertC'We have no money. Free Margin = ", AccountFreeMargin());
}

Далее открываем ордер на покупку или продажу:

void pokypka() { // открываем СТОЛОВЫЙ ордер "КУПИТЬ"
GetLots(); // определяем размер лота для торговли
pAsk = Ask + DistSet*Point; if (SL!=0) ldStop=pAsk-SL*Point; if (SL==0) ldStop=Low[1]-7*Point; if (TP!=0) ldTake=pAsk+TP*Point;
ticket = OrderSend(Symbol(), OP_BUYSTOP, lots, pAsk, slip, IdStop, ldTake, NULL, Magic, 0, RoyalBlue);
if (GetLastError()>0) Alert("ошибка покупки = ", GetLastError());
void prodaza() { // открываем СТОЛОВЫЙ ордер "ПРОДАТЬ"
GetLots(); // определяем размер лота для торговли
pBid=Bid - DistSet*Point;
if (SL!=0) ldStop=pBid+SL*Point;
if (SL==0) ldStop=High[1]+7*Point;
if (TP!=0) ldTake=pBid-TP*Point;
ticket = OrderSend(Symbol(), OP_SELLSTOP, lots, pBid, slip, IdStop, ldTake, NULL, Magic, 0, DeepPink);
if (GetLastError()>0) Alert("ошибка продажи = ", GetLastError());

Следующим шагом задаем алгоритм, по которому будут производиться покупки и продажи. Это значит, проверяем данное значение цены по определенным условиям. Если условие выполняются, то осуществляем покупку или продажу. Приведем текст программы.

void TrailingOrders () {
double pb, pp;
pp=MarketInfo(OrderSymbol (), MODE_POINT);
if (OrderType()==OP_BUYSTOP)
{ pa=MarketInfo(OrderSymbol(), MODE_ASK);
Условия, используемые в индикаторе, для определения минимума. }
if (OrderType()==OP_SELLSTOP)
{ pb=MarketInfo(OrderSymbol(), MODE_BID);
Условия, используемые в индикаторе, для определения максимума. }
return; }

Рис. 1. Графическое представление алгоритма

Рис. 1. Графическое представление алгоритма

Такой код эксперта обеспечивает функционирование торгового робота в соответствии с разработанной стратегией. Остается лишь проверить его на исторических котировках.

Приведем пример работы «советника» на валютной паре EUR/USD на 4 часовом графике, временной интервал: 01.01.2007-01.03.2007.

Рис. 2. График кривой баланса, получаемый при тестировании советника EUR/USD на 4-часовом графике

Рис. 2. График кривой баланса, получаемый при тестировании советника EUR/USD на 4-часовом графике

Разработанный советник был протестирован на интервале 01.01.2007-01.04.2007, на минутном, 15 минутном, 30 минутном, 1 часовом, 4 часовом временных графиках. Из этого сделан вывод, что он эффективен на 4 часовом временном графике (Н4), а особенно эффективен для валютной пары EURUSD. На остальных графиках он торгует всегда с убытком. Только на 1-часовом графике торговля ведется с переменным успехом.

На валютной паре GBPUSD очень мало сделок - 12. Во-вторых, нестабильная кривая баланса, неожиданно меняющая свое направление, а главное – чистая прибыль мала.

На валютной паре EURUSD нельзя сказать, что показатели высокие, но на фоне остальных приемлемые. Чистая прибыль максимальная по сравнению с другими тестами и на графике сделок присутствует стабильность, то есть сделки совершаются с определенной стабильностью.

Описанный советник помогает пользователю, трейдеру финансового рынка, прогнозировать точки экстремума на графике цен, которые определяют когда надо совершать сделки. Стратегия, применённая в советнике, является стабильной, переживающей довольно большое количество различных рыночных ситуаций и учитывающая достаточное количество условий.

На сегодняшний момент, метод «Углы Ганна» очень широко применяются в анализе и прогнозирование рынка. В связи с этим практическое использование теории Ганна требует специальных знаний и углубленного изучения современного рынка.

Дальнейшее создание и разработка автоматических торговых систем, основанных на теории Ганна, приведет к более прибыльным результатам. Это подтверждает, уже разработанное программное обеспечение.

Список литературы

1. Forex на UNFX_ обучение, торговые сигналы, доверительное управление [Электронный ресурс]. – Режим доступа: http://unfx.ru/ – Дата доступа: 25.03.2009.
2. MQL 4.Codebase [Электронный ресурс]. – Режим доступа: http://codebase.mql4.com/ru/1238/ – Дата доступа: 14.08.2009.
3. http://www.MQ14BookRussian.com.
4. Теория Ганна – применение в системах торговли на бирже [Электронный ресурс]. – Режим доступа: http://www.gann.forekc.ru/ – Дата доступа: 25.07.2009.

Прокопович Александр Григорьевич, студент факультета математики и информатики Гродненского государственного университета имени Янки Купалы, cheIovechek2222@rambler.ru.

Марковская Наталья Вацлавовна, заместитель декана по научной работе факультета экономики и управления Гродненского государственного университета имени Янки Купалы, кандидат физико-математических наук, доцент, n.markovskaya@grsu.by.