
La estrategia se basa en calcular el diferencial k de los indicadores ROC y SMA, y luego sumar k a una cierta longitud, basándose en el valor positivo y negativo de la suma de la suma y la suma como base de juicio para hacer más deuda pública. La estrategia pertenece a la estrategia de negociación en línea corta.
La estrategia primero calcula el promedio de SMA y el indicador de ROC de la longitud l, luego calcula el valor k del precio de cierre actual con respecto al SMA. Luego calcula la acumulación y la suma de los días s de k.
En concreto, en el código:
Calcula el promedio SMA de longitud l a
Calcula el indicador de ROC r de longitud l
Calcula el diferencial entre el precio de cierre actual y la línea media SMA k = close - a
Sumamos todos los días de k y obtenemos sum.
Si sum es mayor que 0 se hace más; si sum es menor que 0 se hace menos.
Condiciones de posición en par: sum<0 para posiciones en plus y en par; sum>0 para posiciones en blanco y negro
La clave de esta estrategia es calcular la suma y la suma de k, utilizando la suma positiva y negativa como señal de transacción. Cuando el precio ha subido durante un período reciente de tiempo k> 0, se hace más; cuando el precio ha bajado durante un período reciente de tiempo k < 0, se hace menos.
Se trata de una estrategia de negociación en línea corta más sencilla y práctica, que tiene las siguientes ventajas:
La combinación de indicadores utilizados es simple, fácil de entender y de implementar.
Se pueden filtrar las diferencias de los indicadores para encontrar oportunidades de negociación más precisas.
La acumulación de la diferencia permite una captura más precisa de las tendencias de las líneas cortas.
Se puede ajustar según los parámetros de mercado l y s, para adaptarse a diferentes ciclos.
La estrategia es clara, el procedimiento es sencillo, fácil de modificar y optimizar.
La eficiencia en el uso de los fondos permite realizar transacciones cortas frecuentes.
La estrategia también tiene ciertos riesgos, incluyendo:
Las transacciones en línea corta son más arriesgadas y pueden dar lugar a pérdidas.
La configuración inadecuada de los parámetros puede ocasionar operaciones demasiado frecuentes o oportunidades perdidas.
No se puede hacer frente de manera efectiva a la reversión de la tendencia, y saltar el stop loss puede causar grandes pérdidas.
Se requiere un seguimiento y ajuste frecuente de los parámetros, y depende más de la experiencia de los operadores.
La frecuencia de las transacciones puede aumentar los costos de las transacciones y los puntos de deslizamiento, lo que afecta a las ganancias.
Las soluciones para los riesgos incluyen:
Ajuste adecuado de los parámetros para reducir la frecuencia de las transacciones.
Combinado con indicadores de tendencia, se puede identificar una reversión de tendencia.
Optimizar las estrategias de stop loss y controlar las pérdidas individuales.
Se ha añadido un módulo de optimización de parámetros de automatización para reducir la dependencia de la experiencia de los operadores.
Optimizar los módulos de pedido y reducir los costos de transacción.
La estrategia puede ser optimizada en los siguientes aspectos:
Optimización de los métodos de cálculo de los parámetros, para que los parámetros sean más adaptables. Se puede considerar la optimización dinámica de los parámetros utilizando algoritmos genéticos, cadenas de Markov, etc.
Combinar más indicadores y condiciones de filtrado para mejorar la calidad de la señal de negociación. Por ejemplo, combinar indicadores de tendencia para evitar el comercio en contra.
Mejorar las estrategias de detención de pérdidas, como la introducción de detención móvil, detención promedio, etc., para controlar las pérdidas individuales.
Optimización de las estrategias de gestión de fondos, como la gestión de puntos de riesgo, distribución de fondos en proporciones fijas, etc., para controlar el riesgo general.
Optimización del módulo de pedidos, uso de algoritmos como el seguimiento de tendencias y el control de puntos de deslizamiento para reducir los costos de transacción.
Añadir un módulo de optimización de retroalimentación automática para evaluar rápidamente el impacto de los diferentes parámetros en la estrategia.
Aumentar el módulo de evaluación de indicadores cuantitativos, evaluar la calidad de las señales de negociación y mejorar la estabilidad de la estrategia.
Gracias a estas optimizaciones, la estrategia puede convertirse en un sistema de intercambio de corto plazo más completo, inteligente, estable y controlado.
En general, la estrategia genera señales de negociación a través de un simple cálculo de indicadores, es clara y fácil de implementar, y es una estrategia de negociación típica de línea corta. Al optimizar aún más los parámetros, el stop loss y la gestión de fondos, se puede reducir el riesgo y aumentar la estabilidad, lo que la convierte en una de las estrategias de negociación cuantitativa que vale la pena usar.
/*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)