ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ
ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ»
( Н И У
« Б е л Г У » )
ИНСТИТУТ ИНЖЕНЕРНЫХ ТЕХНОЛОГИЙ И ЕСТЕСТВЕННЫХ НАУК
Кафедра прикладной информатики и информационных технологий
РАЗРАБОТКА АВТОМАТИЗИРОВАННОЙ ТОРГОВОЙ СИСТЕМЫ НА
ОСНОВЕ МЕТОДА СИСТЕМНОГО СКАЛЬПИРОВАНИЯ
Выпускная квалификационная работа
студентки очной формы обучения
направления подготовки 09.03.03 Прикладная информатика
4 курса группы 07001204
Зайцевой Екатерины Александровны
Научный руководитель
к.т.н., доцент Черноморец А.А.
БЕЛГОРОД 2016
СОДЕРЖАНИЕ
ВВЕДЕНИЕ ........................................................................................................................................ 4
1 АНАЛИЗ ДЕЯТЕЛЬНОСТИ ТРЕЙДЕРА НА РЫНКЕ FOREX ................................................ 7
1.1
Основные понятия рынка Forex ....................................................................................... 7
1.2
Обзор основных индикаторов ........................................................................................ 12
1.3.1
Индикаторы на основе скользящих средних ........................................................ 12
1.3.2
Индикаторы на основе осцилляторов .................................................................... 17
Описание деятельности трейдера .................................................................................. 21
1.3
1.3.1
Структурно-функциональный анализ деятельности трейдера «КАК ЕСТЬ» ... 21
1.3.2
Структурно-функциональный анализ деятельности трейдера «КАК ДОЛЖНО
БЫТЬ»
................................................................................................................................... 24
1.4
Основы построения советника ....................................................................................... 25
1.5
Обоснование проектных решений по техническому и информационному
обеспечению................................................................................................................................. 28
2 РАЗРАБОТКА АЛГОРИТМА СИСТЕМНОГО СКАЛЬПИРОВАНИЯ ................................. 30
2.1
Предпосылки использования метода системного скальпирования ............................ 30
2.2
Описание метода системного скальпирования............................................................. 31
2.3
Разработка алгоритма работы на Forex на основе метода системного
скальпирования ............................................................................................................................ 37
3 ПРОГРАММНАЯ РЕАЛИЗАЦИЯ АВТОМАТИЗИРОВАННОЙ ТОРГОВОЙ СИСТЕМЫ
НА ОСНОВЕ МЕТОДА СИСТЕМНОГО СКАЛЬПИРОВАНИЯ .............................................. 42
3.1
Обоснование выбора среды разработки ........................................................................ 42
3.2
Интерфейс выбора параметров эксперта ...................................................................... 46
3.3
Описание функций автоматизированной торговой системы ...................................... 50
3.4
Проверка работоспособности разработанной торговой системы ............................... 54
3.5
Оценка экономической эффективности ........................................................................ 66
ЗАКЛЮЧЕНИЕ................................................................................................................................ 72
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ...................................................................... 74
ПРИЛОЖЕНИЕ А ........................................................................................................................... 78
ПРИЛОЖЕНИЕ Б ............................................................................................................................ 80
ПРИЛОЖЕНИЕ В ............................................................................................................................ 81
3
ВВЕДЕНИЕ
В настоящее время одним из важнейших факторов успешности человека
является его финансовое состояние. Каждый стремится стать финансово
независимым. Обычно для достижения этой независимости мало иметь
успешную
и
высокооплачиваемую
работу.
Необходимо
получать
дополнительный заработок помимо своей основной работы.
Такую возможность предоставляет международный рынок Forex.
Именно
финансовый
трейдинг
является
перспективным
направлением
получения дополнительного дохода современного человека.
Трейдинг – это деятельность по заключению сделок на финансовых
рынках, основной целью которой является извлечение прибыли. Трейдеры
анализируют текущую ситуацию на рынке валют и заключают сделки куплипродажи, стремясь при этом заработать как можно больше [3].
Однако трейдеры всегда находятся под психологическим прессом,
который оказывает сильное влияние на его эмоциональное состояние, что
крайне негативно сказывается на оптимальном принятии решения и,
соответственно, увеличивает возможность потери финансов.
Существует много способов уменьшить эмоциональную составляющую
или избавиться от нее. Один из самых актуальных – использование
механической торговой системы, которая никогда не будет колебаться при
закрытии убыточной сделки [4].
Для получения прибыли возникает проблема правильного построения
прогноза о направлении изменения цены покупки валюты, которая, как
предполагается, будет повышаться, или продажи валюты, которая по оценке
участников рынка будет падать. Возможность прогнозирования цены валюты
объясняется тем, что существует зависимость цены валюты от разнообразных
торговых, экономических и иных показателей, учетной ставки, политики
центральных банков, времени суток, предпочтений и ожиданий участников
4
биржевой игры и от множества других причин. При этом цены валют находятся
в непрерывном движении.
Одним из самых востребованных и развивающихся методов получения
прибыли является метод системного скальпирования, который привлекает
простотой проведения анализа и составления прогнозов, а также быстрым
процессом обучения.
Объектом исследования является валютный рынок Forex, а предметом –
методы получения прибыли на рынке Forex.
Целью данной работы является получение прибыли за счет изменения во
времени курсов валют при совершении операции покупки или продажи
финансовых инструментов на рынке Форекс.
Для достижения поставленной цели необходимо решить ряд задач:
исследовать
теоретические
основы
валютного
рынка
и
математические средства технического анализа;
произвести анализ деятельности трейдера на рынке Форекс и
выявить все существующие недостатки;
спроектировать структурно-функциональные модели деятельности
трейдера «КАК ЕСТЬ» и «КАК ДОЛЖНО БЫТЬ»;
проанализировать методы получения прибыли на рынке Форекс;
исследовать метод системного скальпирования;
разработать алгоритм системного скальпирования;
разработать автоматизированную торговую систему на основе
разработанного алгоритма;
произвести тестирование и оптимизацию параметров разработанного
программного продукта;
оценить экономическую эффективность разработки.
Основными методами исследования являются:
анализ литературы;
анализ нормативно-правовой документации трейдера и рынка Forex;
функциональное моделирование.
5
Таким образом, выпускная квалификационная работа состоит из
введения, основной части, которая в свою очередь состоит из трех
взаимосвязанных разделов, заключения, списка литературы и трех приложений.
Во введении определяются объект и предмет исследования, указываются
цели, задачи и методы исследования для достижения поставленной цели, а
также актуальность выбранной темы.
Первый
раздел
содержит
информацию
о
проведении
анализа
предметной области, а именно основные понятия рынка Forex и их взаимосвязь.
Кроме
того,
осуществляется
исследование
и
сравнение
основных
существующих групп индикаторов, выявляются их преимущества и недостатки.
Этот раздел также содержит подробное описание деятельности трейдера
на рынке Forex на основе функциональных моделей.
Второй раздел посвящѐн описанию предпосылок использования данного
метода на финансовом рынке Forex и разработке алгоритма системного
скальпирования. Он включает подробное описание метода системного
скальпирования.
В третьем разделе описываются этапы реализации автоматизированной
торговой системы на основе метода системного скальпирования: обоснование
выбора среды разработки, интерфейс выбора параметров эксперта, разработка
программных функций, тестирование и оптимизация автоматизированной
системы, а также разработка выходных форм.
Приложения А и Б содержат декомпозиции функциональных блоков
диаграммы деятельности трейдера на рынке Форекс «КАК ЕСТЬ» и «КАК
ДОЛЖНО БЫТЬ» соответственно. В приложении В представлены листинги
разработанных функций автоматизированной торговой системы.
Выпускная квалификационная работа написана на 84 страницах,
содержит 46 рисунков и 3 таблицы, из которых 76 страниц и 41 рисунок
включает основная часть, и 8 страниц и 5 рисунков – приложения.
6
1 АНАЛИЗ ДЕЯТЕЛЬНОСТИ ТРЕЙДЕРА НА РЫНКЕ FOREX
1.1 Основные понятия рынка Forex
Международный
обмен
товаров,
услуг
и
капиталов
требует
осуществления соответствующих расчетов, для реализации которых необходим
обмен одной валюты на другую. В результате импортеры, экспортеры,
инвесторы, торговые посредники, прочие бизнесмены, туристы вынуждены
конвертировать
как
национальную,
так
и
иностранную
валюту
для
окончательного урегулирования внешнеторговых отношений. Торговля валют
осуществляется на рынках ее обмена [4].
Валютные рынки представляют собой совокупность организационноэкономических и правовых отношений по поводу покупки и/или продажи
валют. С институциональной точки зрения валютный рынок – это официальные
центры, где совершается купля-продажа валют по курсу, складывающемуся на
основе спроса и предложения.
Торговля валютой – весьма привлекательный бизнес, как для
корпораций, так и для трейдеров-индивидуалов, зарабатывающих деньги на
валютном
рынке,
которые
являются
специфической
разновидностью
финансового рынка [5].
На сегодняшний день мировой валютный рынок Forex является одной из
наиболее прибыльных сфер вложения капитала. Именно здесь банки всего мира
производят валютно-обменные операции для выполнения расчетов между
партнерами из разных стран.
Рынок Forex сформировался в 70-е годы прошлого века, когда
международная торговля перешла от системы фиксированных курсов к системе
плавающих обменных курсов валют. Тогда действительными владельцами и
основными участниками этого рынка были банки, многонациональные
корпорации и большие брокерские фирмы [6].
7
В
1978
году
международный
валютный
фонд
официально
санкционировал плавающий курс валют. Это означало, что данной валютой
может торговаться любой желающий, еѐ цена определяется как функция
текущего спроса и предложения на рынке.
В настоящее время рынок Forex открыт для маломасштабных
вкладчиков, так как сейчас существуют минимальные требования к игровому
счету (200$ и меньше). Это позволяет практически любому участнику играть
«на равных» с «большими акулами». Помимо всего прочего, мелкие вкладчики
на сегодняшний день успешно могут использовать преимущества Интернет,
который сделал валютный рынок общедоступным [7].
Таким
образом,
по
сравнению
с другими
секторами
мировой
финансовой системы этот рынок обладает следующими особенностями,
которые делают его столь популярным:
большой объѐм торговли;
высокая ликвидность;
оперативность;
развитие коммуникации;
невысокая стоимость операций;
размер «маржи».
Ежедневный объем торговли на рынке Forex оценивается в 2 триллионов
долларов, тогда как на рынке ценных бумаг – примерно 500 миллиардов
долларов.
Высокая ликвидность рынка привлекает тем, что позволяет открывать и
закрывать позицию любого объема практически по существующей на данный
момент рыночной котировке.
Оперативность
обеспечивает
участников
возможностью
быстро
прореагировать на то или иное событие, так как рынок открыт 24 часа в сутки.
То есть пользователь может заключить сделку в любой момент [8].
В настоящее время информационные технологии успешно проникают во
все области человеческой деятельности, поэтому Forex – это наиболее развитый
8
рынок в плане систем коммуникации. Он позволяет заключать сделки,
используя интернет, спутниковую связь, мобильные устройства и множество
других технологий, которые дают возможность делать это в любой точке
земного шара в любой момент времени.
Рынок Forex практически не имеет никаких комиссионных расходов,
кроме естественной рыночной разницы (спреда) между ценами спроса и
предложения.
Торговля валютными контрактами здесь основана на принципах
«маржевой торговли». Размер кредитного плеча (маржи) определяется лишь
соглашением между клиентом и тем банком или брокером, который
обеспечивает ему выход на рынок.
Кроме того, Forex очень чутко реагирует на экономические и
политические
события,
происходящие
в
мире.
Все это
способствует
предсказуемости рынка и делает его очень популярным.
Перед началом работы на рынке Forex очень важно изучить основные
его определения. Рассмотрим наиболее значимые понятия для участника
валютного рынка.
Основные валюты:
USD – американский доллар, buck (бак), greenback (зеленая спинка);
GBP – фунт стерлингов (cable, стерлинг);
CHF – швейцарский франк (swissie);
JPY – японская йена;
CAN – канадский доллар;
AUD – австралийский доллар (aussie, оси);
NZD – новозеландский доллар (kiwi, киви);
EUR – евро.
Валютный курс – это цена денежной единицы одной страны,
выраженная в денежных единицах другой страны, при сделках купли продажи.
Такая цена может устанавливаться исходя из соотношения спроса и
предложения на определѐнную валюту в условиях свободного рынка, либо
9
быть строго регламентированной решением правительства или его главным
финансовым органом, обычно центральным банком.
В большинстве стран курсы иностранных валют выражается в
национальной валюте. Это так называемая система прямых котировок.
Например, в Англии один доллар будет приравнен к определенному количеству
фунтов стерлингов, а в Нью-Йорке один фунт стерлинг будет приравнен к
определенному количеству центов или долларов.
Прямой котировкой называют котировку, показывающую количество
национальной валюты, которое содержится в одном долларе США, например,
USD/GBP.
Косвенная или обратная котировка – это котировка, показывающая,
какое количество долларов США содержится в единице национальной валюты,
например, GBP/USD. Великобритания является одной из немногих стран,
применяющих систему косвенных котировок [8].
Кросс-курсы – это соотношение между валютами, которое вытекает из
курса по отношению к курсу третьей валюты. При операциях на мировом
рынке часто используют кросс-курсы с долларом США, так как он является не
только основной резервной валютой, но и валютой сделки в большинстве
валютных операций, например, EUR/CHF, GBP/EUR [8].
Маркет-мейкер (marker-maker) – финансовые учреждения, постоянно
осуществляющие котировки курсов покупки и продажи валют, а также
вступающие в сделки по ним [8].
Стоп-лосс – биржевая заявка, выставленная в торговом терминале
трейдером или инвестором с целью ограничить свои убытки при достижении
ценой заранее определѐнного уровня.
Таблица 1.1 содержит информацию об основных терминах рынка Forex,
в первом столбце оригинальное англоязычное название термина, во втором –
перевод на русский язык и в третьем – определение данного термина.
10
Таблица 1.1 – Основные термины рынка Forex
English
Ask
Русский
Цена предложения
Пояснение
Цена, по которой продавец (дилер) готов продать
валюту или иные финансовые инструменты.
Исторически сложившийся термин, используемый
для обозначения тенденций к понижению (медведь
прижимает лапами к земле).
Цена, по которой покупатель (дилер) готов
приобрести валюту или иные финансовые
инструменты.
Исторически сложившийся термин, используемый
для обозначения тенденции повышения (бык
поднимает на рога).
Цена покупки.
Графики.
Цена закрытия.
Валюта.
Профессиональный участник финансового рынка.
до Указание на открытие позиций, действительное до
тех пор, пока не отменено клиентом.
Инструмент технического анализа.
Цена последней сделки. На рынке Forex – среднее
значение между последними Ask и Bir.
Указание клиента дилеру о закрытии прибыльной
позиции, если прибыль превысит установленную
величину.
по Указание клиента дилеру об открытии новой
позиции по установленной или более хорошей для
клиента цены.
Наименьший
неделимый
объем
операции
купли/продажи.
Покупка или открытая Buy позиция.
Депозит, который должен вести для покрытия
возможных будущих потерь от биржевой игры.
Обычно выражается в процентах или фракциях.
Открытие позиции.
Bear
Медведь
Bid
Цена спроса
Bull
Бык
Buy
Chart
Close
Currency
Dealer
GTC
Indicator
Last
Покупка
График
Закрытие
Валюта
Дилер
Действителен
отмены
Индикатор
Последняя цена
Limit
Лимит
Limit Order
Открытие
лимиту
Lot
Лот
Long
Margin
Лонг
Плечо, маржа
Open
Pip
Point
Quote
Открытие
Пипс
Пункт
Котировка
Sell
Short
Spread
Stop
Продажа
Шорт
Спрэд
Стоп
Stop Order
Открытие по стопу
Transaction
Транзакция
Минимальное возможное изменение цены.
Текущее значение цены спроса или предложения
(Ask или Bir).
Продажа.
Продажа или открытая Sell позиция.
Разница между ценой покупки и ценой продажи.
Указание дилеру о том, что убыточная открытая
позиция должна быть закрыта, если убыток
превысит установленную величину.
Указание дилеру о том, что новая позиция должна
быть
открыта,
если
котировка
достигает
определенного значения.
Операция открытия/закрытия позиции.
11
1.2 Обзор основных индикаторов
Для прогнозирования движения рынка применяют фундаментальный и
технический анализ [9].
Фундаментальный анализ основывается на применении теоретических
моделей валютного ценообразования и изучения основных экономических и
подобных факторов, которые влияют на курсы иностранных валют.
Технический анализ использует для прогнозирования движения рынка
информацию о ситуации на рынке в предыдущие периоды его работы, то есть в
основном он сводится к исследованию графиков изменения цен валют в
предыдущие
периоды
для
предсказания
изменения.
Именно
он
является
их
дальнейшего
мощнейшим
возможного
инструментом
для
прогнозирования состояния финансовых рынков [10].
Математические инструменты технического анализа – это технические
индикаторы, которые обеспечивают наиболее объективное представление об
активности цен. Кроме того, они позволяют получить торговые сигналы до
того, как соответствующая информация появится на графиках изменения цен.
Индикатор – это результат математических расчетов, на основе
показателей
цены
и/или
объѐма.
Существует
огромное
количество
разработанных технических индикаторов. Основными группами технических
индикаторов являются скользящие средние и осцилляторы [10].
1.3.1
Индикаторы на основе скользящих средних
Индикатор «Скользящая средняя» (Moving Average) является наиболее
часто используемым индикатором в техническом анализе.
Скользящее среднее – среднее значение цены определенное количество
выбранных временных интервалов (секунд, часов, дней, недель и т.д.). Чем
больше число временных интервалов, по которому вычисляют среднее
значение, тем более сглаженным будет являться график функции. Скользящее
12
среднее значение цены облегчает визуальное наблюдение за активностью
валюты за счет исключения статистических шумов [11].
Существует три основных видов скользящих средних:
простое (арифметическое) скользящее среднее (Simple Moving
Average);
линейно-взвешенное скользящее среднее (Linear Weighted Moving
Average);
экспоненциальное сглаживание (взвешенное) скользящее среднее
(Exponential Moving Average).
Линию скользящей средней откладывают прямо на графике движения
цен за заранее выбранный временной интервал. Чем меньше период, тем
больше вероятность ложных сигналов. Чем больше период, тем слабее
чувствительность скользящей средней.
Простая скользящая средняя является показателем цены равновесия, то
есть простым средним арифметическим от цен за установленный период
времени. Следовательно, чем короче будет скользящая средняя, тем меньше
времени необходимо для выдачи равновесия [12].
Как правило, простая скользящая средняя рассчитывается в результате
сложения цен закрытия инструмента за установленное число периодов и
последующего деления суммы на количество периодов. Таким образом,
формула простой скользящей средней:
n
SMA
где
P
i
i 1
,
n
Pi – это рыночные цены (наиболее часто берут цены Close);
n – длина сглаживания;
i – это текущий момент времени.
13
(1.1)
С помощью скользящей средней нельзя прогнозировать изменения в
тренде. Оно сигнализирует об уже существующем на рынке тренде. Его лучше
применять в период тренда, так как простое скользящая средняя является
индикатором, который следует за ним. Если тренда нет, то этот индикатор
совершенно не эффективен. На рисунке 1.1 изображен график этого
индикатора.
Рисунок 1.1 – График простого скользящего среднего
Главный недостаток простой скользящей – это применение равных весов
ко всем ценам при проведении расчѐтов, а также усреднение этих цен по
отношению к цене настоящего момента вне зависимости от времени
возникновения цен на рынке. В отличие от простой скользящей взвешенная
скользящая средняя не имеет этого недостатка.
Линейно-взвешенная скользящая средняя – это индикатор, при подсчете
которого в исходной функции значение каждого члена равно соответственному
члену в арифметической прогрессии, формула которого следующая.
n
LWMA
P *W
i
i 1
n
W
i 1
где
i
Pi – это значение цены;
14
i
,
(1.2)
W i – это значение весов для цены;
i – это момент времени.
Веса можно выбирать разными способами. Для линейно-взвешенной
скользящей веса подбирают таким образом, что максимальный вес имеют
самые последние цены, а минимальный – самые первые цены, то есть
соответствуют формуле:
Wi i n 1 ,
где
(1.3)
i – это текущий момент времени;
n
– это крайний момент времени.
Взвешенное скользящее – это арифметическое взвешенное от колебаний
цены за определенный период времени на рынке. Другими словами, оно
представляет собой обычную модификацию простой скользящей с весами,
которые подобраны таким образом, что отдают большее преимущество более
поздним ценам [13]. На рисунке 1.2 изображен график линейно-взвешенного
скользящего среднего за период равный 10.
Рисунок 1.2 – График линейно-взвешенного скользящего среднего (EMA)
При использовании скользящей средней почти всегда возникает
запаздывание, и для его уменьшения техническим аналитикам необходима
15
экспоненциальная скользящая средняя. Этот показатель придает последним
ценам больший вес по сравнению с предыдущими значениями. Этот факт
позволяет реагировать на текущие изменения рыночных цен быстрее, чем при
использовании простых скользящих средних [13].
Существует два главных способа определения экспоненциальной
скользящей средней: процентный и периодичный. По этой причине, главным
параметром первого является вес (процент) цены, а критерием второго –
период, в котором находится экспоненциальная скользящая средняя. Расчетная
формула представлена ниже в своем стандартном виде:
EMAi EMAi 1 K * Pi EMAi 1 ,
где
(1.4)
i – текущие моменты времени;
i 1 – предыдущие моменты времени;
K – это коэффициент экспоненциальной скользящей средней;
Pi – это значение цены.
Экспоненциальное сглаживание позволяет сгладить наиболее резкие
отклонения цен и установить направление сложившегося на рынке тренда (см.
рисунок 1.3).
Рисунок 1.3 - График экспоненциальной скользящей средней
16
Выбор среди известных видов, скользящих средних определяется
предпочтениями трейдера и тактикой его торговли. При этом важно помнить,
что простая скользящая средняя, в основном, очень часто запаздывает, а
экспоненциальная движется с быстрыми прорывами.
Скользящая средняя применяется самостоятельно или для создания
осцилляторов.
1.3.2
Индикаторы на основе осцилляторов
Осцилляторы предназначены для получения сигналов о возникновении
на рынке ситуаций «рынок перекуплен» (overbought) и «рынок перепродан»
(oversold). Сигналы осцилляторов полезны в основном в верхней и нижней
областях их измерительных шкал, а генерируются они в результате
расхождений между графиком цены анализируемой валюты и графиком
осциллятора. В момент пересечения нулевой линии, если таковая имеется,
вырабатывается сигналы об изменении направления движения валюты [11].
Существует три основных вида:
Схождение-расхождение скользящих средних (Moving Average
Convergence/Divergence (MACD));
Момент (Momentum);
Индекс относительной силы (Relative Strength Index(RSI)).
Осциллятор «Схождение-расхождение скользящих средних» основан на
применении экспоненциально сглаженных скользящих средних. Он использует
скользящие средние, как запаздывающие индикаторы, а также имеет
определенные характеристики следования за трендом. Данные запаздывающие
индикаторы преобразовываются в импульсный осциллятор: из более короткого
скользящего среднего вычитается более длинное. Линия итогового графика
свободно колеблется над или под нулевой отметкой. MACD – центральный
осциллятор, к которому применяются все основные правила осцилляторов [12].
17
На рисунке 1.4 показан индикатор MACD (черная линия) и его ЕМА за
период 9 дней (синяя линия).
Рисунок 1.4 – Индикатор MACD и его EMA
Для расчѐта линейного MACD из скользящей средней цены вычитается
экспоненциальная скользящая средняя с большим периодом. В большинстве
случаев полученный результат сглаживают при помощи экспоненциальной
скользящей средней, чтобы устранить случайные колебания т вычисляется по
формуле:
MACD EMAs(P) EMAl (P) ,
где
(1.5)
EMAs(P) – экспоненциальная скользящая средняя с коротким периодом;
EMAl(P) – экспоненциальная скользящая средняя с длинным периодом.
Цена, обычно берѐтся цена закрытия периода Close, но возможны и
другие варианты (Open, High, Low, Close, Median Price, Typical Price) [13].
Осциллятор «Момент» – это осциллятор, предназначенный для
измерения уровня изменения цены, а не ее действительного уровня. Этот
индикатор вычисляется как разность между текущей ценой закрытия и самой
давней ценой закрытия в выбранном промежутке времени. Он позволяет
18
определить среднюю скорость изменения цены актива за определенный
промежуток времени.
С помощью этого индикатора трейдер имеет возможность получить
ясное представление о том, насколько силен тренд в период его анализа.
Одновременно с этим этот инструмент может использоваться и в роли
трендового
индикатора,
отображая
текущую
тенденцию
с
некоторым
опережением (см. рисунок 1.5).
Рисунок 1.5 – График индикатора «Момент»
Формулу, по которой вычисляется этот индикатор-осциллятор, можно
представить в следующем виде:
M C (C n) ,
где
(1.6)
C – цена закрытия текущего периода;
C n – цена закрытия N периодов назад.
Индикатор «Индекс относительной силы» – индикатор технического
анализа, определяющий силу тренда и вероятность его смены. Популярность
этого индикатора обусловлена простотой его интерпретации [14].
RSI выражается в процентах, а формула, по которой он вычисляется,
выглядит так:
19
RSI 100 * (1 D /( D U )) ,
где
(1.7)
U – среднее значение «цены вверх»;
D – среднее значение «цены вниз».
Индекс относительной силы всегда колеблется между 0 и 100. Именно
поэтому его и относят к осцилляторам [14].
На рисунке 1.6 представлен график индикатора «Индекс относительной
силы».
Рисунок 1.6 – График индикатора «Индекс относительной силы»
Одно из главных преимуществ, которые предоставляет RSI индикатор –
это высокая точность его современной версии и отсутствие серьезных
погрешностей. У некоторых поздних модификаций данного индикатора
имеются различия в вычислениях, которые отличаются от формул, показанных
выше. В классической версии найденные значения после конца вычислений
сглаживает экспоненциальное скользящее среднее с выбранным периодом, и
только после этой обработки числа подставляются в финальную формулу
расчета [15].
20
1.3 Описание деятельности трейдера
Трейдер – биржевой торговец, специалист, осуществляющий операции по
покупке или продаже биржевых товаров, ценных бумаг или валюты по заказу
сторонних организаций или физических лиц. Такие торговцы на рынке Форекс,
используя различные стили и стратегии торговли, анализируют рынок,
информацию о его изменениях, динамику цен и прочее, чтобы найти способы
выгодно произвести сделки, купить и продать с определенной разницей [15].
Трейдеры на рынке Форекс в сегодняшних условиях заключают все
сделки и следят за рынком, не отходя от своего рабочего места. Используя
различные приложения, они получают множество информации о ценах,
котировках, а также новости и графические изображения.
1.3.1
Структурно-функциональный анализ деятельности трейдера
«КАК ЕСТЬ»
Перед
проектированием
системы
разработчик
должен
ясно
представлять, какие функциональные возможности будут заложены в систему,
и как будет организовано взаимодействие внутри системы [16]. Разработка
функциональных моделей деятельности трейдера помогла решить большую
часть этих проблем. Построение происходило путѐм разбиение контекстной
диаграммы на функциональные подсистемы, которые делились на подфункции,
а те, в свою очередь, на конкретные процедуры [17].
В
ходе
анализа
была
разработана
структурно-функциональная
диаграмма («КАК ЕСТЬ») на основе методологии SADT (IDEF0) с помощью
CASE-средства AllFusion Process Modeler 7. Стандарт IDEF0 используется для
разработки функциональной модели, которая отображает структуру и функции
системы, а также связывающие их потоки информации и материальных
объектов [18].
21
Деятельность трейдера на рынке Форекс заключается в анализе текущей
ситуации, на основе которого он открывает и закрывает ордер на покупку и
продажу денежных средств для получения прибыли.
На рисунке 1.7 изображена контекстная диаграмма деятельности
трейдера на рынке Форекс. Входными данными являются информация о
состоянии счета и данные из дата-центра. Управление осуществляется на
основе федерального закона «О рынке ценных бумаг» [19], инструкции
трейдера и документации по работе в торговой платформе. Механизмами
представлены в виде персонального компьютера и торговой платформы [20].
Выходной поток данных – это информация о прибыли или убытке [21].
USED AT:
AUT HOR: Зайцева Е.А.
DAT E: 19.03.2016
WORKING
PROJECT: Деятельнос ть трейдера на рынке
Forex
REV: 09.06.2008
DRAFT
READER
TOP
RECOMMENDED
NOTES: 1 2 3 4 5 6 7 8 9 10
PUBLICATION
Инс трукция
трейдера
Документация
о правилах
работы в
торговой
платформе
ФЗ "О
рынке
ценных
бумаг"
Информация
об объѐме
денежных
с редс тв на
с чете
Информация об
объѐме
прибыли/убытка
Деятельнос ть трейдера
на рынке Forex
Информация
из
Дата-центра
0р.
0
Информационноторговая
платформа
NODE:
TITLE:
DAT E CONTEXT:
ПК
Internet
Деятельность трейдера на рынке Forex
NUMBER:
Рисунок A-0
1.7 – Контекстная диаграмма деятельности трейдера «КАК ЕСТЬ»
Контекстная диаграмма деятельности была детализирована четырьмя
функциональными блоками, отражающими основные действия трейдера (см.
рисунок 1.8) [22].
Прежде всего, торговец должен проанализировать текущую ситуацию на
рынке Forex, что необходимо для выбора валютной пары и получения команды
на открытие ордера. Следующим шагом он открывает и устанавливает ордер
на покупку/продажу валюты, после чего, проводит оценку состояния рынка,
используя фундаментальный и технический анализ. Полученная команда о
22
закрытии ордера, позволяет выполнить последнее действие «Закрытие и
удаление ордера».
USED AT:
AUT HOR: Зайцева Е.А.
DAT E: 19.03.2016
WORKING
PROJECT: Деятельнос ть трейдера на рынке
Forex
REV: 02.04.2016
DRAFT
PUBLICATION
Инс трукция трейдера
Выбранная
валютная
пара
A-0
Документация о правилах
работы в торговой
платформе
ФЗ "О
рынке
ценных
бумаг"
Анализ текущей
с итуации на рынке
Forex
0р.
Информация
об объѐме
денежных
с редс тв на
с чете
DAT E CONTEXT:
RECOMMENDED
NOTES: 1 2 3 4 5 6 7 8 9 10
Информация
из
датацентра
READER
1
Информация
об ордере
График
выбранной
валютной
пары
Открытие и
ус тановка
ордера
0р.
2
Команда
открыть
ордер
Анализ с итуации
на рынке пос ле
открытия ордера
0р.
3
Команда
закрыть
ордер
Информация об
объѐме
прибыли/убытка
Закрытие и
удаление
ордера
0р.
4
Информационноторговая
ПК
платформа
NODE:
TITLE:
Деятельность трейдера на рынке Forex
NUMBER:
Рисунок 1.8A0– Декомпозиция контекстной диаграммы деятельности трейдера
«КАК ЕСТЬ»
Каждый функциональный блок диаграммы-декомпозиции деятельности
трейдера также был детализирован [23]. Рисунки этих диаграмм представлены в
приложении А.
Разработанная модель говорит о том, что необходимо оптимизировать
ручную торговлю трейдера [24]. Для этого было принято решение разработать
программу для автоматического трейдинга, которая будет выполнять открытие,
анализ рынка и закрытие ордера. Кроме того, в подавляющем большинстве
случаев, это позволит существенно облегчить труд трейдера, избавив его от
необходимости непрерывно в течение длительного срока находиться возле
монитора для наблюдения за развитием рынка, а также даст возможность
разрабатывать и проверять собственные стратегии.
23
1.3.2
Структурно-функциональный анализ деятельности трейдера
«КАК ДОЛЖНО БЫТЬ»
Одним из важнейших этапов проектирования автоматизированной
торговой
системы
деятельности
с
является
учетом
построение
выявленных
функциональной
проблем
и
диаграммы
устранением
всех
существующих недостатков («КАК ДОЛЖНО БЫТЬ») [25]. Данная модель
поможет понять, где находятся слабые места, в чем будут состоять
преимущества новых процессов и насколько измениться эффективность
деятельности трейдера [25].
На основе результатов анализа текущей деятельности трейдера на рынке
Forex («КАК ЕСТЬ») была разработана новая модель, в которой большая часть
функций трейдера перенесена на торговую систему, а именно: «Установка и
открытие ордера», «Анализ ситуации на рынке после открытия ордера» и
«Закрытие и удаление ордера» (см. рисунок 1.9 – 1.10).
USED AT:
AUT HOR: Зайцева Е.А.
DAT E: 25.03.2016
WORKING
PROJECT: Деятельнос ть трейдера на рыке
Forex
REV: 09.06.2016
DRAFT
READER
DAT E CONTEXT:
TOP
RECOMMENDED
NOTES: 1 2 3 4 5 6 7 8 9 10
PUBLICATION
ФЗ "О
Инс трукция рынке
ценных
трейдера
бумаг"
Документация
о правилах
работы в
торговой
платформе
Инс трукция по
экс плуатации
торгового
с оветника
Иформация
об объеме
денежных
с редс тв на
с чете
Информация об объеме прибыли/убытка
Деятельнос ть трейдера
на рынке Forex
Информация
из
Дата-центра
0р.
0
Информационноторговая
платформа
ПК
Internet
Программа-советник
(экс перт)
Деятельность
трейдера
на рынке Forexтрейдера «КАК ДОЛЖНО
Рисунок 1.9 – Контекстная
диаграмма
деятельности
NODE:
TITLE:
NUMBER:
A-0
БЫТЬ»
24
Таким образом, торговцу достаточно проанализировать текущее
состояние рынка и установить советник на график выбранной валютной пары.
Кроме того, здесь появилась новая стрелка управления, которая регулирует
действия трейдера по средствам инструкции по эксплуатации торгового
советника.
USED AT:
AUT HOR: Зайцева Е.А.
PROJECT: Деятельнос ть трейдера на рыке
Forex
DAT E: 02.04.2016
WORKING
REV: 09.06.2016
DRAFT
PUBLICATION
ФЗ "О
рынке
ценных
бумаг"
A-0
Документация
о правилах
работы в
торговой
платформе
Инс трукция по
экс плуатации
торгового
с оветника
Сигнал
Выбранная
ус тановить валютная
с оветник
пара
Информация
из
Дата-центра
Анализ текущей с итуации на
рынке Forex
0р.
Иформация
об объеме
денежных
с редс тв на
с чете
DAT E CONTEXT:
RECOMMENDED
NOTES: 1 2 3 4 5 6 7 8 9 10
Инс трукция
трейдера
READER
1
Ус тановка
с оветника
График
выбранной
валютной пары
0р.
Информация об
объеме
прибыли/убытка
2
Информационноторговая
платформа
Программа-советник
(экс перт)
ПК
NODE:
TITLE:
Деятельность трейдера на рынке Forex
NUMBER:
Рисунок
A0 1.10 – Декомпозиция контекстной диаграммы деятельности трейдера
«КАК ДОЛЖНО БЫТЬ»
Детализация функциональных блоков диаграммы-декомпозиции модели
деятельности трейдера приведена в приложении Б.
1.4 Основы построения советника
Для автоматизации процесса торговли используются программные
реализации торговых систем в виде «Советников», которые позволяют
разгрузить трейдера от рутины постоянного наблюдения за рынком. Многие
профессиональные трейдеры имеют массу торговых систем, позволяющих им
25
работать на различных рынках и условиях. Обычно они пишут и тестируют
свои торговые стратегии в различных известных аналитических программных
пакетах [27].
Советники позволяют связать сигналы, генерируемые торговыми
системами, с реальным счетом трейдера таким образом, чтобы в любой момент
времени прямо из системы можно было управлять открытыми позициями,
выставленными рыночными ордерами и стоп-ордерами.
Советник (Expert Advisors) – это механическая торговая система,
написанная
на
специализированном
языке
и
имеющая
привязку
к
определенному графику в информационно торговой системе. Он может
работать не только в режиме информирования о возможности совершить
сделки, но может также автоматически совершать сделки на торговом счету,
направляя их прямо в торговый сервер [28].
Как
и
в
большинстве
информационных
систем,
советники
поддерживают тестирование стратегий на исторических данных с показом на
графиках точки открытия/закрытия позиций. Кроме того, исполняемый код
эксперта существует отдельно от его исходного текста – это гарантирует
скрытие (при необходимости) используемой логики от посторонних глаз.
Для построения советника необходимо решить ряд задач. Во-первых,
необходимо оценить все существующие информационно-торговые платформы
и выбрать наиболее подходящую. Во-вторых, изучить строго типизированный
язык программирования торговых стратегий, разработанный индивидуально
для каждого программного обеспечения
Обычно язык программирования торговых стратегий синтаксически
похожи на язык программирования Си. Они просты в изучении и
использовании, они включают большое количество функций, необходимых для
анализа текущих и прошлых котировок, основные арифметические и
логические операции, встроены основные индикаторы и команды по открытию
позиций и контролю над ними [29].
26
Именно такие языки позволяет писать собственные программыэксперты, автоматизирующие управление торговыми процессами и идеально
подходящие для реализации собственных торговых стратегий.
Одним из самых важнейших этапов построения советника является
определение торговой стратегии. Она может основываться на группах
индикаторов, описанных ранее, или на совершенно новой закономерности.
Любая торговая тактика состоит из 5 этапов:
определение тренда;
выявление начала отката;
ожидание конца отката;
получение подтверждения от другого индикатора или системы;
вход в рынок с выставлением стоп-ордера и тейк-профита [30].
Оценив все еѐ достоинства и недостатки, следует составить подробный
алгоритм работы выбранной торговой стратегии [31].
Следующий шаг – это программирование разработанного алгоритма
работы торгового советника. Для этого последовательно нужно выполнить
следующие действия:
создание и описание эксперта;
создание первичной структуры программы:
1) первичные проверки данных;
2) установка внутренних переменных для быстрого доступа к
данным;
3) проверка торгового терминала;
4) контроль ранее открытых позиций.
сборка результирующего кода программы;
тестирование эксперта на исторических данных [32].
Этот алгоритм позволяет создавать высокоэффективные механические
торговые системы, реализующие разнообразные торговые стратегии.
27
1.5 Обоснование проектных решений по техническому и
информационному обеспечению
Техническое обеспечение представляет собой комплекс технических
средств, обеспечивающих корректное функционирование информационной
системы, а также соответствующую документацию на эти средства и
технологические процессы [21].
Для решения экономических задач наиболее подходящими являются
персональные компьютеры, которые обладают низкой стоимостью и имеют
приемлемые размеры.
Таким образом, укажем следующие технические характеристики
компьютера для нормального функционирования торговой системы:
процессор Intel Celeron Skylake (2.6 GHz);
материнская плата ASUS Z170 PRO GAMING;
видеокарта ASUS EN9800GX2/G/2DI/1G GeForce 9800 GX2 1ГБ
GDDR3 PCI-E 2.0;
сетевая карта Intel E1G42ET;
ОЗУ 2 Гб;
жесткий диск Seagate Barracuda 7200.12 ST3500418AS, 500 ГБ,
SATA-300, NCQ;
корпус ATX CX Y259 Black P4-ready 300W;
монитор LG Flatron w1942s 19";
мышь проводная оптическая Defender Orion MM-300;
клавиатура Defender OfficeMate HM-710, USB 2.0.
Информационное обеспечение представляет собой совокупность форм
документов, классификаторов, нормативной базы и реализованных решений по
объемам, размещению и формам существования информации, применяемой в
автоматизированной системе при ее функционировании [21].
Информационное обеспечении включает массивы данных, средства их
описания, сбора, хранения и выдачи, которые должны в совокупности создать
28
наилучшие
условия
для
централизованной
интегрированной
обработки
информации, повысить надѐжность и достоверность получаемой информации.
Технический анализ – это исследование динамики рынка с целью
прогнозирования дальнейшей динамики цен. Чаще всего такой анализ
осуществляется
при
помощи
графиков.
Поэтому очень
важно
иметь
исторические данные цен по всем используемым финансовым инструментам и
периодам. Исторические данные постоянно формируются и хранятся на сервере
(информационном центре). Подключаясь к нему, клиентский терминал
скачивает все необходимые данные. В дальнейшем они используются для
построения графиков, тестирования и оптимизации экспертов.
Кроме того, у пользователя торгового терминала есть возможность
экспорта и импорта исторических данных. Исторические данные можно
экспортировать и импортировать в файлы форматов CSV, PRN и HTM.
Для успешной разработки эксперта также требуется наличие базы
основных трендовых индикаторов и осцилляторов, которая присутствует во
всех торговых платформах.
Формирование выходных форм для анализа работы эксперта будет
происходить
после
получения
результатов
тестирования
советника
с
использованием MS Excel 2007. Этот табличный редактор отлично подходит
для анализа числовых данных, создания графиков и обладает огромным
количеством встроенных функций, позволяющих оптимизировать свойства и
параметры эксперта. Кроме того, у трейдера появится возможность вывести
результаты тестирования на печать.
Таким образом, в первом разделе был проведен анализ ранка Forex, из
основные понятия, рассмотрены группы индикаторов, на основе скользящих
средних и индикаторов-осцилляторов, выявлены их достоинства и недостатки,
а также изучены основы построения торговых советников. Кроме того, были
разработаны структурно-функциональные модели деятельности трейдера с
использованием методологии IDEF0, а также обоснованы проектные решения
по техническому и информационному обеспечению.
29
2 РАЗРАБОТКА АЛГОРИТМА СИСТЕМНОГО
СКАЛЬПИРОВАНИЯ
2.1 Предпосылки использования метода системного
скальпирования
Торговля по тренду является основой многих торговых стратегий,
которые используются в наши дни на рынке Форекс, так как второй постулат
технического анализа гласит: «Движение цен подчинено тенденциям».
Тенденция, или тренд – направленное движение цены. Это понятие
является основополагающим в техническом анализе. Именно поэтому основной
целью составления и изучения графиков цен является выявление тенденции на
ранней стадии развития и торговать в соответствии с их направлением.
Существует 3 вида тенденций:
восходящая, или «Бычья»;
нисходящая, или «Медвежья» тенденция;
боковая, или безтрендовая тенденция [33].
Если на графике наблюдается два последних растущих ценовых
минимума, можно утверждать, что на рынке сформировалась восходящая
тенденция.
Если на графике наблюдается два последовательно снижающихся
ценовых минимума, можно утверждать, что на рынке сформировалась
нисходящая тенденция.
Если и ценовые максимумы, и ценовые минимумы находятся примерно
на одном уровне, то принято считать, что на рынке в данный момент
господствует боковая тенденция.
Большую часть времени рынок находится в боковом тренде. Это
становится проблемой для тех трейдеров, которые занимаются внутридневной
торговлей, то есть осуществляют одну либо нескольких сделок на протяжении
торгуемого дня на Форекс. Это связано с тем, что на небольших временных
30
интервалах
почти
невозможно
выявить
какую-либо
устойчивую
закономерность [34].
Описанные выше факторы заставляют искать зависимости не только на
графике одной валютной пары, но и на целом ряде таких пар. Использование
системного подхода к поиску зависимостей поможет более точно определить
существующую закономерность и даст тем самым сигнал трейдеру о
возможности совершения операции.
Учитывая то, что торговля ведется в течение дня, системное
скальпирование является оптимальным методом, так как он позволяет получать
прибыль от минимальных колебаний рынка в краткосрочных сделках.
2.2 Описание метода системного скальпирования
Под системным скальпированием понимают различные стратегии,
главной целью которых является получение незначительных прибылей при
обнаружении изменений цены [35].
Это метод предполагает одновременный анализ 4 графиков валютных
пар. Для этого, прежде всего, необходимо открыть окна с графиками валютных
пар EURUSD, USDCHF, GBPUSD, USDJPY и установить на всех графиках
период равный 15 мин.
На каждом графике следует вывести два индикатора экспоненциальной
скользящей средней и применить к ценам Close: для одного индикатора –
выбрать период 7 и синий цвет, для другого – выбрать период 34 и красный
цвет (см. рисунок 2.1) [35].
Индикаторы экспоненциальной скользящей средней для двух периодов
времени необходимы для определения направления тренда. Пересечение
графиков индикаторов сигнализирует об изменении тенденции.
31
Рисунок 2.1 – Отредактированный график валютной пары
Стратегия продажи евро состоит в следующем: необходимо определить
момент, когда на графике EURUSD возникает боковой тренд и построить
границы ценового коридора (см. рисунок 2.2)
Рисунок 2.2 – Выявление бокового тренда
Для открытия короткой позиции по евро необходимо одновременное
выполнение следующих условий:
на графиках EURUSD и GBPUSD появились «сильные скачки» вниз,
величиной не менее на 12–14 пунктов, и движение цены вниз продолжается за
пределами построенного ценового коридора (см. рисунок 2.3) .
32
Рисунок 2.3 – Поиск сильных скачков
на графиках USDCHF и USDJPY появились «сильные скачки» вверх,
величиной не менее на 12–14 пунктов, и движение цены вверх продолжается за
пределами построенного ценового коридора;
на графиках EURUSD и GBPUSD красная скользящая средняя
располагается выше синей скользящей средней;
на графиках USDCHF и USDJPY синяя скользящая средняя
располагается выше красной скользящей средней [36].
Схематично данные условия можно изобразить следующим образом, на
схеме указаны цвета свечей и скользящих средних (см. рисунок 2.4).
12-14 пунктов
вверх
вниз
за пределы коридора
Франк
Евро
Йена
Фунт
Синяя
Красная
Красная
Синяя
Рисунок 2.4 – Схематичное представление условий
33
Закрытие короткой позиции по евро выполняется в том случае, если
цена продолжает уменьшаться, что говорит об установившейся нисходящей
тенденции и возможной смене направления тренда.
Рисунок 2.5 – Изменение цены в сторону увеличения
Аналогично строится стратегия покупки евро: необходимо определить
момент, когда на графике EURUSD возникает боковой тренд и построить
границы ценового коридора (см. рисунок 2.6).
Рисунок 2.6 – Выявление бокового тренда по EURUSD2.
Для открытия длинной позиции по Евро необходимо одновременное
выполнение следующих условий:
34
на графиках EURUSD и GBPUSD появились «сильные скачки» вверх,
величиной не менее на 12-14 пунктов, и движение цены вверх продолжается за
пределами построенного ценового коридора. Пример такого изменения цены на
графике EURUSD приведен на рисунке 2.7.
Рисунок 2.7 – «Сильные скачки» вверх по EURUSD
В соответствии с рассматриваемой стратегией в данный момент
ситуация на графике GBPUSD имеет аналогичный вид (см. рисунок 2.8).
Рисунок 2.8 – «Сильные скачки» вверх по GBPUSD
на графиках USDCHF и USDJPY появились «сильные скачки» вниз,
величиной не менее на 12–14 пунктов, и движение цены вниз продолжается за
пределами построенного ценового коридора. Пример ситуации на графике
35
USDJPY, возникшей одновременно с ситуацией на графике EURUSD, приведен
на рисунке 2.9.
Рисунок 2.9 – «Сильные скачки» вниз по USDJPY
Ситуация на графике USDCHF выглядит аналогично (см. рисунок 2.10).
Рисунок 2.10 – «Сильные скачки» вниз по USDCHF
на графиках EURUSD и GBPUSD красная скользящая средняя
располагается ниже синей скользящей средней;
на графиках USDCHF и USDJPY синяя скользящая средняя
располагается ниже красной скользящей средней [36].
Схематично данные условия можно изобразить следующим образом, на
схеме указаны цвета свечей и скользящих средних (см. рисунок 2.11).
36
12-14 пунктов
вниз
вверх
за пределы коридора
Франк
Евро
Йена
Фунт
Красная
Синяя
Синяя
Красная
Рисунок 2.11 – Схематичное представление условий
Закрытие длинной позиции по евро выполняется в том случае, если цена
продолжает увеличиваться, что говорит об установившейся восходящей
тенденции и возможной смене направления тренда [37].
Описанный выше метод изначально был разработан для торговли на
фондовой бирже с учетом всех еѐ особенностей и совершенно не адаптирован
для рынка Форекс. Поэтому все приведенные значения периодов, таймфреймов,
а также сдвигов в дальнейшем будут оптимизированы.
2.3 Разработка алгоритма работы на Forex на основе метода
системного скальпирования
На основе описанного выше метода системного скальпирования
необходимо было разработать алгоритм стратегии торгового советника для
работы на рынке Форекс.
Первым этапом определили наличие различного типа переменных и их
области видимости, а также типичные для любой стратегии проверки [38].
Алгоритм
стратегии
на
основе
метода
системного
предполагает использование следующих видов переменных:
глобальные;
локальные;
37
скальпирования
внешние;
предопределенные.
Глобальная переменная – переменная, объявленная за пределами всех
функций.
Областью
видимости
глобальных
переменных
является
вся
программа.
Локальная переменная – переменная, объявленная внутри какой-либо
функции. Областью видимости локальных переменных является тело функции,
в которой эта переменная объявлена.
Внешняя переменная – это переменная, значение которой доступно из
окна свойств программы. Внешняя переменная объявляется за пределами всех
функций и является глобальной, область еѐ видимости – вся программа.
Предопределѐнная переменная – это переменная с предопределенным
названием, значение которой определяется клиентским терминалом и не может
быть изменено программным способом. Предопределенные переменные
отражают состояние текущего ценового графика на момент запуска программы
[33].
Следующим этапом необходимо было выполнить ряд первичных
проверок данных, таких как:
проверка количества баров на графике выбранной валютной пары;
проверка наличия денежных средств на счете;
проверка значений всех объявленных переменных.
Существует разница между хранимыми в истории и отображаемыми на
графиках барами. Она обусловлена тем, что на жестком диске может храниться
любое количество баров, на которое хватает объема. В то же время
отображение баров на графиках ограничено ресурсами компьютера. Для
расчета значений технических и пользовательских индикаторов также
используются
бары,
отображаемые
на
графике.
При
одновременном
использовании множества индикаторов и большом количестве отображаемых
данных свободные ресурсы компьютера могут быстро закончиться. Чтобы
38
избежать подобных проблем, требовалось выполнять проверку количества
баров на графике валютной пары.
Открытие позиций на покупку и продажу может осуществлять только
при положительном балансе. Именно поэтому необходимо контролировать
наличие денежных средств на счете.
Для нормального функционирования советника также необходимо,
чтобы все переменные были объявлены явно.
На этом этап стандартных проверок окончен. Следующий шаг
заключался в применении метода системного скальпирования, который в свою
очередь подразумевает следующее:
проверка возможности стать в длинную позицию, то есть открыть
позицию на покупку на графике EURUSD;
проверка возможности стать в короткую позицию, то есть открыть
позицию на продажу на графике EURUSD;
проверка возможности закрыть длинную позицию на графике
EURUSD;
проверка возможности закрыть короткую позицию на графике
EURUSD.
Алгоритм проверки наличия сигнала на открытие длинной позиции на
графике предложенных валютных пар (EURUSD, GBPUSD, USDCHF,
USDJPY):
построение ценового коридора с помощью трендового индикатора
Envelopes на графиках всех валютных пар;
разница между ценой закрытия последней и предпоследней свечей
значительна на графиках всех валютных пар;
пробитие свечой нижней линии индикатора Envelopes на графиках
валютных пар USDCHF и USDJPY;
пробитие свечой верхней линии индикатора Envelopes на графиках
валютных пар EURUSD и GBPUSD;
39
построение «быстрой» и «медленной» скользящей средней на
графиках всех валютных пар;
«медленная» скользящая средняя ниже «быстрой» скользящей
средней на графиках EURUSD и GBPUSD;
«медленная» скользящая средняя выше «быстрой» скользящей
средней на графиках USDCHF и USDJPY.
Алгоритм проверки наличия сигнала на открытие короткой позиции на
графике предложенных валютных пар (EURUSD, GBPUSD, USDCHF,
USDJPY):
построение ценового коридора с помощью трендового индикатора
Envelopes на графиках всех валютных пар;
разница между ценой закрытия последней и предпоследней свечей
значительна на графиках всех валютных пар;
пробитие свечой верхней линии индикатора Envelopes на графиках
валютных пар USDCHF и USDJPY;
пробитие свечой нижней линии индикатора Envelopes на графиках
валютных пар EURUSD и GBPUSD;
построение «быстрой» и «медленной» скользящей средней на
графиках всех валютных пар;
«медленная» скользящая средняя выше «быстрой» скользящей
средней на графиках EURUSD и GBPUSD;
«медленная» скользящая средняя ниже «быстрой» скользящей
средней на графиках USDCHF и USDJPY.
Для закрытия позиции необходимо определить окончание тренда и
начало отката на графике валютной пары EURUSD. Технический индикатор
Схождение/Расхождение Скользящих Средних – это следующий за тенденцией
динамический
индикатор.
Он
показывает
соотношение
между
двумя
скользящими средними цены и находит благоприятные моменты для закрытия
позиций.
Алгоритм поиска сигнала на закрытие длинной позиции:
40
построение главной и сигнальной линий индикатора-осциллятора
MACD на графике EURUSD;
сигнальная линия индикатора MACD выше главной линии.
Алгоритм поиска сигнала на закрытие короткой позиции:
построение главной и сигнальной линий индикатора-осциллятора
MACD на графике EURUSD;
сигнальная линия индикатора MACD ниже главной линии.
Необходимо также контролировать количество открытые позиции и
использовать динамический или скользящий Stop Loss, ограничивающий
убыток.
Таким образом, данный раздел содержит предпосылки использования и
описание метода системного скальпирования. Кроме того, для программной
реализации советника описана последовательность определенных действий или
шагов, то есть, разработан алгоритм открытия и закрытия позиций на основе
метода системного скальпирования.
41
3 ПРОГРАММНАЯ РЕАЛИЗАЦИЯ АВТОМАТИЗИРОВАННОЙ
ТОРГОВОЙ СИСТЕМЫ НА ОСНОВЕ МЕТОДА СИСТЕМНОГО
СКАЛЬПИРОВАНИЯ
3.1 Обоснование выбора среды разработки
Одной из важнейших задач любого разработчика является подбор
наиболее оптимальной среды разработки. Для этого необходимо провести
анализ рынка программного обеспечения разработчика прикладных программ
на рынке Forex.
Существует
огромное
количество
программных
средств,
обеспечивающих работу трейдера. Они позволяют заключать сделки, используя
интернет, спутниковую связь, мобильные устройства и множество других
технологий, которые дают возможность делать это в любой точке земного шара
в любой момент времени [39]. Кроме того, большинство информационноторговых платформ имеют встроенную среду для самостоятельной разработки,
тестирования, и оптимизации программ алгоритмического или автоматического
трейдинга, то есть обеспечивают деятельность не только торговца, но и
разработчика прикладных программ.
Рассмотрим три наиболее популярных и используемых торговых
платформ и их функционал.
MetaTrader4 (MT4) – одна из самых мощных торговых платформ на
сегодняшний день. Ее производительность оставляет далеко позади разработки
конкурентов – на средней машине MetaTrader4 способна обслуживать свыше 10
000
трейдеров,
работающих
одновременно.
При
этом
на
сервере
обрабатываются десятки различных финансовых инструментов с годами
истории котировок [39].
С технической точки зрения торговая платформа MetaTrader4 также
выглядит более чем современной. Она использует последние достижения ITиндустрии и предлагает всѐ самое лучшее своим клиентам. Распределенная
42
архитектура, совершенная
мощнейший
система безопасности, мобильный
автоматический
трейдинг
–
наиболее
трейдинг,
отличительные
характеристик MetaTrader4 от подобных систем.
Несмотря на простоту интерфейса всех компонентов, MetaTrader4
обладает большим набором функций и является очень гибкой платформой. Она
позволяет контролировать все настройки групп трейдеров, финансовых
инструментов, баз данных, источников котировок и многого другого.
Платформа позволяет реализовать любую торговую стратегию в виде
торгового советника и передать ему полное управление над торговлей и
аналитикой, и освободить трейдера от рутины рыночного анализа. Для этого
существует встроенная среда разработки MetaEditor, которая даѐт возможность
создавать программы на С-подобном языке MQL4. Созданное таким образом
приложение можно использовать в своей торговле, опубликовать в библиотеке
бесплатных кодов или продавать в Маркете.
К
основным
мультивалютность
и
преимуществам
MetaTrader4
многоязыковую
поддержку,
можно
отнести:
экономичность
и
производительность, надежность и безопасность. Платформа поставляется с
открытыми
интерфейсами,
которые
позволяют
расширять
ее
функциональность, то есть разрабатывать средства технического анализа не
только в собственном редакторе, но в других платформах на практически
любом языке программирования, и интегрировать их в MetaTrader4. Кроме
того, здесь уже имеются готовые плагины, облегчающие различные аспекты
работы платформы.
Признанный эталон на рынке валютного интернет-трейдинга – это Ninja
Trader. Платформа является полнофункциональным продуктом от частной
американской компании с одноименным названием, базирующейся на Денвере.
NinjaTrader позволяет торговать не только на рынке Forex, но также и акциями,
форвардами, фьючерсами и опционами. Платформа стоит на вооружении у
сотен брокерских компаний во всем мире и предоставляет комплекс средств
43
рыночной аналитики, торгового моделирования и других средств «ручной» и
автоматической торговли на Forex, а также построения стратегий трейдинга.
Для
разработки
собственных
стратегий
используется
язык
программирования C#, однако сама среда для программирования поставляется
только в платной версии платформы, что сильно ограничивает функционал
трейдера.
Значительным минусом NinjaTrader является сложность визуального
восприятия и освоения интерфейса непрофессиональным трейдером, а также
достаточно высокая стоимость. Именно поэтому данная платформа теряет
популярность и вытесняется с рынка программного обеспечения [40].
–
cTrader
зарекомендовала
приложениями.
функциональная
себя
и
качественным
Использование
развивающаяся
платформа,
и
мобильными
Web-терминалом
прокси-сервера
даѐт
каждому
трейдеру
возможность подключения и работы практически из любой точки мира.
Торговая платформа ECN cTrader обеспечивает полный STP доступ к
валютному рынку Форекс профессиональным и начинающим трейдерам. В
торговой платформе ECN cTrader для обработки ордеров используется
технология сквозной обработки ордеров, которая позволяет торговать на
валютном рынке Форекс напрямую с ведущими мировыми банками. Кроме
того, среда дает возможность разработки собственных программ и скриптов на
языке C# для работы на валютном рынке. Однако, отсутствует возможность
интеграции с другими средами, что немаловажно для разработчика.
Основной минус данной платформы – это слабо развитая среда
разработок, а также отсутствие ряда значимых индикаторов, без которых работа
трейдера значительно усложняется.
Анализ
информационно-торговых
платформ
является
достаточно
сложным и обширным процессом. Здесь важно учитывать не только требования
разработчика к программной среде, но и другие факторы, такие как
возможности
дальнейшего
использования
44
советника,
нацеленность
на
конечного торговца, легкость применения советника в торговом терминале и
другие значимые для трейдера функции [40].
В
статьи
«Компьютерные
технологии
управления
выбором
информационно-торговой платформы на основе метода анализа иерархии» [38],
посвященной проблеме управления выбором оптимальной торговой платформы
для работы на рынке Форекс, рассматриваются пять наиболее известных
торговых платформ, включая рассмотренные выше среды, и их характеристики.
Для проведения анализа рассматривается один из самых популярных
методов в аналитическом планировании – метод анализа иерархии Саати,
который является замкнутой логической конструкцией, которая обеспечивает с
помощью
простых
многокритериальных
и
хорошо
задач,
обоснованных
включающих
как
правил,
решение
качественные,
так
и
количественные факторы [23].
На основе этого метода было разработано программное приложение,
которое обеспечило математически обоснованным принятием решения об
оптимальной торговой платформе для трейдера по пяти основным функциям:
сервис торговых сигналов, собственные торговые инструменты, мобильный
терминал, отображение нескольких инструментов на одном графике и
автономный
режим.
В
результате
анализа
по
данной
методике
предпочтительными для работы трейдера на рынке Форекс были выбраны
MetaTrader4 и Ninja Trader [22].
С
учетом
разработчика
требований
единственным
к
торгово-информационной
полнофункциональным
продуктом
платформе
является
MetaTrader4, который обладает встроенным редактором и с легкостью может
быть интегрирован с другой средой разработки. Еще одним важнейшим
преимуществом данной платформы для программиста является наличие полной
и подробной справки по работе во встроенном редакторе, с языком
программирования MQL4 (с большим количеством примеров и детальным
описание существующих функций, библиотек и т.д.), а также в целом в
терминале.
45
Необходимо отметить, что уже достаточно давно существует следующая
версия этого терминала – MetaTrader5 (MT5), однако она не достигла такой же
популярности, как предыдущая версия по ряду причин.
Одними из самых основных являются следующие:
терминал МТ5 не даѐт возможности открывать более одной позиции
по одному инструменту;
в терминале МТ5 нельзя использовать такие распространѐнные
методы торговли как мартингейл, усреднение, локирование;
язык программирования советников МТ5 намного сложнее, чем в
МТ4 и для решения торговых задач он избыточен;
МТ5 был заявлен как терминал для профессионалов, более мощный с
точки зрения функционала программирования. Однако, что 99,9% торгового
функционала языка МТ5 может быть успешно реализована в МТ4 менее
сложными программными средствами [40].
Из перечисленных недостатков проистекает ещѐ один: высокая
стоимость заказного программирования Форекс-советников. Это объясняется
тем, что сложность программирования выше, а востребованность среди
трейдеров крайне низкая.
3.2 Интерфейс выбора параметров эксперта
Интерфейс – совокупность средств и методов взаимодействия между
элементами системы и конечным пользователем [40].
Интерфейс является основной и наиболее важной частью программы,
так как управление программой пользователем должно быть интуитивно
понятным и полнофункциональным [40].
Прежде чем приступать к описанию пользовательского интерфейса,
необходимо
было
построить
модель
автоматизированной торговой системой.
46
дерева
функций,
выполняемых
Функция – это процесс, операция или действие, которые выполняются
над каким-либо объектом для достижения определенных целей [41].
Дерево функций автоматизированной торговой системы показано на
рисунке 3.1:
Функции торгового
эксперта
Служебные
Основные
Анализ ситуации на
рынке
Динамический
Stop Loss
Открытие
позиции на
покупку/продажу
Оптимизация
входных данных
Закрытие позиции
покупки/продажи
Рисунок 3.1 – Дерево функций
Таким образом, торговая система выполняет следующие функции:
основные функции, такие как: анализ ситуации на рынке, открытие
позиции на продажу/покупку и закрытие продажи и покупки.
служебные
функции:
динамический
ограничитель
убытков,
обеспечивающий безубыточность, а также оптимизация входных параметров за
определенный период.
Учитывая все описанные выше функции, была разработана схема
диалога взаимодействия трейдера с торговой системой. Схема диалога – это
обобщенный алгоритм диалога, то есть необходимая последовательность
обмена данными между пользователем и системой [41]. Для эффективной
47
работы советника пользователю необходимо пройти все этапы работы,
описанные в диалоге (см. рисунок 3.2).
Рабочее поле
Установка
входных
параметров
Тестирование
советника
Оптимизация
входных
параметров
Установка
и удаление
советника
Период
Настройка
советника
Значение
«Старт»
Настройка
советника
Открытие
графика
Значение
«Шаг»
Присоединение
к графику
Формирование
выходных форм
тестирования
Значение
«Стоп»
Удаление с
графика
Таймфрейм
Отклонение
Доп.
параметры
Рисунок 3.2 – Схема диалога взаимодействия пользователя с системой
По умолчанию советник выставляет входные данные, которые будут
оптимизированы на этапе разработки. Исходя из этого, обязательным условием
работы торговой системы является установка и удаление советника, которое
включает настройку эксперта, присоединение и удаление с графика.
Тестирование советника на исторических данных и оптимизация
параметров будет выполняться в тестере стратегий, интерфейс которого
изображен на рисунке 3.4.
Здесь пользователю необходимо выбрать валютную пару, модель
тестирования, временной промежуток для тестирования, а также тайм фрейм и
спред и нажать кнопку «Старт» для запуска тестера. При необходимости
трейдер может визуализировать процесс открытия сделок на графике или
открыть готовый итоговый график со сделками. После тестирования
48
пользователь может оптимизировать параметры, выбрав соответствующую
функцию и повторно нажав кнопку «Старт».
Рисунок 3.3 – Интерфейс тестера стратегий
На рисунке 3.4 изображено окно для установки пользователем входных
параметров и параметров оптимизации (свойства эксперта), полностью
соответствующее требованиям схемы диалога.
Рисунок 3.4 – Интерфейс ввода параметров
Для совершения операций в реальном времени достаточной выбрать
советника в окне навигации, указать пункт «Присоединить к графику» и
подтвердить разрешение на автоматическую торговлю (см. рисунок 3.5).
49
Рисунок 3.5 – Разрешение советнику торговать
Для удаления с графика или просмотр свойств советника необходимо
выбрать настройки графика, раскрыть список советников и нажать кнопку
«Удалить» или «Свойства».
3.3 Описание функций автоматизированной торговой системы
Следующим этапом являлась разработка функций, выполняемых
торговым экспертом. Но прежде всего, необходимо было рассмотреть, как
устроена программа в целом редакторе MetaEditor на языке MQL4.
Правило программирования на языке MQL4 состоит в следующем: код
программы должен быть расположен внутри функций.
Это значит, что программные строки, находящиеся за пределами
функций, не могут быть исполнены. При попытке компиляции такой
программы редактор MetaEditor выдаст соответствующее сообщение об
ошибке, и исполняемый файл в результате компиляции получен не будет.
В MetaTrader4 различают три типа функций - специальные, стандартные
(встроенные, предопределѐнные) и пользовательские [33].
В языке MQL4 имеется всего 3 специальные функции [33]. Они имеют
предопределѐнные имена:
init(), start() и deinit(), которые запрещено
использовать для названия других функций, поскольку вызываются при запуске
инициализации и деинициализации.
50
Стандартные функции – это ряд функций, описание которых не
требуется при написании программ, так их код заранее разработан и встроен в
среду.
В ряде случаев программисты создают и используют в работе свои
собственные функции. Эти функции называются пользовательскими и
применяются в программах с использованием и описания, и вызова функции.
Таким образом, с помощью мастера MQL был создан советник, с
параметрами, предложенными по умолчанию (рисунок 3.6). После этого в
редакторе вызывались обработчики событий для специальных функций:
OnInit(), OnDeinit(), OnTick().
Рисунок 3.5 – Создание советника
Событие Init генерируется сразу после загрузки. Функция OnInit()
используется для инициализации параметров эксперта. Функция OnDeinit()
вызывается при деинициализации и является обработчиком события Deinit.
Событие NewTick генерируется только для экспертов при поступлении
нового тика по символу, к графику которого прикреплен эксперт. Функция
OnTick также вызывает с приходом каждого нового тика. Именно в ней будут
происходить проверки условий открытия и закрытия позиций.
В результате был разработан ряд пользовательских функций, таких как:
bool MA(string Sym);
51
bool body(string Sym);
bool Close_MACD();
bool controll_orders();
void controll_bars();
double StopLoss();
void buy();
void sell();
void close_buy();
void close_sell().
Функция
bool
MA(string
Sym)
предназначена
для
определения
взаиморасположения скользящих средних. Входным параметрам является имя
символа, то есть название валютной пары. Функция возвращает флаг «Истина»,
если скользящая средняя с меньшим периодом выше скользящей средней с
большим периодом, а флаг «Ложь» – при обратном соотношении.
Функция bool body(string Sym) необходима для определения сильного
скачка вверх или вниз. Также, как и описанная выше функция, она принимает
во входных параметрах имя символа, возвращает флаг «Истина», когда
произошел скачек вверх и «Ложь» – когда вниз. В качестве сигнала
используется пробитие свечей линий индикатора Envelopes, а также изменение
цены на заданное число пунктов.
Функция
bool
Close_MACD()
определяет
взаиморасположение
сигнальной и главной линии индикатора MACD на валютной паре графика, к
которому будет присоединен эксперт. В данном случае – это валютная пара
EURUSD. Возвращает флаг «Истина», если сигнальная линий ниже главной, то
есть при поступлении сигнала на закрытие короткой позиции. Если сигнальная
линия ниже главной – возвращает флаг «Ложь».
Функция bool controll_orders() необходима для контроля открытых
ордеров. Возвращает «Истина», когда количество открытых ордеров строго
меньше 5 и «Ложь» – когда больше 5.
52
Для того чтобы все вычисления в обработчике событий OnTick
выполнялись
после
формирования
бара
на
графике
валютной
пары,
используется функция void controll_bars().
Для получения значения максимального уровня убытка используем
функцию double StopLoss(), которая вычисляет параметры усредненной свечи
на некотором диапазоне свечей и возвращает это значение в качестве Stop Loss.
Функции открытия короткой и длинной позиции являются наиболее
важными и будут вызывать часть описанных ранее функций.
Функция void sell() предназначена для открытия продажи. В первую
очередь она проверяет флаг, возвращаемый функцией контроля открытых
позиций controll_orders(). Если флаг равен «Истина», то вызывается функция
вычисления стоп-лосса и открывается продажа по последней известной цене
покупки. В противном случае пользователь получит сообщение, о том, что
число открытых ордеров больше 5.
Функция открытия покупки void buy() выполняет такие операции, как
описанная выше функция открытия продажи, но только по последней известной
цене продажи.
Функции закрытия продажи и покупки (void close_sell(), void
close_buy()) просматривают все открытые ордера по позиции и закрывают их по
последним известным ценам покупки и продажи соответственно.
Далее были описаны содержание обработчиков событий специальных
функций.
В обработчике событий OnInit() происходит инициализация описанных
переменных, в данном случае это переменная, отвечающая за значение скачка
на графике.
Все описанные выше пользовательские функции последовательно
вызываются обработчиком OnTick(). Прежде всего, необходимо было создать
строковые переменные для обозначения символов 4 валютных и флаги,
отвечающие за возврат значений вызванных функций. Далее вызывалась
функция контроля баров для работы со сформировавшимися свечами, а для
53
каждой валютной пары функции – body(), MA() и close_MACD(), значения
которых присваивались созданным флагам. После этого проверялось наличие
денежных средств на счете, а также количество сформированных графиков на
графике. Для совершения любой сделки их должно быть больше 100. При
отсутствии депозита на счете выводится системное сообщение об этом.
Следующим шагом прописывалось значения флагов для открытия короткой и
длинной позиции. Если условие выполнилось, то вызываются соответственно
функции открытия продажи и покупки. Далее проверялось условие закрытие
позиции по флагу, значение которого было получено вызовом функции
close_MACD(). Если условие выполнилось – позиции закрываются с помощью
соответствующих функций.
Листинги всех функций, объединенные в единую программу, находятся
в приложении В.
3.4 Проверка работоспособности разработанной торговой системы
После разработки всех необходимых функций советника и их
объединения
в
единую
программу
необходимо
было
проверить
работоспособность и эффективность механической торговой системы на
исторических
данных.
Тестирование
дает
возможность
приступить
к
автотрейдингу, зная об особенностях поведения эксперта в различных
рыночных условиях.
Прежде чем приступать к тестированию советников, необходимо
произвести настройку. Это означает, что следует [40]:
выбрать советник и задать его входные параметры;
выбрать финансовый инструмент и его период;
выбрать один из трех способов моделирования баров;
задать временной диапазон тестирования (необязательно).
На
рисунке
3.6
изображен
процесс
настройки
советника
для
тестирования. Стоит учесть, что нельзя выбрать любой файл советника. Здесь
54
могут быть только доступные в клиентском терминале эксперты. Для этого они
должны быть скомпилированными [33].
Рисунок 3.6 – Настройка советника перед тестированием
После того как выбран советник, необходимо провести дополнительную
настройку тестирования и входных параметров. Этот процесс осуществлялся
нажатием кнопки "Свойства эксперта".
Здесь задаются общие параметры тестирования. К ним относятся объем
и валюта начального депозита, которые указываются в одноименных полях.
Именно этим депозитом будет оперировать советник при тестировании. В этой
вкладке также выбираются типы открываемых при тестировании позиций [42]:
Only Long - открывать только длинные позиции;
Only Short - только короткие;
Long and Short - открывать позиции в обе стороны.
Каков бы ни был алгоритм советника, он будет открывать позиции
только в заданных направлениях. Выбранные свойства эксперта изображены на
рисунке 3.7.
Для начала тестирования достаточно нажать кнопку «Старт». После
завершения тестирования есть возможность просмотреть его результаты во
вкладках: "График", " Результаты ", "Отчет" и "Журнал".
55
Рисунок 3.7 – Выбранные свойства эксперта
Но прежде всего, необходимо было открыть график и проверить точки
входа и выхода из рынка. На рисунке 3.8 изображен график открытия и
закрытия длинных позиций.
Рисунок 3.8 – Открытие ордеров на покупку
По рисунку 3.8 видно, что свеча, предшествующая свече открытия
первого ордера, делает достаточно большой скачек вверх и пробивает ценовой
коридор, заданный индикатором Envelopes, а также скользящая средняя с
меньшим периодом расположена выше скользящей средней с большим
периодом на графике валютной пары EURUSD.
Результаты выполнения подобных условий на других графиках
проверялись по значениям флагов в журнале, представленном на рисунке 3.9.
56
Отсюда следует, что советник верно определил точку открытия покупки
и выставил стоп-лосс, изображенный на рисунке 3.8 в виде маленькой красной
линии под баром открытия. Так как эти условия также выполняются на ряде
следующих свечей, покупки открываются еще, пока количество открытых
ордеров не превысит 5.
Рисунок 3.9 – Просмотр значений флагов в журнале
Также по рисунку 3.8 видно, что все сделки закрылись, как только
сигнальная линия индикатора MACD стала выше главной линии, что
полностью соответствует алгоритму системного скальпирования.
Во вкладке «Результаты» были получены данные о прибыли или убытке
по совершенным операциям, тип открытого ордера, объем, цену и значение
стоп-лосс торговой сделки, а также текущий баланс (см. рисунок 3.10).
Рисунок 3.10 – Просмотр результатов тестирования
Подобным же образом необходимо было убедиться в том, что
выполняются все условия для открытия сделки на продажу валюты. Для этого
проанализировали рисунок 3.11.
57
Рисунок 3.11 – Открытие ордеров на продажу
В соответствии алгоритму сделка на продажу открылась в тот момент,
когда произошел скачек цены вниз и бар вышел за границы нижней линии
ценового коридора на финансовом инструменте EURUSD. Советник также
выставил стоп-лосс, отмеченный короткой чертой на уровне значения средней
из 10 последних свечей.
Количество
открытых
сделок
удовлетворяет
условию
контроля
открытых позиций. В журнале проверили значения флагов на других
финансовых
инструментах
для
подтверждения
использования
системного скальпирования (см. рисунок 3.12).
Рисунок 3.12 – Просмотр значений флагов в журнале
58
метода
Закрытие продажи произошло после получения сигнала о том, что
сигнальная
линия
индикатора
MACD
стала
ниже
главной
линии,
представленной в виде контура гистограммы (см. рисунок 3.11).
Во
вкладке
«Результаты»
вывелась
информация
о
свойствах
совершенных сделках на продажу валюты и состоянии баланса (см. рисунок
3.13).
Рисунок 3.13 – Просмотр результатов тестирования
Во вкладке "Отчет" были представлены обобщенные результаты
тестирования советника и некоторые ключевые показатели. Такие отчеты
позволяют быстро сравнивать между собой различные эксперты. В отчетах
публикуются большое количество статистических данных, но наиболее
важными являются следующие:
начальный депозит – объем начального депозита;
чистая прибыль – финансовый результат всех сделок. Этот
показатель представляет собой разность "Общей прибыли" и "Общего убытка";
общая прибыль – сумма всех прибыльных сделок в денежных
единицах;
общий убыток – сумма всех убыточных сделок в денежных
единицах;
прибыльность – отношение общей прибыли к общему убытку в
процентах. Единица означает, что сумма прибылей равна сумме убытков;
матожидание выигрыша – математическое ожидание выигрыша.
59
абсолютная просадка
– наибольший
убыток ниже значения
начального депозита;
максимальная просадка – наибольший убыток от локального
максимума в валюте депозита и в проценте от депозита;
относительная просадка – наибольший убыток в процентах от
максимального значения баланса и соответствующая ему денежная величина;
всего сделок – общее количество торговых позиций;
короткие позиции (% выигравших) – количество коротких позиций и
процент прибыльных коротких позиций;
длинные позиции (% выигравших) – количество длинных позиций и
процент прибыльных длинных позиций;
прибыльные сделки (% от всех) – количество прибыльных торговых
позиций и их доля в общем количестве сделок, в процентах;
убыточные сделки (% от всех) – количество убыточных торговых
позиций и их доля в общем количестве сделок, в процентах [41].
На
рисунке
3.14
представлен
отчет,
сформировавшийся
после
тестирования советника на исторических данных в период с 01.06.2015 года до
01.06.2016 года. Начальный депозит составил 1500 долларов (по текущему
курсу 66,85 рублей за доллар – 100275 рублей), общая прибыль составила 5998
долларов (400966,3 рублей) чистая прибыль – 2348,7 долларов (156963,8
рублей) прибыльность – 1,64, абсолютная просадка – 888,8 (59416,28 рублей),
количество совершенных сделок – 67.
Исходя из этих данных, был сделан вывод о прибыльности советника,
однако стоит учесть, что абсолютная просадка достаточно высока, а количество
совершенных сделок минимально. Это говорит о том, что существуют высокий
риск потерь, связанный с ожиданием открытия следующей сделки.
60
Рисунок 3.14 – Отчет с результатами тестирования советника
Во вкладке "График" автоматически сформировался график состояния
баланса счета (синяя линия — "Баланс") и общего состояния счета с учетом
открытых позиций (зеленая линия — "Средства").
Если на графике отображается лишь одна линия баланса, значит, линии
"Баланс" и "Средства" совпадают на всем протяжении тестирования. График
позволяет более наглядно отследить динамику результатов торговли при
тестировании. Если в процессе тестирования происходило изменение размера
лотов, в нижней части графика также появляется гистограмма изменения лотов.
На
рисунке
3.15
изображен
график
состояния
баланса
после
тестирования советника, который показывает, что большую часть времени
эксперт совершает прибыльные сделки, но в начале 2016 года наблюдается
сильная просадка, которая достаточно сильно отражается на балансе счета.
Рисунок 3.15 – График состояния баланса
Чтобы устранить эти минусы, а также сделать график более
сглаженным, необходимо уменьшить просадку и увеличить количество
совершаемых сделок. Для этого была произведена оптимизация всех входные
61
параметров эксперта, при этом алгоритм системного скальпирования не был
нарушен [39].
Прежде всего, оптимизации подлежали период усреднения вычисления
индикатора Envelopes, количество баров для вычисления средней свечи и
коэффициент для установки значения Stop Loss.
В окно свойств эксперта были введены входные параметры для
оптимизации, то есть стартовое значение, шаг и конечное значение (см.
рисунок 3.16).
Рисунок 3.16 – Ввод параметров оптимизации
Оптимизация представляет собой последовательные прогоны одного и
того же советника с различными входными параметрами на одних и тех же
данных. При этом можно подобрать такие параметры, при которых
эффективность
советника
будет
максимальной.
Терминал
обладает
встроенными средствами, позволяющими автоматизировать этот процесс [39].
Прежде
чем
приступать
к
оптимизации
параметров
необходимо было произвести настройку, то есть:
выбрать советника и задать его входные параметры;
выбрать финансовый инструмент и его период;
выбрать один из трех способов моделирования баров;
62
советника,
задать временной диапазон для оптимизации (необязательно).
Результатом оптимизации является отчет, представленный на рисунке
3.17,
который
показывает
количество
совершенных
сделок,
прибыль,
прибыльность и другие параметры.
Рисунок 3.17 – Результаты оптимизации советника
Таким образом, самые лучшие результаты показал проход №4197 со
следующими значениями:
периодом усреднения вычисления индикатора Envelopes – 17;
количество баров для вычисления средней свечи – 18;
коэффициент для установки значения Stop Loss коротких и длинных
позиций – 2 и 1,2 соответственно.
Количество совершенных сделок увеличилось с 67 до 152, а чистая
прибыль значительно выросла с 2348,7 до 3050,1 долларов, то есть на 46888,59
рублей. Следовательно, прибыльность советника также изменила свое значение
с 1,14 до 1,30.
Далее было проведено тестирование советника с указанными выше
параметрами и проанализирон график изменения баланса, изображенный на
рисунке 3.18.
63
Рисунок 3.18 – График состояния баланса после оптимизации
В результате график баланса стал более сглаженным, а просадка
значительно уменьшилась.
Для наиболее эффективного использования предоставленных данных
после тестирования советника была разработана выходная форма в виде
таблицы MS Excel 2007, которая позволяет фильтровать и сортировать данные
по значению выбранного поля, считать прибыль, полученную в результате
совершения нескольких сделок, закрытие которых произошло одновременно, а
также строить диаграммы по полученным данным.
На рисунке 3.19 представлена отфильтрованная таблица, содержащая
данные о сделках, которые были закрыты 11.05.2016 г. в 21:15 по московскому
времени, а также полученная по ним общая прибыль, которая составила 460
долларов (30751 рубль). Стоит отметить, что торговая платформа MetaTrader4
не
оснащена
анализировать
никакими
графики
дополнительными
и
проводить
средствами,
дополнительные
результатами тестирования и оптимизации.
Рисунок 3.19 – Выходная форма с данными
64
позволяющими
манипуляции
с
Гистограмма изменения уровня Stop Loss отфильтрованных выше
сделок изображена на рисунке 3.20. В результате трейдер легко может сделать
вывод о том, что цена в этот промежуток времени достаточно сильно росла, так
как значение средней свечи на момент открытия нового ордера постоянно
росло.
Рисунок 3.20 – Гистограмма изменения уровня Stop Loss
Таким образом, в данном разделе были описаны этапы реализации
автоматизированной
скальпирования:
торговой
системы
обоснование
выбора
на
основе
среды
метода
разработки,
системного
описание
программных функций и интерфейса выбора параметров эксперта.
Кроме того, было произведено тестирование торговой системы на
исторических данных, которое помогло выявить основные недостатки. С
помощью оптимизации входных параметров эти недостатки были устранены. В
результате был сделан вывод о прибыльности и эффективности разработанного
торгового эксперта.
65
3.5 Оценка экономической эффективности
Экономическая
эффективность
–
показатель,
определяемый
соотношением экономического эффекта (результата) и затрат, породивших этот
эффект (результат) [43].
Себестоимость создания автоматизированной информационной системы
определялась по следующим статьям калькуляции:
основная заработная плата производственного персонала;
отчисления на социальные нужды;
затраты на электроэнергию;
затраты на амортизацию и ремонт вычислительной техники;
накладные расходы [44].
В первую очередь был произведен расчет затрат на оплату труда
разработчиков, участвующих
в создании
автоматизированной
торговой
системы. При расчете затрат на оплату труда необходимо было произвести
оценку трудоемкости разработки календарным методом.
Данные о трудоемкости разработки представлены в таблице 3.1.
Таблица 3.1 – Оценка трудоемкости разработки
№
Наименование этапа
Трудоемкость, часы
1
Исследование рынка и деятельности трейдера на рынке
Форекс
Исследование существующих методов получения прибыли
на рынке Форекс
Выбор методов и средств разработки автоматизированной
торговой системы
Исследование метода и разработка алгоритма системного
скальпирования
Программная реализация разработанного алгоритма
25
Тестирование и оптимизация разработанного торгового
советника
40
2
3
4
5
6
Итого:
30
20
35
20
170
66
Исходя из таблицы 3.1, трудоемкость подобной разработки составила
170
часов
или
Среднемесячный
22
рабочего
фонд
дня
рабочего
при
восьмичасовом
времени
рабочем
разработчика
166,25
дне.
часов,
среднемесячная заработная плата 25000 рублей [44].
Расчет основной заработной платы ( З осн ) производился по формуле 3.1.
Зосн
где
Зср
Фср
*Ч ,
(3.1)
З ср – среднемесячная заработная плата;
Ф ср – среднемесячный фонд рабочего времени;
Ч – это количество отработанных часов [44].
В соответствии с формулой 3.1 основная заработная плата разработчика
составила 25564 рубля.
В соответствии с Федеральным законом от 24 июля 2009 года N 212-ФЗ
"О страховых взносах в Пенсионный фонд РФ, Фонд социального страхования
РФ,
Федеральный
территориальные
фонд
фонды
обязательного
обязательного
медицинского
медицинского
страхования
и
страхования"
(в
редакции Федерального закона от 03.12.2011 № 379-ФЗ) страховой взнос
составляет 30% от дохода, который вычисляется по формуле 3.2:
СВ Зосн * Р,
где
(3.2)
З осн – основная заработная плата;
Р – размер страхового взноса на социальные нужды [44].
Итоговые отчисления на социальные нужды составили 7669,2 рублей, а
основная заработная плата разработчика с учетом отчислений – 17894,8.
Затраты на электроэнергию вычислялись по формуле 3.3:
Cээ Н ч *Ч * Т ч ,
67
(3.3)
где
Н ч – норма потребления электроэнергии за час;
Ч – количество рабочих часов электроприборов;
Т – тарифный план за использование 1 КВт/ч.
Затраты на использование электроэнергии стационарным компьютером
и монитором с мощностями 0,07 КВт/ч и 0,04 КВт/ч, тарифным планом – 3,53
рублей за 1 КВт за 170 часов работы составили 66,01 рублей.
К накладным расходам были отнесены расходы на все виды связи, в том
числе на широкополосный доступ к сети Интернет, стоимость которого
составляет 450 рублей в месяц за 100 Мбит/с, а также месячная лицензия
Microsoft Excel 2007 – 269 рублей.
Амортизация – процесс постепенного переноса стоимости средств
производства на производимый продукт [44].
Амортизационные отчисления – постепенное возмещение износа
основных фондов в стоимостном выражении [45].
Расчет
амортизационных
отчислений
по
компьютерной
технике
вычислялся исходя из нормы амортизации, установленной в зависимости от
нормативного срока использования компьютерной техники. Для стационарного
компьютера
предполагаемый
срок
использования
5
лет,
а
процент
амортизационных отчислений в год составил 20%. Первоначальная стоимость
компьютера устанавливалась исходя из средней стоимости с учетом расходов
на доставку, установку и монтаж (35200 рублей), а годовой фонд рабочего
времени в часах, исходя из нормы рабочего времени на 2016 год (1974 час).
Расчет амортизационных отчислений вычислялся по формуле 3.4:
АО
где
С п * П АО
* Фср ,
Фг
C п – первоначальная стоимость компьютера;
П АО – процент амортизационных отчислений в год;
68
(3.4)
Фг – годовой фонд рабочего времени в часах за 2016 год;
Ф ср – среднемесячный фонд рабочего времени [45].
Таким образом, амортизационные отчисления составили 606,28 рублей.
На основе произведенных расчетов по отдельным статьям калькуляции
была составлена таблица 3.2.
Таблица 3.2 – Калькуляция себестоимости
№
Наименование статей затрат
Сумма (руб.)
1
Затраты на оплату труда работников
17894,80
− 2 − Отчисления на социальные нужды
7669,20
3
Накладные расходы
719,00
4
Амортизационные отчисления
606,28
5
Электроэнергия
66,01
Итого:
26995,29
В результате себестоимость автоматизированной торговой системы
составила 26995,29 рублей.
Критерием
эффективности
создания
и
внедрения
прикладных
программных продуктов является ожидаемый годовой экономический эффект,
получаемый потребителем программы. Чистая прибыль от использования
продукта за год определялась по формуле 3.5:
П Рг З г ,
где
Pг
(3.5)
– стоимостная оценка результатов применения программного
продукта в течение года;
З г – стоимостная оценка затрат при использовании программного
продукта [45].
Результатом применения торгового советника за 1 год является чистая
прибыль (за вычетом общей просадки), которая по результатам тестирования
69
составила 203899,185 рублей (3050,1 долларов по текущему курсу 66,85 рублей
за 1 доллар).
Для оценки стоимостных затрат рассчитаем следующие показатели:
основную заработную плату персонала;
отчисления на социальные нужды;
затраты на электроэнергию;
затраты на амортизацию и ремонт вычислительной техники;
накладные расходы.
Так как разработанная торговая система полностью автономна, то
деятельность трейдера будет заключаться в установке советника на график
финансового инструмента, настойке его входных параметров в начале года, а
также удалении с графика советника в конце года для подсчета прибыли и
убытков. Таким образом, трудоемкость работ трейдер за год составит 40 часов.
Исходя из формулы 3.1 и среднемесячной заработной плате трейдера 35000
рублей, общая заработная плата за год составит 8421 рублей.
Итоговые отчисления на социальные нужды составили 2526,3 рубль (см.
формулу 3.2), а основная заработная плата трейдера с учетом отчислений за год
– 5894,7 рублей.
Затраты на использование электроэнергии стационарным компьютером
и монитором с мощностями 0,07 КВт/ч и 0,04 КВт/ч, тарифным планом – 3,53
рублей за 1 КВт, а также фондом рабочего времени 1974 часа за год работы
вычислялись по формуле 3.2 составили 766,5 рублей.
Амортизационные отчисления за год составили 8000 рублей (см.
формулу 3.3) с первоначальной стоимостью компьютера в размере 40000
рублей и 20% процентами амортизационных отчислений в год.
Накладные расходы представлены суммой годового обслуживания сети
Интернет (5400 р) и годовой лицензии на текстовый процессор MS Excel 2007
(2699 рублей).
70
Таким образом, суммарные затраты за год использования торгового
эксперта составили 25286,5 рублей. Чистая прибыль от использования продукта
за год была получены исходя из формулы 3.5 и еѐ величина – 178612,7 рублей.
Для вычисления срока окупаемости использовалась формула 3.6,
значение которого составило 0,15 года (менее 2-х месяцев).
СО K 0 / C ,
где
(3.6)
K 0 – сумма первоначально вложенных средств;
C – годовые поступления от внедрения системы.
Следовательно,
разработанный
программный
продукт
является
экономически эффективным, так как прибыль от использования за год
существенно превышает затраты за год использования торгового советника.
Кроме того, чистая прибыль за первый же год покроет себестоимость
разработки, а срок окупаемости автоматизированной торговой системы –менее
2-х месяцев.
71
ЗАКЛЮЧЕНИЕ
Одним из самых перспективных и быстроразвивающихся направлений
деятельности является трейдинг. Под этим термином понимают деятельность
по заключению сделок на финансовых рынках, основной целью которой
является извлечение прибыли. Трейдер исследует сложившуюся ситуацию на
финансовом рынке, опираясь на технический и фундаментальный анализ,
позволяющий спрогнозировать направление движение валюты.
На сегодняшний день мировой валютный рынок Forex является
наиболее популярным и многофункциональным. Он позволяет заключать
сделки, используя интернет, спутниковую связь, мобильные устройства и
множество других технологий, которые дают возможность делать это в любой
точке земного шара в любой момент времени.
Трейдер находится под постоянным эмоциональным давлением, что
приводит к снижению оперативности принятия решений и увеличению потерь.
Для предотвращения негативного влияния эмоций, а также с целью получения
прибыли, было решено автоматизировать деятельность трейдера путем
создания торгового советника.
В процессе достижения поставленной цели были решены следующие
задачи:
исследованы
теоретические
основы
валютного
рынка
и
математические средства технического анализа;
произведен анализ деятельности трейдера на рынке Форекс и
выявлены существующие недостатки;
спроектированы структурно-функциональные модели деятельности
трейдера «КАК ЕСТЬ» и «КАК ДОЛЖНО БЫТЬ»;
проанализированы методы получения прибыли на рынке Форекс;
исследован метод системного скальпирования;
разработан алгоритм системного скальпирования;
72
разработана автоматизированная торговая система на основе метода
системного скальпирования;
произведено
тестирование
и
оптимизация
разработанного
программного продукта;
произведена оценка экономической эффективности.
Разработанный
программный
продукт
является
экономически
эффективным, так как чистая прибыль от использования советника за год
превышает затраты на использование торговой системы и уже за 2 месяца
покрывает еѐ себестоимость.
Дальнейшее
использование
усовершенствование
торгового
советника
предполагает
реализации метода системного скальпирования с
использованием различных видов индикаторов и других средств технического
анализа, таких как свечные паттерны, позволяющие более точно определить
откаты на графике валютной пары.
Одним из перспективных направлений также является удаленное
управление действиями торговой системы, которое в большинстве случаев
выполняется с помощью ботов в приложениях обмена сообщениями (Telegram)
или социальных сетях.
73
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1 ГОСТ 7.32-2001 Отчет о научно-исследовательской работе. Структура
и правила оформления [Текст]. - М.: Изд-во стандартов, сор. 2001. - 26 с. (Система стандартов по информации, библиотечному и издательскому делу).
2 ГОСТ
7.1-2003
Библиографическая
запись.
Библиографическое
описание [Текст]. - М.: Изд-во стандартов, сор. 2004. - 170 с. - (Система
стандартов по информации, библиотечному и издательскому делу).
3 Буренин, А.Н. Рынок ценных бумаг и производство финансовых
инструментов [Текст] / А. Н. Буренин. - Москва: Научно-техническое общество
им. С. И. Вавилова, 2012. - 418 с.
4 Жуков, Е.Ф. Рынок ценных бумаг [Текст]: комплексный учебник /
Е.Ф. Жуков, Н.П. Нишатов, В.С. Торопцов. - М.: Вузовский учебник, 2012. 254 c.
5 Петров, Г.А. Форекс от первого лица [Электронный ресурс] /
Г.А. Петров, Б.Н. Шилов, А.В. Ведихин. – М.: СмартБук, 2012. – 408 с.
6 Чалдаева, Л.А. Рынок ценных бумаг [Текст]: учебник для бакалавров /
Л.А. Чалдаева, А.А. Килячков. - М.: Юрайт, 2012. - 857 c.
7 Финансовые рынки [Электронный ресурс]: учебник для вузов / ред.
С.В. Брюховецкая, Б.Б. Рубцова. – М.: Финансовый университет, 2013. – 205 с.
8 Щеглова, Н.Г. Валютный рынок и валютные операции [Текст] / Н.Г.
Щеглова. – М.: ФПА, 2015. – 157 с.
9 Панфилов, П.Е. Прогнозирование курсов валют на рынке FOREX
[Электронный ресурс] / П.Е. Панфилов - М.: Юрайт, 2013. - 256 c.
10 Кан, М. Технический анализ [Электронный ресурс] / М. Кан – СанктПетербург: Питер, 2013. - 145 c.
11 Ямкин, В.Н. Финансовый дилинг. Технический анализ [Электронный
ресурс] / В.Н. Ямкин – Санкт-Петербург: Питер, 2012. - 225 c.
74
12 Лука, К. Применение технического анализа на мировом валютном
рынке FOREX [Электронный ресурс] / К. Лука – Санкт-Петербург: Питер, 2011.
- 218 c.
13 Найман, Э. Малая энциклопедия трейдера [Электронный ресурс] /
Э. Найман - М.: СмартБук, 2012. - 305 c.
14 Бенсигнор, Р. Новое мышление в техническом анализе [Электронный
ресурс] / Р. Бенсигнор - М.: СмартБук, 2015. - 256 c.
15 Твид, Л. Психология финансов [Электронный ресурс] / Л. Твид –
Санкт-Петербург: Питер, 2016. - 332 c.
16 Гахов,
Р.П.
Компьютерное
моделирование
экономических
процессов [Текст]: учебное пособие для студентов вузов / Р.П. Гахов,
Н.В. Щербинина - Белгород: ИД Белгород, 2014. - 88 с.
17 Маторин, С.И. Теория систем и системный анализ [Электронный
ресурс] / С.И. Маторин, О.А. Зимовец - Белгород: ИД Белгород, 2012.
18 Ломакин, В.В. Программирование и программное обеспечение
информационных технологий [Электронный ресурс] / В.В Ломакин – НИУ
БелГУ. - Белгород, 2014.
19Никулина, Е.В. Финансовое законодательство [Электронный ресурс]:
учебное пособие / Е. В. Никулина - Белгород, 2015.
20 Маклаков, С.В. Моделирование бизнес-процессов с BPwin 4.0
[Текст] / С.В. Маклаков. – М.: ДИАЛОГ-МИФИ, 2013. – 224 с.
21 Гахов, Р.П. Методы и средства проектирования информационных
систем и технологий: Учебно-методический комплекс [Электронный ресурс] /
Р.П. Гахов – НИУ БелГУ. - Белгород, 2013.
22 Колокольникова, А.И. Компьютерное моделирование финансовой
деятельности: Учебное пособие: [Электронный ресурс] / А.И. Колокольникова Москва: Директ-Медиа, 2013. - 164 с.
23 Репин,
В.И.
Бизнес-процессы.
Моделирование,
внедрение,
управление [Электронный ресурс] / В.И. Репин - Москва: Флинта, 2013. - 480 с.
75
24 Кузнецов, Б.Т. Математические методы
финансового
анализа
[Электронный ресурс]: учебное пособие / Б.Т. Кузнецов. - Москва: ЮнитиДана, 2012. - 160 с.
25 Золотов,
С.Ю.
Проектирование информационных систем
[Электронный ресурс]: учебное пособие / С. Ю. Золотов - Томск: Эль Контент,
2013. - 88 с.
26 Гахова, Н.Н. Инструментальные средства информационных систем
[Электронный ресурс] / Н.Н. Гахова - Белгород: НИУ БелГУ, 2012. - Режим
доступа: http://pegas.bsu.edu.ru/course/view.php?id=5188
27 Колби,
Р.
Энциклопедия
технических
индикаторов
рынка
[Электронный ресурс] / Р. Колби - М.: СмартБук, 2013. - 302 c.
28 Бенсигнор, Р. Новое мышление в техническом анализе. Бесценные
торговые модели великих мастеров [Электронный ресурс] / Р. Бенсигнор - М.:
СмартБук, 2014. - 219 c.
29 Катс, Д. Энциклопедия торговых стратегий [Электронный ресурс] /
Д. Катс - Москва: Флинта, 2012. - 415 c.
30 Сафонов, В.Н. Трейдинг. Дополнительное измерение принятия
решений [Электронный ресурс] / В.Н. Сафонов – Санкт-Петербург: Питер,
2015. - 198 c.
31 Якимкин,
В.А.
FOREX.
Как
заработать
большие
деньги
[Электронный ресурс] / Якимкин В.А. - М.: СмартБук, 2013. - 225 c.
32 Морозов, И. FOREX от простого к сложному. Новые возможности с
клиентским терминалом MetaTrader [Электронный ресурс] / И. Морозов,
Р. Фатхуллин. - М.: СмартБук, 2016. - 425 c.
33 Ковалев, С. Программирование на алгоритмическом языке MQL4
[Электронный ресурс]/ С. Ковалев – Электрон. текстовые дан. – Москва: [б.и.],
2015. – Режим доступа: https://book.mql4.com/ru, свободный.
34 Лин, К. Дейтрейдинг на рынке Forex. Стратегии извлечения прибыли
[Электронный ресурс] / К.Лин - Москва: Флинта, 2015. - 408 c.
76
35 Дил, Р. Стратегии дейтрейдера в электронной торговле [Электронный
ресурс] / Р. Дил - М.: СмартБук, 2012. - 203 c.
36 Фридфертиг, М. Электронная внутридневная торговля ценными
бумагами [Электронный ресурс] / М. Фридфертиг, Д. Уэст - М.: СмартБук,
2013. - 332 c.
37 Максимов, В. Основы успеха валютных спекуляций. Как научиться
зарабатывать на курсовой разнице ведущих мировых валют [Электронный
ресурс] / В. Максимов - Москва: Флинта, 2012.
38 Компьютерные
технологии
в
моделировании,
управлении
и
экономике [Электронный ресурс]: сборник материалов VIII-ой межвузовской
научно-практической конференции / ред. проф. А.В. Полянина – Орел:
Издательство ОФРАНХиГС, 2016. – 264 с.
39 Пардо, Р. Разработка, тестирование и оптимизация торговых систем
[Электронный ресурс] / Р. Пардо – Санкт-Петербург: Питер, 2012.
40 Румбешт, В.В. Программная инженерия [Электронный ресурс]:
учебно-методический комплекс / В. В. Румбешт - Белгород, 2013.
41 Синицын,
С.В.
Верификация
программного
обеспечения
[Электронный ресурс]: курс лекций / С. В. Синицын, Н. Ю. Налютин - Москва:
Интернет-Университет Информационных Технологий, 2007. - 367 с.
42 Золотов,
С.Ю.
Проектирование
информационных
систем
[Электронный ресурс] / С.Ю Золотов – Томск: Эль Контент, 2013. - 88 с.
43 Иорш, В.И. Управление основными фондами на основе ключевых
показателей эффективности [Текст] / В. И. Иорш, В. Д. Стружинский // Горный
журнал. – 2010. - №3. – с. 25 – 28.
44 Методика
определения
экономической
эффективности
автоматизированных систем управления предприятиями и производственными
объединениями // ГКНТ СССР. АН СССР. – М.: Статистика, 2012. - 62 с.
45 Бородин, Р.А. Особенности учета затрат на производство и
калькуляции себестоимости продукции [Электронный ресурс] / Р.А. Бородин. Москва: Лаборатория книги, 2012. - 141 с.
77
USED AT:
ПРИЛОЖЕНИЕ А
AUT HOR: Зайцева Е.А.
PROJECT: Деятельнос ть трейдера на рынке
Forex
DAT E: 19.03.2016
WORKING
REV: 09.06.2016
DRAFT
READER
DAT E CONTEXT:
RECOMMENDED
NOTES: 1 2 3 4 5 6 7 8 9 10
PUBLICATION
A0
Инс трукция трейдера
Информация
из
Дата-центра
Анализ ис тории
котировок
0р.
Ряд
валютных
пар
1
Определение с преда
валютных пар
0р.
Выбранная валютная пара
2
График
выбранной
валютной
Пос троение графика пары
выбранной валютной
пары
0р.
3
Команда
открыть
ордер
Анализ графика
валютной пары
0р.
Информационноторговая
платформа
NODE:
USED AT:
ПК
TITLE:
AUT HOR:
A1 Рисунок
Зайцева
Е.А.
Анализ текущей ситуации на рынке Forex
REV: 02.04.2016
DRAFT
RECOMMENDED
NOTES: 1 2 3 4 5 6 7 8 9 10
PUBLICATION
A0
Документация
о правилах
работы в
торговой
платформе
ФЗ "О
рынке
ценных
бумаг"
Инс трукция
трейдера
Выбор типа
ордера
Выбранная
валютная
пара
NUMBER:
А.1 – Анализ
текущей
на рынкеDATForex
DAT E: 20.03.2016
WORKING ситуации
READER
E CONTEXT:
PROJECT: Деятельнос ть трейдера на рынке
Forex
Команда
открыть
ордер
4
Цена
покупки/продажи
0р.
1
Информация об
объѐме денежных
с редс тв на счете
Определение
параметров
ордера
0р.
Выбранный тип
ордера
Доп.параметры
2
Объем (лот)
Ус тановка
параметров
ордера
Стоп
лос с и
тейк
профит
0р.
3
Сформированный
ордер
Ус тановка
с формированного
ордера
0р.
4
Информационноторговая
ПК
платформа
NODE:
NUMBER:
и установкаиордера
РисунокОткрытие
А.2 – Открытие
установка ордера
TITLE:
A2
78
Информация
об ордере
USED AT:
AUT HOR: Зайцева Е.А.
DAT E: 20.03.2016
WORKING
PROJECT: Деятельнос ть трейдера на рынке
Forex
REV: 09.06.2016
DRAFT
PUBLICATION
Информация
об ордере
Информация
из
Дата-центра
A0
Документация о
правилах работы в
торговой платформе
Ус тановка времен.
периода и типа
отображения
графика валютной
пары
0р.
DAT E CONTEXT:
RECOMMENDED
NOTES: 1 2 3 4 5 6 7 8 9 10
График
выбранной
валютной пары
READER
Инс трукция трейдера
Отредактированный
график
Выбор метода
анализа
1
0р.
Выбранный
метод
2
Отображение с редс тв
выбранного метода
анализа на графике
валютной пары
0р.
3
Информация
о тренде
Команда
закрыть
ордер
Решение о
закрытии
ордера
0р.
4
Информационноторговая
платформа
ПК
NODE:
TITLE:
NUMBER:
Анализ ситуации
на рынке
после открытия
Рисунок А.3
– Анализ
ситуации
на рынке
после открытия
ордера
A3
ордера
79
USED AT:
WORKING
ПРИЛОЖЕНИЕ
Б
AUT HOR: Зайцева Е.А.
DAT E: 02.04.2016
PROJECT: Деятельнос ть трейдера на рыке
Forex
REV: 09.06.2016
PUBLICATION
A0
ФЗ "О рынке ценных
бумаг"
Документация
о правилах
работы в
торговой
платформе
Инс трукция трейдера
Ряд
валютных
пар
Анализ ис тории
котировок
0р.
DAT E CONTEXT:
RECOMMENDED
NOTES: 1 2 3 4 5 6 7 8 9 10
Информация из
Дата-центра
READER
DRAFT
1
Выбранная
валютная пара
Опреление с преда
валютных пар
0р.
2
График выбранной
валютной пары
Пос троение графика
валютной пары
0р.
3
Сигнал ус тановить
с оветник
Анализ
волатильности
графика
0р.
USED AT:
Информационноторговая
платформа
ПК
AUT HOR: Зайцева
Е.А.
NODE:
PROJECT: Деятельнос ть трейдера на рыке
TITLE:
Forex
DAT E: 02.04.2016
WORKING
REV: 09.06.2016
DRAFT
4
READER
DAT E CONTEXT:
NUMBER:
Рисунок Б.1
– Анализ
ситуации
на рынке
Forex
Анализ
текущейтекущей
ситуацииRECOMMENDED
на
рынке Forex
A1NOTES:
1 2 3 4 5 6 7 8 9 10
PUBLICATION
Документация
о правилах
работы в
торговой
платформе
Сигнал ус тановить
с оветник
Инс трукция
трейдера
0р.
Инс трукция по экс плуатации
торгового с оветника
Входные
параметры
Выбрать нужного
с оветника в окне
навигации
Иформация об объеме
денежных с редс тв на
с чете
ФЗ "О
рынке
ценных
бумаг"
A0
1
Нас троенный
с оветник
Задать
входные
параметры
Выбранная
валютная пара
График выбранной
валютной пары
0р.
Сообщение
об
ус пешной
ус тановке
2
Перемес тить
с оветника на
график
0р.
3
Информация из
Дата-центра
0р.
ПК
NODE:
TITLE:
A2
Информация об
объеме
прибыли/убытка
Разрешить
с оветнику
торговать
Информационноторговая
платформа
Программа-советник (экс перт)
NUMBER:
Установка
Рисунок
Б.2 –советника
Установка советника
80
4
ПРИЛОЖЕНИЕ В
//|
Cистемное скальпирование.mq4 |
//|
Copyright 2016, MetaQuotes Software Corp. |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link
"https://www.mql5.com"
#property version "1.00"
#property strict
double Stop_Loss;
int cntBars, per=15;
bool flag, flag1, flag_close, flag2;
extern int Raz=12;
extern int period_ma_f
=5;
extern int period_ma_s
=35;
extern int Env_Period
=15;
extern double Deviation
=0.1;
extern double B_Period_Fast
=24;
extern double B_Period_Slow
=62;
extern double B_Period_Signal
=9;
extern double K_S
=3.6;
extern double K_B
=3;
extern double Step_S
=0.02;
extern int Kol_Bar
=22;
//+------------------------------------------------------------------+
//| Expert initialization function
|
//+------------------------------------------------------------------+
int OnInit()
{
Raz*=Point;
Raz=NormalizeDouble(Raz,Digits);
Stop_Loss=NormalizeDouble(Stop_Loss,Digits);
return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason)
{
}
void OnTick()
{
string curEU="EURUSD", curUC="USDCHF", curGU="GBPUSD", curUJ="USDJPY";
bool flagMAEU,flagMAUC,flagMAGU,flagMAUJ, flagVarEU, flagVarGU, flagVarUC,
flagVarUJ;
flagMAEU=MA(curEU); //флаг для EURUSD о MA
Print("flag1= "+flagMAEU);
flagMAUC=MA(curUC); //флаг для USDCHF о MA
Print("flag2= "+flagMAUC);
flagMAGU=MA(curGU); //флаг для GBPUSD о MA
Print("flag3= "+flagMAGU);
flagMAUJ=MA(curUJ); //флаг для USDJPNY о MA
81
Print("flag4= "+flagMAUJ);
flagVarEU= body(curEU);//флаг для EURUSD о скачке
Print("flag11= "+flagVarEU);
flagVarGU= body(curGU); //флаг для USDCHF о скачке
Print("flag22= "+flagVarGU);
flagVarUC= body(curUC);//флаг для GBPUSD о скачке
Print("flag33= "+flagVarUC);
flagVarUJ= body(curUJ);//флаг для USDJPNY о скачке
Print("flag44= "+flagVarUJ);
flag_close=Close_MACD(curEU);
Print("flag_close= "+flag_close);
controll_bars();
if ((Bars > 100) && (AccountInfoDouble(ACCOUNT_BALANCE)!=0)){
if (flagVarEU==false && flagVarGU==false && flagVarUC==true && flagVarUJ==true &&
flagMAEU==false && flagMAGU==false && flagMAUC==true &&
flagMAUJ==true){
sell();
}
if (flagVarEU==true && flagVarGU==true && flagVarUC==false && flagVarUJ==false &&
flagMAEU==true && flagMAGU==true && flagMAUC==false &&
flagMAUJ==false){
buy();
}
if (flag_close == true){
close_sell();
}else if (flag_close == false){
close_buy();
}
}else {
Print("Баланс счета отрицательный или нехватает баров на графике");
}
trailing();
}
//+------------------------------------------------------------------+
bool MA (string Sym)
{
double ma_fast, ma_slow;
ma_fast=iMA(Sym,per,period_ma_f,0, MODE_EMA,PRICE_CLOSE,1);
ma_slow=iMA(Sym,per,period_ma_s,0, MODE_EMA,PRICE_CLOSE,1);
if (ma_fast > ma_slow){
flag=true;//быстрая больше медленной или синяя выше красной
}else if (ma_fast < ma_slow){
flag=false;// медленная больше быстрой или красная выше синей
}
return (flag);
}
bool body(string Sym)
{
double variance;
double Cl2=iClose(Sym, 0,2);
double Cl1=iClose(Sym, 0,1);
82
double Op2=iOpen(Sym, 0, 2);
double Op1=iOpen(Sym, 0, 1);
double Low2=iLow(Sym, 0, 2);
double High2=iHigh(Sym, 0, 2);
double envel_up, envel_dn;
envel_up=iEnvelopes(Sym,0,Env_Period,MODE_SMA,0,PRICE_CLOSE,Deviation,MODE_UPP
ER,1); //верхняя линия
envel_dn=iEnvelopes(Sym,0,Env_Period,MODE_SMA,0,PRICE_CLOSE,Deviation,MODE_LOW
ER,1);//нижняя линия
variance=MathAbs(Cl2-Cl1);
if (variance >= Raz){
if ((Cl2 < Cl1) && (High2 > envel_up)) {
flag1=true;//скачек вверх
}else if ((Cl2 > Cl1) && (Low2 < envel_dn)){
flag1=false;//скачек вниз
}
}
return (flag1);
}
bool Close_MACD (string Sym)
{
double macd_s, macd_m;
bool flag_c;
macd_m=iMACD(NULL,0,B_Period_Fast,B_Period_Slow,B_Period_Signal,PRICE_CLOSE,MO
DE_MAIN,1);
macd_s=iMACD(NULL,0,B_Period_Fast,B_Period_Slow,B_Period_Signal,PRICE_CLOSE,MOD
E_SIGNAL,1);
if (macd_s < macd_m){
flag_c=true; //флаг на закрытие sell
}else if (macd_s > macd_m) {
flag_c=false; //флаг на закрытие buy
}
return(flag_c);
}
double summ ()
{
double summ=0;
for (int i=0; i < Kol_Bar; i++) {
summ += High[i] - Low[i];
}
summ /= Kol_Bar;
Print("St_l"+Stop_Loss_b);
return summ;
}
bool controll_orders()
{
83
bool flag;
if (OrdersTotal()<=4){
flag=true;
}else{
flag=false;
}
return(flag);
}
void buy()
{
bool flag;
flag=controll_orders();
Stop_Loss=K_B*summ();
if (flag==true){
OrderSend(Symbol(),OP_BUY,1,Ask,0,Bid-Stop_Loss,0,Blue);
}else{
Print("Открытых ордеров больше 5!!");
}
}
void sell()
{
bool flag;
flag=controll_orders();
Stop_Loss=K_S*summ();
if (flag==true){
OrderSend(Symbol(),OP_SELL,1,Bid,0,Ask+Stop_Loss,0,Red);
}else {
Print("Открытых ордеров больше 5!!");
}
}
void close_buy()
{
for (int i = OrdersTotal() - 1; i >=0; i--) {
if (OrderSelect(i, SELECT_BY_POS)){
if (OrderType()==OP_BUY){
OrderClose(OrderTicket(), OrderLots(), Bid, 0, Blue);
}
}
}
}
void close_sell()
{
for (int i = OrdersTotal() - 1; i >=0; i--) {
if (OrderSelect(i, SELECT_BY_POS)){
if (OrderType()==OP_SELL){
OrderClose(OrderTicket(), OrderLots(), Ask, 0, Red);
}
84
}
}
}
double OnTester()
{
return TesterStatistics(STAT_PROFIT) / TesterStatistics(STAT_EQUITY_DD);
}
void controll_bars()
{
if(cntBars == Bars) {
return;
}
cntBars = Bars;
}
void trailing()
{
for (int i=OrdersTotal()-1;i>=0;i--) {
if (OrderSelect(i, SELECT_BY_POS)){
if (OrderType()==OP_BUY) {
if(Bid-OrderOpenPrice() > Stop_Loss) {
if(OrderStopLoss() < Bid-Stop_Loss) {
bool res=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(BidStop_Loss,Digits),OrderTakeProfit(),0,Blue);
if(!res){
Print("Ошибка модификации ордера. Код ошибки=",GetLastError());
}else{
Print("Цена Stop Loss ордера успешно модифицирован.");
}
}
}
} else if (OrderType()==OP_SELL) {
if(OrderOpenPrice()-Ask > Stop_Loss) {
if(OrderStopLoss() > Ask+Stop_Loss){
bool
res=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+Stop_Loss,Digits),Orde
rTakeProfit(),0,Blue);
if(!res){
Print("Ошибка модификации ордера. Код ошибки=",GetLastError());
}else{
Print("Цена Stop Loss ордера успешно модифицирован.");
}
}
}
}
}
}
}
85
Выпускная квалификационная работа выполнена мной совершенно
самостоятельно. Все использованные в работе материалы и концепции из
опубликованной научной литературы и других источников имеют ссылки на
них.
« »_____________ 2016 г.
Студент _________________________________________________Зайцева Е.А.
86
Отзывы:
Авторизуйтесь, чтобы оставить отзыв