Исследование технического индикатора MACD

Изучение популярного технического индикатора MACD. Исследование соотношения между двумя скользящими средними ценами. Определение прибыльных котировок, используемых в торговых системах. Генетические алгоритмы для задачи перебора параметров индикатора.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 27.04.2017
Размер файла 115,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http: //www. allbest. ru/

Кубанский Государственный Технологический Университет, Краснодар, Россия

Исследование технического индикатора MACD

Шумков Евгений Александрович

к.т.н., доцент

Ботин Валерий Александрович

аспирант

Аннотация

В статье рассмотрен популярный технический индикатор MACD. Исследованы различные параметры индикатора на предмет выявления статистического преимущества. Показан вариант использования генетических алгоритмов для задачи перебора параметров индикатора

Ключевые слова: ВАЛЮТНЫЙ РЫНОК, ТЕХНИЧЕСКИЙ ИНДИКАТОР, MACD, ГЕНЕТИЧЕСКИЕ АЛГОРИТМЫ

Summary

Shumkov Eugene Alexandrovich Cand.Tech.Sci., assistant professor

Botin Valeryi Alexandrovich postgraduate student

Kuban State Technological University, Krasnodar, Russia

In the article popular technical MACD indicator is considered. Various parameters of the indicator about revealing of statistical advantage are investigated. The variant of use of genetic algorithms for a problem of search of parameters of the indicator is shown

Keywords: FOREX, TECHNICAL INDICATOR, MACD, GENETIC ALGORITHMS

Технический индикатор «Схождение / расхождение скользящих средних» («Moving Average Convergence / Divergence», далее MACD) - это следующий за тенденцией цены динамический индикатор. Он показывает соотношение между двумя скользящими средними цены. Данный индикатор строится, как разность между двумя экспоненциальными скользящими средними с периодами 12 и 26. Чтобы четко обозначить благоприятные моменты для покупки или продажи, на график индикатора наносится так называемая сигнальная линия - 9-ти периодное скользящее среднее. Отметим, что цифры периодов 9, 12 и 26 являются рекомендуемыми специальной литературой [2]. На Рисунке 1 показан вид индикатора MACD и соответствующий ему график пары валют EURUSD на 5-ти минутном таймфрейме. Все данные рассчитывались для истории курса котировок с июня 2009 по май 2010.

Можно отметить следующее определение «MACD - это классический трендовый индикатор и он хорошо работает трендовых участках рынка. Когда же рынок вступает в фазу бокового движения, индикатор становится бесполезным, так как торговые сигналы в этот период будут убыточными».

Рисунок 1 Ряд котировок и вид индикатора MACD

индикатор котировка алгоритм цена

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

Цель наших экспериментов - выявить «прибыльные» параметры MACD на различных таймфреймах. Для экспериментов выбран терминал Metatrader 4.0 и язык программирования MQL4. Введем понятия:

· «отрицательный MACD - интервал» - когда сигнальная линия выше основной;

· «положительный MACD - интервал» - когда сигнальная линия ниже основной.

Для расчетов индикатора использовалась стандартная функция iMacd(). Рассчитываемые параметры: общее количество положительных и отрицательных MACD - интервалов индикатора; количество прибыльных интервалов в каждом из направлений (покупка и продажа); среднее значение точки с минимальной (для отрицательных MACD - интервалов) и максимальной (для положительных) разницей в цене в каждом виде интервалов. Прибыль считалась как разница между ценой открытия интервала и ценой закрытия, а также отнималась, в случае положительного интервала, разница между ценой спроса и предложения (в случае отрицательного интервала - прибавлялась). Также рассчитывался средний центр тяжести интервалов и центр тяжести по позициям максимума и минимума интервалов. Под центром тяжести понимается номер бара от начала интервала, который соответствует центру тяжести образованной геометрической фигуры или центру распределения максимальных (минимальных) позиций в интервалах.

В эксперименте программно перебирались следующие параметры:

· период быстрой экспоненциальной средней;

· период медленной экспоненциальной средней;

· период сигнальной линии;

· таймфреймы.

Покажем распределения для 5-ти минутного таймфрейма (пара валют EURUSD). Нас в первую очередь интересует, чтобы центр тяжести фигуры был как можно дальше от начала интервала, чтобы было достаточное время среагировать на сигнал. Максимальный средний центр тяжести оказался у MACD с параметрами (15, 12, 9), он равен 8,762 бара (для положительных MACD - интервалов). На Рисунке 2 показано распределение для положительных MACD - интервалов по количеству интервалов различной длины в процентах к общему количеству интервалов (шкалу по оси ординат, здесь и далее, умножать на 100). Время моделирования для 5-ти минутного таймфрейма при прямом переборе составило 4 минуты 48 секунд. Медленная экспоненциальная средняя перебиралась от 20 до 40.

