Estratégia de negociação combinada de múltiplos indicadores


Data de criação: 2023-09-13 12:18:05 última modificação: 2023-09-13 12:18:05
cópia: 0 Cliques: 685
1
focar em
1617
Seguidores

Esta estratégia usa um sistema de linha média, o indicador RSI e vários indicadores técnicos, como o indicador Stoch, para julgar a tendência de preços e o estado de sobrecompra e sobrevenda, formando sinais de negociação. Esta estratégia reúne os benefícios de vários indicadores, buscando decisões de negociação mais estáveis e confiáveis.

Princípios da estratégia:

  1. Calcule a média de EMA de múltiplos conjuntos para determinar a tendência da linha média-longa.

  2. Calcule os indicadores RSI e Stoch para determinar se está em um estado de sobrecompra ou sobrevenda.

  3. Quando o sistema de linha média emite sinais de fazer mais, quando o RSI não está sobrecomprado e quando o Stoch não está sobrecomprado, faça mais operações.

  4. Quando o sistema de linha média emite um sinal de curto, quando o RSI não está sobrevendido e quando o Stoch não está sobrevendido, faça a operação de curto.

  5. Quando qualquer indicador emitir um sinal de reversão, faça uma operação de equilíbrio.

Os benefícios da estratégia:

  1. Verificação de portfólio de múltiplos indicadores reduz a probabilidade de transações erradas.

  2. Os indicadores complementam-se mutuamente e ajudam a avaliar melhor o mercado.

  3. Regras claras de negociação para facilitar a retrospectiva e a verificação.

Os riscos desta estratégia:

  1. A duplicação dos indicadores deve ser cuidadosamente avaliada para evitar excesso de redundância.

  2. Os parâmetros de otimização de combinações de múltiplos indicadores são mais complexos.

  3. Aumentar os indicadores não necessariamente aumenta a eficácia da estratégia.

Em suma, a combinação de vários indicadores pode melhorar a eficácia da tomada de decisão, mas é necessário ter em conta a dificuldade de otimização e a duplicação dos indicadores, mantendo a estratégia simples e confiável.

Código-fonte da estratégia
/*backtest
start: 2022-09-06 00:00:00
end: 2023-09-12 00:00:00
period: 3d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// strategy(title='Combined Strategy', default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=.0020, pyramiding=0, slippage=3, overlay=true)

//----------//
// MOMENTUM //
//----------//
ema8 = ta.ema(close, 5)
ema13 = ta.ema(close, 9)
ema21 = ta.ema(close, 13)
ema34 = ta.ema(close, 21)
ema55 = ta.ema(close, 34)

plot(ema8, color=color.new(color.red, 0), style=plot.style_line, title='5', linewidth=1)
plot(ema13, color=color.new(color.orange, 0), style=plot.style_line, title='9', linewidth=1)
plot(ema21, color=color.new(color.yellow, 0), style=plot.style_line, title='13', linewidth=1)
plot(ema34, color=color.new(color.aqua, 0), style=plot.style_line, title='21', linewidth=1)
plot(ema55, color=color.new(color.lime, 0), style=plot.style_line, title='34', linewidth=1)

longEmaCondition = ema8 > ema13 and ema13 > ema21 and ema21 > ema34 and ema34 > ema55
exitLongEmaCondition = ema13 < ema55

shortEmaCondition = ema8 < ema13 and ema13 < ema21 and ema21 < ema34 and ema34 < ema55
exitShortEmaCondition = ema13 > ema55

// ----------  //
// OSCILLATORS //
// ----------- //
rsi = ta.rsi(close, 14)
longRsiCondition = rsi < 70 and rsi > 40
exitLongRsiCondition = rsi > 70

shortRsiCondition = rsi > 30 and rsi < 60
exitShortRsiCondition = rsi < 30

Stochastic
length = 14, smoothK = 3, smoothD = 3
kFast = ta.stoch(close, high, low, 14)
dSlow = ta.sma(kFast, smoothD)

longStochasticCondition = kFast < 80
exitLongStochasticCondition = kFast > 95

shortStochasticCondition = kFast > 20
exitShortStochasticCondition = kFast < 5

//----------//
// STRATEGY //
//----------//

longCondition = longEmaCondition and longRsiCondition and longStochasticCondition and strategy.position_size == 0
exitLongCondition = (exitLongEmaCondition or exitLongRsiCondition or exitLongStochasticCondition) and strategy.position_size > 0

if (longCondition)
  strategy.entry("LONG", strategy.long)
if (exitLongCondition)
  strategy.close("LONG")

shortCondition = shortEmaCondition and shortRsiCondition and shortStochasticCondition and strategy.position_size == 0
exitShortCondition = (exitShortEmaCondition or exitShortRsiCondition or exitShortStochasticCondition) and strategy.position_size < 0

if (shortCondition)
  strategy.entry("SHORT", strategy.short)
if (exitShortCondition)
  strategy.close("SHORT")