Estrategia de negociación diaria de Bitcoin de múltiples indicadores

El autor:¿ Qué pasa?, Fecha: 2023-10-30 10:37:58
Las etiquetas:

img

Resumen general

Esta estrategia combina múltiples indicadores para identificar oportunidades comerciales dentro del marco de tiempo diario para Bitcoin. Utiliza principalmente indicadores como MACD, RSI, Stoch RSI, junto con la dirección del promedio móvil para determinar la dirección de tendencia actual para generar señales de compra y venta.

Estrategia lógica

La estrategia utiliza los siguientes indicadores clave:

  1. MACD (Fast MA - Slow MA) y su línea de señal. Cruzar MACD por encima de la línea de señal da una señal de compra, y cruzar por debajo de 0 da una señal de venta.

  2. El RSI (Índice de Fuerza Relativa) cuando cruza un umbral da una señal de compra.

  3. El índice de volatilidad de las acciones muestra niveles de sobrecompra/sobreventa del índice de volatilidad de las acciones.

  4. Dirección de la media móvil. El cierre del precio por debajo de MA da señal de venta.

De acuerdo con estos indicadores, las señales de negociación son:

Compra señal¿ Cuándo?(Stoch RSI < Threshold) AND (MACD crossing above threshold OR RSI crossing above threshold)

Venda la señal¿ Cuándo?(MACD crossing below 0) AND (Close below MA OR Stoch RSI > Threshold)

El uso conjunto de múltiples indicadores puede determinar mejor la dirección de la tendencia actual e identificar los puntos de reversión de la tendencia para iniciar operaciones.

Ventajas

  1. La combinación de varios indicadores mejora la precisión y evita señales falsas de un solo indicador.

  2. El MACD muestra la dirección y la fuerza de la tendencia. El RSI refleja los niveles de sobrecompra/superventa. El RSI de las acciones determina la sobrecompra/superventa del RSI. El MA muestra la dirección de la tendencia. Estos indicadores se verifican entre sí.

  3. Las señales de compra/venta requieren una combinación de múltiples indicadores, filtrando algunas señales falsas y evitando operaciones innecesarias.

  4. Backtest comienza el 1 de enero de 2017, cubriendo la gran corrida alcista de Bitcoin a finales de 2017.

  5. El stop loss está configurado para controlar la pérdida en operaciones individuales.

Los riesgos

  1. Aunque el uso de múltiples indicadores mejora la precisión, la discrepancia entre ellos todavía puede conducir a algunas señales erróneas.

  2. El nivel de stop loss optimizado puede necesitar ajustes para diferentes situaciones de mercado.

  3. El marco de tiempo diario impide operaciones detalladas en intervalos de tiempo más cortos, incapaz de responder a grandes movimientos repentinos a corto plazo.

  4. La estrategia solo se prueba con datos históricos limitados. Existe un riesgo de sobreajuste. Requiere más pruebas en un período de tiempo más largo y en más mercados.

Oportunidades de mejora

  1. Prueba más combinaciones de indicadores para encontrar estrategias óptimas de múltiples indicadores.

  2. Optimizar los parámetros de los indicadores para obtener mejores valores.

  3. Prueba diferentes niveles de stop loss para encontrar la relación óptima riesgo/recompensa.

  4. Realice pruebas de retroceso en datos históricos más largos para evitar el sobreajuste.

  5. Explorar la aplicación de la lógica de la estrategia en los marcos de tiempo de mayor frecuencia para el comercio más frecuente.

Conclusión

Esta estrategia combina el MACD, RSI, Stoch RSI y otros indicadores para determinar la dirección de la tendencia diaria de bitcoin e identificar las reversiones de tendencia para la entrada en el comercio. El stop loss está configurado para controlar el riesgo comercial. La prueba de retroceso muestra resultados positivos, pero aún requiere una mayor verificación en un período de tiempo más largo y más mercados para evitar riesgos de sobreajuste.


/*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)

Más.