Estrategia cuantitativa de trading de Bitcoin que combina MACD, RSI y FIB


Fecha de creación: 2023-12-26 17:08:03 Última modificación: 2023-12-26 17:08:03
Copiar: 0 Número de Visitas: 932
1
Seguir
1623
Seguidores

Estrategia cuantitativa de trading de Bitcoin que combina MACD, RSI y FIB

Descripción general

Esta estrategia, llamada la estrategia de Pinch Gold Cross Finch, combina el indicador tecnológico MACD con un promedio móvil, el RSI con un indicador relativamente fuerte y la teoría de retroceso / expansión de Fibonacci en el principio de la línea divisoria del oro, lo que permite el comercio cuantitativo de criptomonedas como Bitcoin.

Principio de estrategia

  1. El índice MACD es un indicador de venta y compra.
  • Los períodos de EMA para establecer la línea rápida y la línea lenta MACD son 15 y 30
  • En la línea rápida, la línea lenta es un punto de compra y la línea baja es un punto de venta.
  1. El RSI está filtrando las falsas señales
  • El RSI se establece en 50 ciclos
  • El indicador RSI puede usarse para ayudar a filtrar algunas señales falsas de los MACD
  1. La Teoría de Fibonacci determina el tipo de apoyo/resistencia
  • Combinación de precios máximos y mínimos recientes (por ejemplo, 38 líneas K)
  • Calcula el retiro y la expansión de Fibonacci de 0,5 en la línea divisoria de oro
  • Se puede usar para determinar la posición de soporte y resistencia
  1. La línea media y el RSI juzgan sobrecompra y sobreventa
  • La media periódica de 50 puede determinar si se está sobrecomprando o sobrevendendo.
  • El RSI también puede determinar sobrecompra y sobreventa
  1. Mecanismo contra el desbloqueo de posiciones
  • Ofrece a los usuarios la opción de hacer un pedido de devolución
  • La lógica del vacío múltiple se puede ajustar de manera flexible según las preferencias del usuario

Análisis de las ventajas

La mayor ventaja de esta estrategia es que se puede operar en todo el tiempo, lo que reduce considerablemente los costos de operación. Además, la combinación de varios indicadores puede mejorar la tasa de éxito, y el efecto es especialmente evidente en el mercado de toros. Las ventajas específicas son las siguientes:

  1. Se puede 7*Transacciones automáticas de 24 horas, sin intervención humana
  2. El MACD es el indicador de la hora exacta para comprar y vender.
  3. El RSI puede filtrar algunas señales falsas
  4. La teoría de Fibonacci aumenta la base de las decisiones de comercio
  5. 50 La línea media y el RSI juzgan sobrecompra y sobreventa
  6. Adaptación a los cambios del mercado mediante un mecanismo de retroalimentación

Análisis de riesgos

La estrategia también presenta algunos riesgos, principalmente derivados de la reversión de la tendencia de los grandes mercados, en los que el stop loss puede ser más difícil de actuar. Además, el tiempo de tenencia de la posición es demasiado largo. Los principales puntos de riesgo son:

  1. El bloqueo está demasiado cerca y la situación es tan grave que no sirve de protección.
  2. Riesgo sistémico de mantener posiciones durante demasiado tiempo

La solución es la siguiente:

  1. La distancia de frenado adecuada para garantizar que el frenado funcione adecuadamente
  2. Optimizar el ciclo de tenencia de posiciones y reducir el riesgo de una tenencia prolongada

Dirección de optimización

Esta estrategia puede ser optimizada en las siguientes direcciones:

  1. Optimización de los parámetros del MACD para mejorar la precisión de las señales de compra y venta
  2. Optimización de los parámetros del RSI para mejorar su utilidad
  3. Pruebas de la teoría de Fibonacci de más ciclos
  4. Añadir más indicadores de filtración para reducir aún más la probabilidad de señales falsas
  5. Combinando más indicadores de grandes ciclos para juzgar las tendencias del mercado

Resumir

Esta estrategia integra varios indicadores cuantitativos para determinar el momento de comprar y vender, puede automatizar el comercio de criptomonedas todo el día. Se espera que aumente aún más el nivel de rentabilidad de la estrategia mediante la optimización de los parámetros de los indicadores y la adición de más indicadores auxiliares. La estrategia puede ahorrar una gran cantidad de costos de tiempo de operación manual para los usuarios.

