Стратегия прорыва обратного среднего


Дата создания: 2023-12-20 14:48:57 Последнее изменение: 2023-12-20 14:48:57
Копировать: 0 Количество просмотров: 637
1
Подписаться
1621
Подписчики

Стратегия прорыва обратного среднего

Обзор

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

Стратегический принцип

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

  1. Показатель CCI или динамический индикатор посылает сигнал о перекупе и перепродаже.

  2. RSI определяет, находится ли человек в зоне перекупа или перепродажи. RSI выше 65 - это зона перекупа, а ниже 35 - зона перепродажи.

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

  4. Проверьте истинную диапазону RSI, чтобы избежать ложных прорывов.

При выполнении вышеперечисленных условий, стратегия принимает обратный вход. и устанавливает стоп-лосс, контролирует риск.

Стратегические преимущества

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

  1. Многофакторное суждение, более высокая надежность. Не стоит полагаться только на один показатель, это уменьшает вероятность ошибочного суждения.

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

  3. Выявление рассеянности, предотвращение ложных прорывов и снижение системного риска.

  4. Контроль рисков с помощью механизмов сдерживания убытков.

Риски и решения

В этой стратегии есть определенные риски, которые сосредоточены на следующем:

  1. Недопустимо определить момент обратного хода. В результате возникает возбуждение остановки. Степень остановки может быть расширена.

  2. Неправильная настройка параметров Брин-полосы делает нормальную цену аномальной. Параметры настройки параметров рыночных колебаний должны быть совмещены.

  3. Возможно большое количество сделок. Уместно расширить диапазон параметров суждения, таких как CCI, чтобы уменьшить частоту сделок.

  4. Многопространственное равновесие может сильно отличаться. Разумность параметров показателя должна быть определена на основе исторических данных.

Направление оптимизации

Эта стратегия может быть оптимизирована в следующих направлениях:

  1. Использование алгоритмов машинного обучения для автоматической оптимизации параметров показателей.

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

  3. Повышение показателей объема сделок для определения надежности обратного обращения. Например, объем сделок, удержание данных и т. Д.

  4. В сочетании с данными блокчейна оценить рыночные настроения. Повысить адаптивность стратегий.

  5. Введение адаптивного механизма остановки убытков. Корректировка остановки убытков в зависимости от изменения рыночных колебаний.

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-12-12 00:00:00
end: 2023-12-19 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title='BroTheJo Strategy', shorttitle='BTJ INV', overlay=true)

// Input settings
stopLossInPips = input.int(10, minval=0, title='Stop Loss (in Pips)')
ccimomCross = input.string('CCI', 'Entry Signal Source', options=['CCI', 'Momentum'])
ccimomLength = input.int(10, minval=1, title='CCI/Momentum Length')
useDivergence = input.bool(false, title='Find Regular Bullish/Bearish Divergence')
rsiOverbought = input.int(65, minval=1, title='RSI Overbought Level')
rsiOversold = input.int(35, minval=1, title='RSI Oversold Level')
rsiLength = input.int(14, minval=1, title='RSI Length')
plotMeanReversion = input.bool(true, 'Plot Mean Reversion Bands on the chart')
emaPeriod = input(200, title='Lookback Period (EMA)')
bandMultiplier = input.float(1.6, title='Outer Bands Multiplier')

// CCI and Momentum calculation
momLength = ccimomCross == 'Momentum' ? ccimomLength : 10
mom = close - close[momLength]
cci = ta.cci(close, ccimomLength)
ccimomCrossUp = ccimomCross == 'Momentum' ? ta.cross(mom, 0) : ta.cross(cci, 0)
ccimomCrossDown = ccimomCross == 'Momentum' ? ta.cross(0, mom) : ta.cross(0, cci)

// RSI calculation
src = close
up = ta.rma(math.max(ta.change(src), 0), rsiLength)
down = ta.rma(-math.min(ta.change(src), 0), rsiLength)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
oversoldAgo = rsi[0] <= rsiOversold or rsi[1] <= rsiOversold or rsi[2] <= rsiOversold or rsi[3] <= rsiOversold
overboughtAgo = rsi[0] >= rsiOverbought or rsi[1] >= rsiOverbought or rsi[2] >= rsiOverbought or rsi[3] >= rsiOverbought

// Regular Divergence Conditions
bullishDivergenceCondition = rsi[0] > rsi[1] and rsi[1] < rsi[2]
bearishDivergenceCondition = rsi[0] < rsi[1] and rsi[1] > rsi[2]

// Mean Reversion Indicator
meanReversion = plotMeanReversion ? ta.ema(close, emaPeriod) : na
stdDev = plotMeanReversion ? ta.stdev(close, emaPeriod) : na
upperBand = plotMeanReversion ? meanReversion + stdDev * bandMultiplier : na
lowerBand = plotMeanReversion ? meanReversion - stdDev * bandMultiplier : na

// Entry Conditions
prevHigh = ta.highest(high, 1)
prevLow = ta.lowest(low, 1)
shortEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition) and (prevHigh >= meanReversion) and (prevLow >= meanReversion)
longEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition) and (prevHigh <= meanReversion) and (prevLow <= meanReversion)

// Plotting
oldShortEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition)
oldLongEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition)
plotshape(oldLongEntryCondition, title='BUY', style=shape.triangleup, text='B', location=location.belowbar, color=color.new(color.lime, 0), textcolor=color.new(color.white, 0), size=size.tiny)
plotshape(oldShortEntryCondition, title='SELL', style=shape.triangledown, text='S', location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)

// Strategy logic
if (longEntryCondition)
    stopLoss = close - stopLossInPips
    strategy.entry("Buy", strategy.long)
    strategy.exit("exit", "Buy", stop=stopLoss)
if (shortEntryCondition)
    stopLoss = close + stopLossInPips
    strategy.entry("Sell", strategy.short)
    strategy.exit("exit", "Sell", stop=stopLoss)

// Close all open positions when outside of bands
closeAll = (high >= upperBand) or (low <= lowerBand)

if (closeAll)
    strategy.close_all("Take Profit/Cut Loss")

// Plotting
plot(upperBand, title='Upper Band', color=color.fuchsia, linewidth=1)
plot(meanReversion, title='Mean', color=color.gray, linewidth=1)
plot(lowerBand, title='Lower Band', color=color.blue, linewidth=1)