Рисунок 2 Распределение по длинам MACD - интервалов

В расчет брались длины MACD - интервалов до 50 включительно, те которые больше 50, прибавлялись к последнему. Отметим, что количество интервалов длиной меньше 5 составляет 20% от общего числа; длиной от 6 до 10 также 20%; от 11 до 15 равно 21%; от 16 до 20 равно 14%; от 21 до 25 равно 9% и т. д.

На Рисунке 3 показано распределение выигрышных интервалов по длинам интервалов.

Рисунок 3 Процент выигрышных положительных MACD - интервалов

Красная горизонтальная линия показывает вероятность выигрыша в 50%. У трейдеров считается, что «можно играть» если вероятность выигрыша выше 60%. Данному условию удовлетворяет интервал справа от красной горизонтальной линии. «Уверенная зона» с вероятностью выигрыша выше 80% начинается от интервалов длиной 16 и выше.

Рисунок 4 "Центры тяжести" положительных MACD - интервалов

Из гистограммы видно, что на коротких MACD - интервалах центр тяжести расположен близко к началу интервала, тем самым у игрока мало времени, чтобы вовремя среагировать на сигнал. В качестве алгоритма позволяющего сократить временные затраты, можно использовать принцип High - Frequency Trading [1].

Теперь покажем распределение для 15-ти минутного таймфрейма. Время прямого перебора 1 минута 52 секунды. Распределение по длинам положительных MACD - интервалов показано на Рисунке 5.

Рисунок 5 Распределение по длинам положительных MACD - интервалов для 15-ти минутного таймфрейма

Процент выигрышных положительных MACD - интервалов показан на Рисунке 6.

Рисунок 6 Процент выигрышных положительных MACD-интервалов для 15-ти минутного таймфрейма

Из гистограммы видно, что выигрышные интервалы с «уверенностью выше 60%» сместились немного вправо. Для более высоких таймфреймов распределения принципиально не отличаются от вышепоказанных.

Теперь покажем, как для поиска «прибыльных» параметров индикатора MACD можно применить генетический алгоритм. Останавливаться, как работают генетические алгоритмы, не будем - это подробно показано, например в [3,4,5]. Сразу опишем алгоритм работы, написанного авторами скрипта.

На первом шаге происходит инициализация массива хромосом - начальной популяции. Каждая хромосома содержит 20 элементов (по 4 элемента для кодирования пяти параметров). Популяция хромосом в дальнейшем будет подвержена изменению, но количество особей в ней останется постоянным и будет равно 8192.

Далее запоминается поступивший в терминал тик. Если количество тиков соответствует месячной норме, то вызывается функция WriteInFile() для записи тиков в бинарный файл. Если количество тиков не достигло определенного значения, то алгоритм продолжается по следующему сценарию. Запоминаются параметры открытой позиции, если она существует. В данной торговой системе может существовать только одна открытая позиция. Сигнал к открытию новой позиции является сигналом закрытия предыдущей. Считываются значения линий MACD для данного тика. Если открытая позиция есть и она является длинной позицией, то проверяются условия на закрытие позиции, ее модификации или оставления без изменений. Аналогично проверяется короткая позиция, если на данный момент она открыта. Если открытых позиций нет, но есть сигнал на покупку, то открываем длинную позицию. Если открытых позиций нет, но есть сигнал на продажу, то открываем короткую позицию.

Проверка наличия открытой позиции, а также открытия короткой и длинной позиций производится отдельными процедурами OneOrderInit(), OpenSell() и OpenBuy() соответственно.

Как упоминалось выше, при завершении очередного месяца торговли в массиве программы накапливается определенное количество свечек. При наступлении этого события происходит запись данного массива в файл в процедуре WriteInFile(). В этой же процедуре происходит вызов процедуры Genetic(), задачей которой является поиск оптимальных параметров генетическим алгоритмом.

В процедуре Genetic() выполняется следующий алгоритм. Особи предыдущей популяции скрещиваются между собой, образуя потомков. Затем значения каждого потомка проверяются на исторических данных за месяц и рассчитывается прибыль вновь получившейся особи. Выбираются наиболее прибыльные в количестве, равном начальной популяции. Создание потомков происходит в течении ста поколений. По результатам выполнения программы искомым параметрам присваивается значение наиболее прибыльной хромосомы.

