Estratégia de média móvel Golden Crossover RSI MACD


Data de criação: 2024-01-05 16:11:23 última modificação: 2024-01-05 16:11:23
cópia: 0 Cliques: 649
1
focar em
1617
Seguidores

Estratégia de média móvel Golden Crossover RSI MACD

Visão geral

A estratégia é uma combinação de estratégias que utilizam o RSI, o MACD e as médias móveis. Ele combina o sinal de supercompra do RSI, a sensibilidade do MACD e o efeito do indicador das médias móveis para determinar o momento de entrada no mercado.

Princípio da estratégia

A estratégia baseia-se em quatro critérios:

  1. A coluna do MACD é maior do que o parâmetro de entrada de múltiplas cabeças definido;
  2. O RSI é maior que 50, o que significa que estamos em um estado de sobrecompra.
  3. O EMA de curto prazo passa por cima do EMA de longo prazo, formando um cruzamento dourado;
  4. O preço de fechamento usa o EMA de longo prazo e é superior ao EMA de longo prazo mais o stop loss do ATR.

A estratégia se encerra quando as seguintes duas condições de saída são preenchidas:

  1. A linha do MACD é menor do que o parâmetro de parada definido;
  2. A EMA de curto prazo é a divisão de EMA de longo prazo.

Assim, a estratégia de parar o prejuízo no momento da retirada dos lucros evita grandes perdas.

Análise de vantagens

A maior vantagem da estratégia reside na combinação de indicadores, que exercem as vantagens de cada indicador, especificamente:

  1. A aplicação do RSI evita a perda de custos de transação causada pela abertura repetida de posições em situações de turbulência.
  2. A sensibilidade do indicador em forma de coluna do MACD garante a captura de pontos de inflexão em tempo hábil.
  3. A média móvel filtra o ruído do mercado de curto prazo e exerce seu efeito de indicador.

Riscos e soluções

A estratégia tem dois riscos principais:

  1. O maior risco para estratégias de tendência, como as médias móveis, é o maior retorno causado pela reversão do mercado. O retorno pode ser controlado ativamente reduzindo o tamanho da posição e a configuração de parada de perda.

  2. Otimizar os parâmetros é muito difícil. A configuração e otimização dos parâmetros da estratégia de combinação de múltiplos indicadores são muito difíceis. Pode-se usar métodos de otimização de parâmetros, como algoritmos passo a passo e genéticos, para determinar os parâmetros ótimos.

Otimização de ideias

A estratégia pode ser melhorada nos seguintes aspectos:

  1. Adição de condições adicionais para filtrar ainda mais os falsos sinais. Por exemplo, a combinação de indicadores de volume de transação, indicadores de volatilidade, etc.

  2. Teste as diferenças de configuração de parâmetros de diferentes variedades. Ajuste os parâmetros para mais variedades.

  3. Optimizar a configuração dos parâmetros da média móvel. Teste as diferenças entre os parâmetros de diferentes comprimentos.

  4. O estudo usava uma média móvel adaptativa que mudava de combinação de parâmetros de acordo com a situação do mercado.

Resumir

Esta estratégia é, em geral, uma versão otimizada da típica estratégia de acompanhamento de tendências e médias móveis. Ela absorve os benefícios de vários indicadores principais, como MACD, RSI, e é única em determinar o tempo de entrada e parada.

Código-fonte da estratégia
/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Improved RSI MACD Strategy with Moving Averages", overlay=true)

// Inputs
src = input(close, title="RSI Source")

// RSI Settings
lengthRSI = input.int(14, minval=1)

// Stop Loss Settings
stopLossPct = input.float(0.09, title="Stop Loss Percentage")
takeProfitPct = input.float(0.15, title="Take Profit Percentage")

// MACD Settings
fastlen = input(12)
slowlen = input(26)
siglen = input(9)

// Strategy Settings
longEntry = input(0, title="Long Entry Level")
exitLevel = input(0, title="Exit Level")

// EMA Settings
emaShortLength = input(8, title="Short EMA Length")
emaLongLength = input(21, title="Long EMA Length")

atrMultiplier = input.float(2, title="atrMultiplier")
atrLength = input.int(20, title="atrLength")

// Indicators
rsi1 = ta.rsi(src, lengthRSI)
[macd, signal, hist] = ta.macd(src, fastlen, slowlen, siglen)

// Calculate EMAs
emaShort = ta.ema(src, emaShortLength)
emaLong = ta.ema(src, emaLongLength)

// Calculate ATR
atr = ta.atr(atrLength)

// Variables
var bool canEnterLong = na

// Strategy conditions
longCondition = hist > longEntry and rsi1 > 50 and emaShort > emaLong and close > emaLong + atrMultiplier * atr

// Entries and Exits
if hist < exitLevel and emaShort < emaLong
    canEnterLong := true
    strategy.close("Long")
    
// Store last entry price
var lastEntryPrice = float(na)
var lastEntryPrice2 = float(na)
if longCondition
    strategy.entry("Long", strategy.long)
    canEnterLong := false
    lastEntryPrice := close
if lastEntryPrice < close
    lastEntryPrice := close
// Calculate Stop Loss and Take Profit Levels based on last entry price
stopLossLevel = lastEntryPrice * (1 - stopLossPct)

// Check for stop loss and take profit levels and close position if triggered
if (strategy.position_size > 0)
    last_buy = strategy.opentrades[0]
    if (close < stopLossLevel)
        strategy.close("Long", comment="Stop Loss Triggered")
    if (close * (1 - takeProfitPct) > strategy.opentrades.entry_price(strategy.opentrades - 1) )
        strategy.close("Long", comment="Take Profit Triggered")