Esta estratégia combina média móvel e índice de força relativa (RSI), dois indicadores técnicos, para capturar características cíclicas sazonais e gerar sinais de negociação. A vantagem desta estratégia é que pode identificar tendências sazonais muito claramente, mas também tem o risco de ser enganado por sinais errados.
A estratégia primeiro calcula a média móvel de um determinado período n para capturar a direção da tendência de médio a longo prazo. Em seguida, calcula o indicador RSI da média móvel para julgar se ele está atualmente em um estado de sobrecompra ou sobrevenda.
Quando o RSI cruza acima da faixa inferior, um sinal de compra é gerado, indicando um estado de sobrevenda, e uma posição longa pode ser aberta. Quando o RSI cruza abaixo da faixa superior, um sinal de venda é gerado, indicando um estado de sobrecompra, e uma posição curta pode ser aberta. Além disso, a estratégia também define o intervalo para o mês e a data para negociar apenas durante meses e dias específicos, a fim de capturar padrões sazonais.
Utilize a média móvel para determinar a tendência principal e o RSI para julgar cenários de sobrecompra/supervenda, combinando indicadores duplos para melhorar a precisão
A definição de um intervalo mensal e de datas pode identificar eficazmente as tendências sazonais e captar essas oportunidades comerciais
Ajustes flexíveis dos parâmetros do RSI para ajustar a sensibilidade na determinação dos níveis de sobrecompra/supervenda
Parâmetros de média móvel personalizáveis para adaptar a sensibilidade na avaliação das principais tendências
O risco de ser enganado por sinais errados, por exemplo, inversões de tendência desencadeadas por eventos não sazonais, pode gerar sinais comerciais inadequados.
A solução é encurtar adequadamente o período da média móvel para capturar as voltas da tendência mais rapidamente.
A solução consiste em determinar um intervalo sazonal mais preciso com base em testes de dados históricos.
A solução é definir um intervalo mais amplo para evitar ser enganado por pequenas flutuações.
Introduzir outros indicadores auxiliares, por exemplo, oscilador estocástico, para definir condições de filtragem mais rigorosas e reduzir os sinais errados.
Testar mais combinações de parâmetros diferentes para encontrar parâmetros ideais e melhorar o desempenho da estratégia, por exemplo, ajustar o período da média móvel, as faixas do RSI, etc.
Utilize métodos de otimização de parâmetros para pesquisar automaticamente o espaço de parâmetros para conjuntos de parâmetros ideais.
Coletar mais dados históricos e utilizar o aprendizado de máquina para treinar e otimizar regras de estratégia.
Considere adicionar estratégias de stop loss/take profit para otimizar a gestão de dinheiro.
Esta estratégia combina a média móvel e o RSI, com a adição de julgamentos sazonais, para formar um sistema relativamente completo de tendência e identificação de sobrecompra / sobrevenda. A vantagem reside em sua capacidade de reconhecer claramente padrões sazonais e capitalizar tais 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")