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

Estrategias de cruce de la media móvil

El autor:¿ Qué pasa?, Fecha: 2024-06-03 11: 25:43
Las etiquetas:La SMA- ¿Qué es?

移动平均线交叉策略

Resumen

Este artículo describe una estrategia de negociación cuantitativa basada en el principio de cruce de las medias móviles. La estrategia determina la dirección de los espacios al comparar el precio con la relación de las medias móviles, mientras que se establece un punto de stop-loss para controlar el riesgo. El código de la estrategia está escrito en Pine Script e integra la API de la plataforma de negociación Dhan para realizar operaciones automáticas de señales estratégicas.

Principios estratégicos

El núcleo de la estrategia es la media móvil, que se utiliza para determinar la tendencia mediante el cálculo de una media móvil simple del precio de cierre en un determinado período. Cuando el precio cruza la línea media superior, se produce una señal de más y una señal de menos. Al mismo tiempo, se filtra la señal repetida en secuencia con la función extrem, mejorando la calidad de la señal.

Las ventajas estratégicas

El cruce de media móvil es un método sencillo y fácil de usar para rastrear tendencias de mediano y largo plazo en el mercado. Con un ajuste razonable de los parámetros, la estrategia puede obtener ganancias estables en mercados de tendencia. La configuración de stop loss es favorable para controlar el retroceso y mejorar la relación riesgo-beneficio.

El riesgo estratégico

La media móvil es esencialmente un indicador de retraso, en el momento en que el mercado se vuelve, la señal puede ser retrasada, lo que causa la falta de la mejor hora de negociación o la generación de señales falsas. La configuración inadecuada de los parámetros puede afectar el rendimiento de la estrategia y debe optimizarse según las diferentes características y ciclos del mercado. Los parámetros fijos de porcentaje pueden no adaptarse a los cambios en la volatilidad del mercado, y también existe el riesgo de que la configuración inadecuada de los parámetros cause pérdidas.

Dirección de optimización estratégica

  1. Se puede intentar mejorar la fiabilidad de la señal con combinaciones de varias líneas uniformes de ciclo diferentes, como doble uniformes, triple uniformes, etc.
  2. Los ajustes para el stop loss pueden optimizarse aún más, por ejemplo, ajustándose dinámicamente según indicadores de volatilidad como ATR o adoptando estrategias de stop loss de seguimiento.
  3. Se pueden añadir más condiciones de filtración, como el precio rompiendo los niveles de resistencia de soporte importante, cambios en el volumen de negociación, etc., para mejorar la calidad de la señal.
  4. En las aplicaciones en el mercado real, se requiere una verificación de retrospectiva y gestión de fondos estratégicos, control del riesgo de transacciones individuales y retiro general.

Resumen

La estrategia de cruce de media móvil es una estrategia de negociación cuantitativa simple y práctica que puede ser utilizada para obtener ganancias en mercados de tendencia mediante el seguimiento de tendencias y el control de pérdidas y pérdidas. Sin embargo, la estrategia en sí misma tiene ciertas limitaciones y debe optimizarse y mejorarse según las características del mercado y las preferencias de riesgo. En la aplicación práctica, también se debe prestar atención a la aplicación de una disciplina estricta y un buen control del riesgo.


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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © syam-mohan-vs @ T7 - wwww.t7wealth.com www.t7trade.com
//This is an educational code done to describe the fundemantals of pine scritpting language and integration with Indian discount broker Dhan. This strategy is not tested or recommended for live trading. 

//@version=5
strategy("Pine & Dhan - Moving Average Crossover Strategy", overlay=true)

//Remove excess signals
exrem(condition1, condition2) =>
    temp = false
    temp := na(temp[1]) ? false : not temp[1] and condition1 ? true : temp[1] and condition2 ? false : temp[1]
    ta.change(temp) == true ? true : false

// Define MA period
ma_period = input(20, title = "MA Length")

// Define target and stop loss levels
target_percentage = input.float(title="Target Profit (%)", defval=2.0)
stop_loss_percentage = input.float(title="Stop Loss (%)", defval=1.0)

// Calculate the MA
ma = ta.sma(close, ma_period)

// Entry conditions
long_entry = close >= ma
short_entry = close < ma

// Calculate target and stop loss prices
target_price = long_entry ? strategy.position_avg_price + (close * (target_percentage / 100)) : strategy.position_avg_price - (close * (target_percentage / 100)) 
stop_loss_price = short_entry ? strategy.position_avg_price + (close * (stop_loss_percentage/ 100)) : strategy.position_avg_price - (close * (stop_loss_percentage / 100)) 

long_entry := exrem(long_entry,short_entry)
short_entry := exrem(short_entry,long_entry)

// Plot the MA
plot(ma, color=color.blue, linewidth=2, title="MA")

// Plot the entry and exit signals
plotshape(long_entry, style=shape.arrowup, color=color.green, size=size.small,location = location.belowbar)
plotshape(short_entry, style=shape.arrowdown, color=color.red, size=size.small,location = location.abovebar)

//Find absolute value of positon size to exit position properly
size = math.abs(strategy.position_size)

//Replace these four JSON strings with those generated from user Dhan account
long_msg = '{"secret":"C0B2u","alertType":"multi_leg_order","order_legs":[{"transactionType":"B","orderType":"MKT","quantity":"1","exchange":"NSE","symbol":"NIFTY1!","instrument":"FUT","productType":"I","sort_order":"1","price":"0"}]}'
long_exit_msg = '{"secret":"C0B2u","alertType":"multi_leg_order","order_legs":[{"transactionType":"S","orderType":"MKT","quantity":"1","exchange":"NSE","symbol":"NIFTY1!","instrument":"FUT","productType":"M","sort_order":"1","price":"0"}]}'
short_msg = '{"secret":"C0B2u","alertType":"multi_leg_order","order_legs":[{"transactionType":"S","orderType":"MKT","quantity":"1","exchange":"NSE","symbol":"NIFTY1!","instrument":"FUT","productType":"M","sort_order":"1","price":"0"}]}'
short_exit_msg = '{"secret":"C0B2u","alertType":"multi_leg_order","order_legs":[{"transactionType":"B","orderType":"MKT","quantity":"1","exchange":"NSE","symbol":"NIFTY1!","instrument":"FUT","productType":"M","sort_order":"1","price":"0"}]}'

// Submit orders based on signals
if(strategy.position_size == 0)
    if long_entry 
        strategy.order("Long", strategy.long,alert_message=long_msg)          

    if short_entry
        strategy.order("Short", strategy.short,alert_message=short_msg)        
    
if(strategy.position_size > 0)
    
    if(short_entry)
        strategy.order("Short", strategy.short, qty = size, alert_message=short_msg)     
    else
        strategy.exit("Long Exit", from_entry="Long", qty = size, stop=stop_loss_price, limit= target_price, alert_message=long_exit_msg)

if(strategy.position_size < 0)
    
    if(long_entry)
        strategy.order("Long", strategy.long, qty = size, alert_message=long_msg)    
    else           
        strategy.exit("Short Exit", from_entry="Short", qty = size, stop=stop_loss_price, limit= target_price, alert_message=short_exit_msg) 



Contenido relacionado

Más contenido