Эта стратегия сочетает в себе индекс относительной силы (RSI) и стохастический осциллятор, чтобы сформировать двойную стратегию для более точного определения условий рынка с перекупленными и перепроданными активами, тем самым генерируя более надежные торговые сигналы.
RSI в этой стратегии имеет период 14 с перекупленным порогом 70 и перепроданным порогом 30. Линия %K стохастического осциллятора использует 3-периодическую SMA, а ее линия %D представляет собой 3-периодическую SMA %K. Бычий кроссовер происходит, когда %K пересекает %D, в то время как медвежий кроссовер происходит, когда %K пересекает ниже %D.
Торговые сигналы генерируются на основе комбинированных индикаторов:
Когда на стохастике происходит бычий кроссовер, а RSI превышает 70, генерируется сигнал о перекупке для короткого расписания.
Когда на Stochastic происходит медвежий кроссовер, а RSI ниже 30, генерируется сигнал перепроданности для длинного хода.
Эта двойная стратегия использует преимущества RSI в определении уровня перекупленности/перепроданности, используя при этом тенденционную функцию Stochastic для отфильтрации ложных сигналов, что приводит к более надежным торговым записям.
Наибольшее преимущество этой двойной стратегии заключается в значительном сокращении ложных сигналов и повышении надежности.
RSI сам по себе может генерировать чрезмерные ложные сигналы. Это связано с тем, что RSI только отражает уровни перерасширения цен без учета направления тренда. Таким образом, самостоятельные сигналы RSI, как правило, ненадежны.
С другой стороны, стохастический осциллятор может определить направление тренда.
И наоборот, нисходящий кроссовер означает, что наступает обратный тренд.
Таким образом, объединение RSI и Stochastic позволяет лучше определить уровни чрезмерного распространения и направленность тренда, отфильтровывая ненадежные сигналы и выявляя поворотные точки с высокой вероятностью.
При использовании этой стратегии также следует учитывать риски:
Двойной индикаторный подход может отфильтровать некоторые действительные сигналы, вызывая упущенные торговые возможности.
Тонкая настройка параметров, таких как период RSI и стохастическое сглаживание, является ключевым, иначе точность сигнала может быть скомпрометирована.
Подтверждение динамики цены и объема по-прежнему необходимо при приеме сигналов, чтобы избежать ложных прорывов.
Будьте осведомлены о системных рисках и избегайте слепой торговли во время высокой волатильности рынка.
Эта стратегия может быть еще более совершенствована по нескольким аспектам:
Оптимизировать RSI и стохастические параметры с помощью обратного тестирования для поиска идеальных комбинаций.
Включите индикаторы объема для подтверждения сигнала, например, пики объема.
Добавьте следующие тренду перекрытия, такие как скользящие средние, чтобы избежать рыночного шума и сбоев.
Использование машинного обучения для обнаружения более сложных комбинаций сигналов, включающих полосы Боллинджера, ценовые модели и т. Д., Для улучшения последовательности.
Использование глубокого обучения и анализа больших данных для разработки более интеллектуальных многоцелевых торговых систем с более высокой эффективностью выборки.
В целом, двойная стратегия RSI-Stochastic эффективно использует сильные стороны каждого с помощью ансамбль моделирования. По сравнению со самостоятельным RSI, он предлагает превосходную способность фильтрации и точность сигнала.
/*backtest start: 2022-09-30 00:00:00 end: 2023-10-06 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //Based on Divergences and Hidden Divergences //Locates bottom market and reversals strategy("Vix FIX / StochRSI Strategy", pyramiding=9, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=3, overlay=false) ///////////// Stochastic Slow Stochlength = input(14, minval=1, title="lookback length of Stochastic") StochOverBought = input(80, title="Stochastic overbought condition") StochOverSold = input(20, title="Stochastic oversold condition") smoothK = input(3, title="smoothing of Stochastic %K ") smoothD = input(3, title="moving average of Stochastic %K") k = sma(stoch(close, high, low, Stochlength), smoothK) d = sma(k, smoothD) ///////////// RSI RSIlength = input( 14, minval=1 , title="lookback length of RSI") RSIOverBought = input( 70 , title="RSI overbought condition") RSIOverSold = input( 30 , title="RSI oversold condition") RSIprice = close vrsi = rsi(RSIprice, RSIlength) ///////////// Double strategy: RSI strategy + Stochastic strategy pd = input(22, title="LookBack Period Standard Deviation High") bbl = input(20, title="Bolinger Band Length") mult = input(2.0 , minval=1, maxval=5, title="Bollinger Band Standard Devaition Up") lb = input(50 , title="Look Back Period Percentile High") ph = input(.85, title="Highest Percentile - 0.90=90%, 0.95=95%, 0.99=99%") new = input(false, title="-------Text Plots Below Use Original Criteria-------" ) sbc = input(false, title="Show Text Plot if WVF WAS True and IS Now False") sbcc = input(false, title="Show Text Plot if WVF IS True") new2 = input(false, title="-------Text Plots Below Use FILTERED Criteria-------" ) sbcFilt = input(true, title="Show Text Plot For Filtered Entry") sbcAggr = input(true, title="Show Text Plot For AGGRESSIVE Filtered Entry") ltLB = input(40, minval=25, maxval=99, title="Long-Term Look Back Current Bar Has To Close Below This Value OR Medium Term--Default=40") mtLB = input(14, minval=10, maxval=20, title="Medium-Term Look Back Current Bar Has To Close Below This Value OR Long Term--Default=14") str = input(3, minval=1, maxval=9, title="Entry Price Action Strength--Close > X Bars Back---Default=3") //Alerts Instructions and Options Below...Inputs Tab new4 = input(false, title="-------------------------Turn On/Off ALERTS Below---------------------" ) new5 = input(false, title="----To Activate Alerts You HAVE To Check The Boxes Below For Any Alert Criteria You Want----") sa1 = input(false, title="Show Alert WVF = True?") sa2 = input(false, title="Show Alert WVF Was True Now False?") sa3 = input(false, title="Show Alert WVF Filtered?") sa4 = input(false, title="Show Alert WVF AGGRESSIVE Filter?") //Williams Vix Fix Formula wvf = ((highest(close, pd)-low)/(highest(close, pd)))*100 sDev = mult * stdev(wvf, bbl) midLine = sma(wvf, bbl) lowerBand = midLine - sDev upperBand = midLine + sDev rangeHigh = (highest(wvf, lb)) * ph //Filtered Bar Criteria upRange = low > low[1] and close > high[1] upRange_Aggr = close > close[1] and close > open[1] //Filtered Criteria filtered = ((wvf[1] >= upperBand[1] or wvf[1] >= rangeHigh[1]) and (wvf < upperBand and wvf < rangeHigh)) filtered_Aggr = (wvf[1] >= upperBand[1] or wvf[1] >= rangeHigh[1]) and not (wvf < upperBand and wvf < rangeHigh) //Alerts Criteria alert1 = wvf >= upperBand or wvf >= rangeHigh ? 1 : 0 alert2 = (wvf[1] >= upperBand[1] or wvf[1] >= rangeHigh[1]) and (wvf < upperBand and wvf < rangeHigh) ? 1 : 0 alert3 = upRange and close > close[str] and (close < close[ltLB] or close < close[mtLB]) and filtered ? 1 : 0 alert4 = upRange_Aggr and close > close[str] and (close < close[ltLB] or close < close[mtLB]) and filtered_Aggr ? 1 : 0 //Coloring Criteria of Williams Vix Fix col = wvf >= upperBand or wvf >= rangeHigh ? lime : gray isOverBought = (crossover(k,d) and k > StochOverBought) ? 1 : 0 isOverBoughtv2 = k > StochOverBought ? 1 : 0 filteredAlert = alert3 ? 1 : 0 aggressiveAlert = alert4 ? 1 : 0 plot(isOverBought, "Overbought / Crossover", style=line, color=red) plot(filteredAlert, "Filtered Alert", style=line, color=fuchsia) plot(aggressiveAlert, "Aggressive Alert", style=line, color=orange) if (filteredAlert or aggressiveAlert) strategy.entry("Long", strategy.long) if (isOverBought) strategy.close("Long")