Авторы: Прокопович А.Г., Марковская Н.В.
Источник: А.Г. Прокопович, Н.В. Марковская // Стохастическое и компьютерное моделирование систем и процессов : сборник научных статей / Учреждение образования «Гродненский гос. ун-т им. Я.Купалы»; редкол.: Л.В. Рудикова, Ю.И. Воротницкий, А.М. Кадан, Е.В. Колузаева. Гродно : ГрГУ, 2011. С. 289-293
В статье рассмотрен метод «углов Ганна» и на его основе выполнено программирование торговой стратегии. Данная тема актуальна в связи с ростом деятельности частных лиц и компаний на фондовых и финансовых биржевых рынках.
Если сформулировать по возможности точное определение, то международный валютный рынок FOREX (Foreign Exchange Market) представляет собой совокупность операций по купле-продаже иностранной валюты, и предоставлению ссуд на конкретных условиях с выполнением на определенную дату. Основными участниками валютного рынка являются: коммерческие банки, валютные биржи, центральные банки, фирмы, инвестиционные фонды, брокерские компании; постоянно растет непосредственное участие в валютных операциях частных лиц. В данной работе проводится анализ метода Ганна, который позволяет нам оценивать рынок FOREX и производить операции на нём, рассмотрено построение алгоритма оценки рынка и систематизация действий на основе его анализа с помощью программных средств [1].
Объект исследования является финансовый рынок Форекс. Предмет теория углов Ганна. Целью является разработка торговой стратегии и анализ графиков финансового рынка методом технического анализа углов Ганна [2].
Для прогнозирования цены нам необходимо выбрать правильную шкалу. Если известна верная шкала и базисная цена, то возможно предсказать не только будущую цену, но и то, когда рынок, вероятнее всего, будет торговаться по этой цене. Если известно, какую шкалу применять и известны данные о базисной цене и будущей дате, то возможно определить место, где угол будет находиться в течение данного периода времени.
Рассмотрим построение углов Ганна. Первый и самый важный восходящий угол, который нужно построить, это угол 1x1, строящийся как одна единицы цены к одной единице времени. С геометрической стороны он проводится под углом в 45 градусов. Второй восходящий угол, который нужно построить, это угол 2x1, состоящий из двух единиц цены к одной единице времени. Третий восходящий угол, который нужно построить, это угол 1x2, состоящий из одной единицы цены к двум единицам времени. Аналогично строятся нисходящие углы [4].
Можно выделить основные правила, по которым применяются углы. Разработка торговой системы имеет в своей основе трехступенчатый процесс:
Разработка торговой стратегии ведётся в терминале 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. Графическое представление алгоритма
Такой код эксперта обеспечивает функционирование торгового робота в соответствии с разработанной стратегией. Остается лишь проверить его на исторических котировках.
Приведем пример работы «советника» на валютной паре EUR/USD на 4 часовом графике, временной интервал: 01.01.2007-01.03.2007.
Рис. 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.