Esta estrategia calcula la media móvil y la tasa de cambio de precios para determinar si el estado actual está en una tendencia alcista o una tendencia bajista combinada con líneas K durante un cierto período, y, en consecuencia, va largo o corto.
Esta estrategia primero calcula la media móvil simple a de longitud l y la tasa de cambio de precio r de longitud l. Luego calcula la diferencia k entre el precio actual de la línea K y la media móvil. Finalmente, calcula la suma de la suma de k sobre las líneas K pasadas.
Cuando sum> 0, indica una tendencia alcista actual y la estrategia será larga.
Después de ir largo o corto, la posición se mantendrá hasta que la tendencia se invierta (la suma cambia de positiva a negativa o viceversa), luego se cerrará la posición.
La mayor ventaja de esta estrategia es que puede capturar la tendencia y es adecuada para el comercio de tendencias.
El uso de la media móvil para determinar la dirección general de la tendencia puede filtrar eficazmente el ruido del mercado y bloquear la tendencia principal.
La aplicación del indicador de la tasa de cambio de precios para medir la fuerza de impulso evita la falta de un fuerte impulso.
Teniendo en cuenta varias líneas K durante un período se puede determinar con mayor precisión la tendencia y evitar ser engañado por Ausreißer individuales.
Mientras la tendencia permanezca sin cambios, continúa manteniendo la posición para maximizar las ganancias del mercado de tendencia.
Los principales riesgos de esta estrategia son:
No poder determinar con precisión el momento del final de la tendencia, puede detener las pérdidas prematuramente o perder algunas ganancias.
Al no poder controlar eficazmente el tamaño de una sola pérdida, las pérdidas pueden ser grandes en condiciones extremas de mercado.
Los parámetros de la estrategia incorrectos pueden llevar a una negociación demasiado frecuente o a perder algunas oportunidades comerciales.
Las tenencias a largo plazo pueden verse expuestas a riesgos de interés y margen a un día.
Para controlar los riesgos, podemos establecer puntos de stop loss, comerciar sólo productos altamente líquidos, optimizar los parámetros y utilizar razonablemente el apalancamiento.
Los principales aspectos para optimizar esta estrategia incluyen:
Prueba las medias móviles y las tasas de cambio de precios de diferentes longitudes para encontrar la mejor combinación de parámetros.
Pruebe otros indicadores como el MACD para determinar mejor la tendencia y mejorar aún más la precisión.
Añadir mecanismos de gestión de posiciones, como obtener ganancias después de obtener algunas ganancias, para controlar la pérdida única.
Incorporar indicadores de volatilidad para establecer paradas dinámicas para reducir los riesgos en condiciones extremas de mercado.
Optimizar la lógica de entrada y salida para filtrar las falsas rupturas y mejorar la eficiencia comercial.
La lógica general de esta estrategia es clara y fácil de implementar. Al rastrear las tendencias para el comercio de tenencias a largo plazo, el control de descenso es relativamente razonable. Es adecuado para los inversores que buscan rendimientos estables.
/*backtest start: 2023-12-03 00:00:00 end: 2023-12-10 00:00:00 period: 1m basePeriod: 1m 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("BBandLE", strategy.long, oca_name="BollingerBands", comment="BBandLE") else strategy.cancel(id="BBandLE") if sum<0 strategy.entry("BBandSE", strategy.short, oca_name="BollingerBands", comment="BBandSE") else strategy.cancel(id="BBandSE") 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)