Эта стратегия объединяет несколько технических индикаторов, включая Supertrend, Двойную скользящую среднюю (DEMA) и полосы Боллинджера, чтобы использовать их сильные стороны и генерировать более точные торговые сигналы.
Стратегия использует 12-периодный ATR и средний курс для расчета верхних и нижних полос Супертенда и определяет длинные и короткие сигналы, когда цена проходит через эти полосы. Между тем, 200-периодная DEMA служит вспомогательным индикатором для оценки тренда. Кроме того, полосы Боллинджера помогают определить оптимальное время для входов и остановки потерь.
Сигналы покупки генерируются, когда цена превышает верхний диапазон. Сигналы продажи генерируются, когда цена превышает нижний диапазон. Когда цена превышает верхний или нижний диапазон Supertrend, маркеры и текст
Диаграмма 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)