Estratégia dupla de acompanhamento de tendências

Autora:ChaoZhang, Data: 2023-09-17 18:20:27
Tags:

Resumo

O indicador Aroon pode determinar efetivamente a direção das tendências do mercado. Combinado com o indicador RSI, ele forma uma estratégia de rastreamento relativamente completa.

Princípio da estratégia

  1. Use o indicador Aroon para determinar a direção das tendências de preços.

  2. Quando o indicador Aroon cruza acima da linha 0 a partir de baixo, um sinal de compra é acionado.

  3. Se já tiver uma posição, e o fechamento for inferior ao preço de compra, enquanto o RSI for inferior a 30, é considerado sobrevendido, serão colocadas ordens de compra adicionais.

  4. Quando o indicador Aroon cruza abaixo da linha 0 de cima, um sinal de saída completo é acionado.

  5. Se a perda exceder este ponto, uma saída de stop loss é acionada.

Análise das vantagens

  1. Usando o indicador Aroon para determinar a direção da tendência pode efetivamente capturar pontos de rotação do mercado.

  2. O indicador RSI ajuda a identificar áreas de sobrecompra e sobrevenda, evitando perseguir novas altas e vender baixas durante as voltas de mercado.

  3. O comércio em ambas as direcções permite obter lucros em mercados ascendentes e descendentes.

  4. Definir um stop loss ajuda a controlar os riscos.

Análise de riscos

  1. O indicador de Aroon tem um efeito de atraso, que pode deixar de lado reversões de curto prazo e súbitas.

  2. Não pode lidar eficazmente com mercados de intervalo, o que leva a transacções desnecessárias.

  3. A negociação em ambas as direcções aumenta a frequência das trocas e os custos de comissão.

  4. Os parâmetros precisam de um ajuste adequado para se adaptarem a diferentes prazos e produtos.

Orientações de otimização

  1. Combinar com outros indicadores para filtrar os sinais e reduzir os erros causados pelo atraso.

  2. Aumentar a investigação quantitativa para otimizar os parâmetros dos diferentes produtos.

  3. Adicionar estratégias de lucro para aumentar o fator de lucro.

  4. Considere apenas negociar quando a tendência for clara para reduzir as negociações ineficazes.

Resumo

Esta estratégia integra os indicadores Aroon e RSI para formar um sistema de negociação de tendências de direção dupla relativamente completo. Mas ainda é necessária uma otimização adicional dos parâmetros e a combinação com outros indicadores de filtragem para reduzir erros.


/*backtest
start: 2023-09-09 00:00:00
end: 2023-09-12 00:00:00
period: 1m
basePeriod: 1m
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="Aroon Oscillator Strategy", overlay=false, pyramiding=2,    initial_capital=10000, currency=currency.USD)  //default_qty_value=10, default_qty_type=strategy.fixed, 

//variables BEGIN
aroonLength=input(169,title="Aroon Length")   //square root of 13
rsiLength=input(13, title="RSI Length")
stopLoss = input(title="Stop Loss%", defval=5, minval=1)
//variables  END

//RSI 
rsi13=rsi(close,rsiLength)




// Drawings

//Aroon oscillator

arronUpper = 100 * (highestbars(high, aroonLength+1) + aroonLength)/aroonLength
aroonLower = 100 * (lowestbars(low, aroonLength+1) + aroonLength)/aroonLength

aroonOsc  = arronUpper - aroonLower

aroonMidpoint = 0
oscPlot = plot(aroonOsc, color=color.green)
midLine= plot(aroonMidpoint, color=color.green)
topLine = plot(90,style=plot.style_circles, color=color.green)
bottomLine = plot(-90,style=plot.style_circles, color=color.red)

fill(oscPlot, midLine, color=aroonOsc>0?color.green:color.red, transp=50)
fill(topLine,bottomLine, color=color.blue)


// RSI 
//plot(rsi13, title="RSI", linewidth=2, color=color.purple)
//hline(50, title="Middle Line", linestyle=hline.style_dotted)
//obLevel = hline(80, title="Overbought", linestyle=hline.style_dotted)
//osLevel = hline(30, title="Oversold", linestyle=hline.style_dotted)
//fill(obLevel, osLevel, title="Background", color=rsi13 >=30 ? color.green:color.purple, transp=65)  // longTermRSI >=50


//Entry--

strategy.entry(id="Long Entry", comment="LE",  long=true,  when= crossover(aroonOsc,0)   )     //crossover(close,ema34)  //and close>ema34  //crossover(rsi5Val,rsiBuyLine)

//Add
if(strategy.position_size>=1 and close < strategy.position_avg_price and crossover(rsi13,30))
    strategy.order(id="Long Entry", comment="Add", long=true )     //crossover(close,ema34)  //and close>ema34  //crossover(rsi5Val,rsiBuyLine)  --


stopLossVal= abs(strategy.position_size)>1 ? strategy.position_avg_price*(1-0.5) : 0.00 


//close partial
strategy.close(id="Long Entry", comment="Partial X",  qty=strategy.position_size/3, when=abs(strategy.position_size)>=1 and crossunder(aroonOsc, 90) )   //close<ema55 and rsi5Val<20 //ema34<ema55 


//close All
strategy.close(id="Long Entry", comment="Exit All",  when=abs(strategy.position_size)>=1 and crossunder(aroonOsc, 0) )   //close<ema55 and rsi5Val<20 //ema34<ema55  //close<ema89

//close All on stop loss
strategy.close(id="Long Entry", comment="Stoploss X",  when=abs(strategy.position_size)>=1 and close < stopLossVal )   //close<ema55 and rsi5Val<20 //ema34<ema55  //close<ema89


Mais.