Создание потомков происходит следующим образом - массив стартовой популяции разбивается условно на 4 равные группы. Генерируется случайное число. Определяется, какую группу (с определенной вероятностью) оно выбрало. Чем прибыльность группы больше, тем вероятность выше. Из этой группы берется 1-й родитель. Генерируется случайное число. Определяется, какая группу (с определенной вероятностью) выбралась. Из этой группы берется 2-й родитель. Случайным образом выбирается две точки разрыва. По этим точкам разрыва хромосомы родителей делятся на 3 части и создаются 8 хромосом потомков из вариаций этих частей предков. Два случайных гена каждого потомка мутируют. Все восемь потомков записываются в массив потомков. Так повторяется 1024 раза. 8 лучших хромосом попадают без изменений, 64 лучшие хромосомы мутируют в нескольких генах. Массив потомков копируется в массив стартовой популяции. Вызывается процедура History(), которая тестирует хромосомы получившихся потомков по историческим данным.

В конце процедуры Genetic() вызывается процедура best(), в которой происходит присваивание внешним переменным значения хромосомы лучшей (прибыльной) особи.

В упомянутой процедуре History() происходит проверка особи на «живучесть», определяя ее прибыль за прошедший месяц. Для этого виртуальным внешним переменным присваиваются значения параметров этой особи и для каждого тика предыдущего месяца вызывается функция virtual_start(). Функция virtual_start() аналогична функции start(), но ее отличие заключается в том, что она имитирует открытие позиций с целью подсчета прибыльности параметров. Для открытия и закрытия виртуальных ордеров используются процедуры virtOrderSend, virtOrderClose.

В конце процедуры History() вызывается процедура Sort(), осуществляющая сортировку потомков по убыванию прибыли. Сортировка необходима для того, чтобы в процедуре Genetic() можно было разделить популяцию на группы по прибыльности и методом рулетки определять родителей. Скорость поиска на коротких таймфреймах с помощью генетических алгоритмов быстрее прямого перебора примерно в два раза. Например, для 5-ти минутного таймфрема по паре EURUSD время поиска 2 минуты 24 секунды.

Таким образом, применение MACD в чистом виде, даже с лучшими найденными параметрами, очень рискованно для игрока. Как видно из гистограмм вероятность выигрыша выше, чем 60% начинается примерно с интервалов длиной 9, но при этом у половины от общего числа смоделированных примеров длина интервала меньше 9. Также данный индикатор запаздывающий. Рекомендация авторов - использовать данный индикатор вместе с подтверждающим сигналом (или несколькими) от другого индикатора. С исходным кодом разработанных скриптов можно ознакомиться по адресу в сети Internet:

Литература

1. Dacorogna M.,Gencay R., Muller U. An Introduction to high - frequency finance. New York: Academic Press, 2001. 407 p.

2. Колби Р. Энциклопедия технических индикаторов рынка. Пер. с англ. - 2-е изд. М.: «Альпина Бизнес Букс», 2004. 837 с.

3. Вороновский Г.К. Генетические алгоритмы, искусственные нейронные сети и проблемы виртуальной реальности. Х.: ОСНОВА, 1997. 112 с.

4. Рутковская Д., Пилиньский М.. Рутковский Л. «Нейронные сети, генетические алгоритмы и нечеткие системы». Пер. с польск., И.Д. Рудинского. М.: Горячая линия - Телеком, 2006. 452 с.

5. Ярушкина Н.Г. Основы теории нечетких и гибридных систем: Учеб. пособие. М.: Финансы и статистика, 2004. 320 с.

Размещено на Аllbеst.ru

...

