Торговые стратегии на основе индикаторов EMA и MAMA


Дата создания: 2023-10-31 14:20:56 Последнее изменение: 2023-10-31 14:20:56
Копировать: 0 Количество просмотров: 817
1
Подписаться
1617
Подписчики

Торговые стратегии на основе индикаторов EMA и MAMA

Обзор

Стратегия основана на двух показателях: EMA (индексальная скользящая средняя) и MAMA (MESA адаптивная скользящая средняя) для определения тенденций рынка и получения торговых сигналов в зависимости от их перекрестных ситуаций. EMA часто используется для определения направления рыночных тенденций, а MAMA может более точно улавливать рыночные поворотные точки, которые в сочетании могут улучшить эффективность стратегии.

Стратегический принцип

  1. Вычисление быстрых и медленных ЭМА, которые отражают краткосрочные и долгосрочные тенденции рынка
  2. Вычислить линии MAMA и FAMA, которые являются адаптивными скользящими средними
  3. Когда быстрая EMA пересекает медленную EMA, генерируется сигнал покупки
  4. Когда быстрая EMA пересекает медленную EMA, генерируется сигнал продажи
  5. Когда MAMA наносит FAMA, создается сигнал покупать
  6. Когда MAMA пересекает FAMA, генерируется сигнал SELL
  7. MAMA и FAMA могут быть использованы для проверки EMA-крестных сигналов или для раннего поимки трендовых поворотов.

В частности, стратегия рассчитывает сначала быструю ЭМА (fl) и медленную ЭМА (sl), отражая соответственно краткосрочные и долгосрочные тенденции.

Затем MAMA и FAMA рассчитываются по формуле Джона Элерса:

  1. Вычислить гильбертовую трансформацию цены и извлечь фазовую информацию о сигнале
  2. Мгновенный цикл сигнала p, рассчитанный на основе фазовой информации
  3. Расчет веса α по p-значению
  4. MAMA и FAMA по α-весам

Наконец, стратегия создает торговый сигнал на основе пересечения EMA и MAMA/FAMA:

  • EMA Gold Fork - это больше работы.
  • EMA остается свободной
  • MAMA больше, чем FAMA
  • MAMA под FAMA - свободное время

Анализ преимуществ

Эта стратегия объединяет преимущества показателей EMA и MAMA и позволяет повысить точность торговых сигналов.

Преимущества EMA:

  • Это позволяет эффективно сгладить данные о ценах и уменьшить шум.
  • Следить за рыночными тенденциями и быть немного отсталым
  • Гибкость параметров с возможностью корректировки чувствительности к краткосрочным и долгосрочным трендам

Преимущества MAMA:

  • Самостоятельно адаптируемые параметры, не требующие искусственного задания цикла
  • Быстро реагировать и заранее улавливать перемены
  • Точное определение поддержки и сопротивления

Преимущества совместного использования:

  • EMA оценивает основные тенденции
  • MAMA проверяет сигнал и заранее фиксирует повороты
  • Повышение точности и успеваемости сигналов

Анализ рисков

Основные риски этой стратегии:

  • EMA и MAMA являются поздними подтвержденными индикаторами, Entry немного отстает, что может привести к риску скольжения
  • При сильных землетрясениях EMA и MAMA часто пересекаются, что приводит к появлению множественных и пустых голов
  • Неправильно настроенные параметры EMA и MAMA могут пропустить тренд или создать ложный сигнал

Соответствующие меры:

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

Направление оптимизации

Эта стратегия может быть оптимизирована в следующих аспектах:

  • Оптимизация параметров цикла EMA, чтобы они были более соответствующими характеристикам разных сортов
  • Настройка чувствительности параметра MAMA α для оптимизации скорости поймания поворотов
  • Добавить фильтры для других индикаторов, таких как MACD, RSI и т. Д., Чтобы избежать ложных сигналов
  • Увеличение стратегии по борьбе с убытками для контроля риска
  • Оптимизация обратной связи, выбор оптимального сочетания параметров
  • Добавление автостопов для максимизации прибыли

