Estrategia de negociación de criptomonedas basada en los indicadores MACD y estocásticos

El autor:¿ Qué pasa?, Fecha: 2024-02-01 11:52:15
Las etiquetas:

img

Resumen general

Esta estrategia es una estrategia de comercio de criptomonedas basada en una combinación del indicador MACD e indicadores estocásticos.

Estrategia lógica

La estrategia primero calcula el indicador MACD. MACD significa Moving Average Convergence Divergence, que es un indicador de tendencia. Consiste en una línea rápida y una línea lenta, donde la línea rápida es un promedio móvil exponencial a corto plazo y la línea lenta es un promedio móvil exponencial a largo plazo. Cuando la línea rápida cruza por encima de la línea lenta, genera una señal de cruz dorada, lo que indica un mercado alcista. Cuando la línea rápida cruza por debajo de la línea lenta, genera una señal de cruz de muerte, lo que indica un mercado bajista.

Después de calcular el indicador MACD, la estrategia aplica el indicador estocástico %K en el propio MACD.

% K = (Cuerso de cierre actual - Bajo más bajo durante N períodos) / (Mejor máximo durante N períodos - Bajo más bajo durante N períodos) * 100

El indicador estocástico refleja la desviación del precio de su rango reciente. La fluctuación de %K entre 20-80 representa que el precio está operando en consolidación. Cuando el %K cruza por encima de 20 desde abajo, genera una señal de compra. Cuando el %K cruza por debajo de 80 desde arriba, genera una señal de venta.

Esta estrategia combina las señales de negociación tanto del MACD como del %K estocástico para operar en el mercado de criptomonedas.

Ventajas de la estrategia

Esta estrategia combina el análisis de tendencias y los indicadores de sobrecompra-sobreventa, que pueden identificar eficazmente puntos de inflexión importantes en el mercado.

Además, esta estrategia aplica indicadores técnicos comúnmente utilizados en los mercados de valores al comercio de criptomonedas. Esta es una aplicación de mercado cruzado. Estos indicadores son igualmente aplicables en el mercado de divisas digitales, e incluso pueden tener un mejor rendimiento debido a la alta volatilidad de las criptomonedas.

Riesgos y soluciones

El mayor riesgo de esta estrategia es la alta volatilidad en el mercado de criptomonedas, que produce fácilmente señales falsas y conduce a pérdidas comerciales.

Para controlar estos riesgos, es aconsejable utilizar el stop loss móvil para bloquear las ganancias y evitar nuevas pérdidas.

Direcciones de optimización

En primer lugar, la estrategia puede tratar de combinar las medias móviles con indicadores de volatilidad como las bandas de Bollinger, estableciendo parámetros de volatilidad para identificar la validez de las rupturas y evitar señales falsas.

En segundo lugar, se pueden introducir modelos de aprendizaje automático para entrenar en datos históricos y establecer modelos de redes neuronales de bosque aleatorios o LSTM para ayudar a juzgar la eficacia de las señales de indicadores.

En tercer lugar, añadir un mecanismo de stop loss. Cuando los precios se mueven más de un cierto rango en una dirección desfavorable, activar automáticamente stop loss para controlar los riesgos.

Conclusión

Esta estrategia combina el indicador MACD y el indicador estocástico %K, utilizando el método de verificación mutua de señales de dos indicadores para formular una estrategia de negociación de criptomonedas. Esta estrategia de indicador de combinación puede mejorar la precisión de las señales hasta cierto punto. Pero también debemos ser conscientes del riesgo de complicación excesiva de los indicadores, que puede introducir ruido y efectos de retraso.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Schaff Trend Cycle Strategy", shorttitle="STC Backtest", overlay=true)

fastLength = input(title="MACD Fast Length",  defval=23)
slowLength = input(title="MACD Slow Length",  defval=50)
cycleLength = input(title="Cycle Length",  defval=10)
d1Length = input(title="1st %D Length",  defval=3)
d2Length = input(title="2nd %D Length",  defval=3)
src = input(title="Source", defval=close)
highlightBreakouts = input(title="Highlight Breakouts ?", type=bool, defval=true)

macd = ema(src, fastLength) - ema(src, slowLength)
k = nz(fixnan(stoch(macd, macd, macd, cycleLength)))
d = ema(k, d1Length)
kd = nz(fixnan(stoch(d, d, d, cycleLength)))

stc = ema(kd, d2Length)
stc := 	stc > 100 ? 100 : stc < 0 ? 0 : stc

upper = input(75, defval=75)
lower = input(25, defval=25)

long =  crossover(stc, lower) ? lower : na
short = crossunder(stc, upper) ? upper : na

long_filt = long and not short
short_filt = short and not long

prev = 0
prev := long_filt ? 1 : short_filt ? -1 : prev[1]

long_final = long_filt and prev[1] == -1
short_final = short_filt and prev[1] == 1

//alertcondition(long_final, "Long", message="Long")
//alertcondition(short_final,"Short", message="Short")

//plotshape(long_final, style=shape.arrowup, text="Long", color=green, location=location.belowbar)
//plotshape(short_final, style=shape.arrowdown, text="Short", color=red, location=location.abovebar)

strategy.entry("long", strategy.long, when = long )
strategy.entry("short", strategy.short, when = short)


Más.