Стратегия прорыва SuperTrend

Автор:Чао Чжан, Дата: 2024-02-28 18:12:47
Тэги:

img

Обзор

Эта стратегия генерирует торговые сигналы, когда цена выходит из канала восходящего / нисходящего тренда, сформированного индикатором SuperTrend.

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

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

После выхода на рынок стратегия устанавливает целевые тики прибыли и тики стоп-лосса. Она закрывает позицию для получения прибыли, когда цена достигает целевой прибыли, и останавливается, когда снижение достигает уровня стоп-лосса.

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

Наибольшее преимущество этой стратегии заключается в ее превосходной способности следовать за трендом. Адаптивный канал может быстро улавливать изменения тренда. Использование ATR также обеспечивает некоторую уверенность в торговле наряду с импульсом. Кроме того, цель прибыли и механизм остановки потерь дают четкий контроль риска / вознаграждения.

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

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

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

Возможности для расширения

Стратегия может быть улучшена в нескольких аспектах:

  1. Оптимизировать параметры ATR для лучшего отражения реальной динамики волатильности.

  2. Проверьте разные множители для оптимизации ширины канала.

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

  4. Оптимизировать целевую прибыль и уровни стоп-лосса для максимальной доходности, скорректированной по риску.

  5. Рассмотрим другие цели, такие как коэффициент Шарпа или коэффициент прибыли, чтобы оценить общее качество.

Резюме

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


/*backtest
start: 2024-02-26 00:00:00
end: 2024-02-26 20:20:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

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

// Input parameters
atr_length = input.int(10, title="ATR Length")
multiplier = input.float(3.0, title="Multiplier")

target_points = input.int(100, title="Target Points")
stop_loss_points = input.int(50, title="Stop Loss Points")

// Calculate ATR and Supertrend
atr = ta.atr(atr_length)
upper_band = hlc3 + (multiplier * atr)
lower_band = hlc3 - (multiplier * atr)
is_uptrend = close > lower_band
is_downtrend = close < upper_band
trend_changed = (is_uptrend[1] and is_downtrend) or (is_downtrend[1] and is_uptrend)

// Strategy logic
long_condition = is_uptrend and trend_changed
short_condition = is_downtrend and trend_changed

// Plot Supertrend
plot(is_uptrend ? lower_band : na, color=color.green, title="Supertrend Up", style=plot.style_linebr)
plot(is_downtrend ? upper_band : na, color=color.red, title="Supertrend Down", style=plot.style_linebr)

// Strategy entry and exit
if long_condition
    strategy.entry("Long", strategy.long)
if short_condition
    strategy.entry("Short", strategy.short)

// Calculate target and stop loss levels
long_target = strategy.position_avg_price + target_points
long_stop_loss = strategy.position_avg_price - stop_loss_points
short_target = strategy.position_avg_price - target_points
short_stop_loss = strategy.position_avg_price + stop_loss_points

// Strategy exit
strategy.exit("Long Exit", "Long", limit=long_target, stop=long_stop_loss)
strategy.exit("Short Exit", "Short", limit=short_target, stop=short_stop_loss)


Больше