Стратегия использует индикатор SuperTrend для определения возможностей длинных позиций. Она использует средний реальный диапазон ATR и множитель для определения динамической поддержки для длинных позиций. Стратегия фокусируется на возможностях длинных позиций.
Начиная с ATR-циклов и умножая на них, рассчитывается поток вверх и вниз.
Расчет текущего тренда: 1 означает повышение, -1 означает понижение. При повышении цены тренд переворачивается вверх и вниз, вызывая сигнал покупки; при повышении вниз тренд переворачивается вниз и вызывает сигнал продажи.
В сочетании с движущимися средними в качестве фильтра на тренд, при прорыве вверх требуется цена выше MA, чтобы купить, при прорыве вниз требуется цена ниже MA, чтобы продать, чтобы избежать ложного прорыва.
Визуальное отображение ассистентов, маркирующих тенденции, торговые сигналы и т. Д., Помогающее в принятии решений.
Эта стратегия имеет следующие преимущества:
Используя индикатор SuperTrend, можно динамически отслеживать изменения цены и своевременно отражать переломы тенденций.
ATR-стоп может быть скорректирован в зависимости от рыночных колебаний, что позволяет блокировать прибыль.
В сочетании с устранением ложных прорывов MA, можно эффективно отфильтровывать шумные торговые сигналы от рыночных колебаний.
Визуальный дизайн интуитивно отображает торговые стратегии и рыночную ситуацию, простые в использовании.
Это очень хорошо подходит для долговых позиций.
Основные риски этой стратегии:
Индекс SuperTrend чувствителен к параметрам, часто корректируется по множественным линиям и может часто торговаться.
В случае землетрясения стоп-лайны часто срабатывают.
Не учитывая стоимость сделки, небольшая сумма может быть затронута большей суммой сборов.
Не установлено стоп-лосс, риск отмены выше.
Некоторые возможности могут быть упущены.
Риски можно снизить следующими способами:
Оптимизация параметров ATR, снижение частоты корректировки многоканальных линий.
Добавление фильтрации эквивалентной K-линии, чтобы избежать повреждения высокочастотными малыми колебаниями.
Настройка стоп-лосса для защиты прибыли.
Уместная коррекция цикла движущихся средних, чтобы сбалансировать эффекты фильтрации.
Оптимизация управления капиталом и снижение затрат на транзакции.
Эта стратегия может быть оптимизирована в следующих аспектах:
Проверка различных источников цен, таких как закрытие, максимальная цена и т.д.
Попробуйте другие динамические стоп-индикаторы, такие как Chandelier Exit.
Добавление модуля управления позициями, оптимизация эффективности использования капитала.
Вместе с показателем волатильности refined входные сроки.
Добавление модуля Stop Loss, Stop Stop, контроль риска.
Параметры корректировки для различных рынков.
Изучение алгоритмов машинного обучения для оптимизации параметров.
В сочетании с другими показателями для повышения точности фильтрации.
Стратегия использует SuperTrend для интеграции динамических стоп-убытков, а также использует MA для фильтрации тенденций, чтобы идентифицировать, когда нужно покупать длинную линию. Визуализированный дизайн упрощает операцию.
/*backtest
start: 2020-09-13 00:00:00
end: 2023-09-19 00:00:00
period: 3d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("SuperTrend Long Strategy", overlay=true, initial_capital=50000, currency=currency.USD, default_qty_type=strategy.cash, default_qty_value=50000)
Periods = input(title="ATR Period", type=input.integer, defval=10)
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)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true)
atr2 = sma(tr, Periods)
atr = changeATR ? atr(Periods) : atr2
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
// Moving Average as Trend Filter
periodes_ma = input(title="Moving Average Period", type=input.integer, defval=20)
src_ma = input(title="Moving Average Source", type=input.source, defval=close)
ma = sma(src_ma, periodes_ma)
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 and close > ma
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0))
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 and close < ma
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0))
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.new(color.green, 70) : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.new(color.red, 70) : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor)
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2018, title = "From Year", minval = 999)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 999)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() => time >= start and time <= finish ? true : false
longCondition = buySignal
if (longCondition)
strategy.entry("BUY", strategy.long, when = window())
shortCondition = sellSignal
if (shortCondition)
strategy.close("BUY")
strategy.entry("SELL", strategy.short, when = window())
buy1 = barssince(buySignal)
sell1 = barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na
barcolor(barcoloring ? color1 : na)