Código Fuente de la Estrategia
/*backtest
start: 2023-12-18 00:00:00
end: 2023-12-25 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © onurenginogutcu

//@version=4
strategy("STRATEGY R18-F-BTC", overlay=true, margin_long=100, margin_short=100)

///////////default girişler 1 saatlik btc grafiği için geçerli olmak üzere - stop loss'lar %2.5 - long'da %7.6 , short'ta %8.1

sym = input(title="Symbol", type=input.symbol, defval="BINANCE:BTCUSDT") /////////btc'yi indikatör olarak alıyoruz

lsl = input(title="Long Stop Loss (%)",
     minval=0.0, step=0.1, defval=2.5) * 0.01
     
ssl = input(title="Short Stop Loss (%)",
     minval=0.0, step=0.1, defval=2.5) * 0.01
     
longtp = input(title="Long Take Profit (%)",
     minval=0.0, step=0.1, defval=7.6) * 0.01
     
shorttp = input(title="Short Take Profit (%)",
     minval=0.0, step=0.1, defval=7.5) * 0.01
     
capperc = input(title="Capital Percentage to Invest (%)",
     minval=0.0, maxval=100, step=0.1, defval=90) * 0.01
     
choice = input(title="Reverse ?", type=input.bool, defval=false)

symClose = security(sym, "", close)
symHigh = security(sym, "", high)
symLow = security(sym, "", low)

i = ema (symClose , 15) - ema (symClose , 30) ///////// ema close 15 ve 30 inanılmaz iyi sonuç verdi (macd standartı 12 26)
r = ema (i , 9)

sapust = highest (i , 100) * 0.729 //////////0.729 altın oran oldu 09.01.2022
sapalt = lowest (i , 100) * 0.729  //////////0.729 altın oran oldu 09.01.2022

///////////highx = highest (close , 365) * 0.72 fibo belki dahiledilebilir
///////////lowx = lowest (close , 365) * 1.272 fibo belki dahil edilebilir
simRSI = rsi (symClose , 50 ) /////// RSI DAHİL EDİLDİ "50 MUMLUK RSI EN İYİ SONUCU VERİYOR"


//////////////fibonacci seviyesi eklenmesi amacı ile koyuldu fakat en iyi sonuç %50 seviyesinin altı ve üstü (low ve high 38 barlık) en iyi sonuç verdi
fibvar = 38
fibtop = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)
fibbottom = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)

///////////////////////////////////////////////////////////// INDICATOR CONDITIONS

longCondition = crossover(i, r) and i < sapalt and symClose < sma (symClose , 50) and simRSI < sma (simRSI , 50) and symClose < fibbottom
shortCondition = crossunder(i, r) and i > sapust and symClose > sma (symClose , 50) and simRSI > sma (simRSI , 50)  and symClose > fibtop

////////////////////////////////////////////////////////////////

///////////////////////////////////////////STRATEGY ENTRIES AND STOP LOSSES /////stratejilerde kalan capital için strategy.equity kullan (bunun üzerinden işlem yap)


if (choice == false and longCondition)
    strategy.entry("Long", strategy.long , qty = capperc * strategy.equity / close ,   when = strategy.position_size == 0)
   

if (choice == false and shortCondition)
    strategy.entry("Short" , strategy.short , qty = capperc * strategy.equity / close ,  when = strategy.position_size == 0)

if (choice == true and longCondition)
    strategy.entry("Short" , strategy.short , qty = capperc * strategy.equity / close ,  when = strategy.position_size == 0)

if (choice == true and shortCondition)
    strategy.entry("Long", strategy.long , qty = capperc * strategy.equity / close ,   when = strategy.position_size == 0)
    

if (strategy.position_size > 0)
    strategy.exit("Exit Long", "Long", stop=strategy.position_avg_price*(1 - lsl) , limit=strategy.position_avg_price*(1 + longtp))

if (strategy.position_size < 0)
    strategy.exit("Exit Short", "Short", stop=strategy.position_avg_price*(1 + ssl) , limit=strategy.position_avg_price*(1 - shorttp))


////////////////////////vertical colouring signals
bgcolor(color=longCondition ? color.new (color.green , 70) : na)
bgcolor(color=shortCondition ? color.new (color.red , 70) : na)