
Esta estratégia combina dois indicadores técnicos, a média móvel e o índice de força relativa (RSI), para capturar características sazonais e periódicas, gerando assim um sinal de negociação. A vantagem da estratégia é que pode ser identificada com muita clareza a conduta sazonal, mas também existe o risco de ser enganado por sinais errados.
Esta estratégia primeiro calcula uma média móvel de um determinado período n para capturar a direção da tendência de médio e longo prazo dos preços. Em seguida, calcula o indicador RSI dessa média móvel para determinar se está atualmente em um estado de sobrecompra ou sobrevenda.
Quando o RSI cruza abaixo da trajectória, gera um sinal de venda, indicando que está em um estado de sobrevenda, e pode ser vendido. Além disso, a estratégia também define um intervalo de meses e datas para negociar apenas entre os meses e datas especificados, para capturar características sazonais.
Existe o risco de ser enganado por sinais errados. Por exemplo, uma reversão de tendência desencadeada por surpresas não sazonais pode levar a sinais de negociação inadequados. A solução é ajustar o intervalo de datas do mês para evitar o risco de possíveis eventos.
Quando a tendência se inverte, pode haver um desvio entre a média móvel e o indicador RSI, causando incoerência nos sinais de negociação. A solução é ajustar adequadamente os parâmetros da média móvel, reduzindo o período para capturar a tendência mais rapidamente.
O intervalo de data do mês previsto pode ter um desvio com o tempo de ocorrência das estações reais. A solução é determinar um parâmetro de intervalo de estações mais preciso com base em testes de dados históricos.
A solução é definir uma faixa de intervalos mais ampla, para evitar ser enganado por pequenas oscilações.
Pode-se introduzir outros indicadores auxiliares, como o índice de ações de choque (STOCH), para definir condições de filtragem mais rigorosas e reduzir os sinais errados.
Pode-se testar mais combinações diferentes de parâmetros para encontrar o parâmetro otimizado para melhorar a eficácia da estratégia. Por exemplo, ajustar o ciclo da média móvel, o parâmetro de ascensão e descensão do RSI, etc.
O método de otimização por etapas pode ser usado para pesquisar automaticamente o espaço de parâmetros para encontrar a combinação de parâmetros mais eficiente.
A partir de agora, o Google pode coletar mais dados históricos, usar métodos de aprendizado de máquina para treinar e otimizar regras de estratégia.
Pode-se considerar a inclusão de estratégias de stop loss e de gestão de fundos.
Esta estratégia utiliza um conjunto de indicadores de médias móveis e RSI, e adiciona os fatores sazonais de julgamento, formando uma tendência mais completa e sistema de identificação de super-compra e super-venda. A vantagem da estratégia é que pode identificar claramente a tendência sazonal e aproveitar as oportunidades de negociação.
/*backtest
start: 2023-09-26 00:00:00
end: 2023-10-26 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title = " RSI of MA Strategy ",shorttitle="MARSI Strategy",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,commission_type=strategy.commission.percent,commission_value=0.1,initial_capital=1)
lengthofma = input(15,minval=1,title="Length of MA")
len = input(14, minval=1, title="Length")
upperband = input(70,minval=1,title='Upper Band for RSI')
lowerband = input(30,minval=1,title="Lower Band for RSI")
src=sma(close,lengthofma)
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi, color=purple)
band1 = hline(upperband)
band0 = hline(lowerband)
fill(band1, band0, color=purple, transp=90)
longCond = crossover(rsi,lowerband)
shortCond = crossunder(rsi,upperband)
monthfrom =input(1)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)
if ( longCond )
strategy.entry("LONG", strategy.long, stop=close, oca_name="TREND", comment="LONG")
else
strategy.cancel(id="LONG")
if ( shortCond )
strategy.entry("SHORT", strategy.short,stop=close, oca_name="TREND", comment="SHORT")
else
strategy.cancel(id="SHORT")