Estratégias de negociação de osciladores


Data de criação: 2023-12-13 14:45:51 última modificação: 2023-12-13 14:45:51
cópia: 0 Cliques: 795
1
focar em
1621
Seguidores

Estratégias de negociação de osciladores

Visão geral

Esta é uma estratégia de negociação de reversão baseada em vários indicadores técnicos. Combina indicadores como CCI, índice de momentum e RSI para identificar potenciais oportunidades de negociação de hipotecas e hipotecas. A estratégia emite um sinal de negociação quando o indicador mostra um sinal de sobrevenda e um retorno de preço.

Princípio da estratégia

Os sinais de negociação da estratégia são derivados de um indicador personalizado, o Edri, que leva em conta o cruzamento do CCI, o indicador de momentum e o RSI. A lógica específica é:

Condições de sinal múltipla:

  1. Os indicadores de pontos de venda e venda de Edri emitem um sinal de compra, ou seja, o CCI atravessa o eixo 0 ou o indicador de momentum atravessa o eixo 0 e o RSI está abaixo da linha de venda excessiva.
  2. Preço retrocede ou fica abaixo de 100 ciclos de EMA.

Condições do sinal de cabeça vazia:

  1. O indicador de pontos de venda e compra de Edri emite um sinal de venda, ou seja, o CCI abaixo do eixo 0 ou o indicador de momentum abaixo do eixo 0 e o RSI acima da linha de supercompra.
  2. Preço retrocedeu ou subiu acima da EMA de 100 ciclos.

A estratégia também pode optar por configurar a busca de condições de desvio padrão, ou seja, o RSI e o preço se desviam claramente para produzir um sinal de negociação.

Quando o sinal de negociação é atendido, o ponto de parada de perda da estratégia é o preço de entrada de ± 2 ATR e o ponto de parada de parada é o preço de entrada de ± 4 ATR. Isso permite definir um limite de parada de perda razoável de acordo com a volatilidade do mercado.

Análise de vantagens

  1. A integração de vários indicadores ajuda a evitar falsos sinais de um único indicador.
  2. O método de negociação inversa é útil para capturar oportunidades de negociação de curto prazo em situações de turbulência.
  3. ATR Stop Loss Stop Mode, que pode ajustar a posição de acordo com a volatilidade inteligente do mercado.
  4. Pode-se procurar condições de desvio para evitar a abertura de posições em situações de sobrevenda não extremas.

Análise de Riscos

  1. A configuração inadequada dos parâmetros do indicador pode causar oportunidades de negociação perdidas ou produzir sinais errados em excesso.
  2. O padrão de negociação inversa pode ter uma parada contínua em uma tendência.
  3. O ATR é retardado e não pode atualizar o ponto de parada em tempo hábil em situações de rápida mudança.

Solução:

  1. Os parâmetros do indicador são testados e otimizados várias vezes para encontrar a melhor combinação de parâmetros.
  2. Pode-se considerar suspender a utilização da estratégia quando a tendência for mais forte.
  3. Combinado com outros métodos de parada, como parada móvel ou parada de contraventor.

Direção de otimização

  1. Teste diferentes combinações de parâmetros, como CCI e ciclo do índice de força, parâmetros RSI, múltiplos ATR, etc.
  2. Adicionar outras condições auxiliares de filtragem, como padrões de preços, mudanças de volume de transação, etc.
  3. Ajustar a forma de gestão de posições, como a proporção de posições de acordo com o valor ATR.
  4. Configure os modelos de parâmetros para diferentes variedades e períodos.
  5. Considere a possibilidade de suspender a negociação de reversão em um cenário de tendência, em combinação com um mecanismo de acompanhamento de tendências.

Resumir

A estratégia é aplicada principalmente em situações de choque, para obter um retorno mais estável, capturando a reversão da linha curta no meio. Ela ajuda a identificar o fenômeno de estiramento de curto prazo dos preços e a gerar sinais de negociação com base em vários indicadores de julgamento.

Código-fonte da estratégia
/*backtest
start: 2023-11-12 00:00:00
end: 2023-12-02 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © MagicStrategies

//@version=5
strategy("Reversal Indicator Strategy", overlay = true)

// Input settings
ccimomCross = input.string('CCI', 'Entry Signal Source', options=['CCI', 'Momentum'], tooltip='CCI or Momentum will be the final source of the Entry signal if selected.')
ccimomLength = input.int(10, minval=1, title='CCI/Momentum Length')
useDivergence = input.bool(true, title='Find Regular Bullish/Bearish Divergence', tooltip='If checked, it will only consider an overbought or oversold condition that has a regular bullish or bearish divergence formed inside that level.')
rsiOverbought = input.int(65, minval=1, title='RSI Overbought Level', tooltip='Adjusting the level to extremely high may filter out some signals especially when the option to find divergence is checked.')
rsiOversold = input.int(35, minval=1, title='RSI Oversold Level', tooltip='Adjusting this level extremely low may filter out some signals especially when the option to find divergence is checked.')
rsiLength = input.int(14, minval=1, title='RSI Length')
plotMeanReversion = input.bool(false, 'Plot Mean Reversion Bands on the chart', tooltip='This function doesn\'t affect the entry of signal but it suggests buying when the price is at the lower band, and then sell it on the next bounce at the higher bands.')
emaPeriod = input(200, title='Lookback Period (EMA)')
bandMultiplier = input.float(1.8, title='Outer Bands Multiplier', tooltip='Multiplier for both upper and lower bands')


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

// Entry Conditions
longEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition)
shortEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition)


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


// Plotting
plotshape(longEntryCondition, 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(shortEntryCondition, 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)

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

// Entry signal alerts
alertcondition(longEntryCondition, title='BUY Signal', message='Buy Entry Signal')
alertcondition(shortEntryCondition, title='SELL Signal', message='Sell Entry Signal')
alertcondition(longEntryCondition or shortEntryCondition, title='BUY or SELL Signal', message='Entry Signal')

ema100 = ta.ema(close, 100)
plot(ema100, color=color.red)

// Define trading signals based on the original indicator's entry conditions
// Buy if long condition is met and price has pulled back to or below the 100 EMA
longCondition  = longEntryCondition and close <= ema100
// Sell if short condition is met and price has pulled back to or above the 100 EMA
shortCondition = shortEntryCondition and close >= ema100

// Strategy Entries
if longCondition
    strategy.entry("Buy", strategy.long)
if shortCondition
    strategy.entry("Sell", strategy.short)