Esta estratégia pertence à estratégia de acompanhamento de tendências. Faça mais quando o preço quebra o triângulo ascendente e feche quando o EMA rápido atravessa o EMA intermediário. Ao mesmo tempo, configure um stop loss e um stop loss para controlar o risco.
Use a EMA rápida e a EMA intermédia para determinar a direção da tendência. A EMA rápida é usada como um sinal de pessimismo sobre a EMA intermédia.
Utilize o valor máximo e mínimo da linha K da raiz N mais próxima para determinar se um triângulo ascendente foi formado. O triângulo formado é um sinal múltiplo.
Após a entrada no mercado, quando a EMA rápida atravessa a EMA intermédia, a tendência é considerada invertida e um sinal de equilíbrio é emitido.
O ponto de parada é definido como um percentual abaixo do preço de entrada e o ponto de parada é definido como um percentual abaixo da saída.
O ponto de parada deve ser um percentual acima do preço de entrada, e o ponto de parada deve ser um percentual acima da saída.
O EMA de 200 dias é usado para determinar a direção da tendência geral, mas só quando a tendência é para cima.
O uso de filtros de forma triangular aumenta a precisão de entrada.
A EMA rápida e a EMA intermédia dividem razoavelmente as tendências e oscilações, evitando ser encaixada.
A configuração do Stop Loss e do Stop Stop é razoável para controlar a perda individual.
A operação só pode ser executada quando a tendência é para cima, evitando a fase de correção.
A área do triângulo é pequena demais para perder a tendência, e grande demais para aumentar a transação sem sentido.
Perder muito perto do ponto de parada é fácil de ser atingido, e muito longe é difícil de controlar os prejuízos. É necessário avaliar o papel dos parâmetros e otimizá-los.
A configuração inadequada de algumas barreiras pode levar a um excesso de lucro. É necessário avaliar a proporção razoável.
Os parâmetros indevidos dos indicadores de tendências podem levar a posições erradas. É necessário otimizar o retorno de várias variedades.
Otimizar o triângulo para determinar os parâmetros N e encontrar o valor ideal.
Testar diferentes combinações de períodos de EMA para melhorar a precisão do julgamento de tendências.
Parâmetros de estenose de parada de danos são otimizados de acordo com as características de diferentes variedades.
A adição de outros indicadores de julgamento, como a forma MACD, a ruptura da faixa de Brin, etc., aumenta a qualidade do sinal.
Adicionar mecanismos de reabertura para prolongar o tempo de lucro se a tendência continuar.
A estratégia em geral é mais robusta, com o triângulo de determinação para filtrar a falsa ruptura. O espaço para otimização de parâmetros é maior e espera-se melhores resultados. Além disso, pode-se tentar adicionar mais indicadores de julgamento auxiliares ou melhorar a estratégia de stop loss para aumentar ainda mais a eficácia da estratégia.
/*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)