Estratégia de negociação diária de Bitcoin de múltiplos indicadores

Autora:ChaoZhang, Data: 2023-10-30 10:37:58
Tags:

img

Resumo

Esta estratégia combina múltiplos indicadores para identificar oportunidades de negociação dentro do prazo diário para o Bitcoin.

Estratégia lógica

A estratégia utiliza os seguintes indicadores-chave:

  1. MACD (Fast MA - Slow MA) e sua linha de sinal.

  2. RSI (Índice de Força Relativa): cruzar RSI acima de um limite dá sinal de compra.

  3. Stoch RSI. Stoch RSI mostra níveis de sobrecompra / sobrevenda de RSI. Stoch RSI abaixo do limiar dá sinal de compra, enquanto acima do limiar dá sinal de venda.

  4. A direcção da média móvel.

De acordo com estes indicadores, os sinais de negociação são:

Comprar sinalQuando?(Stoch RSI < Threshold) AND (MACD crossing above threshold OR RSI crossing above threshold)

Venda de sinalQuando?(MACD crossing below 0) AND (Close below MA OR Stoch RSI > Threshold)

A utilização conjunta de múltiplos indicadores pode determinar melhor a direção da tendência atual e identificar pontos de inversão da tendência para iniciar negociações.

Vantagens

  1. A combinação de vários indicadores melhora a precisão e evita falsos sinais provenientes de um único indicador.

  2. O MACD mostra a direção e a força da tendência. O RSI reflete os níveis de sobrecompra / sobrevenda. O RSI de estoque determina a sobrecompra / sobrevenda do RSI. O MA mostra a direção da tendência. Estes indicadores se verificam mutuamente.

  3. Os sinais de compra/venda exigem uma combinação de múltiplos indicadores, filtrando alguns sinais falsos e evitando transações desnecessárias.

  4. O Backtest começa em 1 de janeiro de 2017, cobrindo a enorme corrida do Bitcoin no final do ano de 2017.

  5. O stop loss é definido para controlar a perda em operações individuais.

Riscos

  1. Embora o uso de múltiplos indicadores melhore a precisão, a discrepância entre eles ainda pode levar a alguns sinais errados.

  2. O nível de stop loss otimizado pode precisar de ajustes para diferentes situações de mercado.

  3. O calendário diário impede operações detalhadas em intervalos de tempo mais curtos, incapazes de responder a grandes movimentos repentinos de curto prazo.

  4. A estratégia só é testada com base em dados históricos limitados. Existe risco de excesso de capacidade. Requer testes adicionais em um período de tempo mais longo e mais mercados.

Oportunidades de melhoria

  1. Testar mais combinações de indicadores para encontrar estratégias ótimas de múltiplos indicadores.

  2. Otimizar os parâmetros dos indicadores para obter melhores valores.

  3. Teste diferentes níveis de stop loss para encontrar a relação risco/recompensa ideal.

  4. Realizar backtests em dados históricos mais longos para evitar sobreajustes.

  5. Explorar a aplicação da lógica estratégica em prazos de maior frequência para negociações mais frequentes.

Conclusão

Esta estratégia combina o MACD, RSI, Stoch RSI e outros indicadores para determinar a direção da tendência diária do bitcoin e identificar inversões de tendência para a entrada no comércio. O stop loss é definido para controlar o risco comercial. O backtest mostra resultados positivos, mas ainda requer mais verificação em um período de tempo mais longo e mais mercados para evitar riscos de excesso. Outras otimizações nos parâmetros do indicador e nos níveis de stop loss / take profit podem melhorar os resultados. A estratégia fornece uma idéia inicial de abordagem de combinação de múltiplos indicadores que vale a pena uma exploração e aprimoramento mais profundos.


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

//@version=4
// Original code is from CredibleHulk and modified by bennef
strategy("BTC Daily Strategy BF", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075)

/////////////// Time Frame ///////////////
testStartYear = input(2017, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() => true

/////////////// Input Params /////////////// 
rsi_threshold = input(30)
rsi_length = input(4)
srsi_length = input(8)
srsi_smooth = input(4)
srsi_sell_threshold = input(57)
length = input(14)
dma_signal_threshold = input(-1)
fastLength = input(11)
slowlength = input(18)
MACDLength = input(6)
MACD_signal_threshold = input(-2)
short_loss_tol = input(5)
long_loss_tol = input(5)

stop_level_long = strategy.position_avg_price * (1 - long_loss_tol / 100.0)
stop_level_short = strategy.position_avg_price * (1 + short_loss_tol / 100.0)
    
///////////////  Signal generation ///////////////
// MACD 
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD

// RSI and Stochastic RSI 
rs = rsi(close, rsi_length)
k = sma(stoch(rs, rs, rs, srsi_length), srsi_smooth)

// SMA 
norm = sma(ohlc4, length)
threshold = close - norm   

/////////////// Strategy ///////////////
long = ((crossover(delta, MACD_signal_threshold) or crossover(rs, rsi_threshold)) and k < srsi_sell_threshold)
short = (crossunder(delta, 0) or (crossunder(threshold, dma_signal_threshold) and k > srsi_sell_threshold))

if testPeriod()
    strategy.entry("L", strategy.long, when = long)
    strategy.entry("S", strategy.short, when = short)
    strategy.exit("stop loss L", from_entry = "L", stop = stop_level_long)
    strategy.exit("stop loss S", from_entry = "S", stop = stop_level_short)

/////////////// Plotting ///////////////
// MACD
plot(delta, color = delta > MACD_signal_threshold ? color.lime : delta < 0 ? color.red : color.yellow)
MACD_signal_threshold_line = hline(MACD_signal_threshold, color = color.yellow, title = "MACD Signal Threshold")

// RSI
plot(rs, color = rs > rsi_threshold ? color.lime : color.fuchsia)
rsi_threshold_line = hline(rsi_threshold, color = color.fuchsia, title = "RSI Threshold")

// Stochastic RSI 
plot(k, color = k > srsi_sell_threshold ? color.lime : color.red)
srsi_sell_threshold_line = hline(srsi_sell_threshold, color = color.white, title = "Stoch RSI Threshold")

// SMA
plot(threshold / 100, color = threshold < dma_signal_threshold ? color.red : color.blue)
dma_signal_threshold_line = hline (dma_signal_threshold, color = color.blue, title = "DMA Signal Threshold")

bgcolor(long ? color.lime : short ? color.red : na, transp=50)

Mais.