Estrategia de indicadores integrales de impulso

El autor:¿ Qué pasa?, fecha: 2023-11-06 14:40:26
Las etiquetas:

img

Resumen general

Esta estrategia genera señales de negociación mediante el cálculo de la suma de las diferencias entre ROC y SMA. Pertenece a las estrategias de negociación a corto plazo.

Estrategia lógica

La estrategia primero calcula el SMA con longitud l y ROC. Luego calcula la diferencia k entre el precio de cierre y el SMA. Luego suma k por s días y obtiene suma. Cuando la suma> 0, va largo. Cuando la suma<0, va corto.

Específicamente, en el código:

  1. Calcular SMA con longitud l, obtener un.

  2. Calcular ROC con longitud l, obtener r.

  3. Calcular la diferencia entre el precio de cierre y el SMA: k = cierre - a.

  4. Sumar k para s días, obtener suma.

  5. Si la suma es > 0, posición larga; si la suma es < 0, posición corta.

  6. Salida cuando la suma < 0 para larga y la suma> 0 para corta.

La clave es resumir la diferencia k y usar el signo de suma para las señales comerciales. Cuando k> 0 durante los últimos días, el precio está aumentando, así que vaya largo. Cuando k < 0, el precio está disminuyendo, así que vaya corto.

Análisis de ventajas

Esta sencilla estrategia de negociación a corto plazo tiene las siguientes ventajas:

  1. Los indicadores utilizados son sencillos y fáciles de entender.

  2. El filtrado por la diferencia de indicadores puede encontrar oportunidades comerciales más precisas.

  3. Resumiendo la diferencia se pueden captar mejor las tendencias a corto plazo.

  4. Los parámetros l y s pueden ajustarse para diferentes ciclos.

  5. La lógica es clara y fácil de modificar y optimizar.

  6. Alta eficiencia en la utilización del capital para operaciones frecuentes a corto plazo.

Análisis de riesgos

También hay algunos riesgos:

  1. Los riesgos más altos en el comercio a corto plazo, las pérdidas son posibles.

  2. Los parámetros inadecuados pueden conducir a un exceso de negociación o a oportunidades perdidas.

  3. Difícil de adaptarse a la reversión de tendencia, no stop loss puede conducir a grandes pérdidas.

  4. El ajuste frecuente de los parámetros depende en gran medida de la experiencia del comerciante.

  5. La alta frecuencia de negociación puede aumentar los costos de transacción y el deslizamiento.

Soluciones:

  1. Ajuste los parámetros adecuadamente para reducir la frecuencia de negociación.

  2. Añadir indicadores de tendencia para identificar las reversiones.

  3. Optimizar el stop loss para controlar la pérdida de una sola operación.

  4. Agregue la optimización automática de parámetros para disminuir la dependencia de la experiencia.

  5. Optimizar el modelo de ejecución de órdenes para reducir los costes de transacción.

Direcciones de optimización

La estrategia se puede optimizar aún más en los siguientes aspectos:

  1. Optimizar los métodos de cálculo de parámetros, como algoritmos genéticos, para hacer que los parámetros sean adaptables.

  2. Añadir más indicadores y filtros para mejorar la calidad de la señal.

  3. Mejorar la estrategia de stop loss, como el stop loss de seguimiento.

  4. Optimice las estrategias de gestión de dinero como el control de puntos de riesgo.

  5. Optimizar el modelo de ejecución de órdenes con seguimiento de tendencias, control de deslizamiento, etc.

  6. Añadir módulos de backtesting y optimización automática.

  7. Añadir una evaluación cuantitativa de la calidad de la señal.

Con estas optimizaciones, esta estrategia puede convertirse en un sistema de comercio a corto plazo más completo, inteligente, estable y controlable.

Resumen de las actividades

En resumen, esta estrategia genera señales simples a partir de indicadores, con lógica clara y fácil implementación. Con nuevas optimizaciones en parámetros, stop loss, gestión de dinero, etc., puede convertirse en una estrategia comercial cuantitativa valiosa.


/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Indicator Integrator Strat",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,currency="USD",initial_capital=662, overlay=false)

l = input(defval=170,title="Length for indicator")
s = input(title="Length of summation",defval=18)
a= sma(close,l)
r=roc(close,l)
k=close-a
sum = 0
for i = 0 to s
    sum := sum + k[i]
//plot(a,color=yellow,linewidth=2,transp=0)
//bc =  iff( sum > 0, white, teal)
//plot(sum,color=bc, transp=20, linewidth=3,style=columns)
//plot(sma(sum,3),color=white)
//hline(0)

inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na

////buyEntry = crossover(source, lower)
////sellEntry = crossunder(source, upper)
if sum>0
    strategy.entry("Long", strategy.long, oca_name="Long",  comment="Long")
else
    strategy.cancel(id="Long")
if sum<0
    strategy.entry("Short", strategy.short, oca_name="Short", comment="Short")
else
    strategy.cancel(id="Short")
strategy.initial_capital = 50000
plot(strategy.equity-strategy.initial_capital-strategy.closedtrades*.25/2, title="equity", color=red, linewidth=2)
hline(0)
//longCondition = sum>0
//exitlong = sum<0

//shortCondition = sum<0
//exitshort = sum>0

//strategy.entry(id = "Long", long=true, when = longCondition)
//strategy.close(id = "Long", when = exitlong)
//strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitlong)

//strategy.entry(id = "Short", long=false, when = shortCondition)
//strategy.close(id = "Short", when = exitshort)
//strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitshort)

Más.