Estratégia de acompanhamento de tendências de vários prazos

Autora:ChaoZhang, Data: 2023-11-14 14:29:39
Tags:

img

Resumo

Esta estratégia combina médias móveis, MACD e RSI em múltiplos prazos para identificar direções de tendência e negociar tendências do índice S&P500.

Estratégia lógica

  1. A média móvel simples de 10 dias julga a tendência dos preços.

  2. O MACD calcula a diferença entre as médias móveis exponenciais de 12 e 21 dias, e o cruzamento entre a linha MACD e a linha de sinal gera sinais de negociação.

  3. O RSI de 14 dias e sua MA de 50 dias são calculados.

  4. Os prazos de 1 minuto, 3 minutos e 5 minutos confirmam a consistência da tendência.

  5. Quando o preço cruza acima da MA de 10 dias, o RSI cruza acima de sua MA e a linha MACD cruza acima da linha de sinal, é gerado um sinal de compra.

Vantagens

  1. A combinação de indicadores melhora a precisão do sinal. O MA de 10 dias julga a tendência principal, o MACD determina a força do momento e o RSI confirma os níveis de sobrecompra / sobrevenda.

  2. A confirmação de vários prazos evita o ruído do mercado. A confirmação dupla em prazos de 1 minuto, 3 minutos e 5 minutos garante a aparência simultânea do sinal e filtra os falsos sinais.

  3. A análise gráfica de padrões evita níveis extremos de sobrecompra/supervenda e reduz os riscos de perda.

  4. A frequência média de negociação é adequada para a negociação de índices.

Riscos

  1. A falta de detecção de reversão abrupta em eventos irracionais.

  2. Ajustes de parâmetros fixos sem ter em conta a evolução das condições de mercado.

  3. Os sinais de entrada devem ser ajustados com deslizamento para melhorar a liquidez executável.

  4. Os intervalos de tempo múltiplos aumentam o atraso do sinal. É necessário um controle de risco adequado para minimizar as perdas por atraso durante eventos repentinos.

Reforço

  1. Incorporar mecanismos de stop loss como trailing stop loss e stop loss percentual para controlar a perda de uma única negociação.

  2. Otimizar as definições de parâmetros dinâmicos para se adaptarem à evolução dos mercados e melhorar a robustez da estratégia.

  3. Considerar as alterações do regime de mercado decorrentes de eventos significativos para evitar choques de modelo.

  4. Contabilizar custos de negociação como deslizamento e ajustar pontos de entrada/saída para uma melhor execução.

  5. Teste diferentes entradas de preço como o candelabro como confirmação de sinal para diversificar a validação de vários prazos.

  6. Utilize algoritmos de aprendizagem de máquina em big data para automatizar a otimização de estratégias.

Conclusão

Esta estratégia negocia as tendências do S&P500 de forma eficaz através da identificação de tendências com múltiplos indicadores e confirmação de sinais em diferentes prazos. Seus pontos fortes estão na alta precisão do sinal e resistência ao ruído, mas o controle de risco e ajuste de parâmetros dinâmicos são necessários.


/*backtest
start: 2022-11-07 00:00:00
end: 2023-11-13 00:00:00
period: 1d
basePeriod: 1h
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/
// USE HEIEN ASHI, 1 min, SPX 500 USD OANDA
// © connor2279
//@version=5
strategy(title="SPX Strategy", shorttitle="SPXS", overlay=true)

//SMA
len1 = 10
src1 = input(close, title="SMA Source #1")
out1 = ta.sma(src1, len1)
plot(out1, title="SMA #1", color=close >= out1 ? color.lime : color.red, linewidth=2)

data_over = ta.crossover(close, out1)
dataO = close >= out1
data_under = ta.crossunder(close, out1)
dataU = close < out1

bgcolor(color=ta.crossover(close, out1) ? color.new(color.lime, 90) : na)
bgcolor(color=ta.crossunder(close, out1) ? color.new(color.red, 90) : na)     

//Norm MacD
sma = 12
lma = 21
tsp = 10
np = 50
    
sh = ta.ema(close,sma)  

lon= ta.ema(close,lma) 

ratio = math.min(sh,lon)/math.max(sh,lon)

Mac = ratio - 1
if(sh>lon)
    Mac := 2-ratio - 1
else
    Mac := ratio - 1

MacNorm = ((Mac-ta.lowest(Mac, np)) /(ta.highest(Mac, np)-ta.lowest(Mac, np)+.000001)*2)- 1

MacNorm2 = MacNorm

if(np<2)
    MacNorm2 := Mac
else
    MacNorm2 := MacNorm
    
Trigger = ta.wma(MacNorm2, tsp)

trigger_above = Trigger >= MacNorm
trigger_under = Trigger < MacNorm
plotshape(ta.crossover(Trigger, MacNorm2), style=shape.triangledown, color=color.red)
plotshape(ta.crossunder(Trigger, MacNorm2), style=shape.triangledown, color=color.lime)

//RSI / SMA RSI
swr=input(true,title="RSI")
src = close
len = 14
srs = 50
up = ta.rma(math.max(ta.change(src), 0), len)
down = ta.rma(-math.min(ta.change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
mr = ta.sma(rsi,srs)
rsi_above = rsi >= mr
rsi_under = rsi < mr

//All
buySignal = rsi_above and trigger_under and dataO
shortSignal = rsi_under and trigger_above and dataU
bgcolor(color=buySignal ? color.new(color.lime,97) : na)     
bgcolor(color=shortSignal ? color.new(color.red, 97) : na)     
     
sellSignal = ta.cross(close, out1) or ta.cross(Trigger, MacNorm2) or ta.cross(rsi, mr)
if (buySignal)
    strategy.entry("LONG", strategy.long, 1)

if (shortSignal)
    strategy.entry("SHORT", strategy.short, 1)

// Submit exit orders
strategy.close("LONG", when=sellSignal)
strategy.close("SHORT", when=sellSignal)

Mais.