Estrategia de ruptura de la vela de Kana basada en la media móvil y la resistencia de soporte

El autor:¿ Qué pasa?, Fecha: 2023-12-27 15:27:45
Las etiquetas:

img

Resumen general

Esta es una estrategia de ruptura rápida basada en el análisis técnico de las velas japonesas, combinada con indicadores de promedio móvil e indicadores de resistencia de soporte para determinar la tendencia y la posición.

Estrategia lógica

La estrategia utiliza una media móvil simple de 20 períodos (SMA) y una media móvil exponencial de 200 períodos (EMA) para determinar la dirección de la tendencia. Cuando el precio está en una tendencia alcista (SMA por encima de la EMA), y el cuerpo real de la vela japonesa actual se cierra por encima de la apertura (cuerpo blanco), indica un poder adquisitivo fortalecido. Cuando el precio está en una tendencia bajista (SMA por debajo de la EMA), y el cuerpo real de la vela japonesa actual se cierra por debajo de la apertura (cuerpo negro), indica una presión de venta fortalecida.

Con la confirmación de la tendencia y el impulso, la estrategia espera una ruptura rápida del precio y entra en el mercado. La llamada ruptura significa que el precio cruza la primera línea del canal de los tres canales ATR preestablecidos (calculados en base al ATR de 200 días y coeficientes) y entra en la segunda línea del canal. Esta es una señal de ruptura de alta probabilidad.

Después de ingresar al mercado, las reglas de toma de ganancias y stop loss son muy simples. Siempre que el precio toque los límites exteriores del canal (como la línea de toma de ganancias o la línea de stop loss), tomará ganancias o stop loss inmediatamente. Esto asegura ganancias rápidas de la estrategia.

Análisis de ventajas

La mayor ventaja de esta estrategia es la rápida obtención de ganancias con un riesgo relativamente pequeño. Al entrar al mercado rápidamente después de la ruptura, evita múltiples ajustes de posiciones.

En comparación con la tenencia a largo plazo, este mecanismo de apertura y cierre eficiente puede reducir significativamente la tasa de paro de la estrategia y mejorar aún más la eficiencia del capital.

Análisis de riesgos

La estrategia se basa principalmente en indicadores de promedio móvil para determinar la dirección de la tendencia, con el riesgo de retroceso y consolidación.

Además, la estrategia se basa demasiado en indicadores técnicos sin combinar el análisis de eventos fundamentales y significativos.

Para controlar los riesgos, podemos ampliar adecuadamente el rango de canales para reducir la frecuencia de apertura; o agregar un módulo de gestión de posiciones para ajustar dinámicamente una posición individual en función del capital total.

Optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Añadir módulo de gestión de posiciones. Ajustar dinámicamente una sola posición de apertura basado en el tamaño de la cuenta para controlar el porcentaje de pérdida única.

  2. Cuando los indicadores técnicos desencadenan señales de apertura, compruebe los fundamentos de la empresa y los eventos significativos para evitar anormalidades.

  3. Combinar la gestión de las existencias. Establecer reglas para ajustar dinámicamente las existencias. Seleccionar las existencias óptimas en diferentes etapas para mejorar la estabilidad.

  4. Combine modelos de aprendizaje automático. Utilice IA para predecir tendencias y niveles clave de precios, ayudando a determinar el rango de canales y el momento de entrada.

Conclusión

La estrategia se caracteriza por su simplicidad y eficiencia. Determina la tendencia principal con promedios móviles, la dirección del impulso con velas japonesas, entra con una ruptura rápida y sale con una rápida toma de ganancias y un stop loss. Permite ganancias a corto plazo adecuadas para el comercio de alta frecuencia. Pero también tiene el riesgo de descenso e incertidumbre. La optimización continua puede hacer que la estrategia sea estable bajo diferentes entornos de mercado.


/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Kana with S/R Strategy", title = "KANA with S/R", overlay=true)

len = input(20, minval=1, title="Length")
multiplier1 = input(1, minval=1, title="multiplier1")
multiplier2 = input(2, minval=1, title="multiplier2")
multiplier3 = input(3, minval=1, title="multiplier3") 
srTimeFrame = input(240, minval=1, title="Support Resistance TimeFrame")
useSR = input(true, type = bool, title="Use Support/Resistance")
tpPercent = input(0.5, type=float, title = "Take Profit Percent")
useTP = input(false, type=bool, title = "Use Take Profit")
tp = (close * tpPercent / 100) / syminfo.mintick

src = input(close, title="Source")
mid = sma(src, len)
plot(mid, title="SMA", color=blue)

trend = ema(close, 200)
plot(trend, title="Trend", color=green)


upper1 = mid + atr(200) * multiplier1
upper2 = mid + atr(200) * multiplier2
upper3 = mid + atr(200) * multiplier3

lower1 = mid - atr(200) * multiplier1
lower2 = mid - atr(200) * multiplier2
lower3 = mid - atr(200) * multiplier3

plot(upper1, color = orange)
plot(upper3, color = red)

plot(lower1, color = orange)
plot(lower3, color = red)

haClose = request.security(heikinashi(syminfo.tickerid), timeframe.period, close)
haOpen = request.security(heikinashi(syminfo.tickerid), timeframe.period, open)

resistance = request.security(syminfo.tickerid,tostring(srTimeFrame), high)
support  = request.security(syminfo.tickerid,tostring(srTimeFrame), low)
rsPos = (close - support[srTimeFrame]) / (resistance[srTimeFrame] - support[srTimeFrame])

MACD = ema(close, 120) - ema(close, 260)
aMACD = ema(MACD, 90)
hisline = MACD - aMACD

longCondition = (mid > trend) and (haOpen[1] < haClose[1]) and (mid > mid[1]) and (close < upper1) and hisline > 0 and (useSR == true ? (rsPos > 100) : true)
shortCondition = (mid < trend) and (haOpen[1] > haClose[1]) and (mid < mid[1]) and (close > lower1) and hisline < 0 and (useSR == true ? (rsPos < 0) : true)

longExit = (close > upper3 ) or (close < lower2)
shortExit = (close < lower3) or (close > upper2)

if (longCondition)
    strategy.entry("Long", strategy.long)
    if (useTP)
        strategy.exit("Exit Long", "Long", profit = tp)
        
if (longExit)
    strategy.close("Long")
    
if (shortCondition)
    strategy.entry("Short", strategy.short)
    if (useTP)
        strategy.exit("Exit Short", "Short", profit = tp)
    
if (shortExit)
    strategy.close("Short")

Más.