O recurso está a ser carregado... Carregamento...

O sistema de negociação de tendências de suporte/resistência Camarilla

Autora:ChaoZhang, Data: 2025-01-06 11:13:31
Tags:EMARessuscitaçãoSR

img

Resumo

Esta estratégia é um sistema de negociação que combina múltiplas médias móveis exponenciais (EMA), níveis de suporte/resistência Camarilla e Central Pivot Range (CPR). O sistema identifica tendências de mercado e oportunidades de negociação potenciais, analisando as relações de preços com múltiplas médias móveis e zonas de preços-chave.

Princípios de estratégia

A estratégia baseia-se em vários componentes essenciais:

  1. Sistema EMA múltiplo (20/50/100/200) para confirmação da direcção e da força da tendência
  2. Níveis de suporte/resistência Camarilla (R3/S3) para a identificação dos níveis principais de preços
  3. Intervalos centrais de cruzamento (CPR) para a determinação dos intervalos de negociação intradiários
  4. Sinais de entrada baseados em cruzamento de preços com confirmação do EMA200 e do EMA20
  5. Estratégias de saída, incluindo pontos fixos e modos de movimento percentual
  6. Sistema de gestão de fundos que ajusta dinamicamente o tamanho das posições com base no tamanho da conta

Vantagens da estratégia

  1. A integração de indicadores técnicos multidimensionais proporciona sinais de negociação mais fiáveis
  2. Mecanismos de saída flexíveis adaptados às diferentes condições do mercado
  3. Um sistema abrangente de gestão de fundos controla eficazmente os riscos
  4. A tendência de seguir as características ajuda a captar os principais movimentos do mercado
  5. Componentes de visualização ajudam os comerciantes a entender a estrutura do mercado

Riscos estratégicos

  1. Pode gerar sinais falsos em mercados variados
  2. Indicadores múltiplos podem conduzir a sinais comerciais atrasados
  3. Pontos de saída fixos podem apresentar um desempenho inferior em mercados de alta volatilidade
  4. Requer um capital substancial para suportar os saques
  5. Os custos de negociação podem afetar os retornos globais da estratégia

Orientações para a otimização da estratégia

  1. Introdução de indicadores de volatilidade para ajustar dinamicamente os parâmetros de entrada/saída
  2. Adicionar um módulo de identificação do estado do mercado para se adaptar às diferentes condições do mercado
  3. Otimizar o sistema de gestão de fundos com gestão dinâmica de posições
  4. Adicionar filtros de tempo de negociação para melhorar a qualidade do sinal
  5. Considere a adição de análise de volume para melhorar a confiabilidade do sinal

Resumo

A estratégia integra várias ferramentas clássicas de análise técnica para construir um sistema de negociação completo. Seus pontos fortes estão na análise de mercado multidimensional e na gestão estrita de riscos, enquanto a atenção precisa ser dada à adaptabilidade em diferentes ambientes de mercado. Através da otimização e melhoria contínuas, a estratégia tem o potencial de aumentar a lucratividade, mantendo a estabilidade.


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




Relacionados

Mais.