Esta é uma estratégia de seguimento de tendência. Ele vai longo quando o preço sai de uma formação de triângulo ascendente e fecha a posição quando a EMA rápida cruza abaixo da EMA média.
Usar a EMA rápida e a EMA média para determinar a direção da tendência.
Use os preços mais altos e mais baixos das últimas N barras para determinar se um triângulo ascendente é formado.
Após a entrada, quando a EMA rápida cruza abaixo da EMA média, indica a inversão da tendência e dá sinal de saída.
Para a saída de stop loss, definir o stop loss a uma certa percentagem abaixo do preço de entrada.
Estabelecer um objectivo de lucro a uma certa percentagem acima do preço de entrada para a obtenção parcial de lucros.
Use a EMA de 200 dias para determinar a direção geral da tendência, negocie apenas quando a tendência estiver em alta.
A formação triangular filtra a falsa fuga e melhora a precisão de entrada.
A EMA rápida versus a EMA média divide razoavelmente a tendência e a consolidação para evitar problemas.
As configurações razoáveis de stop loss e take profit controlam as perdas de transações individuais.
Apenas a negociação em tendência de alta evita períodos agitados.
O parâmetro N precisa ser otimizado.
O stop loss muito próximo tende a ser parado prematuramente, enquanto o stop loss muito largo não consegue controlar a perda.
A fixação inadequada do lucro parcial pode levar a um excesso de lucro.
Os parâmetros errados do indicador de tendência podem levar a uma direção de posição errada.
Otimizar o parâmetro N para a determinação de triângulos para encontrar o valor ideal.
Teste diferentes combinações de períodos da EMA para melhorar a precisão da tendência.
Otimizar os parâmetros de stop loss e take profit com base nas características do produto.
Adicione outros indicadores como padrão MACD, breakout de Bollinger etc para melhorar a qualidade do sinal.
Adicionar mecanismo de reabertura para estender o lucro quando a tendência continuar.
A estratégia é globalmente robusta, com a formação de triângulos melhorando a precisão do sinal. Existe um grande espaço de otimização de parâmetros para maior aprimoramento. Tente também adicionar mais indicadores auxiliares ou melhorar o stop loss / take profit para maior eficácia.
/*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)