
Эта стратегия использует средний реальный волновой индикатор и вычисленные цены, чтобы создать торговой сигнал при прорыве цены через канал. У стратегии есть выдающаяся способность отслеживать тенденции.
Эта стратегия сначала рассчитывает показатель ATR как меру колебаний цен, а затем, в сочетании со средними значениями наивысшей цены, наименьшей цены и цены закрытия, вычисляет взлеты и падения. Когда цена поднимается, она прорывает низкую траекторию, создавая сигнал покупки; когда цена падает, она прорывает высокую траекторию, создавая сигнал продажи. Таким образом, формируется адаптивный восходящий канал, отслеживающий ценовую тенденцию.
После выхода на рынок стратегия устанавливает целевые точки прибыли и точки остановки убытка, останавливаясь, когда цена достигает целевых точек, и останавливаясь, если отзыв достигает точек остановки убытка.
Самым большим преимуществом этой стратегии является ее отличная способность отслеживать тенденции. Поднимающийся канал может адаптироваться и улавливать изменения в ценовых тенденциях. В то же время, использование показателя ATR также обеспечивает определенную гарантию прогрессивных операций. Кроме того, механизм остановки и убытков в стратегии также делает контроль прибыли и убытков более четким.
Одним из основных рисков этой стратегии является то, что она способна создавать большое количество свободных позиций. Когда цена находится в колебании, это часто приводит к тому, что часто активируются верхние и нижние каналы, что приводит к большому количеству неэффективных сделок. Кроме того, установка количества стоп-стоп может напрямую повлиять на конечную прибыль.
Чтобы снизить эти риски, можно рассмотреть оптимизацию параметров ATR или корректировку ширины канала, чтобы он был ближе к реальной тенденции. Кроме того, можно использовать фильтр времени выхода на рынок в сочетании с другими показателями.
Эта стратегия может быть оптимизирована в следующих аспектах:
Оптимизация ATR-параметров. Можно тестировать различные периодические параметры, чтобы ATR лучше отражал реальные колебания.
Оптимизация ширины канала. Можно тестировать различные значения умножения, чтобы определить оптимальные параметры.
Добавление фильтров на другие показатели. Например, в сочетании с MACD-индикатором, определяющим точки покупки и продажи, можно в некоторой степени уменьшить недействительные сделки.
Оптимизация остановочных и стоп-пунктов. Испытание влияния различных параметров на конечную доходность.
Для более полной оценки качества стратегии следует рассматривать коэффициент Шарпа или коэффициент прибыли и убытка в качестве цели оптимизации.
Эта стратегия обеспечивает отличное отслеживание тенденций с помощью адаптированных подъемных каналов и принципов прорыва. В то же время она имеет относительно четкую логику стоп-стоп-лосс. Оптимизация определенных параметров и правил, которая, как ожидается, еще больше повысит динамическую отслеживаемость стратегии, чтобы она могла применяться в более широких рыночных условиях.
/*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)