Подобные документы

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

    курсовая работа [1,2 M], добавлен 26.12.2012

  • Построение трехмерной модели платы с заданными параметрами и с определенным количеством трехмерных моделей светового индикатора и кнопок. Создание Крепления в Дереве конструирования, проектирование эскиза фигуры. Соединение деталей в единую схему.

    лабораторная работа [2,4 M], добавлен 19.10.2015

  • Основные генетические операторы. Схема функционирования генетического алгоритма. Задачи, решаемые с помощью генетических алгоритмов. Математическая постановка задачи оптимизации. Решение Диофантова уравнения. Программная реализация. Создание пособия.

    курсовая работа [391,4 K], добавлен 20.02.2008

  • Алгоритмы нахождения кратчайшего пути: анализ при помощи математических объектов - графов. Оптимальный маршрут между двумя вершинами (алгоритм Декстры), всеми парами вершин (алгоритм Флойда), k-оптимальных маршрутов между двумя вершинами (алгоритм Йена).

    курсовая работа [569,6 K], добавлен 16.01.2012

  • Выбор элементной базы: микроконтроллера; микросхем для реализации системной шины; памяти; кварцевого генератора; сторожевого таймера; индикатора и коммутатора; последовательного порта. Программное обеспечение микропроцессорной системы обработки сигналов.

    курсовая работа [259,3 K], добавлен 19.04.2012

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

    курсовая работа [810,3 K], добавлен 14.11.2010

  • Исследование асимптотической временной сложности решения шахматной задачи; разработка наиболее эффективных алгоритмов и структуры данных; аналитическая и экспериментальная оценка методов сокращения перебора в комбинаторных задачах; программная реализация.

    курсовая работа [36,6 K], добавлен 25.06.2013

  • Построение имитационной модели станции технического обслуживания, на основе системы Micro Saint. Определение комплекса работ модели, основных параметров для них, связей между работами. Оценка распределения числа полицейских машин, находящихся в ремонте.

    контрольная работа [1,1 M], добавлен 08.09.2010

  • Структурная схема системы управления. Характеристики первичных датчиков, электронасоса, индикатора, микроконтроллера, системы прерываний. Работа регистров и аналого-цифрового преобразователя. Алгоритм работы микропроцессора - управляющего устройства.

    курсовая работа [2,2 M], добавлен 06.02.2013

  • Исследование систем методами случайного поиска. Изучение сущности метода половинного деления. Сравнительный анализ прямого перебора и половинного деления. Ручной счет. Шаги исследования. Описание окна работающей программы. Блок-схема и код программы.

    курсовая работа [257,5 K], добавлен 06.05.2014

  • Анализ состояния проблемы, обзор аналогов, выбор прототипов и постановка задачи. Достоинства и недостатки рассмотренных систем технического зрения. Определение формы и положения объекта в пространстве. Обоснование и разработка математического аппарата.

    дипломная работа [2,5 M], добавлен 12.06.2013

  • Концептуальная модель операции. Математическая постановка задачи. Описание метода ветвей и границ, прямого перебора. Проектирование сценария диалога. Описание структур данных. Ручная реализация решения задачи с помощью алгоритма Литла и перебора.

    курсовая работа [202,6 K], добавлен 14.12.2013

  • Устройство и принцип работы персонального компьютера (ПК). Диагностика работоспособности ПК и определение неисправностей. Задачи технического обслуживания средств вычислительной техники. Разработка методик поддержания техники в работоспособном состоянии.

    курсовая работа [274,5 K], добавлен 13.07.2011

  • Составление графика технического обслуживания компьютеров и календарного плана. Перечень средств, необходимых для проведения технического обслуживания: пылесос, отвёртка, мягкая кисточка. Особенности расчета количества дисков для резервного копирования.

    контрольная работа [195,9 K], добавлен 24.03.2012

  • Исследование принципа действия поэлементной синхронизации с добавлением и вычитанием импульсов. Характеристика кодирования в системах ПДС, классификации кодов, построения кодера и декодера циклического кода. Расчет параметров системы с ОС и ожиданием.

    курсовая работа [2,8 M], добавлен 08.12.2011

  • Обоснование выбора технических средств, используемых для создания программы автоматизированного учета технического и программного обеспечения "ЦЗН Вельского района". Входные и выходные документы. Обзор процесса отладки программы. Инструкция пользователю.

    дипломная работа [1,1 M], добавлен 15.06.2017

  • Исследование методов автоматического проектирования нечетких систем управления (НСУ). Методы автоматической настройки семантики лингвистических переменных. Искусственные нейронные сети, генетические алгоритмы. Коэволюционный алгоритм для формирования НСУ.

    дипломная работа [2,3 M], добавлен 02.06.2011

  • Исследование возможностей MathCad по решению систем нелинейных уравнений. Оценка влияния силы резания заготовки на диаметр поршня пневмоцилиндра при использовании трёхкулачкового патрона. Описание проекта Delphi. Составление инструкции для пользователя.

    курсовая работа [1,2 M], добавлен 03.01.2014

  • Нормативно-правовые акты Российской Федерации в области информационной безопасности. Порядок организации работ по защите информации в информационных системах. Общий подход к разработкам технического задания на разработку системы защиты этой сферы.

    курсовая работа [31,3 K], добавлен 05.05.2015

  • Оснащение робототехнических комплексов систем технического зрения. Математическая модель и векторная диаграмма дисторсии изображения. Создание эталонного изображения тестового объекта. Определение основных погрешностей формирования изображения.

    курсовая работа [1,4 M], добавлен 14.06.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.