Estrategia de negociación de media móvil dual rápida y lenta


Fecha de creación: 2023-10-27 16:41:24 Última modificación: 2023-10-27 16:41:24
Copiar: 0 Número de Visitas: 470
1
Seguir
1237
Seguidores

Estrategia de negociación de media móvil dual rápida y lenta

Descripción general

La estrategia de comercio de doble equilátero se produce mediante el cálculo de las medias móviles rápidas y las medias móviles lentas y la generación de señales de negociación en función de la intersección de las dos medias móviles. Se adopta una estrategia de múltiples cabezas cuando se cruza una media móvil lenta sobre una media móvil rápida; se adopta una estrategia de vacío cuando se cruza una media móvil lenta por debajo de una media móvil rápida.

Principio de estrategia

La estrategia comienza por establecer la longitud de las medias móviles rápidas (maFastLength) y las medias móviles lentas (maSlowLength). Luego se calculan las medias móviles rápidas (fastMA) y las medias móviles lentas (slowMA). Las medias móviles rápidas son más sensibles a los cambios en los precios y se pueden usar para determinar la tendencia actual; las medias móviles lentas son más lentos para responder a los cambios en los precios y se pueden usar para determinar la dirección de la tendencia.

Cuando el movimiento rápido de la media sobre el movimiento lento de la media, tomar la estrategia de hacer más, produce goLong () señal. Cuando el movimiento rápido de la media bajo el movimiento lento de la media, la posición baja de hacer más, produce killLong () señal.

Se puede optar por hacer solo estrategias longonly, solo estrategias shorting, o swapping bidireccional.

Cuando se hace una estrategia múltiple, se abren más posiciones cuando se emite la señal goLong; se cierran las posiciones cuando se emite la señal killLong.

Cuando se hace una estrategia de desvío, se abre una posición para desvío cuando se emite la señal de killLong (); se cierra una posición para desvío cuando se emite la señal de goLong ().

En el caso de operaciones bidireccionales, las posiciones extras se abren cuando se emite la señal goLong; las posiciones extras se cierran cuando se emite la señal killLong y las posiciones exteriores se abren cuando se emite la señal killLong.

Además, la estrategia también tiene funciones de stop loss, tracking stop loss, notificación de transacciones, etc., con la posibilidad de elegir con flexibilidad si se utiliza o no.

Ventajas estratégicas

  1. Las estrategias son sencillas, fáciles de entender y de implementar.

  2. Se puede optar por hacer más, hacer menos o negociar en ambos sentidos.

  3. Dispone de flexibilidad para elegir entre el uso de funciones de gestión de riesgos como el stop loss y el seguimiento de los stop losses.

  4. Los mensajes de transacciones personalizadas, que sugieren el comportamiento de las operaciones en tiempo real.

  5. Las estrategias de línea media rápida y lenta son sensibles a los cambios en las tendencias del mercado y pueden capturar tendencias más fuertes.

  6. Los parámetros de la estrategia son ajustables, se pueden ajustar los parámetros para diferentes mercados, son muy adaptables.

Riesgo estratégico

  1. Cuando no hay una tendencia clara en el mercado, pueden aparecer más señales falsas, lo que provoca un exceso de operaciones.

  2. El sistema de línea media es insensible a la respuesta de emergencia y puede perder oportunidades de emergencia.

  3. Se requiere una selección razonable de los parámetros de la línea media, la elección incorrecta de los parámetros puede afectar la eficacia de la estrategia.

  4. Se deben seguir estrictamente las señales de la estrategia para evitar que se produzcan transacciones arbitrarias.

  5. El impacto de los costos de transacción en la rentabilidad estratégica debe ser considerado.

Dirección de optimización de la estrategia

  1. Se pueden introducir otros indicadores como el RSI para validar las señales de negociación y evitar señales erróneas.

  2. Se puede configurar la función de optimización de parámetros para buscar automáticamente la combinación óptima de parámetros.

  3. Se puede configurar un stop loss dinámico para bloquear ganancias y ajustar el stop loss cuando sea necesario.

  4. Se pueden incorporar modelos de aprendizaje automático para ayudar a determinar la dirección de las tendencias.

  5. Se puede optimizar la función de notificación para que se adapte mejor a sus hábitos de negociación.

Resumir

Las estrategias de negociación de doble línea son más sencillas y prácticas en general, más sensibles a los cambios en las tendencias del mercado y pueden capturar las oportunidades de negociación de las tendencias más fuertes. Sin embargo, también se debe tener en cuenta la prevención de operaciones erróneas en mercados sin tendencias y ajustar los parámetros adecuadamente para adaptarse a diferentes entornos de mercado. Además, la inclusión adecuada de indicadores de tecnología auxiliar y funciones de optimización puede aumentar aún más la estabilidad y la adaptabilidad de la estrategia.

Código Fuente de la Estrategia
/*backtest
start: 2022-10-20 00:00:00
end: 2023-10-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy("SMA Strategy", shorttitle="SMA Strategy", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === Inputs ===
// short ma
maFastSource = input(defval=close, title="Fast MA Source")
maFastLength = input(defval=3, title="Fast MA Period", minval=1)

// long ma
maSlowSource = input(defval=close, title="Slow MA Source")
maSlowLength = input(defval=9, title="Slow MA Period", minval=1)

// Trade direction
shorting = input(defval=false, title="Short only?")
longonly = input(defval=true, title="Long only?")
swapping = input(defval=false, title="Swap orders?")
// risk management
useStop = input(defval=false, title="Use Initial Stop Loss?")
slPoints = input(defval=25, title="Initial Stop Loss Points", minval=1)
useTS = input(defval=false, title="Use Trailing Stop?")
tslPoints = input(defval=120, title="Trail Points", minval=1)
useTSO = input(defval=false, title="Use Offset For Trailing Stop?")
tslOffset = input(defval=20, title="Trail Offset Points", minval=1)

// Messages for buy and sell
message_long_entry  = input("Long entry message", title="Long entry message")
message_long_exit   = input("Long exit message", title="Long exit message")
message_short_entry = input("Short entry message", title="Short entry message")
message_short_exit  = input("Short exit message", title="Short exit message")

// Calculate start/end date and time condition
startDate  = input(timestamp("2021-01-01T00:00:00"), type = input.time)
finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time)
 
time_cond  = true
// === Vars and Series ===
fastMA = sma(maFastSource, maFastLength)
slowMA = sma(maSlowSource, maSlowLength)

plot(fastMA, color=color.blue)
plot(slowMA, color=color.purple)

goLong() =>
    crossover(fastMA, slowMA)
killLong() =>
    crossunder(fastMA, slowMA)
    
// Long only
if longonly
    strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_long_entry)
    strategy.close("Buy", when=killLong() and time_cond, alert_message = message_long_exit)

// Short only
if shorting
    strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_short_entry)
    strategy.close("Sell", when=goLong() and time_cond, alert_message = message_short_exit)
    
// Order Swapping
if swapping
    strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_long_entry)
    strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_short_entry)

if useStop
    strategy.exit("XLS", from_entry="Buy", stop=strategy.position_avg_price / 1.08, alert_message = message_long_exit)
    strategy.exit("XSS", from_entry="Sell", stop=strategy.position_avg_price * 1.08, alert_message = message_short_exit)