На рисунке показан индикатор АМА и для сравнения ЕМА с периодом 15. Видно, что ЕМА ведет себя на флэте хуже.
Можете скачать индикатор АМА моего производства
my_Ind_ama_t.mq4 (пароль stoletov) или чужой из интернета.
Об АМА упоминается в книге Ван Тарпа "Трейдинг -ваш путь к финансовой свободе", стр 247-250. Ван Тарп ссылается на книгу Perry Kaufman "Smarter Trading", что переводится как "(более) умный трейдинг". В ней на стр. 133-152 дано подробное описание АМА, правда на английском. Кауфман и придумал эту самую АМА еще в 90-е годы.
Рассчитывается АМА следующим образом.
Вначале определяется коэффициент эффективности Кэф по формуле
где Pn и Pi - цена закрытия n и i баров назад, Pо- текущая цена.
В числителе стоит модуль изменения цены закрытия за n баров, а в знаменателе сумма модулей изменений цены закрытия смежных баров от n-го бара до текущего бара.
Кэф показывает степень направленности изменения цены. При выраженном тренде Кэф стремится к 1, а при флэте и сильном шуме к 0. Автор предлагает выбрать n=10.
Затем находятся две константы сглаживания (smoothing constant) по формуле SC=2/(N+1), где N - период усреднения (число баров): быстрая для N=2 и медленная для N=30: SC2=2/(2+1)=0.66667, SC30=2/(30+1)=0.06452.
Затем рассчитывается шкалированная константа сглаживания по формуле
SC=Кэф*( SC2- SC30)+ SC30=0,60215* Кэф+0,06452
Наконец АМА вычисляется по формуле
АМА=АМА1+ SC^2*( Pо - АМА1)
где АМА1 - значение АМА на предыдущем баре
АМА похожа на экспоненциальную скользящую среднюю (ЕМА) с переменным периодом N, которая вычисляется по формуле
ЕМА= Pо*К+ ЕМА1*(1-К)= ЕМА1+К*( Pо - ЕМА1), где К=2/(N+1)
Но у АМА в отличие от ЕМА множитель SC возводится в квадрат. Это делается для того, чтобы при флэте приблизить АМА к горизонтальной линии еще сильнее и за счет этого уменьшить количество ложных сигналов.
Вначале для первых самых старых n баров АМА приравнивается к цене закрытия, т.к. для вычисления АМА нужен Кэф, который можно вычислить, имея историю по крайней мере из n баров.
Торговля осуществляется так. Сигнал на покупку - АМА поворачивает вверх, а на продажу - АМА поворачивает вниз, причем на определенную величину F по отношению кпредыдущему бару. Эту величину автор называет фильтром, который вычисляется по формуле
где Кв - множитель волатильности, m - период счета (количество баров)
Фильтр F характеризует волатильность цен. Под корнем стоит среднеквадратичное отклонение (СКО) разностей АМА смежных баров от m-го бара до текущего бара. Такая форма записи СКО сокращает время счета на компьютере - по мере перехода к новому бару надо лишь вычесть задний член и добавить передний (от текущего бара) .
Автор предлагает выбрать m=20, а Кв для форекса 100% и для акций 10%. Иными словами для форекса надо брать Кв=1.
Закрывать сделку автор предлагает, когда коэффициент эффективности Кэф достигнет 0,8. Это соответствует сильному тренду, а значит скоро произойдет разворот. По моему это не очень хороший подход - ведь Кэф может и не достигнуть 0,8 и тогда сделка вообще непонятно когда закроется. В то же время в своей таблице расчетов автор отмечает, что фильтр используется и для закрытия. Это значит, что всегда будет открыта либо buy либо sell и будет то и дело происходить переворот. На мой взгляд это тоже плохо, т.к. при постоянном нахождении в позиции риск возрастает.
Я провел тестирование описанного метода для 6 главных пар c долларом на часовом графике в режиме «все тики» с 01.01.2015 до 16.06.2016. Были закачаны минутные бары на этот период с запасом (с 2014 года). Спред с комиссией был принят одинаковым для всех пар - 15 пятизначных пунктов. Расчет проводился при n=10, m=20, Кв=1, lot=0,01, без стоп-лосса. Для закрытия использовался тот же фильтр F, что и для открытия. Можете скачать мою процедуру вычисления торговых критериев
crit_ama.mqh (пароль stoletov). Она вставляется в эксперт директивой include (за основу взят эксперт usualexpert.mq4 из учебника Ковалева).
Результаты тестирования приведены ниже. Пробовал вместо переменного фильтра F использовать постоянное число, с таким расчетом, чтобы количество сделок было примерно то же. Результаты при постоянном фильтре были хуже. Казалось бы, переменный фильтр F во время флэта примет малое значение и будет много ложных сигналов, но этого не происходит! Если закрывать в момент поворота АМА в обратную сторону (не на величину фильтра F), то результаты ухудшаются Интересно, что если закрывать при повороте АМА на величину С*F, где 0,3<С<1, то результаты примерно одинаковы, а ухудшаются они при приближении С к нулю . Если уменьшить m с 20 до 10, то результаты тоже ухудшаются. А вот Кв=1 не самый лучший выбор. При Кв=2-3 результаты лучше для всех пар.
В целом результаты тестирования особо не впечатляют. Отношение profit / loss для одних пар чуть больше 1, а для других меньше 1. В реальности может быть еще хуже, учитывая проскальзывания. На графиках видны большие просадки. Хотя средний размер прибыльной сделки примерно в 2 раза больше размера убыточной, зато прибыльных сделок всего около 30 %. Это видимо характерно для любой тренд-следящей системы. Ведь тренд занимает немного времени и часто обламывается, увеличивая количество ложных сигналов.
Кто дочитал до этого места, тому домашнее задание - придумать дополнительный фильтр, который отсечет плохие сделки и повысит прибыльность. '
'
В таблице результатов обозначения столбцов означают следующее:
n – количество сделок
p/l – прибыльность
prof – чистая прибыль
%pr – процент прибыльных сделок
pav – средняя прибыльная сделка
lav – средняя убыточная сделка
pmax – максимальная прибыльная сделка
lmax – максимальная убыточная сделка
deep – абсолютная просадка
gap – максимальная просадка
mat – матожидание выигрыша