Estratégia global de média móvel múltipla

Autora:ChaoZhang, Data: 22-12-2023 11:56:42
Tags:

img

Resumo

A Estratégia Comprehensiva de Média Móvel Múltipla é uma estratégia de análise técnica muito versátil e poderosa. Ela combina várias médias móveis em diferentes prazos para fornecer insights abrangentes sobre as tendências do mercado. A estratégia gera sinais de compra e venda claros para identificar possíveis pontos de entrada e saída. Também oferece grande personalização para permitir que os usuários ajustem os comprimentos da média móvel com base em suas preferências e objetivos de negociação.

Princípios

O núcleo desta estratégia é calcular e rastrear múltiplas médias móveis em diferentes períodos, especificamente as médias móveis de 10 dias, 20 dias, 30 dias até 100 dias. Essas médias móveis são definidas como o preço médio de fechamento nos últimos 10, 20, 30 dias, etc. Por exemplo, a média móvel de 20 dias é o preço médio de fechamento nos últimos 20 dias.

Quando o preço de fechamento de hoje está acima de todas essas médias móveis, um sinal de compra é gerado. Quando o preço de fechamento de hoje está abaixo de todas essas médias móveis, um sinal de venda é gerado. Assim, os sinais só são acionados quando todas as médias móveis em diferentes prazos apontam na mesma direção. Isso filtra muito ruído e torna os sinais mais confiáveis.

Vantagens

  1. Fornece insights através de múltiplas escalas de tempo, adaptável a diferentes ambientes de mercado

  2. Filtra o ruído através de confirmações múltiplas, tornando os sinais mais confiáveis

  3. Regras comerciais claras, fáceis de compreender e de aplicar

  4. Altamente personalizável para atender às necessidades personalizadas

  5. Fornece orientações para entradas, stop loss e take profits, facilitando a gestão do risco

Riscos e soluções

  1. Múltiplas médias móveis podem cruzar-se durante os mercados variáveis, levando a sinais pouco claros.

  2. A probabilidade de o preço futuro quebrar várias médias móveis é baixa, potencialmente faltando algumas negociações.

  3. Os sinais estão atrasados, incapazes de captar as inversões de tendência cedo.

  4. O número de transacções geradas pode ser baixo para obter um rendimento consistente.

Orientações de otimização

  1. Ajuste de parâmetros: ajuste o número e os comprimentos das médias móveis para encontrar a mistura ideal de parâmetros. Combinações de 5, 10 e 20 dias podem ser testadas, por exemplo.

  2. Combinação de outros indicadores: a adição de indicadores como o MACD e o RSI pode melhorar a resiliência da estratégia.

  3. Estratégia conjunta: juntamente com outras estratégias como sistemas de ruptura e rastreamento de tendências pode aumentar a robustez.

  4. Optimização automatizada: teste algorítmico de diferentes conjuntos de parâmetros para maximizar funções objetivas e encontrar parâmetros ideais.

Conclusão

A estratégia é uma ferramenta analítica muito versátil e poderosa. Ela fornece insights em várias escalas de tempo, sinais confiáveis, facilidade de uso e compreensão e alta personalização. Ao mesmo tempo, ela tem algumas limitações que podem ser abordadas por meio de ajuste de parâmetros, combinações de modelos, etc. para adaptação a regimes de mercado mais complexos. A estratégia pode servir como uma ferramenta de aprendizado para ajudar no desenvolvimento de habilidades de análise técnica, bem como na implementação prática de negociação após ajustes adaptados às necessidades individuais.


/*backtest
start: 2022-12-15 00:00:00
end: 2023-12-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Multiple Moving Average Strategy", overlay=true)

// Function to calculate moving average
get_ma(src, length) =>
    ta.sma(src, length)

// Initialize moving average lengths
ma_length_10 = 10
ma_length_20 = 20
ma_length_30 = 30
ma_length_40 = 40
ma_length_50 = 50
ma_length_60 = 60
ma_length_70 = 70
ma_length_80 = 80
ma_length_90 = 90
ma_length_100 = 100

// Calculate 10-day, 20-day, 30-day, 40-day, 50-day, 60-day, 70-day, 80-day, 90-day, and 100-day moving averages
ma_10 = get_ma(close, ma_length_10)
ma_20 = get_ma(close, ma_length_20)
ma_30 = get_ma(close, ma_length_30)
ma_40 = get_ma(close, ma_length_40)
ma_50 = get_ma(close, ma_length_50)
ma_60 = get_ma(close, ma_length_60)
ma_70 = get_ma(close, ma_length_70)
ma_80 = get_ma(close, ma_length_80)
ma_90 = get_ma(close, ma_length_90)
ma_100 = get_ma(close, ma_length_100)

// Generate Buy/Sell signals for the 10 moving averages
buy_signal = close > ma_10
sell_signal = close < ma_10

// Add conditions for each additional moving average length
buy_signal := buy_signal and (close > get_ma(close, ma_length_20))
sell_signal := sell_signal and (close < get_ma(close, ma_length_20))

buy_signal := buy_signal and (close > get_ma(close, ma_length_30))
sell_signal := sell_signal and (close < get_ma(close, ma_length_30))

buy_signal := buy_signal and (close > get_ma(close, ma_length_40))
sell_signal := sell_signal and (close < get_ma(close, ma_length_40))

buy_signal := buy_signal and (close > get_ma(close, ma_length_50))
sell_signal := sell_signal and (close < get_ma(close, ma_length_50))

buy_signal := buy_signal and (close > get_ma(close, ma_length_60))
sell_signal := sell_signal and (close < get_ma(close, ma_length_60))

buy_signal := buy_signal and (close > get_ma(close, ma_length_70))
sell_signal := sell_signal and (close < get_ma(close, ma_length_70))

buy_signal := buy_signal and (close > get_ma(close, ma_length_80))
sell_signal := sell_signal and (close < get_ma(close, ma_length_80))

buy_signal := buy_signal and (close > get_ma(close, ma_length_90))
sell_signal := sell_signal and (close < get_ma(close, ma_length_90))

buy_signal := buy_signal and (close > get_ma(close, ma_length_100))
sell_signal := sell_signal and (close < get_ma(close, ma_length_100))

// Plot Buy/Sell signals on the chart
plotshape(buy_signal, title="Buy Signal", color=color.green, style=shape.triangleup, location=location.belowbar)
plotshape(sell_signal, title="Sell Signal", color=color.red, style=shape.triangledown, location=location.abovebar)

// Execute long buy order when all ten moving averages give a Buy signal
if (buy_signal)
    strategy.entry("Buy", strategy.long)

// Execute sell order when all ten moving averages give a Sell signal
if (sell_signal)
    strategy.close("Buy")

// Execute short sell order when all ten moving averages give a Sell signal
if (sell_signal)
    strategy.entry("Sell", strategy.short)

// Execute buy order when all ten moving averages give a Buy signal
if (buy_signal)
    strategy.close("Sell")

// Plot closing price and moving averages on the chart
plot(close, title="Close", color=color.blue)
plot(ma_10, title="MA 10", color=color.orange)
plot(ma_20, title="MA 20", color=color.purple)
plot(ma_30, title="MA 30", color=color.blue)
plot(ma_40, title="MA 40", color=color.red)
plot(ma_50, title="MA 50", color=color.green)
plot(ma_60, title="MA 60", color=color.yellow)
plot(ma_70, title="MA 70", color=color.fuchsia)
plot(ma_80, title="MA 80", color=color.gray)
plot(ma_90, title="MA 90", color=color.teal)
plot(ma_100, title="MA 100", color=color.maroon)


Mais.