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

Tendencia combinada multi-SMA y estocástica siguiendo una estrategia de negociación

El autor:¿ Qué pasa?, fecha: 2024-12-27 14:43:30
Las etiquetas:La SMAKDJEl ATRIndicador de riesgoEl MACD

img

Resumen general

Esta estrategia es un sistema de negociación de seguimiento de tendencias que combina múltiples promedios móviles simples (SMA) con el oscilador estocástico. Ejecuta operaciones cuando las tendencias del mercado están claramente definidas mediante el establecimiento de zonas de precios y condiciones de identificación de tendencias. La estrategia emplea un mecanismo dinámico de stop-loss que ajusta la gestión de posiciones en función de los movimientos del mercado, tanto protegiendo las ganancias como evitando salidas prematuras.

Principios de estrategia

La estrategia se basa en varios componentes fundamentales:

  1. Sistema de SMA doble: utiliza SMA de 19 y 74 períodos para la determinación de la tendencia
  2. Zonas de precios: Divide el rango de precios en 5 niveles para la evaluación de la fortaleza del mercado
  3. Oscilador estocástico: emplea un estocástico de 60 períodos para condiciones de sobrecompra/sobreventa.
  4. Confirmación de tendencia: utiliza tres velas consecutivas para confirmar la continuación de la tendencia
  5. Condiciones de entrada: entra cuando el precio cruza la SMA de 74 períodos y se encuentra dentro de zonas de precios especificadas
  6. Mecanismo de suspensión de pérdidas: implementa suspensiones de seguimiento con salidas basadas en tendencias

Ventajas estratégicas

  1. Complejidad del sistema: combina indicadores de tendencia y de impulso para un análisis exhaustivo del mercado
  2. Gestión del riesgo: Mecanismos múltiples de suspensión de pérdidas, incluidas las suspensiones duras y las suspensiones posteriores
  3. Adaptabilidad: puede ajustarse a diferentes condiciones del mercado mediante la optimización de parámetros
  4. Captura de tendencias: captura eficazmente las tendencias a medio y largo plazo evitando señales falsas
  5. Gestión de posiciones: ajusta dinámicamente las posiciones en función de las condiciones del mercado para una utilización eficiente del capital

Riesgos estratégicos

  1. Riesgo de mercado irregular: puede generar operaciones frecuentes en mercados laterales
  2. El riesgo de deslizamiento: deslizamiento potencialmente significativo en mercados de rápido movimiento.
  3. Sensibilidad de parámetros: las diferentes combinaciones de parámetros pueden dar lugar a un rendimiento diferente.
  4. Dependencia del entorno del mercado: la estrategia tiene un mejor rendimiento en los mercados de tendencia
  5. Riesgo de gestión de capital: el dimensionamiento completo de las posiciones puede dar lugar a una reducción significativa de los flujos de capital

Direcciones de optimización

  1. Se incluyen los indicadores de volatilidad: considerar la adición de ATR para el ajuste dinámico de stop-loss.
  2. Optimizar el tiempo de entrada: agregar confirmación de volumen para mejorar la precisión de la entrada
  3. Mejorar la gestión del capital: aplicar un módulo de dimensionamiento de posiciones basado en la evaluación del riesgo
  4. Añadir análisis del entorno de mercado: incluir indicadores de fuerza de tendencia para filtrar las señales
  5. Mejorar el mecanismo de suspensión de pérdidas: considerar las suspensiones de retención basadas en el porcentaje para una mayor flexibilidad

Resumen de las actividades

Esta estrategia construye un sistema de negociación integral mediante la combinación de múltiples indicadores técnicos, con fuertes capacidades de seguimiento de tendencias y mecanismos de gestión de riesgos. Aunque puede enfrentar desafíos en ciertas condiciones de mercado, la optimización y el refinamiento continuos pueden ayudar a mantener un rendimiento estable en diferentes entornos de mercado. Se aconseja a los operadores controlar el tamaño de las posiciones, establecer los stop-loss apropiados y ajustar los parámetros de acuerdo con las condiciones del mercado al implementar la estrategia en el comercio en vivo.


