В процессе загрузки ресурсов... загрузка...

Количественная стратегия торговли по комбинации EMA и Supertrend

Автор:Чао Чжан, Дата: 2024-06-17 16:52:17
Тэги:ЕМА

img

Обзор

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

Принцип стратегии

  1. Расчет 20-дневной ЭМА в качестве фильтрующего условия для определения тренда.
  2. Вычислите индикатор Supertrend, который отображает верхние и нижние диапазоны на основе среднего истинного диапазона (ATR) и бычьего/медвежьего тренда.
  3. Сгенерировать сигналы купли и продажи на основе направления тренда индикатора Supertrend и относительной позиции цены к 20-дневной EMA:
    • Сигнал покупки генерируется, когда цена превышает 20-дневную EMA, а индикатор Supertrend находится в бычьем тренде.
    • Сигнал продажи генерируется, когда цена проходит ниже 20-дневной средней средней средней стоимости (EMA) и индикатор Supertrend находится в нисходящем тренде.
  4. Стратегия входит в длинную позицию на сигнал покупки и выходит на сигнал продажи.

Преимущества стратегии

  1. Сочетая индикатор EMA и индикатор Supertrend, стратегия может эффективно отслеживать тенденции на рынке, снижая при этом ложные сигналы.
  2. Индикатор Supertrend основан на ATR, что позволяет ему динамически регулировать расстояние между верхней и нижней полосами, адаптируясь к различным волатильностям рынка.
  3. Использование EMA в качестве фильтрующего условия для определения тренда гарантирует, что позиции открываются в направлении тренда, увеличивая показатель выигрыша стратегии.
  4. Логика стратегии проста и понятна, что делает ее легкой для понимания и реализации.

Стратегические риски

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

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

  1. Включить механизм стоп-лосса, например, установить динамический стоп-лосс на основе ATR, чтобы контролировать максимальную потерю на одну сделку.
  2. Оптимизировать параметры индикатора EMA и индикатора Supertrend, например, использовать методы оптимизации параметров для поиска оптимальной комбинации параметров, повышая адаптивность и стабильность стратегии.
  3. Внедрить дифференциацию позиций путем динамической корректировки размеров позиций на основе волатильности рынка или прибыли и убытка счета для управления общим риском.
  4. Подумайте о добавлении других условий фильтрации, таких как объем торговли, волатильность и т. д., чтобы еще больше уменьшить ложные сигналы.

Резюме

Эта стратегия генерирует сигналы покупки и продажи путем объединения 20-дневной EMA и индикатора Supertrend, направленного на захват тенденционных рыночных условий. Преимущества стратегии заключаются в ее простоте и сочетании EMA и индикатора Supertrend, которые могут эффективно уменьшить ложные сигналы. Однако на нестабильных рынках стратегия может часто торговать и не имеет мер управления рисками. Будущие улучшения могут рассматривать включение методов стоп-лосса, размещения позиций и оптимизации параметров для улучшения стратегии. В целом эта стратегия обеспечивает простой и эффективный подход к тренду торговли, но для практического применения необходима дальнейшая оптимизация и усовершенствование.


/*backtest
start: 2023-06-11 00:00:00
end: 2024-06-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("20 EMA and Supertrend Strategy", overlay=true)

// Inputs
emaLength = input(20, title="EMA Length")
supertrendMultiplier = input.float(3.0, title="Supertrend Multiplier")
supertrendPeriod = input(10, title="Supertrend Period")

// EMA Calculation
ema = ta.ema(close, emaLength)

// Supertrend Calculation
Periods = supertrendPeriod
src = hl2
Multiplier = supertrendMultiplier
changeATR= input.bool(true, title="Change ATR Calculation Method?")
showsignals = input.bool(true, title="Show Buy/Sell Signals?")
highlighting = input.bool(true, title="Highlighter On/Off?")
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - (Multiplier * atr)
up1 = na(up[1]) ? up : up[1]
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + (Multiplier * atr)
dn1 = na(dn[1]) ? dn : dn[1]
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := na(trend[1]) ? trend : trend[1]
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(series=buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
plotshape(series=buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.white)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(series=sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
plotshape(series=sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.white)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=1)
longFillColor = highlighting ? (trend == 1 ? color.new(color.green, 90) : color.new(color.white, 0)) : color.new(color.white, 0)
shortFillColor = highlighting ? (trend == -1 ? color.new(color.red, 90) : color.new(color.white, 0)) : color.new(color.white, 0)
fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor)
alertcondition(buySignal, title="SuperTrend Buy", message="SuperTrend Buy!")
alertcondition(sellSignal, title="SuperTrend Sell", message="SuperTrend Sell!")
changeCond = trend != trend[1]
alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")

// Buy and Sell Signals based on EMA and Supertrend
buySignalEMA = ta.crossover(close, ema) and trend == 1
sellSignalEMA = ta.crossunder(close, ema) and trend == -1

// Plot EMA
plot(ema, color=color.blue, title="20 EMA")

// Plot Buy and Sell Signals
plotshape(series=buySignalEMA, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY")
plotshape(series=sellSignalEMA, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")

// Strategy Entries and Exits
if (buySignalEMA)
    strategy.entry("Buy", strategy.long)

if (sellSignalEMA)
    strategy.close("Buy")


Связанные

Больше