Стратегия торговли двойной скользящей средней SuperTrend Bollinger Bands

Автор:Чао Чжан, Дата: 2024-02-23 13:58:36
Тэги:

img

Обзор

Эта стратегия объединяет несколько технических индикаторов, включая Supertrend, Двойную скользящую среднюю (DEMA) и полосы Боллинджера, чтобы использовать их сильные стороны и генерировать более точные торговые сигналы.

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

Стратегия использует 12-периодный ATR и средний курс для расчета верхних и нижних полос Супертенда и определяет длинные и короткие сигналы, когда цена проходит через эти полосы. Между тем, 200-периодная DEMA служит вспомогательным индикатором для оценки тренда. Кроме того, полосы Боллинджера помогают определить оптимальное время для входов и остановки потерь.

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

Диаграмма DEMA показана выше или ниже кривой цен белым цветом для оценки общего направления тренда рынка.

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

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

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

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

Supertrend способен отфильтровывать шум рынка и избегать чрезмерной торговли. DEMA может определить общее направление тренда и предотвратить торговлю против тренда.

Мобильные предупреждения позволяют своевременно торговать. Автоматическая остановка потерь и получение прибыли позволяют блокировать прибыль и сокращать убытки.

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

Интеграция нескольких индикаторов увеличивает сложность стратегии и вероятность ошибок.

Кроме того, чрезмерно агрессивные настройки стоп-лосса могут усиливать убытки.

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

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

Попытка самостоятельного использования отдельных индикаторов может уменьшить ложные сигналы.

Критерии стоп-лосса и прибыли также подлежат корректировке, например, последующие стоп-лосы и частичные стоп-лосы.

Резюме

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


/*backtest
start: 2024-01-23 00:00:00
end: 2024-02-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © zhuenrong

//@version=4
strategy("Supertrend + DEMA + Bollinger Bands", overlay=true)

// Input parameters for Supertrend
atrLength = input(title="ATR Period", type=input.integer, defval=12)
src = input(hl2, title="Source")
multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR = input(title="Change ATR Calculation Method?", type=input.bool, defval=true)
showSupertrend = input(title="Show Supertrend Indicator?", type=input.bool, defval=true)

// Input parameters for DEMA
demaLength = input(200, title="DEMA Period")
showDEMA = input(title="Show DEMA Indicator?", type=input.bool, defval=true)

// Calculate ATR for Supertrend
atr2 = sma(tr, atrLength)
atr = changeATR ? atr(atrLength) : atr2

// Calculate Supertrend
up = src - (multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? max(up, up1) : up

dn = src + (multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn

trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// Plot Supertrend
upPlot = plot(showSupertrend ? (trend == 1 ? up : na) : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
plotshape(buySignal ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0))

dnPlot = plot(showSupertrend ? (trend == 1 ? na : dn) : na, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
plotshape(sellSignal ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0))

mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)

longFillColor = (trend == 1 ? color.new(color.green, 80) : color.new(color.white, 0))
shortFillColor = (trend == -1 ? color.new(color.red, 80) : color.new(color.white, 0))

fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor)

// Alert conditions
alertcondition(buySignal, title="Custom Supertrend Buy", message="Custom Supertrend Buy!")
alertcondition(sellSignal, title="Custom Supertrend Sell", message="Custom Supertrend Sell!")

// Calculate DEMA
ema1 = ema(close, demaLength)
dema = 2 * ema1 - ema(ema1, demaLength)

// Plot DEMA with white color
plot(showDEMA ? dema : na, color=color.new(color.white, 0), title="DEMA", linewidth=2)
// Add push notification on mobile if buy and sell occurred
if (buySignal)
    strategy.entry("Buy", strategy.long)
    //strategy.exit("Sell")
    //alert("Buy Signal - Supertrend")

if (sellSignal)
    strategy.entry("Sell", strategy.short)
    //strategy.exit("Cover")
    //alert("Sell Signal - Supertrend")


// === Stop LOSS ===

if strategy.position_size>0
    strategy.exit("Stop Loss/Profit Long","Buy", stop=strategy.position_avg_price*100, limit=strategy.position_avg_price*1.1)
if strategy.position_size<0
    strategy.exit("Stop Loss/Profit Short","Sell", stop=strategy.position_avg_price*100, limit=strategy.position_avg_price*1.1)

Больше