Divergencia alcista Estrategia de búsqueda de operaciones a corto plazo y largo plazo

El autor:¿ Qué pasa?, fecha: 2023-11-10 11:37:37
Las etiquetas:

img

Resumen general

Esta estrategia trata de identificar oportunidades a corto plazo donde Bitcoin es probable que rebote buscando patrones de divergencia alcista en el indicador RSI, y así determinar buenos puntos de entrada para operaciones largas.

Estrategia lógica

  1. Identificar la divergencia alcista con el indicador RSI

    • Definir los parámetros del RSI (por defecto 14 períodos)
    • Calcular el valor actual del RSI
    • Compruebe si existe la siguiente divergencia alcista:
      • El RSI formó un mínimo inferior
      • El precio formó un mínimo más bajo al mismo tiempo
      • El RSI luego formó un mínimo más alto
      • El precio entonces formó un más alto bajo
  2. Compruebe si el valor del RSI está por debajo del umbral

    • Definir el umbral bajo del RSI (default 40)
    • Si el RSI actual está por debajo de este umbral, puede indicar un punto de entrada largo.
  3. Compruebe si el precio de cierre está por debajo del mínimo de divergencia anterior

    • Si es así, valida aún más la señal de compra de la divergencia alcista
  4. Definir las condiciones de salida de pérdida de parada

    • El porcentaje de pérdidas de detención fijado (por defecto 5%)
    • Salida si la utilización alcanza este porcentaje
  5. Definir las condiciones de salida de las ganancias

    • Establecer el umbral alto del RSI (default 75)
    • Exit si el RSI supera este umbral

Análisis de ventajas

  1. El uso de la divergencia del RSI puede capturar eficazmente las oportunidades de rebote de precios a corto plazo

  2. La combinación con el umbral bajo del RSI ayuda a determinar puntos de entrada específicos

  3. Las configuraciones de stop loss y take profit ayudan a gestionar el riesgo y la recompensa

  4. La estrategia hace referencia a mucha experiencia comercial real con las señales Bitcoin RSI y es muy adecuada para Bitcoin scalping largo

  5. Los parámetros razonables hacen que la estrategia sea adaptable a las diferentes condiciones del mercado y sea adecuada para el comercio en vivo.

Análisis de riesgos

  1. Divergencia del RSI puede fallar, dando lugar a pérdidas de operaciones si se identifica erróneamente

  2. Un solo indicador tiende a generar señales falsas, debe combinarse con otros

  3. Necesidad de elegir valores de parámetros adecuados, ajustes inadecuados afectan a la rentabilidad

  4. El comercio largo debe tener en cuenta la tendencia general, evitar el comercio contra la tendencia

  5. Necesidad de tener cuidado con los costos de negociación, el comercio de alta frecuencia impacta las ganancias

  6. Deben realizar pruebas de retroceso y optimizar los parámetros con regularidad en función de los mercados cambiantes

Direcciones de optimización

  1. Considere la posibilidad de añadir otros indicadores como las medias móviles para las condiciones del filtro para reducir las señales falsas

  2. Pruebe diferentes configuraciones de período en cada marco de tiempo para encontrar combinaciones óptimas

  3. Incorporar un análisis de tendencias de mayor plazo para evitar comprar frente a una inversión de tendencia

  4. Implementar un stop loss dinámico que eleve gradualmente las paradas a medida que aumenta el nivel de ganancia

  5. Ajuste del porcentaje de pérdida de parada basado en el tamaño específico de la posición

  6. Introducir el aprendizaje automático para la optimización automática de parámetros

Conclusión

Esta estrategia tiene como objetivo identificar oportunidades de rebote a corto plazo de Bitcoin mediante la detección de divergencias alcistas del RSI y la determinación de buenos puntos de entrada a largo plazo. La estrategia es simple y efectiva, incorporando mucha experiencia comercial práctica, lo que la hace muy adecuada para los scalping de Bitcoin. Sin embargo, la dependencia de un solo indicador tiende a generar señales falsas, por lo que debe combinarse con otros indicadores. También se debe prestar atención a la optimización de parámetros, la colocación de stop loss, los costos de negociación, etc. Si se utiliza correctamente, esta estrategia puede ser muy rentable en el comercio en vivo.