/*backtest
start: 2024-11-26 00:00:00
end: 2024-12-25 08:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Purple SMA Strategy", overlay=true)

// === INPUTS ===
zoneLength = input.int(20, "Price Zone Length", minval=5)
tickSize = input.float(1.0, "Tick Size for Hard Stop")
hardStopTicks = input.int(50, "Hard Stop Loss in Ticks")

// === CALCULATE ZONES ===
h = ta.highest(high, zoneLength)
l = ta.lowest(low, zoneLength)
priceRange = h - l
lvl5 = h
lvl4 = l + (priceRange * 0.75)  // Orange line
lvl3 = l + (priceRange * 0.50)  // Yellow line
lvl2 = l + (priceRange * 0.25)  // Green line
lvl1 = l

// === INDICATORS ===
sma19 = ta.sma(close, 19)
sma74 = ta.sma(close, 74)

// === CANDLE COLOR CONDITIONS ===
isGreenCandle = close > open
isRedCandle = close < open

// === CONTINUOUS TREND DETECTION ===
isThreeGreenCandles = close > open and close[1] > open[1] and close[2] > open[2]
isThreeRedCandles = close < open and close[1] < open[1] and close[2] < open[2]

var bool inGreenTrend = false
var bool inRedTrend = false

// Update trends
if isThreeGreenCandles
    inGreenTrend := true
    inRedTrend := false
if isThreeRedCandles
    inRedTrend := true
    inGreenTrend := false
if (inGreenTrend and isRedCandle) or (inRedTrend and isGreenCandle)
    inGreenTrend := false
    inRedTrend := false

// === STOCHASTIC CONDITIONS ===
k = ta.stoch(close, high, low, 60)
d = ta.sma(k, 10)
isOverbought = d >= 80
isOversold = d <= 20
stochUp = d > d[1]
stochDown = d < d[1]

// === SMA COLOR LOGIC ===
sma19Color = if isOverbought and stochUp
    color.green
else if isOverbought and stochDown
    color.red
else if isOversold and stochUp
    color.green
else if isOversold and stochDown
    color.red
else if stochUp
    color.blue
else if stochDown
    color.purple
else
    color.gray

sma74Color = sma74 < sma19 ? color.green : color.red

// === CROSSING CONDITIONS ===
crossUpSMA = ta.crossover(close, sma74)
crossDownSMA = ta.crossunder(close, sma74)

// === ENTRY CONDITIONS ===
buyCondition = crossUpSMA and close > lvl4
sellCondition = crossDownSMA and close < lvl2

// === POSITION MANAGEMENT ===
var float stopLevel = na
var bool xMode = false

// Entry and Stop Loss
if buyCondition
    strategy.entry(id="Long", direction=strategy.long)
    stopLevel := close - (hardStopTicks * tickSize)
    xMode := false

if sellCondition
    strategy.entry(id="Short", direction=strategy.short)
    stopLevel := close + (hardStopTicks * tickSize)
    xMode := false

// Update stops based on X's
if strategy.position_size != 0 and (inGreenTrend or inRedTrend)
    xMode := true
    if strategy.position_size > 0  // Long position
        stopLevel := low
    else  // Short position
        stopLevel := high

// Exit logic
if strategy.position_size > 0  // Long position
    if low <= stopLevel
        strategy.close(id="Long")
    else if xMode and not (inGreenTrend or inRedTrend)
        strategy.close(id="Long")

if strategy.position_size < 0  // Short position
    if high >= stopLevel
        strategy.close(id="Short")
    else if xMode and not (inGreenTrend or inRedTrend)
        strategy.close(id="Short")

// === PLOTTING ===
plot(sma19, "SMA 19", color=sma19Color, linewidth=2)
plot(sma74, "SMA 74", color=sma74Color, linewidth=2)
plot(lvl5, "Upper Zone Top", color=color.red, linewidth=2)
plot(lvl4, "Upper Zone Bottom", color=color.orange, linewidth=2)
plot(lvl3, "Middle Line", color=color.yellow, linewidth=2)
plot(lvl2, "Lower Zone Top", color=color.green, linewidth=2)
plot(lvl1, "Lower Zone Bottom", color=color.blue, linewidth=2)

// Plot X signals
plotshape(inGreenTrend, title="Bullish Line", style=shape.xcross, location=location.belowbar, color=color.white, size=size.tiny)
plotshape(inRedTrend, title="Bearish Line", style=shape.xcross, location=location.abovebar, color=color.white, size=size.tiny)

// Zone fills
var p1 = plot(lvl5, display=display.none)
var p2 = plot(lvl4, display=display.none)
var p3 = plot(lvl2, display=display.none)
var p4 = plot(lvl1, display=display.none)
fill(p1, p2, color=color.new(color.red, 90))
fill(p3, p4, color=color.new(color.green, 90))

// Plot entry signals
plotshape(buyCondition, title="Buy", style=shape.square, location=location.belowbar, color=color.new(color.blue, 20), size=size.tiny, text="BUY", textcolor=color.blue)
plotshape(sellCondition, title="Sell", style=shape.square, location=location.abovebar, color=color.new(color.red, 20), size=size.tiny, text="SELL", textcolor=color.red)

Relacionados

Más.