Estratégia de negociação de quantidade de média móvel exponencial dupla

Autora:ChaoZhang, Data: 2024-02-02 11:41:34
Tags:

img

Resumo

Esta estratégia gera sinais de negociação calculando os crossovers entre a média móvel exponencial de 5 dias (EMA) e a média móvel simples de 20 dias (SMA).

Princípio da estratégia

As médias móveis exponenciais duplas são indicadores técnicos amplamente usados. A EMA de 5 dias representa tendências recentes de preços, enquanto a SMA de 20 dias mostra movimentos de preços de médio prazo. Quando a MA de curto prazo cruza acima da MA de longo prazo, ela sinaliza uma quebra para cima e uma tendência de preço ascendente, indicando um bom momento para ir longo. Pelo contrário, o cruzamento descendente implica uma potencial reversão de preços e deve considerar a saída de posições.

Esta estratégia define a EMA de 5 dias e a SMA de 20 dias como sinais de negociação. Ela fica longa quando a EMA de 5 dias cruza a SMA de 20 dias e fecha a posição quando a mudança de preço atinge 5% ou -5%.

Os passos detalhados são:

  1. Calcular a EMA de 5 dias, a SMA de 20 dias e o TII
  2. Gerar sinal de compra quando a EMA de 5 dias cruza a SMA de 20 dias enquanto o TII é positivo e em alta
  3. Entre na posição longa
  4. Posições fechadas quando a variação de preço atingir 5% ou -5%

Vantagens

Esta estratégia utiliza o cruzamento dourado entre dois MAs e tem os seguintes benefícios:

  1. Sinais comerciais claros e simples, fáceis de implementar.
  2. Os indicadores de crescimento são indicadores técnicos convencionais e comuns, o sinal de cruz de ouro é clássico e confiável.
  3. Incorporar TII pode filtrar alguns sinais incertos e melhorar a taxa de vitória.
  4. Padrões predefinidos de stop loss/take profit para controlar eficazmente o risco por transação.

Em geral, esta estratégia tem regras simples, utiliza indicadores técnicos maduros como cruzamento de MA e tem medições de controle de risco relativamente abrangentes.

Riscos

Esta estratégia apresenta ainda alguns riscos:

  1. Os sinais de cruzamento MA podem estar atrasados.
  2. O indicador TII não tem um bom desempenho nos mercados de intervalo.
  3. Os padrões fixos de stop loss/take profit podem ser arbitrários.

As melhorias sugeridas são:

  1. Otimizar os parâmetros de MA para reduzir o atraso.
  2. Adicionar outros indicadores auxiliares para melhorar a fiabilidade do sinal.
  3. Estabelecer padrões dinâmicos de stop loss/take profit.

Assim, há espaço para uma maior otimização.

Orientações de otimização

Esta estratégia pode ser melhorada pelos seguintes aspectos:

  1. Otimizar os parâmetros de MA testando combinações de EMA e SMA mais curtas/mais longas para encontrar o par ideal.

  2. Adicione outros indicadores como MACD, KDJ para filtrar falsos sinais.

  3. Empregar algoritmos de aprendizagem de máquina para encontrar melhores parâmetros através de modelagem de dados históricos e estatísticas.

  4. Estabelecer um stop loss/take profit dinâmico com base na volatilidade do mercado e nas características do instrumento para controlar melhor os riscos.

  5. Expanda esta estratégia para outros produtos como forex, criptomoedas.

Através das melhorias acima referidas, a estabilidade e a rentabilidade desta estratégia podem ser substancialmente melhoradas.

Conclusão

Em conclusão, esta é uma estratégia de cruzamento de MA duplo fácil de entender e implementar. Ele aproveita os sinais MA e usa TII para filtrar erros. Ele controla os riscos por stop loss / take profit. A estratégia é adequada para iniciantes aprenderem e também tem grande espaço para otimizações.


/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA-SMA Crossover Strategy", shorttitle="EMA-SMA Cross", overlay=true)

// Define the moving averages
ema5 = ta.ema(close, 5)
sma20 = ta.sma(close, 20)
smaVolume10 = ta.sma(volume, 50)

majorLength = input(60, title="Major Length")
minorLength = input(30, title="Minor Length")
src = input(close, title="Source")

smaValue = ta.sma(src, majorLength)

positiveSum = 0.0
negativeSum = 0.0

for i = 0 to minorLength - 1
    price = na(src[i]) ? 0 : src[i]
    avg = na(smaValue[i]) ? 0 : smaValue[i]
    positiveSum := positiveSum + (price > avg ? price - avg : 0)
    negativeSum := negativeSum + (price > avg ? 0 : avg - price)

tii = 100 * positiveSum / (positiveSum + negativeSum)

// Buy condition: 5 EMA crosses above 20 SMA
buyCondition = ta.crossover(ema5, sma20) and tii > 0 and tii >= tii[1]

//and volume > smaVolume10 //

// Track entry price
var entryPrice = 0.0
if (buyCondition)
    entryPrice := close

// Calculate percentage change from entry price
priceChange = close / entryPrice - 1

// Plotting the moving averages on the chart
plot(ema5, color=color.blue, title="5 EMA")
plot(sma20, color=color.red, title="20 SMA")

// Highlighting buy signals and exit signals on the chart
// plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, size=size.small, style=shape.labelup, text="Buy")

// Strategy entry and exit
if (buyCondition)
    strategy.entry("Buy", strategy.long)

// Exit conditions
if (strategy.opentrades > 0)
    if (priceChange >= 0.05 or priceChange <= -0.05)
        strategy.close("Buy")


Mais.