/*backtest
start: 2023-11-02 00:00:00
end: 2023-11-09 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bullish Divergence Short-term Long Trade Finder", overlay=false)

max_range = 50 
min_range = 5
///pivot_left = 25
pivot_right = 5

//Inputs
src = input(close, title="Source")
rsiBearCondMin = input.int(50, title="RSI Bearish Condition Minimum")
rsiBearCondSellMin = input.int(60, title="RSI Bearish Condition Sell Min")
rsiBullCondMin = input.int(40, title="RSI Bull Condition Minimum")
pivot_left = input.int(25, title="Look Back this many candles")
SellWhenRSI = input.int(75, title="RSI Sell Value")
StopLossPercent = input.int(5, title="Stop loss Percentage")
rsiPeriod = input.int(14, title="RSI Length")
rsiOversold = input.int(30, title="RSI Oversold Level")
rsiOverbought = input.int(70, title="RSI Overbought Level")

//RSI Function/ value 
rsi_value = ta.rsi(src, rsiPeriod)
rsi_hour = request.security(syminfo.tickerid,'60',rsi_value)
rsi_4hour = request.security(syminfo.tickerid,'240',rsi_value)
rsi_Day = request.security(syminfo.tickerid,'D',rsi_value)
plot(rsi_value, title="RSI", linewidth = 2, color = color.black, display =display.all)
hline(50, linestyle = hline.style_dotted)
rsi_ob = hline(70, linestyle=hline.style_dotted)
rsi_os = hline(30, linestyle=hline.style_dotted)
fill(rsi_ob, rsi_os, color.white)
SL_percent = (100-StopLossPercent)/100 

pivot_low_true = na(ta.pivotlow(rsi_value, pivot_left, pivot_right)) ? false : true

//create a function that returns truee/false
confirm_range(x) => 
    bars = ta.barssince(x == true) //counts the number of bars since thee last time condition was true
    min_range <= bars and bars <= max_range // makees sure bars is less than max_range(50) and greater than min_range(5) 


// RSI higher check / low check
RSI_HL_check = rsi_value<rsiBullCondMin and rsi_value > ta.valuewhen(pivot_low_true and rsi_value<rsiBullCondMin, rsi_value,1) and confirm_range(pivot_low_true[1]) 

// price check for lower low
price_ll_check = low < ta.valuewhen(pivot_low_true, low, 1)

bullCond = price_ll_check and RSI_HL_check and pivot_low_true

//pivot_high_true = na(ta.pivothigh(rsi_value, pivot_left, pivot_right))  ? false : true
pivot_high_true = na(ta.pivothigh(rsi_value, pivot_left, pivot_right))   ? false : true

// RSI Lower check / high check ensuring that the RSI dips below 30 to start divergence 
RSI_LH_check = rsi_value < ta.valuewhen(pivot_high_true and rsi_value>rsiBearCondMin, rsi_value,1) and confirm_range(pivot_high_true[1]) //and rsi_value[pivot_right] >= 65

// price check for lower low
price_hh_check = high > ta.valuewhen(pivot_high_true, high, 1)

bearCond = price_hh_check and RSI_LH_check and pivot_high_true and rsi_value[3] > rsiBearCondSellMin

plot(pivot_low_true ? rsi_value : na, offset=-5, linewidth=3, color=(bullCond ? color.green : color.new(color.white, 100)))

plotshape(bullCond ? rsi_value : na , text = "BUY", style =  shape.labelup, location = location.absolute, color = color.green, offset =0, textcolor = color.white )

plot(pivot_low_true ? rsi_value : na, offset=-5, linewidth=3, color=(bearCond ? color.red : color.new(color.white, 100)))

plotshape(bearCond ? rsi_value : na , text = "Sell", style =  shape.labelup, location = location.absolute, color = color.red, offset =0, textcolor = color.white )
//[bbUpperBand, bbMiddleBand, bbLowerBand] = ta.bb(src, bbPeriod, bbDev)

//Entry Condition
longCondition = false

//bullEntry = bullCond and RSI_HL_check and confirm_range(pivot_low_true[1])
if bullCond and close < ta.valuewhen(pivot_low_true, low, 1) and rsi_hour <40 ///and rsi_4hour<40 //and rsi_Day<50
    strategy.entry("Long", strategy.long)
    
//Exit Condition
if (strategy.position_size > 0 and close < strategy.position_avg_price*SL_percent)
    strategy.close("Long")
if (strategy.position_size > 0 and (rsi_value > SellWhenRSI or bearCond))
    strategy.close("Long")


Más.