Стратегия торговли по центральному разрыву и тренду


Дата создания: 2023-10-25 18:02:11 Последнее изменение: 2023-10-25 18:02:11
Копировать: 1 Количество просмотров: 667
1
Подписаться
1617
Подписчики

Стратегия торговли по центральному разрыву и тренду

Обзор

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

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

Во-первых, стратегия определяет сигналы покупки и продажи через нулевое пересечение на нулевой оси показателя CCI или динамического показателя. В то же время, требуется, чтобы индикатор RSI находился в зоне сверхпокупа и сверхпродажи, то есть RSI выше 65 является зоной сверхпокупа, а ниже 35 - зоной сверхпродажи. Таким образом, можно избежать ошибочного сигнала в зоне сверхпокупа и сверхпродажи.

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

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

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

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

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

  2. Использование хрустального соединения в Бринском поясе в качестве входного сигнала для эффективной фильтрации ложных прорывов

  3. Рассмотрение исторических тенденций RSI поможет избежать ошибочных торговых сигналов

  4. Полностью автоматизированная торговля без вмешательства человека, подходит для алгоритмической торговли

  5. Параметры стратегии могут быть легко адаптированы к различным видам торговли.

  6. Возможность установить стоп-стоп и эффективно контролировать риски

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

  1. Неправильная настройка параметров Брин-полосы может привести к сбоям в центральном суждении

  2. Неправильно настроенные параметры индикатора могут привести к созданию слишком много ошибочных сигналов

  3. Прорыв провалился, и цена должна была вовремя остановиться, чтобы снова вернуться в центр Брин-Бенда.

  4. Прорыв может быть неэффективным, если нет достаточной ликвидности в торговых сортах.

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

  6. Необходимо следить за временем сделок, чтобы избежать ложных прорывов

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

  1. Оптимизация параметров Брин-полосы для повышения устойчивости центра

  2. Тестирование эффективности различных параметров показателей для различных сортов

  3. Повышение контроля за объемом сделок и предотвращение чрезмерного количества отдельных позиций

  4. Добавление времени для определения основных торговых часов

  5. Добавление алгоритмов машинного обучения для создания более умных сигналов

  6. Доступ к большему количеству источников данных для оценки общего состояния рынка

  7. Увеличение интеграции с другими показателями, формируя портфель показателей

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

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

Исходный код стратегии
/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

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

// Input settings
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)
longEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition) and (prevHigh >= meanReversion) and (prevLow >= meanReversion)
shortEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition) and (prevHigh <= meanReversion) and (prevLow <= meanReversion)

// Plotting
oldLongEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition)
oldShortEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition)
plotshape(oldLongEntryCondition, title='BUY', style=shape.triangleup, 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, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)

// Strategy logic
if (longEntryCondition)
    strategy.entry("Buy", strategy.long)
if (shortEntryCondition)
    strategy.entry("Sell", strategy.short)

// 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)