Cette stratégie utilise de multiples indicateurs tels que la ligne de moyenne, les bandes de Brin et la période de temps pour identifier le début et la fin de la tendance des prix et effectuer des opérations de suivi de la tendance. La stratégie est confirmée par plusieurs indicateurs et peut filtrer efficacement les fausses ruptures.
La stratégie comprend les étapes clés suivantes:
Calculer la moyenne rapide et la moyenne lente. La moyenne est calculée en utilisant le VWAP plutôt que le prix de clôture, ce qui reflète plus précisément le prix de transaction réel.
Calculer la moyenne de la ligne de mesure et dessiner une bande de Brin à partir de cette moyenne. La bande de Brin permet de déterminer si la volatilité des prix s’est élargie et de signaler le début d’une tendance.
L’introduction d’un indicateur de la période de temps (TSV) permettant de déterminer si le volume de transactions est en expansion et ainsi confirmer la tendance existante.
Un signal d’achat est généré lorsque le prix est supérieur au cours de Brin et que le TSV est supérieur à 0 sur la ligne de moyenne rapide et une ligne de moyenne lente; au contraire, un signal de vente apparaît.
Utilisez le retrait de la ligne de moyenne et la descente de Brin comme signaux de stop-loss.
Confirmation de plusieurs indicateurs permettant de filtrer efficacement les fausses percées et d’identifier le début de la tendance
La méthode de calcul de la ligne moyenne reflète plus précisément le prix réel de la transaction
Déterminer si une tendance existe en combinant les indicateurs de volatilité
L’augmentation du volume des transactions confirme la tendance à la hausse
Des normes de stop-loss et d’arrêt raisonnables permettent de contrôler les risques
Les paramètres sont configurables et peuvent être flexiblement ajustés à leur état optimal
La difficulté d’optimiser les paramètres pour un jugement composé de plusieurs indicateurs
Il y a un problème de retard sur les lignes de la moyenne et sur les bandes de Brin, ce qui pourrait entraîner des pertes insuffisantes en temps opportun
L’indicateur de la quantité de temps est sensible aux paramètres de réglage et doit être ajusté selon les marchés
Il y a une possibilité de plus de faux signaux dans les marchés de consolidation
Les bénéfices et les pertes réels sont inférieurs aux résultats de la revue, sans tenir compte de l’incidence des coûts de transaction.
Essayez d’optimiser automatiquement les combinaisons de paramètres en utilisant une méthode d’apprentissage automatique.
Mettre en place un arrêt mobile dynamique ou un arrêt suivi pour mieux verrouiller les bénéfices
Introduction d’un indicateur d’énergie du volume des transactions afin d’éviter les erreurs de transaction qui pourraient dévier du volume
Combiné avec la théorie des vagues, pour déterminer si une tendance est en cours dans les premières, moyennes ou dernières périodes, modifiez dynamiquement les paramètres de la stratégie
Prendre en compte l’impact sur les coûts réels de la transaction et définir des marges minimales pour contrôler l’efficacité des coûts
La stratégie prend en compte de multiples indicateurs qui offrent une bonne capacité de reconnaissance de tendances et permettent de déterminer efficacement le début et la fin d’une tendance réelle. La stabilité de la stratégie peut être encore améliorée par l’optimisation des paramètres, l’optimisation des pertes et l’optimisation du filtre.
/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// @version=4
// Credits
// "Vwap with period" code which used in this strategy to calculate the leadLine was written by "neolao" active on https://tr.tradingview.com/u/neolao/
// "TSV" code which used in this strategy was written by "liw0" active on https://www.tradingview.com/u/liw0. The code is corrected by "vitelot" December 2018.
strategy("HYE Trend Hunter [Strategy]", overlay = true, initial_capital = 1000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, commission_value = 0.025, pyramiding = 0)
// Strategy inputs
slowtenkansenPeriod = input(9, minval=1, title="Slow Tenkan Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
slowkijunsenPeriod = input(26, minval=1, title="Slow Kijun Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
fasttenkansenPeriod = input(5, minval=1, title="Fast Tenkan Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
fastkijunsenPeriod = input(13, minval=1, title="Fast Kijun Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
BBlength = input(20, minval=1, title= "Bollinger Band Length", group = "Bollinger Bands")
BBmult = input(2.0, minval=0.001, maxval=50, title="Bollinger Band StdDev", group = "Bollinger Bands")
tsvlength = input(13, minval=1, title="TSV Length", group = "Tıme Segmented Volume")
tsvemaperiod = input(7, minval=1, title="TSV Ema Length", group = "Tıme Segmented Volume")
// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
defval=1, minval=1, maxval=31, group = "Backtest Range")
startMonth = input(title="Start Month", type=input.integer,
defval=1, minval=1, maxval=12, group = "Backtest Range")
startYear = input(title="Start Year", type=input.integer,
defval=2000, minval=1800, maxval=2100, group = "Backtest Range")
endDate = input(title="End Date", type=input.integer,
defval=31, minval=1, maxval=31, group = "Backtest Range")
endMonth = input(title="End Month", type=input.integer,
defval=12, minval=1, maxval=12, group = "Backtest Range")
endYear = input(title="End Year", type=input.integer,
defval=2021, minval=1800, maxval=2100, group = "Backtest Range")
inDateRange = true
//Slow Tenkan Sen Calculation
typicalPriceTS = (high + low + close) / 3
typicalPriceVolumeTS = typicalPriceTS * volume
cumulativeTypicalPriceVolumeTS = sum(typicalPriceVolumeTS, slowtenkansenPeriod)
cumulativeVolumeTS = sum(volume, slowtenkansenPeriod)
slowtenkansenvwapValue = cumulativeTypicalPriceVolumeTS / cumulativeVolumeTS
//Slow Kijun Sen Calculation
typicalPriceKS = (high + low + close) / 3
typicalPriceVolumeKS = typicalPriceKS * volume
cumulativeTypicalPriceVolumeKS = sum(typicalPriceVolumeKS, slowkijunsenPeriod)
cumulativeVolumeKS = sum(volume, slowkijunsenPeriod)
slowkijunsenvwapValue = cumulativeTypicalPriceVolumeKS / cumulativeVolumeKS
//Fast Tenkan Sen Calculation
typicalPriceTF = (high + low + close) / 3
typicalPriceVolumeTF = typicalPriceTF * volume
cumulativeTypicalPriceVolumeTF = sum(typicalPriceVolumeTF, fasttenkansenPeriod)
cumulativeVolumeTF = sum(volume, fasttenkansenPeriod)
fasttenkansenvwapValue = cumulativeTypicalPriceVolumeTF / cumulativeVolumeTF
//Fast Kijun Sen Calculation
typicalPriceKF = (high + low + close) / 3
typicalPriceVolumeKF = typicalPriceKS * volume
cumulativeTypicalPriceVolumeKF = sum(typicalPriceVolumeKF, fastkijunsenPeriod)
cumulativeVolumeKF = sum(volume, fastkijunsenPeriod)
fastkijunsenvwapValue = cumulativeTypicalPriceVolumeKF / cumulativeVolumeKF
//Slow LeadLine Calculation
lowesttenkansen_s = lowest(slowtenkansenvwapValue, slowtenkansenPeriod)
highesttenkansen_s = highest(slowtenkansenvwapValue, slowtenkansenPeriod)
lowestkijunsen_s = lowest(slowkijunsenvwapValue, slowkijunsenPeriod)
highestkijunsen_s = highest(slowkijunsenvwapValue, slowkijunsenPeriod)
slowtenkansen = avg(lowesttenkansen_s, highesttenkansen_s)
slowkijunsen = avg(lowestkijunsen_s, highestkijunsen_s)
slowleadLine = avg(slowtenkansen, slowkijunsen)
//Fast LeadLine Calculation
lowesttenkansen_f = lowest(fasttenkansenvwapValue, fasttenkansenPeriod)
highesttenkansen_f = highest(fasttenkansenvwapValue, fasttenkansenPeriod)
lowestkijunsen_f = lowest(fastkijunsenvwapValue, fastkijunsenPeriod)
highestkijunsen_f = highest(fastkijunsenvwapValue, fastkijunsenPeriod)
fasttenkansen = avg(lowesttenkansen_f, highesttenkansen_f)
fastkijunsen = avg(lowestkijunsen_f, highestkijunsen_f)
fastleadLine = avg(fasttenkansen, fastkijunsen)
// BBleadLine Calculation
BBleadLine = avg(fastleadLine, slowleadLine)
// Bollinger Band Calculation
basis = sma(BBleadLine, BBlength)
dev = BBmult * stdev(BBleadLine, BBlength)
upper = basis + dev
lower = basis - dev
// TSV Calculation
tsv = sum(close>close[1]?volume*(close-close[1]):close<close[1]?volume*(close-close[1]):0,tsvlength)
tsvema = ema(tsv, tsvemaperiod)
// Rules for Entry & Exit
if(fastleadLine > fastleadLine[1] and slowleadLine > slowleadLine[1] and tsv > 0 and tsv > tsvema and close > upper and inDateRange)
strategy.entry("BUY", strategy.long)
if(fastleadLine < fastleadLine[1] and slowleadLine < slowleadLine[1])
strategy.close("BUY")
// Plots
colorsettingS = input(title="Solid Color Slow Leadline", defval=false, type=input.bool)
plot(slowleadLine, title = "Slow LeadLine", color = colorsettingS ? color.aqua : slowleadLine > slowleadLine[1] ? color.green : color.red, linewidth=3)
colorsettingF = input(title="Solid Color Fast Leadline", defval=false, type=input.bool)
plot(fastleadLine, title = "Fast LeadLine", color = colorsettingF ? color.orange : fastleadLine > fastleadLine[1] ? color.green : color.red, linewidth=3)
p1 = plot(upper, "Upper BB", color=#2962FF)
p2 = plot(lower, "Lower BB", color=#2962FF)
fill(p1, p2, title = "Background", color=color.blue)