Estratégia quantitativa de negociação baseada na SMA e na EMA

Autora:ChaoZhang, Data: 2023-12-12 12:31:25
Tags:

img

I. Visão geral da estratégia

Esta estratégia é chamada de Quantitative Trading Strategy Based on SMA and EMA. Sua ideia principal é combinar linhas SMA e linhas EMA com diferentes parâmetros para construir sinais de negociação.

II. Princípio da estratégia

  1. Calcular o SMA9, o SMA50, o SMA180 do preço de fechamento e o EMA20.

  2. Determine os sinais de compra e venda com base na relação entre preço de fechamento e suporte sup e resistência res.

  3. Quando comprar gatilhos de sinal, execute a estratégia de posição longa; quando vender gatilhos de sinal, feche a posição longa.

  4. Quando vender sinais de disparo, execute a estratégia de posição curta; quando comprar sinais de disparo, feche a posição curta.

III. Análise das vantagens

  1. A combinação de várias médias móveis para formar sinais de negociação melhora a precisão e a estabilidade.

  2. Calcular o suporte dinâmico e a resistência torna os sinais de negociação mais confiáveis.

  3. A adopção de médias móveis de alta, média e baixa volatilidade considera tanto a tendência a longo prazo como os avanços a curto prazo, melhorando a rentabilidade da estratégia.

  4. O apoio às posições longas e curtas pode obter lucros nos mercados de tendência e lateral.

IV. Análise de riscos

  1. A SMA tem um efeito de atraso, o que pode atrasar os sinais de compra e venda e afetar o desempenho da estratégia.

  2. Sem mecanismo de stop loss, as perdas podem aumentar.

  3. Dados insuficientes de backtesting, os parâmetros devem ser ajustados em função do mercado.

  4. Confiando em indicadores técnicos, incapazes de lidar com eventos de cisne negro.

Soluções:

  1. Ajuste os períodos de SMA adequadamente.
  2. Estabelecer um stop loss razoável.
  3. Aumentar o tamanho da amostra para backtesting, ajustar parâmetros.
  4. Melhorar os mecanismos de controlo dos riscos.

V. Optimização

  1. Para controlar a perda única, adicionar um stop loss baseado na volatilidade.

  2. Adicionar modelos de aprendizado de máquina para ajudar no julgamento de tendências e geração de sinais.

  3. Adicionar análise de preços-chave para melhorar a precisão de suporte e resistência.

  4. Teste diferentes combinações de parâmetros para encontrar parâmetros melhores.

VI. Resumo

Esta estratégia combina os indicadores técnicos de SMA e EMA para construir sinais de negociação, e calcula suporte dinâmico e resistência para formar uma lógica completa de compra e venda. As vantagens são parâmetros flexíveis, negociação bidirecional, adaptável a diferentes mercados, mas também enfrenta problemas como atraso e stop loss inadequado. As otimizações futuras podem ser feitas em aspectos como stop loss, tendência de julgamento, análise de preços-chave para melhorar a estabilidade e lucratividade.

]


/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-11 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="StrategySMA 9/50/180 | EMA 20 | BUY/SELL", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

//SMA and EMA code
smaInput1 = input(9, title="SMA1")
smaInput2 = input(50, title="SMA2")
smaInput3 = input(180, title="SMA3")
emaInput1 = input(20, title="EMA1")
sma1 = sma(close, smaInput1)
sma2 = sma(close, smaInput2)
sma3 = sma(close, smaInput3)
EMA1 = ema(close, emaInput1)
plot(sma1, color= color.red , title="SMA1")
plot(sma2, color = color.blue, title="SMA2")
plot(sma3, color= color.white, title="SMA3")
plot(EMA1, color = color.yellow, title="EMA1")

no=input(3,title="BUY/SELL Swing")
Barcolor=input(false,title="BUY/SELL Bar Color")
Bgcolor=input(false,title="BUY/SELL Background Color")
res=highest(high,no)
sup=lowest(low,no)
avd=iff(close>res[1],1,iff(close<sup[1],-1,0))
avn=valuewhen(avd!=0,avd,0)
tsl=iff(avn==1,sup,res)

// Buy/sell signals
BuySignal = crossover(close, tsl)
SellSignal = crossunder(close, tsl)

// Enter long position
strategy.entry("Buy", strategy.long, when=BuySignal)

// Exit long position
strategy.exit("Sell", "Buy", when=SellSignal)

// Enter short position
strategy.entry("Sell", strategy.short, when=SellSignal)

// Exit short position
strategy.exit("Buy", "Sell", when=BuySignal)

colr = close>=tsl ? color.green : close<=tsl ? color.red : na
plot(tsl, color=colr)


Mais.