Стратегия торговли медленными экспоненциальными скользящими средними

Автор:Чао Чжан, Дата: 2023-12-22 13:18:34
Тэги:

img

Обзор

Эта стратегия сочетает в себе медленные движущиеся средние Хайкена Аши и экспоненциальные скользящие средние для выявления тенденций и совершения длинных/коротких сделок на трендовых рынках.

Логика стратегии

В стратегии используются следующие показатели:

  1. Медленный Хайкен-Аши: специальный тип свечи, рассчитанный с использованием средней цены предыдущей панели, фильтруя рыночный шум и выявляя тенденции.

  2. Экспоненциальная скользящая средняя: сглаженные средние цены с применением экспоненциального взвешивания.

Конкретная логика торговли:

  1. Идите длинные, когда цена пересекает 100-дневную EMA, идите короткие, когда цена пересекает 100-дневную EMA.

  2. Выходные позиции, когда открытая цена Хайкена Аши пересекает свою цену закрытия (потенциальный сигнал переворота).

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

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

  1. EMA определяет общее направление тенденции рынка, предотвращая отвлечение от локальных колебаний.

  2. Кроссоверы Хайкена Аши позволяют ранне обнаружить потенциальные изменения.

  3. Адаптивный фильтр KAMA уменьшает ложные сигналы.

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

  1. Неожиданные, большие перебои в средней средней стоимости могут привести к увеличению потерь.

  2. Сигналы отмены могут задерживаться.

  3. Недостаточная параметризация EMA отрицательно влияет на производительность.

Руководство по оптимизации

  1. Включить дополнительные индикаторы, такие как MACD и полосы Боллинджера, чтобы избежать одновременных ошибок EMA/Heiken Ashi.

  2. Динамически оптимизировать параметры EMA на основе волатильности рынка, соответственно ужесточая остановки/увеличивая терпимость к скольжению.

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

Заключение

Стратегия относительно проста и практична в целом, сочетая в себе как элементы тренда, так и элементы обратного движения.


/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-19 10:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("NoScoobies Slow Heiken Ashi and Exponential Moving average Strategy 2.2", overlay=true)

//SHA
p=input(6,title='Period')
fastend=input(0.666,step=0.001)
slowend=input(0.0645,step=0.0001)
kama(close,amaLength)=>
    diff=abs(close[0]-close[1])
    signal=abs(close-close[amaLength])
    noise=sum(diff, amaLength)
    efratio=noise!=0 ? signal/noise : 1
    smooth=pow(efratio*(fastend-slowend)+slowend,2)
    kama=nz(kama[1], close)+smooth*(close-nz(kama[1], close))
    kama
hakamaper=1
Om=sma(open,p)
Hm=sma(high,p)
Lm=sma(low,p)
Cm=sma(close,p)
vClose=(Om+Hm+Lm+Cm)/4
vOpen= kama(vClose[1],hakamaper)
vHigh= max(Hm,max(vClose, vOpen))
vLow=  min(Lm,min(vClose, vOpen))
asize=vOpen-vClose
size=abs(asize)

//MMAR
exponential = input(true, title="Exponential MA")
src = close
ma05 = exponential ? ema(src, 05) : sma(src, 05)
ma10 = exponential ? ema(src, 10) : sma(src, 10)
ma15 = exponential ? ema(src, 15) : sma(src, 15)
ma20 = exponential ? ema(src, 20) : sma(src, 20)
ma25 = exponential ? ema(src, 25) : sma(src, 25)
ma30 = exponential ? ema(src, 30) : sma(src, 30)
ma35 = exponential ? ema(src, 35) : sma(src, 35)
ma40 = exponential ? ema(src, 40) : sma(src, 40)
ma45 = exponential ? ema(src, 45) : sma(src, 45)
ma50 = exponential ? ema(src, 50) : sma(src, 50)
ma55 = exponential ? ema(src, 55) : sma(src, 55)
ma60 = exponential ? ema(src, 60) : sma(src, 60)
ma65 = exponential ? ema(src, 65) : sma(src, 65)
ma70 = exponential ? ema(src, 70) : sma(src, 70)
ma75 = exponential ? ema(src, 75) : sma(src, 75)
ma80 = exponential ? ema(src, 80) : sma(src, 80)
ma85 = exponential ? ema(src, 85) : sma(src, 85)
ma90 = exponential ? ema(src, 90) : sma(src, 90)
ma95 = exponential ? ema(src, 95) : sma(src, 95)
ma100 = exponential ? ema(src, 100) : sma(src, 100)

longcondition=src>ma100
shortcondition=src<ma100
long=longcondition and size<size[1] and (vOpen<vClose or vOpen>vClose)
short=shortcondition and size<size[1] and (vOpen>vClose or vOpen<vClose)
close_long=longcondition and crossunder(open, vClose)
close_short=shortcondition and crossover(open, vClose)
_close=close_long[2] or close_short[2]

if long
    strategy.entry("LONG", strategy.long)
    strategy.close("LONG", when = _close)
if short
    strategy.entry("SHORT", strategy.short)
    strategy.close("SHORT", when = _close)
    


Больше