
В данной статье подробно анализируется улучшенная стратегия отслеживания трендов в сочетании с индикатором SuperTrend и фильтром Stochastic RSI. Эта стратегия предназначена для генерации сигналов покупки и продажи, принимая во внимание рыночные тенденции и уменьшая ложные сигналы.
Во-первых, рассчитывается реальный диапазон колебаний (TR) и средний реальный диапазон колебаний (ATR). Затем используется ATR для вычисления верхнего и нижнего колебаний:
Верхняя траектория = SMA ((закрытие цены, ATR циклов) + ATR умножить × ATR Нижняя траектория = SMA ((закрытие цены, ATR циклов) - ATR умножить на ATR
Если цена закрытия выше нижней полосы, то это восходящая тенденция; если цена закрытия ниже верхней полосы, то это нисходящая тенденция. В восходящей тенденции SuperTrend является нисходящей; в нисходящей тенденции SuperTrend является восходящей.
Чтобы уменьшить количество ложных сигналов, для фильтрации Супертенда используется скользящее среднее.
Рассчитывается значение RSI, затем применяется стохастический индикатор для получения стохастического RSI. Он отражает, находится ли RSI в зоне перекупа или перепродажи.
Условия покупки: Закрытие после прорыва СуперТренда, находящегося в восходящем тренде, и Стохастический RSI < 80 Условия продажи: цена закрытия находится в нисходящем тренде после прорыва СуперТренда и Stochastic RSI > 20
Выход из покупки: Супертенденция, прошедшая под замыкание, находится в восходящем тренде Выход из продажи: закрытие цены после прорыва в SuperTrend и в нисходящем тренде
Это улучшенная стратегия отслеживания тенденций, которая имеет следующие преимущества по сравнению с простыми движущимися средними и другими показателями:
Эта стратегия объединяет преимущества двух индикаторов SuperTrend и Stochastic RSI, позволяя эффективно идентифицировать тенденции и выдавать высококачественные торговые сигналы. В то же время механизм фильтрации также делает ее более агрессивной к рыночному шуму. Эта стратегия может получить лучшую стратегическую эффективность путем оптимизации параметров, а также может быть рассмотрена в сочетании с другими показателями или моделями.
/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Improved SuperTrend Strategy with Stochastic RSI", shorttitle="IST+StochRSI", overlay=true)
// Input parameters
atr_length = input(14, title="ATR Length")
atr_multiplier = input(1.5, title="ATR Multiplier")
filter_length = input(5, title="Filter Length")
stoch_length = input(14, title="Stochastic RSI Length")
smooth_k = input(3, title="Stochastic RSI %K Smoothing")
// Calculate True Range (TR) and Average True Range (ATR)
tr = ta.rma(ta.tr, atr_length)
atr = ta.rma(tr, atr_length)
// Calculate SuperTrend
upper_band = ta.sma(close, atr_length) + atr_multiplier * atr
lower_band = ta.sma(close, atr_length) - atr_multiplier * atr
is_uptrend = close > lower_band
is_downtrend = close < upper_band
super_trend = is_uptrend ? lower_band : na
super_trend := is_downtrend ? upper_band : super_trend
// Filter for reducing false signals
filtered_super_trend = ta.sma(super_trend, filter_length)
// Calculate Stochastic RSI
rsi_value = ta.rsi(close, stoch_length)
stoch_rsi = ta.sma(ta.stoch(rsi_value, rsi_value, rsi_value, stoch_length), smooth_k)
// Entry conditions
long_condition = ta.crossover(close, filtered_super_trend) and is_uptrend and stoch_rsi < 80
short_condition = ta.crossunder(close, filtered_super_trend) and is_downtrend and stoch_rsi > 20
// Exit conditions
exit_long_condition = ta.crossunder(close, filtered_super_trend) and is_uptrend
exit_short_condition = ta.crossover(close, filtered_super_trend) and is_downtrend
// Plot SuperTrend and filtered SuperTrend
plot(super_trend, color=color.orange, title="SuperTrend", linewidth=2)
plot(filtered_super_trend, color=color.blue, title="Filtered SuperTrend", linewidth=2)
// Plot Buy and Sell signals
plotshape(series=long_condition, title="Buy Signal", color=color.green, style=shape.triangleup, location=location.belowbar)
plotshape(series=short_condition, title="Sell Signal", color=color.red, style=shape.triangledown, location=location.abovebar)
// Output signals to the console for analysis
plotchar(long_condition, "Long Signal", "▲", location.belowbar, color=color.green, size=size.small)
plotchar(short_condition, "Short Signal", "▼", location.abovebar, color=color.red, size=size.small)
// Strategy entry and exit
strategy.entry("Long", strategy.long, when=long_condition)
strategy.entry("Short", strategy.short, when=short_condition)
strategy.close("Long", when=exit_long_condition)
strategy.close("Short", when=exit_short_condition)