Bitcoin - Estratégia de cruzamento MA

Autora:ChaoZhang, Data: 2023-12-04 13:55:45
Tags:

img

Resumo

Esta estratégia é uma estratégia de negociação baseada no princípio de cruzamento das linhas médias móveis do Bitcoin. A estratégia usa o cruzamento da linha média móvel rápida e da linha média móvel lenta como sinais de compra e venda. Quando a linha média móvel rápida cruza acima da linha média móvel lenta, ela é considerada uma cruz de ouro e vai longa; quando a linha média móvel rápida cruza abaixo da linha média móvel lenta, ela é considerada uma cruz de morte e vai curta.

Princípio da estratégia

A estratégia baseia-se principalmente em dois indicadores:

  1. Média móvel (MA): Calcula o preço médio de fechamento durante um determinado período para determinar as tendências de preços e os sinais de reversão.

  2. Índice de Força Relativa (RSI): Calcula a velocidade dos aumentos e quedas de preços durante um determinado período para julgar áreas sobrecompradas e sobrevendidas.

Especificamente, a estratégia usa uma MA mais curta como a linha rápida e uma MA mais longa como a linha lenta. Quando a linha rápida cruza acima da linha lenta, indica que o aumento do preço a curto prazo está acelerando e um sinal de compra é gerado; quando a linha rápida cruza abaixo da linha lenta, indica que a queda do preço a curto prazo está acelerando e um sinal de venda é gerado.

Ao mesmo tempo, a estratégia também estabelece um limiar para o RSI, gerando sinais de compra apenas quando o RSI está acima de 50 e sinais de venda apenas quando o RSI está abaixo de 50, evitando a entrada imprudente quando os preços flutuam violentamente.

Análise das vantagens

A estratégia apresenta as seguintes vantagens:

  1. O princípio é simples e fácil de entender e aplicar.
  2. Sinais de negociação confiáveis evitam entrada irracional.
  3. Menos parâmetros e fácil de otimizar.
  4. Técnica de média móvel madura com ampla aplicação.
  5. O indicador RSI pode identificar efetivamente fenômenos de sobrecompra e sobrevenda.

Análise de riscos

A estratégia apresenta também alguns riscos:

  1. As estratégias que seguem tendências são propensas a grandes perdas quando os preços revertem.
  2. As médias móveis estão atrasadas e não conseguem captar prontamente as reversões de preços.
  3. A selecção incorreta dos parâmetros pode provocar uma deterioração da qualidade dos sinais de negociação.
  4. A estratégia considera apenas indicadores técnicos sem factores fundamentais.

Para mitigar os riscos, recomenda-se otimizar os parâmetros da média móvel do período, ajustar as posições de stop loss e reduzir adequadamente os tamanhos das posições.

Orientações de otimização

As principais direcções de otimização desta estratégia incluem:

  1. Otimizar os parâmetros da média móvel do período para encontrar a combinação ideal de parâmetros, através de pesquisa incremental, algoritmos genéticos, etc.

  2. Aumentar outros indicadores técnicos de filtragem, tais como KDJ, MACD, etc., para melhorar a qualidade dos sinais de negociação.

  3. Monitorizar as flutuações de preços e ajustar as posições e parar as perdas em conformidade.

  4. Incorporar o volume de negociação para evitar falhas, emitindo sinais apenas quando o volume de negociação aumenta.

  5. Desenvolver mecanismos de autoadaptação dos parâmetros, permitindo que as estratégias ajustem automaticamente os valores dos parâmetros com base em diferentes ambientes de mercado.

Conclusão

Em resumo, esta é uma estratégia típica de seguimento de tendências. Com base no princípio do cruzamento da média móvel, a lógica de negociação é simples e clara, fácil de entender e implementar. Incorporar o indicador RSI pode evitar a negociação irracional. A estratégia carrega riscos e recompensas, adequados para investidores com alguma experiência em negociação de quantidade, mas os riscos de perda potencial precisam ser protegidos. Se os desenvolvedores podem adicionar mais filtros, otimizar a adaptabilidade dos parâmetros, pode melhorar ainda mais a lucratividade constante da estratégia.


/*backtest
start: 2023-11-03 00:00:00
end: 2023-12-03 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Trading Strategy Warning - Past performance may not equal future performance
//Account Size Warning - Performance based upon default 10% risk per trade, of account size $100,000. Adjust before you trade to see your own drawdown.
//Time Frame - D1 and H4, warning H4 has a lower profit factor (fake-outs, and account drawdown), D1 recommended
//Trend Following System - Profitability of this system is dependent on a STRONG trend in Bitcoin, into the future
strategy("Bitcoin - MA Crossover Strategy", overlay=true)

// User Input
usr_risk = input(title="Equity Risk (%)",type=input.integer,minval=1,maxval=100,step=1,defval=10,confirm=false)
sma_fast = input(title="Fast MA (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=20,confirm=false)
sma_slow = input(title="Slow MA (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=40,confirm=false)
rsi_valu = input(title="RSI (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=14,confirm=false)

// Create Indicator's
shortSMA = sma(close, sma_fast)
longSMA = sma(close, sma_slow)
rsi = rsi(close, rsi_valu)
strategy.initial_capital = 50000
// Units to buy
amount = usr_risk / 100 * (strategy.initial_capital + strategy.netprofit)
units = floor(amount / close)

// Specify entry conditions
longEntry = crossover(shortSMA, longSMA)
shortEntry = crossunder(shortSMA, longSMA)

// Specify exit conditions
longExit = crossunder(shortSMA, longSMA)
shortExit = crossover(shortSMA, longSMA)

// Execute long trade
if (longEntry)
    strategy.entry("long", strategy.long, units, when = rsi > 50)

// Exit long trade
if(longExit and strategy.position_size > 0)    
    strategy.order("exit long", strategy.short, abs(strategy.position_size))

// Execute short trade
if (shortEntry)
    strategy.entry("short", strategy.short, units, when = rsi < 50)
    
// Exit short trade
if(shortExit and strategy.position_size < 0)    
    strategy.order("exit short", strategy.long, abs(strategy.position_size))

// Plot Moving Average's to chart
plot(shortSMA)
plot(longSMA, color=color.black)

Mais.