Подвести итог

Стратегия, объединяющая преимущества обоих показателей EMA и MAMA, способна последовательно и своевременно улавливать переломы тренда, является надежной стратегией типа трендового отслеживания. Посредством оптимизации параметров и контроля риска можно повысить выигрышность и прибыльность стратегии. Но пользователю все же необходимо осторожно работать в соответствии со своими предпочтениями в отношении риска.

Исходный код стратегии
/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("EMAMA strategy", overlay=true)
//This entire strategy is courtesy of LazyBear for programming the original EMAMA system, I simply added a strategy element to everything to round things out. 

src=input(hl2, title="Source")
fl=input(.5, title="Fast Limit")
sl=input(.05, title="Slow Limit")
sp = (4*src + 3*src[1] + 2*src[2] + src[3]) / 10.0
dt = (.0962*sp + .5769*nz(sp[2]) - .5769*nz(sp[4])- .0962*nz(sp[6]))*(.075*nz(p[1]) + .54)
q1 = (.0962*dt + .5769*nz(dt[2]) - .5769*nz(dt[4])- .0962*nz(dt[6]))*(.075*nz(p[1]) + .54)
i1 = nz(dt[3])
jI = (.0962*i1 + .5769*nz(i1[2]) - .5769*nz(i1[4])- .0962*nz(i1[6]))*(.075*nz(p[1]) + .54)
jq = (.0962*q1 + .5769*nz(q1[2]) - .5769*nz(q1[4])- .0962*nz(q1[6]))*(.075*nz(p[1]) + .54)
i2_ = i1 - jq
q2_ = q1 + jI
i2 = .2*i2_ + .8*nz(i2[1])
q2 = .2*q2_ + .8*nz(q2[1])
re_ = i2*nz(i2[1]) + q2*nz(q2[1])
im_ = i2*nz(q2[1]) - q2*nz(i2[1])
re = .2*re_ + .8*nz(re[1])
im = .2*im_ + .8*nz(im[1])
p1 = iff(im!=0 and re!=0, 360/atan(im/re), nz(p[1]))
p2 = iff(p1 > 1.5*nz(p1[1]), 1.5*nz(p1[1]), iff(p1 < 0.67*nz(p1[1]), 0.67*nz(p1[1]), p1))
p3 = iff(p2<6, 6, iff (p2 > 50, 50, p2))
p = .2*p3 + .8*nz(p3[1])
spp = .33*p + .67*nz(spp[1])
phase = atan(q1 / i1)
dphase_ = nz(phase[1]) - phase
dphase = iff(dphase_< 1, 1, dphase_)
alpha_ = fl / dphase
alpha = iff(alpha_ < sl, sl, iff(alpha_ > fl, fl, alpha_))
mama = alpha*src + (1 - alpha)*nz(mama[1])
fama = .5*alpha*mama + (1 - .5*alpha)*nz(fama[1])
pa=input(false, title="Mark crossover points")

plotarrow(pa?(cross(mama, fama)?mama<fama?-1:1:na):na, title="Crossover Markers")

fr=input(false, title="Fill MAMA/FAMA Region")

duml=plot(fr?(mama>fama?mama:fama):na, style=circles, color=gray, linewidth=0, title="DummyL")

mamal=plot(mama, title="MAMA", color=red, linewidth=2)

famal=plot(fama, title="FAMA", color=green, linewidth=2)

fill(duml, mamal, red, transp=70, title="NegativeFill")

fill(duml, famal, green, transp=70, title="PositiveFill")

ebc=input(false, title="Enable Bar colors")

bc=mama>fama?lime:red

barcolor(ebc?bc:na)

longCondition = crossover(mama, fama)
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = crossunder(mama, fama)
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)