Esta es una estrategia de seguimiento de tendencia. Se va largo cuando el precio se rompe de una formación de triángulo ascendente, y cierra la posición cuando la EMA rápida cruza por debajo de la EMA media.
Utilice la EMA rápida y la EMA media para determinar la dirección de la tendencia.
Utilice los precios más altos y más bajos de las últimas N barras para determinar si se forma un triángulo ascendente.
Después de la entrada, cuando la EMA rápida cruza por debajo de la EMA media, indica la reversión de la tendencia y da la señal de salida.
Se establecerá el stop loss en un cierto porcentaje por debajo del precio de entrada para la salida del stop loss.
Establecer el objetivo de obtención de beneficios en un cierto porcentaje por encima del precio de entrada para la obtención parcial de beneficios.
Utilice la EMA de 200 días para determinar la dirección general de la tendencia, solo negocie cuando la tendencia sea alta.
La formación triangular filtra la falsa fuga y mejora la precisión de entrada.
La EMA rápida frente a la EMA media divide razonablemente la tendencia y la consolidación para evitar problemas.
Las opciones de stop loss y take profit razonables controlan las pérdidas de una sola operación.
Sólo el comercio en tendencia alcista evita los períodos agitados.
Un rango de triángulo demasiado estrecho puede perder las tendencias, mientras que un rango demasiado amplio puede aumentar las operaciones innecesarias.
El stop loss demasiado cercano tiende a ser detenido prematuramente, mientras que demasiado ancho no controla la pérdida.
El establecimiento inadecuado de la toma parcial de beneficios puede conducir a un exceso de beneficios.
Los parámetros incorrectos del indicador de tendencia pueden conducir a una dirección de posición incorrecta.
Optimizar el parámetro N para la determinación del triángulo para encontrar el valor óptimo.
Prueba diferentes combinaciones de períodos de la EMA para mejorar la precisión de la tendencia.
Optimizar los parámetros de stop loss y take profit basados en las características del producto.
Añadir otros indicadores como patrón MACD, ruptura de Bollinger, etc. para mejorar la calidad de la señal.
Agregue el mecanismo de reapertura para ampliar las ganancias cuando la tendencia continúe.
La estrategia es en general robusta con la formación de triángulos que mejora la precisión de la señal. Existe un gran espacio de optimización de parámetros para una mayor mejora. También trate de agregar más indicadores auxiliares o mejorar la stop loss / take profit para una mayor eficacia. En general, esta estrategia tiene el potencial de convertirse en una tendencia de calidad después de la estrategia.
/*backtest start: 2023-08-20 00:00:00 end: 2023-09-19 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © mohanee //@version=4 strategy(title="TrianglePoint strategy", overlay=true,pyramiding=2, default_qty_value=3, default_qty_type=strategy.fixed, initial_capital=10000, currency=currency.USD) // variables BEGIN numPeriods=input(9,title="Number of Bars") fastEMA = input(13, title="fast EMA", minval=1) slowEMA = input(65, title="slow EMA", minval=1) stopLoss = input(title="Stop Loss%", defval=5, minval=1) HH = highest(close[1],numPeriods) LL = lowest(close[1],numPeriods) tringlePoint = low > LL and high < HH fastEMAval= ema(close, fastEMA) slowEMAval= ema(close, slowEMA) two100EMAval= ema(close, 200) //plot emas plot(fastEMAval, color = color.green, linewidth = 1, transp=0) plot(slowEMAval, color = color.orange, linewidth = 1, transp=0) plot(two100EMAval, color = color.purple, linewidth = 2, transp=0) longCondition=fastEMAval>two100EMAval and tringlePoint //plotshape(triP,style=shape.triangleup,text="Buy",color=color.green,location=location.belowbar) //plotshape(longCondition,style=shape.triangleup,text="Buy",color=color.green,location=location.belowbar) //Entry strategy.entry(id="TBT LE", comment="TBT LE" , long=true, when= longCondition and strategy.position_size<1) //Add strategy.entry(id="TBT LE", comment="Add" , long=true, when= longCondition and strategy.position_size>=1 and close<strategy.position_avg_price) //barcolor(strategy.position_size>=1 ? color.blue : na) //Take profit takeProfitVal= strategy.position_size>=1 ? (strategy.position_avg_price * (1+(stopLoss*0.01) )) : 0.00 //strategy.close(id="TBT LE", comment="Profit Exit", qty=strategy.position_size/2, when=close>=takeProfitVal and close<open and close<fastEMAval) //crossunder(close,fastEMAval) barcolor(strategy.position_size>=1 ? (close>takeProfitVal? color.purple : color.blue): na) //Exit strategy.close(id="TBT LE", comment="TBT Exit", when=crossunder(fastEMAval,slowEMAval)) //stoploss stopLossVal= strategy.position_size>=1 ? (strategy.position_avg_price * (1-(stopLoss*0.01) )) : 0.00 //stopLossVal= close> (strategy.position_avg_price * (1+(stopLoss*0.01) )) ? lowest(close,numPeriods) : (strategy.position_avg_price * (1-(stopLoss*0.01) )) strategy.close(id="TBT LE", comment="SL Exit", when= close < stopLossVal)