Heikin Ashi ROC Stratégie de négociation en pourcentage

Auteur:ChaoZhang est là., Date: 23 octobre 2023 à 15h41h40
Les étiquettes:

img

Résumé

Cette stratégie est appelée Heikin Ashi ROC Percentile Trading Strategy. Elle vise à fournir un cadre de trading facile à utiliser basé sur le Heikin Ashi ROC et ses percentiles.

La logique de la stratégie

La stratégie calcule le ROC des prix de clôture de Heikin Ashi au cours des dernières périodes de rocLength. Elle calcule ensuite les valeurs rocLow les plus élevées et les plus basses de ROC au cours des 50 dernières périodes. La ligne KillLine supérieure et la ligne KillLine inférieure sont générées sur la base de certains pourcentages de rocHigh et rocLow. Lorsque le ROC dépasse la ligne KillLine inférieure, une position longue est ouverte. Lorsque le ROC dépasse la ligne KillLine supérieure, la position longue est fermée. Inversement, lorsque le ROC dépasse la ligne KillLine supérieure, une position courte est ouverte. Lorsque le ROC dépasse la ligne KillLine inférieure, la position courte est fermée.

Analyse des avantages

Le plus grand avantage de cette stratégie est l'utilisation de la forte capacité de suivi des tendances de l'indicateur ROC, combinée à la fonctionnalité de lissage des informations sur les prix de Heikin Ashi. Cela permet à la stratégie d'identifier efficacement les changements de tendance et d'entrer dans les transactions en temps opportun. Par rapport aux moyennes mobiles simples, ROC répond plus sensiblement aux changements de prix. En outre, les rails supérieurs et inférieurs générés à partir de centiles peuvent filtrer efficacement les consolidations et éviter les transactions inutiles de fausses ruptures.

Analyse des risques

Le principal risque de cette stratégie est que les paramètres incorrects peuvent entraîner un sur-trading ou une sensibilité insuffisante. Les périodes de rétrospective des rocLength et des percentiles doivent être réglées avec prudence, sinon les rails peuvent devenir trop ternes ou rigides, causant des transactions manquées ou des pertes inutiles. En outre, les paramètres des percentiles doivent être testés et ajustés à plusieurs reprises pour différents marchés afin de trouver des combinaisons optimales. La stratégie est également sujette à certaines pertes lorsque les tendances s'inversent, en raison de sa dépendance à l'égard des indicateurs de tendance.

Directions d'optimisation

La stratégie peut être optimisée de la manière suivante: 1) Ajouter des filtres avec d'autres indicateurs comme le RSI; 2) Optimiser dynamiquement les paramètres avec l'apprentissage automatique; 3) Définir un stop loss et un profit pour une gestion automatique des risques; 4) Combiner avec des stratégies non tendance pour équilibrer les risques.

Résumé

En résumé, cette stratégie utilise la puissante capacité de suivi des tendances de l'indicateur ROC, combinée à Heikin Ashi pour l'identification et le suivi des tendances. Les rails supérieurs et inférieurs générés à partir des percentiles ROC permettent un filtrage efficace des pertes. Cela permet d'obtenir de bonnes performances de suivi des tendances.


/*backtest
start: 2023-09-22 00:00:00
end: 2023-10-22 00:00:00
period: 1h
basePeriod: 15m
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/
// © jensenvilhelm

//@version=5
strategy("Heikin Ashi ROC Percentile Strategy", shorttitle="ROC ON" , overlay=false)

// User Inputs
zerohLine = input(0, title="Midline")  // Zero line, baseline for ROC (customer can modify this to adjust midline)
rocLength = input(100, title="roc Length")  // Lookback period for SMA and ROC (customer can modify this to adjust lookback period)

stopLossLevel = input(2, title="Stop Loss (%)")  // Level at which the strategy stops the loss (customer can modify this to adjust stop loss level)
startDate = timestamp("2015 03 03")  // Start date for the strategy (customer can modify this to adjust start date)

// Heikin Ashi values
var float haClose = na  // Define Heikin Ashi close price
var float haOpen = na  // Define Heikin Ashi open price
haClose := ohlc4  // Calculate Heikin Ashi close price as average of OHLC4 (no customer modification needed here)
haOpen := na(haOpen[1]) ? (open + close) / 2 : (haOpen[1] + haClose[1]) / 2  // Calculate Heikin Ashi open price (no customer modification needed here)

// ROC Calculation
roc = ta.roc(ta.sma(haClose, rocLength), rocLength)  // Calculate Rate of Change (ROC) (customer can modify rocLength in the inputs)
rocHigh = ta.highest(roc, 50)  // Get the highest ROC of the last 50 periods (customer can modify this to adjust lookback period)
rocLow = ta.lowest(roc, 50)  // Get the lowest ROC of the last 50 periods (customer can modify this to adjust lookback period)
upperKillLine = ta.percentile_linear_interpolation(rocHigh, 10, 75)  // Calculate upper kill line (customer can modify parameters to adjust this line)
lowerKillLine = ta.percentile_linear_interpolation(rocLow, 10, 25)  // Calculate lower kill line (customer can modify parameters to adjust this line)

// Trade conditions
enterLong = ta.crossover(roc, lowerKillLine)  // Define when to enter long positions (customer can modify conditions to adjust entry points)
exitLong = ta.crossunder(roc, upperKillLine)  // Define when to exit long positions (customer can modify conditions to adjust exit points)
enterShort = ta.crossunder(roc, upperKillLine)  // Define when to enter short positions (customer can modify conditions to adjust entry points)
exitShort = ta.crossover(roc, lowerKillLine )  // Define when to exit short positions (customer can modify conditions to adjust exit points)

// Strategy execution
if(time >= startDate)  // Start strategy from specified start date
    if (enterLong)
        strategy.entry("Long", strategy.long)  // Execute long trades
    if (exitLong)
        strategy.close("Long")  // Close long trades
    if (enterShort)
        strategy.entry("Short", strategy.short)  // Execute short trades
    if (exitShort)
        strategy.close("Short")  // Close short trades

// Plotting
plot(zerohLine,title="Zeroline")  // Plot zero line
plot(roc, "RSI", color=color.rgb(248, 248, 248))  // Plot ROC
plot(rocHigh, "Roc High", color = color.rgb(175, 78, 76))  // Plot highest ROC
plot(rocLow, "Roc Low", color = color.rgb(175, 78, 76))  // Plot lowest ROC
plot(upperKillLine, "Upper Kill Line", color = color.aqua)  // Plot upper kill line
plot(lowerKillLine, "Lower Kill Line", color = color.aqua)  // Plot lower kill line


Plus de