Stratégie de négociation de l'interpolation percentile Heikin Ashi

Auteur:ChaoZhang est là., Date: 2023-12-25 11h02 et 25 min
Les étiquettes:

img

Résumé

Cette stratégie génère des signaux de trading basés sur des chandeliers Heikin Ashi. Plus précisément, les signaux d'achat et de vente sont considérés comme basés sur le croisement du prix de clôture Heikin Ashi et du niveau de prix du 75e centile, ainsi que le prix de clôture Heikin Ashi étant au-dessus de certaines moyennes mobiles.

La logique de la stratégie

La stratégie utilise des bougies Heikin Ashi au lieu de bougies régulières pour l'analyse. La nature lisse des bougies Heikin Ashi aide à identifier plus clairement les tendances et les renversements.

  1. Un signal long est généré lorsque la fermeture Heikin Ashi dépasse le 75e centile.
  2. Un signal de vente est déclenché lorsque la clôture de Heikin Ashi dépasse la moyenne mobile à 5 périodes.

Le stop loss et le trailing stop sont également utilisés pour contrôler le risque à la baisse par transaction.

Les avantages

  1. Les bougies Heikin Ashi identifient clairement les tendances et détectent rapidement les retours en arrière.
  2. Les canaux percentiles aident à déterminer les conditions de surachat/survente des entrées et sorties de temps.
  3. L'utilisation d'un stop loss et d'un trailing stop permet de contrôler de manière proactive le risque.

Les risques

  1. Les bougies Heikin Ashi ont un décalage par conception, ce qui peut entraîner le manque des meilleurs prix d'entrée/sortie.
  2. Les canaux percentiles ne détectent pas complètement les renversements de tendance, ce qui conduit à des fléchettes potentielles.
  3. Un mauvais placement de stop loss pourrait soit réduire les bénéfices de manière prématurée, soit permettre des pertes inacceptables.

Pour atténuer les risques, des paramètres tels que les périodes moyennes mobiles et les pourcentages d'arrêt des pertes peuvent nécessiter un ajustement.

Améliorations

  1. Testez différentes combinaisons de moyennes mobiles pour trouver les paramètres optimaux.
  2. Améliorer la longueur des canaux pour mieux identifier les prix zones chaudes.
  3. Incorporer des indicateurs supplémentaires pour confirmer les signaux et éviter les faux signaux.
  4. Mettre en œuvre des distances de stop-loss dynamiques.

Conclusion

Cette stratégie combine les bougies Heikin Ashi, les canaux de percentiles et les moyennes mobiles pour former une approche systématique, capable d'identifier les tendances et de contrôler le risque via un 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)


Plus de