
Cette stratégie, appelée stratégie de négociation basée sur les pourcentages de Heikin Ashi ROC, vise à fournir un cadre de négociation facile à utiliser basé sur les pourcentages de Heikin Ashi ROC.
La stratégie génère des trajectories pour les transactions en calculant le ROC de la clôture de Heikin Ashi et ses hautes et basses valeurs pour différentes périodes. Plus précisément, elle calcule le ROC de la clôture de Heikin Ashi pour les cycles passés de rocLength. Elle calcule ensuite le rocHigh et le rocLow pour les 50 cycles passés de ROC. Elle calcule ensuite la upperKillLine de la trajectorie en fonction de rocHigh et la lowerKillLine de la trajectorie en fonction de rocLow.
Le plus grand avantage de cette stratégie réside dans le fait qu’elle utilise la forte capacité de suivi des tendances de l’indicateur ROC, associée aux informations de prix lisses de Heikin Ashi, permettant d’identifier efficacement les changements de tendance. Par rapport à des indicateurs tels que la simple moyenne mobile, le ROC est plus sensible à la réponse aux changements de prix, ce qui permet à la stratégie d’entrer en jeu à temps.
Le risque principal de cette stratégie réside dans le fait qu’une mauvaise configuration des paramètres peut entraîner des transactions fréquentes ou insuffisamment sensibles. La rocLength et les cycles de calcul des pourcentages doivent être réglés avec précaution, sinon les hauts et les bas peuvent être trop faibles ou trop rigides, ce qui peut entraîner des opportunités de transaction manquées ou des pertes inutiles. De plus, la configuration des pourcentages doit également être ajustée en fonction des tests répétés sur différents marchés pour trouver la meilleure combinaison de paramètres.
Cette stratégie peut être optimisée de plusieurs façons: 1) en combinant d’autres indicateurs pour filtrer les signaux d’entrée, tels que le RSI, etc.; 2) en utilisant des paramètres d’optimisation dynamique utilisant des méthodes d’apprentissage automatique; 3) en configurant un mécanisme de sortie brute automatique de l’arrêt de perte; 4) en combinaison avec d’autres stratégies non tendancielles pour équilibrer le risque de la stratégie.
En résumé, la stratégie exploite la forte capacité de suivi de la tendance de l’indicateur ROC pour le jugement et le suivi de la tendance en fonction des caractéristiques de Heikin Ashi, et le filtrage des pertes par le biais de la formation des pourcentages de ROC, ce qui permet de réaliser Leur avantage réside dans l’identification rapide des changements de tendance et le suivi des grandes tendances, tout en filtrant les oscillations par des rails ascendants et descendants. Cependant, une mauvaise configuration des paramètres peut affecter la performance de la stratégie et le risque d’un renversement de tendance.
/*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