Estratégia de investimento em ações baseada em médias móveis duplas e volatilidade


Data de criação: 2023-12-20 14:54:41 última modificação: 2023-12-20 14:54:41
cópia: 0 Cliques: 661
1
focar em
1621
Seguidores

Estratégia de investimento em ações baseada em médias móveis duplas e volatilidade

Visão geral

Esta estratégia baseia-se em indicadores de dupla média e força relativa, combinando a volatilidade histórica das ações, para comprar e vender ações automaticamente. A vantagem da estratégia é que a combinação de linhas longas e curtas permite controlar o risco de forma eficaz.

Princípio da estratégia

A estratégia usa um sistema de linha dupla composto por uma linha média de 150 semanas e uma linha média rápida de 50 dias, bem como a linha média mais rápida de 20 dias. Quando o preço atravessa a linha de 150 semanas, o mercado começa a subir. Quando o preço atravessa a linha de 50 dias, o mercado começa a cair.

Além disso, a estratégia também usa o preço máximo de flutuação anual e o indicador de força relativa para determinar o momento de compra específico. O sinal de compra é emitido apenas quando o preço de encerramento excede o preço máximo calculado pela flutuação anual e o indicador de força relativa é positivo.

Vantagens estratégicas

  1. Utilizando um sistema de dupla equação, é possível avaliar com eficiência as mudanças nas principais tendências, conseguindo traçar a queda.
  2. Adição de indicadores de volatilidade e de intensidade para evitar o fluxo de ondas em situações de turbulência
  3. A adição de uma linha média rápida de 20 dias pode parar os prejuízos mais rapidamente.

Risco estratégico

  1. Há um certo atraso, mas não é possível parar rapidamente.
  2. Não há um limite de perda definido, o que pode levar a grandes perdas.
  3. Falta de otimização de parâmetros, configuração de parâmetros é bastante subjetiva

Para resolver o risco, pode-se definir o nível de stop loss, ou usar o múltiplo do indicador ATR como a amplitude de stop loss. Além disso, os parâmetros podem ser otimizados por meio de uma retrospectiva mais rigorosa.

Direção de otimização da estratégia

  1. Aumentar o mecanismo de suspensão de perdas
  2. Encontrar o melhor parâmetro usando o método de otimização de parâmetros Considerar a inclusão de outros indicadores de filtragem, como indicadores de volume de transação
  3. Pode-se considerar a construção de uma estratégia como um modelo multifatorial, com mais indicadores

Resumir

Esta estratégia é, em geral, uma estratégia de investimento em ações mais conservadora. Usando duas linhas de equilíbrio para avaliar as principais tendências, e combinando a volatilidade e a intensidade dos indicadores de entrada, pode filtrar efetivamente as brechas de falência. A inclusão da linha de equilíbrio rápida também torna o stop loss mais rápido.

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

//@version=4
//Relative Strength
strategy("Stan my man", overlay=true)
comparativeTickerId = input("BTC_USDT:swap",  title="Comparative Symbol")
l = input(50, type=input.integer, minval=1, title="Period")
baseSymbol = security(syminfo.tickerid, timeframe.period, close)
comparativeSymbol = security(comparativeTickerId, timeframe.period, close)
hline(0, color=color.black, linestyle=hline.style_dotted)
res = baseSymbol / baseSymbol[l] /(comparativeSymbol / comparativeSymbol[l]) - 1
plot(res, title="RS", color=#1155CC)

//volume ma
vol1 = sma(volume,20)
// 30 week ma
ema1 = ema(close, 150)
//consolidation
h1 = highest(high[1],365)

fastPeriod = input(title="Fast MA", type=input.integer, defval=50)
slowPeriod = input(title="Slow MA", type=input.integer, defval=150)
fastestperiod = input(title="Fastest MA", type=input.integer, defval=20)

fastEMA = ema(close, fastPeriod)
slowEMA = ema(close, slowPeriod)
fastestEMA = ema(close, fastestperiod)

monitorStrategy = close < close[20]


// trade conditions
buytradecondition1 = close >ema1 and res>0 and volume> 1.5*vol1 and close > h1
buytradecondition2 = close > fastEMA  and volume> 1.5* vol1 
selltradecondition1  = close< 0.95 * fastEMA 
selltradecondition2  = close< 0.90 * open

if (buytradecondition1)
    strategy.entry("long",strategy.long,alert_message ="Seems ready to Buy")
    alert("Buy Alert Price (" + tostring(close) + ") crossed over Slow moving average",alert.freq_all)
    
if (buytradecondition2)
    strategy.entry("long",strategy.long,alert_message ="Seems ready to Buy")
    alert("Buy Alert Price (" + tostring(close) + ") crossed over fast moving average",alert.freq_all)
    
if (selltradecondition1)
    strategy.close("long",alert_message ="Seems ready to Sell")
    alert("Sell Alert Price (" + tostring(close) + ") crossed down fast moving average",alert.freq_all)
    
if (selltradecondition2)
    strategy.close("long",alert_message ="Seems ready to Sell")
    alert("Sell Alert Price (" + tostring(close) + ") crossed down 10% below open price  ",alert.freq_all)

//alertcondition(buytradecondition1,title ="BuySignal", message ="Price Crossed Slow Moving EMA ")

plot(fastEMA, color=color.navy)
plot(slowEMA, color=color.fuchsia)
plot(fastestEMA, color=color.green)