Crossover de média móvel múltipla combinado com sistema de negociação de tendências de suporte e resistência Camarilla

EMA CPR SR
Data de criação: 2025-01-06 11:13:31 última modificação: 2025-01-06 11:13:31
cópia: 0 Cliques: 373
1
focar em
1617
Seguidores

Crossover de média móvel múltipla combinado com sistema de negociação de tendências de suporte e resistência Camarilla

Visão geral

Esta estratégia é um sistema de negociação de acompanhamento de tendências que combina múltiplas médias móveis exponenciais (MME), níveis de suporte e resistência da Camarilla e o Intervalo Pivô Central (CPR). A estratégia identifica tendências de mercado e potenciais oportunidades de negociação analisando o preço em relação a diversas médias móveis e faixas de preço importantes. O sistema adota medidas rigorosas de gestão de fundos e controle de risco, incluindo tamanho de posição percentual e mecanismos de saída diversificados.

Princípio da estratégia

A estratégia é baseada nos seguintes componentes principais:

  1. O sistema de média móvel múltipla (EMA20/50/100/200) é usado para confirmar a direção e a força da tendência
  2. Os níveis de suporte e resistência da Camarilla (R3/S3) são usados ​​para identificar os principais níveis de preço
  3. O Intervalo Central de Preços (CPR) é usado para determinar o intervalo de negociação intradiária.
  4. Os sinais de entrada são baseados no cruzamento do preço com EMA200 e confirmação pela EMA20
  5. As estratégias de saída incluem pontos fixos e modos de movimento percentual
  6. O sistema de gestão de fundos ajusta dinamicamente o tamanho da posição de acordo com o tamanho da conta

Vantagens estratégicas

  1. A combinação de indicadores técnicos multidimensionais fornece sinais de negociação mais confiáveis
  2. Mecanismo de saída flexível para se adaptar a diferentes ambientes de mercado
  3. Sistema de gestão de fundos perfeito controla riscos de forma eficaz
  4. Recursos de acompanhamento de tendências ajudam a capturar grandes movimentos
  5. Os componentes de visualização facilitam a compreensão da estrutura do mercado pelos traders

Risco estratégico

  1. Sinais falsos podem ocorrer em mercados voláteis
  2. Vários indicadores podem causar sinais de negociação atrasados
  3. Pontos de saída fixos podem não ter bom desempenho em mercados voláteis
  4. É necessário um tamanho de fundo maior para suportar reduções
  5. Os custos de transação podem afetar o retorno geral da estratégia

Direção de otimização da estratégia

  1. Introduzir indicadores de volatilidade para ajustar dinamicamente os parâmetros de entrada e saída
  2. Adicionar módulo de reconhecimento de status de mercado para se adaptar a diferentes ambientes de mercado
  3. Otimizar o sistema de gestão de fundos e adicionar gestão dinâmica de posições
  4. Adicionado filtro de tempo de negociação para melhorar a qualidade do sinal
  5. Considere adicionar análise de volume para melhorar a confiabilidade do sinal

Resumir

Esta estratégia cria um sistema de negociação completo integrando diversas ferramentas clássicas de análise técnica. As vantagens do sistema estão na análise de mercado multidimensional e na gestão rigorosa de riscos, mas também é preciso prestar atenção à sua adaptabilidade a diferentes ambientes de mercado. Por meio de otimização e melhoria contínuas, espera-se que a estratégia melhore a lucratividade, mantendo a estabilidade.

