Esta estratégia calcula a média móvel e a taxa de variação dos preços para determinar se o estado atual está em uma tendência ascendente ou em uma tendência descendente combinada com linhas K durante um determinado período, e, consequentemente, vai longo ou curto.
Esta estratégia primeiro calcula a média móvel simples a de comprimento l e a taxa de mudança de preço r de comprimento l. Em seguida, calcula a diferença k entre o preço atual da linha K e a média móvel. Finalmente, calcula a soma da soma de k sobre as linhas K passadas.
Quando a soma > 0, indica uma tendência de alta atual e a estratégia irá longo.
Após a entrada em posição longa ou curta, a posição será mantida até que a tendência se inverta (a soma muda de positiva para negativa ou vice-versa), em seguida, a posição será encerrada.
A maior vantagem desta estratégia é que ela pode capturar a tendência e é adequada para a negociação de tendências.
Usando a média móvel para determinar a direção geral da tendência pode efetivamente filtrar o ruído do mercado e bloquear a tendência principal.
A aplicação do indicador da taxa de variação de preços para medir a força do ímpeto evita a falta de um ímpeto forte.
A tomada em consideração de múltiplas linhas K durante um período pode determinar com mais precisão a tendência e evitar ser enganado por Ausreißer individuais.
Enquanto a tendência permanecer inalterada, continue a manter a posição para maximizar os lucros do mercado de tendência.
Os principais riscos desta estratégia são:
A incapacidade de determinar com precisão a hora do fim da tendência, pode parar as perdas prematuramente ou perder alguns lucros.
Incapaz de controlar eficazmente o tamanho de uma única perda, as perdas podem ser grandes em condições de mercado extremas.
Os parâmetros de estratégia inadequados podem conduzir a negociações excessivamente frequentes ou a perdas de algumas oportunidades de negociação.
As participações a longo prazo podem ser sujeitas a riscos de juros e de margem overnight.
Para controlar os riscos, podemos definir pontos de stop loss, negociar apenas produtos altamente líquidos, otimizar parâmetros e usar a alavancagem razoavelmente.
Os principais aspectos para otimizar esta estratégia incluem:
Teste médias móveis e taxas de variação de preços de diferentes comprimentos para encontrar a melhor combinação de parâmetros.
Tente outros indicadores como o MACD para determinar melhor a tendência e melhorar ainda mais a precisão.
Adicionar mecanismos de gestão de posição, tais como obter lucro após obter alguns lucros, para controlar a perda única.
Incorporar indicadores de volatilidade para estabelecer paradas dinâmicas para reduzir os riscos em condições extremas de mercado.
Otimizar a lógica de entrada e saída para filtrar falhas e melhorar a eficiência da negociação.
A lógica geral desta estratégia é clara e fácil de implementar. Ao rastrear as tendências para a negociação de detenção de longo prazo, o controle de drawdown é relativamente razoável. É adequado para investidores que buscam retornos estáveis. Otimizando ainda mais o stop loss e a gestão de posição, pode-se esperar bons retornos estáveis de longo prazo.
/*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)