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


Дата создания: 2023-12-22 13:18:34 Последнее изменение: 2023-12-22 13:18:34
Копировать: 0 Количество просмотров: 687
1
Подписаться
1623
Подписчики

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

Обзор

Эта стратегия в сочетании с использованием медленного Хайкена Аши и индексных движущихся средних для идентификации тенденции, для длительных и длительных двунаправленных торгов в условиях тенденции. Выполняйте лизинг, когда цена превышает 100-дневную ЭМА, пустоту, когда она ниже 100-дневную ЭМА, и плавное положение при определенных условиях.

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

Стратегия использует следующую комбинацию показателей:

  1. Медленный Heiken Ashi: специальный тип K-линейной диаграммы, которая использует среднюю стоимость предыдущей K-линии, чтобы отфильтровать рыночный шум и идентифицировать тенденции. Здесь это реализуется с помощью адаптированного фильтра Кама.

  2. Индексовый скользящий средний: средняя после индексализации цены, включающая в себя ЭМА на периоды от 5 до 100 дней.

Конкретная логика сделки заключается в следующем:

  1. Если цена пересекает 100-дневную ЭМА, то она становится больше, а если цена пересекает 100-дневную ЭМА, то она становится меньше.

  2. Условия равного положения: когда цена открытия Heiken Ashi пересекает цену закрытия (потенциальный обратный сигнал), соответствующая многоглавная позиция выравнивается путем обратного пересечения, пустая позиция равнозначна.

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

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

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

  2. С помощью перекрестного сигнала Heiken Ashi можно заранее определить возможность обратного пути.

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

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

  1. Существенное нарушение EMA может привести к увеличению убытков. Можно соответствующим образом сократить период удержания или установить стоп-убыток.

  2. Поскольку обратный сигнал может задерживаться, следует рассмотреть возможность снижения размера позиции для контроля риска.

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

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

  1. Можно объединить несколько показателей, чтобы избежать вероятности ошибочного сигнала EMA и Heiken Ashi. Например, добавление MACD, ленты Брин и т. Д.

  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)