Código-fonte da estratégia
/*backtest
start: 2020-01-06 00:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Pradeep Crude oil Entry and Exit", overlay=true)

// Input settings for EMAs
ema20_period = input.int(20, title="EMA 20 Period")
ema50_period = input.int(50, title="EMA 50 Period")
ema100_period = input.int(100, title="EMA 100 Period")
ema200_period = input.int(200, title="EMA 200 Period")

// Fixed line width settings for EMAs
ema20_width = 2  // EMA 20 Line Width
ema50_width = 2  // EMA 50 Line Width
ema100_width = 3 // EMA 100 Line Width
ema200_width = 4 // EMA 200 Line Width

// Backtesting inputs
initial_capital = input.float(50000, title="Initial Capital", minval=100)
position_size_percent = input.float(100, title="Position Size (% of Capital)", minval=0.1, maxval=100)
exit_mode = input.string("Price Movement", title="Exit Mode", options=["Price Movement", "Percentage Movement"])
exit_points = input.int(20, title="Exit After X Points", minval=1)
exit_percentage = input.float(1.0, title="Exit After X% Movement", minval=0.1, step=0.1)

// Calculate EMAs
ema20 = ta.ema(close, ema20_period)
ema50 = ta.ema(close, ema50_period)
ema100 = ta.ema(close, ema100_period)
ema200 = ta.ema(close, ema200_period)

// Signal conditions
long_entry_condition = close > ema200 and close > ema20 and close[1] <= ema200
long_exit_condition = (exit_mode == "Price Movement" and close - strategy.position_avg_price >= exit_points * syminfo.mintick) or 
                      (exit_mode == "Percentage Movement" and (close - strategy.position_avg_price) / strategy.position_avg_price * 100 >= exit_percentage)
short_entry_condition = close < ema200 and close < ema20 and close[1] >= ema200
short_exit_condition = (exit_mode == "Price Movement" and strategy.position_avg_price - close >= exit_points * syminfo.mintick) or 
                       (exit_mode == "Percentage Movement" and (strategy.position_avg_price - close) / strategy.position_avg_price * 100 >= exit_percentage)

// Plot EMAs with specified line widths
plot(ema20, color=color.green, title="EMA 20", linewidth=ema20_width)
plot(ema50, color=color.aqua, title="EMA 50", linewidth=ema50_width)
plot(ema100, color=color.blue, title="EMA 100", linewidth=ema100_width)
plot(ema200, color=color.red, title="EMA 200", linewidth=ema200_width)

// Camarilla Pivot Calculation
prev_high = request.security(syminfo.tickerid, "D", high[1])
prev_low = request.security(syminfo.tickerid, "D", low[1])
prev_close = request.security(syminfo.tickerid, "D", close[1])

R3 = prev_close + (prev_high - prev_low) * 1.1 / 2
S3 = prev_close - (prev_high - prev_low) * 1.1 / 2

// Central Pivot Range (CPR) Calculation
pivot = (prev_high + prev_low + prev_close) / 3
upper_cpr = pivot + (prev_high - prev_low)
lower_cpr = pivot - (prev_high - prev_low)

// Plot Camarilla R3, S3 and CPR levels
plot(R3, color=color.purple, title="Camarilla R3", linewidth=2)
plot(S3, color=color.purple, title="Camarilla S3", linewidth=2)
plot(pivot, color=color.yellow, title="CPR Pivot", linewidth=2)
plot(upper_cpr, color=color.green, title="CPR Upper", linewidth=1)
plot(lower_cpr, color=color.red, title="CPR Lower", linewidth=1)

// Backtesting: Capital and position size
capital = initial_capital
risk_per_trade = (position_size_percent / 100) * capital

// Long positions
if long_entry_condition
    strategy.entry("Long", strategy.long, qty=risk_per_trade / close)
    // Display entry price label
    label.new(bar_index, close, text="Entry: " + str.tostring(close), color=color.green, style=label.style_label_up, yloc=yloc.belowbar)

if long_exit_condition
    strategy.close("Long")
    // Display exit price label
    label.new(bar_index, close, text="Exit: " + str.tostring(close), color=color.red, style=label.style_label_down, yloc=yloc.abovebar)

// Short positions
if short_entry_condition
    strategy.entry("Short", strategy.short, qty=risk_per_trade / close)
    // Display entry price label
    label.new(bar_index, close, text="Entry: " + str.tostring(close), color=color.red, style=label.style_label_down, yloc=yloc.abovebar)

if short_exit_condition
    strategy.close("Short")
    // Display exit price label
    label.new(bar_index, close, text="Exit: " + str.tostring(close), color=color.green, style=label.style_label_up, yloc=yloc.belowbar)

// Plot signals
plotshape(long_entry_condition, style=shape.triangleup, location=location.belowbar, color=color.new(color.green, 0), size=size.small, title="Long Entry")
plotshape(long_exit_condition, style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.small, title="Long Exit")
plotshape(short_entry_condition, style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.small, title="Short Entry")
plotshape(short_exit_condition, style=shape.triangleup, location=location.belowbar, color=color.new(color.green, 0), size=size.small, title="Short Exit")