Estrategia de negociación de interpolación por percentiles de Heikin Ashi

El autor:¿ Qué pasa?, Fecha: 2023-12-25 11:02:25
Las etiquetas:

img

Resumen general

Esta estrategia genera señales comerciales basadas en velas Heikin Ashi. Específicamente, las señales de compra y venta se consideran basadas en el cruce del precio de cierre de Heikin Ashi y el nivel de precio del percentil 75, así como el precio de cierre de Heikin Ashi por encima de ciertos promedios móviles.

Estrategia lógica

La estrategia utiliza velas Heikin Ashi en lugar de velas regulares para el análisis. La naturaleza suavizada de las velas Heikin Ashi ayuda a identificar tendencias e inversiones con más claridad.

  1. Se genera una señal larga cuando el cierre de Heikin Ashi cruza por encima del nivel del percentil 75.
  2. Una señal de venta se activa cuando el cierre de Heikin Ashi cruza por debajo del promedio móvil de 5 períodos.

El stop loss y el trailing stop también se utilizan para controlar el riesgo a la baja por operación.

Ventajas

  1. Las velas Heikin Ashi identifican claramente las tendencias y detectan rápidamente las reversiones.
  2. Los canales percentiles ayudan a determinar las condiciones de sobrecompra/sobreventa a las entradas y salidas de tiempo.
  3. El uso de stop loss y trailing stop controla el riesgo de manera proactiva.

Los riesgos

  1. Las velas Heikin Ashi tienen retraso por diseño, lo que puede resultar en la falta de los mejores precios de entrada / salida.
  2. Los canales percentiles no identifican completamente las inversiones de tendencia, lo que conduce a posibles cambios.
  3. La colocación incorrecta de un stop loss podría reducir las ganancias prematuramente o permitir pérdidas inaceptables.

Para mitigar los riesgos, pueden necesitarse ajustes en parámetros como los períodos de media móvil y los porcentajes de pérdida de suspensión.

Mejoras

  1. Prueba diferentes combinaciones de medias móviles para encontrar parámetros óptimos.
  2. Ajuste fino de las longitudes de los canales percentiles para identificar mejor las zonas calientes de precios.
  3. Incorporar indicadores adicionales para confirmar las señales y evitar las falsas señales.
  4. Implementar distancias de pérdida de parada dinámicas.

Conclusión

Esta estrategia combina velas Heikin Ashi, canales percentiles y medias móviles para formar un enfoque sistemático, capaz de identificar tendencias y controlar el riesgo a través de stop loss.


/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-24 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("HK Percentile Interpolation One",shorttitle = "HKPIO", overlay=false, default_qty_type = strategy.cash, default_qty_value = 5000, calc_on_order_fills = true, calc_on_every_tick = true)

// Input parameters
stopLossPercentage = input(3, title="Stop Loss (%)") // User can set Stop Loss as a percentage
trailStopPercentage = input(1.5, title="Trailing Stop (%)") // User can set Trailing Stop as a percentage
lookback = input.int(14, title="Lookback Period", minval=1) // User can set the lookback period for percentile calculation
yellowLine_length = input.int(5, "Yellow", minval=1) // User can set the length for Yellow EMA
purplLine_length = input.int(10, "Purple", minval=1) // User can set the length for Purple EMA
holdPeriod = input.int(200, title="Minimum Holding Period", minval=10) // User can set the minimum holding period
startDate = timestamp("2021 01 01")  // User can set the start date for the strategy

// Calculate Heikin Ashi values
haClose = ohlc4
var float haOpen = na
haOpen := na(haOpen[1]) ? (open + close) / 2 : (haOpen[1] + haClose[1]) / 2
haHigh = math.max(nz(haOpen, high), nz(haClose, high), high)
haLow = math.min(nz(haOpen, low), nz(haClose, low), low)

// Calculate Moving Averages
yellowLine = ta.ema(haClose, yellowLine_length)
purplLine = ta.ema(haClose, purplLine_length)

// Calculate 25th and 75th percentiles
p25 = ta.percentile_linear_interpolation(haClose, lookback, 28)
p75 = ta.percentile_linear_interpolation(haClose, lookback, 78)

// Generate buy/sell signals
longSignal = ta.crossover(haClose, p75) and haClose > yellowLine
sellSignal = ta.crossunder(haClose, yellowLine)
longSignal1 = ta.crossover(haClose, p75) and haClose > purplLine
sellSignal1 = ta.crossunder(haClose, purplLine)

// Set start time and trade conditions
if(time >= startDate)
    // When longSignal is true, enter a long trade and set stop loss and trailing stop conditions
    if (longSignal)
        strategy.entry("Long", strategy.long, 1)
        strategy.exit("Sell", "Long", stop=close*(1-stopLossPercentage/100), trail_points=close*trailStopPercentage/100, trail_offset=close*trailStopPercentage/100)
    // When sellSignal is true, close the long trade
    if (sellSignal)
        strategy.close("Long")
    // When sellSignal1 is true, enter a short trade
    if (sellSignal1)
        strategy.entry("Short", strategy.short, 1)
    // When longSignal1 is true, close the short trade
    if (longSignal1)
        strategy.close("Short")

// Plot Heikin Ashi candles
plotcandle(haOpen, haHigh, haLow, haClose, title="Heikin Ashi", color=(haClose >= haOpen ? color.rgb(1, 168, 6) : color.rgb(176, 0, 0)))

// Plot 25th and 75th percentile levels
plot(p25, title="25th Percentile", color=color.green, linewidth=1, style=plot.style_circles)
plot(p75, title="75th Percentile", color=color.red, linewidth=1, style=plot.style_circles)

// Plot Moving Averages
plot(yellowLine, color = color.rgb(254, 242, 73, 2), linewidth = 2, style = plot.style_stepline)
plot(purplLine, color = color.rgb(255, 77, 234, 2), linewidth = 2, style = plot.style_stepline)


Más.