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

Estrategia cruzada de la MA

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

img

Resumen general

Este artículo presenta una estrategia de negociación cuantitativa basada en el principio de cruce de promedios móviles. La estrategia determina la dirección larga / corta comparando el precio con el promedio móvil, y establece niveles de ganancia y stop loss para controlar el riesgo.

Principio de la estrategia

El núcleo de esta estrategia es el promedio móvil. Cálcula el promedio móvil simple del precio de cierre durante un cierto período como base para juzgar la tendencia. Cuando el precio cruza por encima del promedio móvil, genera una señal larga, y cuando cruza por debajo, genera una señal corta. La función exrem se utiliza para filtrar señales duplicadas continuas y mejorar la calidad de la señal. La estrategia establece los niveles de toma de ganancias y stop loss correspondientes basados en la dirección de la posición actual y la relación entre el precio y el promedio móvil, controlando el riesgo y el rendimiento de cada operación.

Ventajas estratégicas

El cruce de promedios móviles es un método de seguimiento de tendencias simple y fácil de usar que puede capturar efectivamente las tendencias del mercado a mediano y largo plazo. Con configuraciones de parámetros razonables, la estrategia puede obtener retornos estables en los mercados de tendencia. La configuración de tomar ganancias y detener pérdidas ayuda a controlar las reducciones y mejorar la relación riesgo-recompensa. La lógica del código de la estrategia es clara, utilizando modularización de funciones, con una fuerte legibilidad y escalabilidad. Además, la estrategia integra la API de la plataforma Dhan para realizar la ejecución de órdenes automatizada, mejorando la eficiencia de la ejecución.

Riesgos estratégicos

Los promedios móviles son indicadores inherentemente rezagados. Durante los puntos de inflexión del mercado, las señales pueden retrasarse, lo que conduce a oportunidades óptimas de negociación perdidas o señales falsas. La configuración incorrecta de parámetros afectará el rendimiento de la estrategia y debe optimizarse de acuerdo con diferentes características y plazos del mercado.

Direcciones para la optimización de la estrategia

  1. Se pueden combinar varias medias móviles de diferentes marcos de tiempo para mejorar la fiabilidad de la señal, como los cruces de medias móviles dobles o triples.
  2. La configuración de las tasas de toma de ganancias y stop loss puede optimizarse aún más, por ejemplo, ajustándose dinámicamente en función de indicadores de volatilidad como ATR, o adoptando estrategias de stop trailing.
  3. Se pueden añadir más condiciones de filtrado, como los avances de precios de niveles de soporte/resistencia importantes, cambios en el volumen de negociación, etc., para mejorar la calidad de la señal.
  4. En la aplicación real, es necesario llevar a cabo una adecuada evaluación y validación de la estrategia y gestionar los fondos para controlar el riesgo de comercio único y la utilización global.

Resumen de las actividades

La estrategia de cruce de promedios móviles es una estrategia de trading cuantitativa simple y práctica que puede obtener ganancias en los mercados de tendencia a través del seguimiento de tendencias y el control de stop loss. Sin embargo, la estrategia en sí tiene ciertas limitaciones y necesita ser optimizada y mejorada de acuerdo con las características del mercado y las preferencias de riesgo. En la aplicación práctica, también es necesario prestar atención a la ejecución de la disciplina estricta y el control adecuado 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) 



Relacionados

Más.