En la carga de los recursos... Cargando...

El sistema de negociación de tendencias de soporte/resistencia de Camarilla

El autor:¿ Qué pasa?, Fecha: 2025-01-06 11:13:31
Las etiquetas:El EMAResurrección cardíacaEl número de personas

img

Resumen general

Esta estrategia es un sistema de trading que combina múltiples promedios móviles exponenciales (EMA), niveles de soporte/resistencia de Camarilla y rango central de pivote (CPR). El sistema identifica las tendencias del mercado y las oportunidades comerciales potenciales mediante el análisis de las relaciones de precios con múltiples promedios móviles y zonas de precios clave. Implementa estrictas medidas de gestión de dinero y control de riesgos, incluido el tamaño de posición basado en porcentajes y diversos mecanismos de salida.

Principios de estrategia

La estrategia se basa en varios componentes fundamentales:

  1. Sistema EMA múltiple (20/50/100/200) para la confirmación de la dirección y la fuerza de la tendencia
  2. Niveles de soporte/resistencia de Camarilla (R3/S3) para la identificación de los niveles clave de precios
  3. Intervalo de giro central (CPR) para determinar los intervalos de negociación intradiarios
  4. Las señales de entrada basadas en cruces de precios con confirmación de EMA200 y EMA20
  5. Estrategias de salida que incluyen puntos fijos y modos de movimiento porcentual
  6. Sistema de gestión de fondos que ajusta dinámicamente el tamaño de las posiciones en función del tamaño de la cuenta

Ventajas estratégicas

  1. La integración de indicadores técnicos multidimensionales proporciona señales comerciales más fiables
  2. Mecanismos de salida flexibles adaptados a las diferentes condiciones del mercado
  3. Un sistema integral de gestión del dinero controla eficazmente el riesgo
  4. Las características de tendencia que siguen ayudan a captar los principales movimientos del mercado
  5. Los componentes de visualización ayudan a los operadores a comprender la estructura del mercado

Riesgos estratégicos

  1. Puede generar señales falsas en mercados variados
  2. Los indicadores múltiples podrían dar lugar a señales comerciales rezagadas
  3. Los puntos de salida fijos pueden tener un rendimiento inferior en mercados de alta volatilidad
  4. Requiere de un capital sustancial para soportar los recortes
  5. Los costes de negociación pueden afectar a los rendimientos generales de la estrategia

Direcciones para la optimización de la estrategia

  1. Introducir indicadores de volatilidad para ajustar dinámicamente los parámetros de entrada/salida
  2. Añadir un módulo de identificación del estado del mercado para adaptarse a las diferentes condiciones del mercado
  3. Optimizar el sistema de gestión de dinero con la gestión dinámica de posiciones
  4. Añadir filtros de tiempo de negociación para mejorar la calidad de la señal
  5. Considere agregar análisis de volumen para mejorar la confiabilidad de la señal

Resumen de las actividades

La estrategia integra múltiples herramientas clásicas de análisis técnico para construir un sistema comercial completo. Sus fortalezas se encuentran en el análisis de mercado multidimensional y la estricta gestión de riesgos, mientras que se debe prestar atención a la adaptabilidad en diferentes entornos de mercado. A través de la optimización y mejora continuas, la estrategia tiene el potencial de mejorar la rentabilidad manteniendo la estabilidad.


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

Más.