Tendência de ruptura triangular seguindo a estratégia

Autora:ChaoZhang, Data: 2023-09-20 14:24:16
Tags:

Resumo

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.

Estratégia lógica

  1. Usar a EMA rápida e a EMA média para determinar a direção da tendência.

  2. Use os preços mais altos e mais baixos das últimas N barras para determinar se um triângulo ascendente é formado.

  3. 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.

  4. Para a saída de stop loss, definir o stop loss a uma certa percentagem abaixo do preço de entrada.

  5. Estabelecer um objectivo de lucro a uma certa percentagem acima do preço de entrada para a obtenção parcial de lucros.

  6. Use a EMA de 200 dias para determinar a direção geral da tendência, negocie apenas quando a tendência estiver em alta.

Análise das vantagens

  1. A formação triangular filtra a falsa fuga e melhora a precisão de entrada.

  2. A EMA rápida versus a EMA média divide razoavelmente a tendência e a consolidação para evitar problemas.

  3. As configurações razoáveis de stop loss e take profit controlam as perdas de transações individuais.

  4. Apenas a negociação em tendência de alta evita períodos agitados.

Análise de riscos

  1. O parâmetro N precisa ser otimizado.

  2. O stop loss muito próximo tende a ser parado prematuramente, enquanto o stop loss muito largo não consegue controlar a perda.

  3. A fixação inadequada do lucro parcial pode levar a um excesso de lucro.

  4. Os parâmetros errados do indicador de tendência podem levar a uma direção de posição errada.

Orientações para melhorias

  1. Otimizar o parâmetro N para a determinação de triângulos para encontrar o valor ideal.

  2. Teste diferentes combinações de períodos da EMA para melhorar a precisão da tendência.

  3. Otimizar os parâmetros de stop loss e take profit com base nas características do produto.

  4. Adicione outros indicadores como padrão MACD, breakout de Bollinger etc para melhorar a qualidade do sinal.

  5. Adicionar mecanismo de reabertura para estender o lucro quando a tendência continuar.

Resumo

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)

Mais.