
La stratégie de suivi de la dynamique de l’éclatement détermine la rupture des prix en calculant le pourcentage de variation des prix, en combinant les signaux de filtrage de la circulation, pour réaliser des points de rupture de la tendance de capture à haute probabilité. Lorsque le signal d’achat est déclenché, la stratégie utilise la méthode de suivi des pertes de prix pour bloquer les bénéfices et éviter un retrait excessif.
La stratégie consiste à déterminer le moment de l’achat en fonction des indicateurs suivants:
Pourcentage de variation du prix ((isFourPercentBull) - calcul du pourcentage de variation du prix de clôture par rapport au prix de clôture de la veille pour déterminer si le prix a effectivement fait une percée;
Ratio des prix de clôture aux prix les plus élevés (HighCloseRatio) - Calcule le rapport entre les prix de clôture et les prix les plus élevés pour déterminer la force de rupture des prix.
Volume - nécessite un volume de transactions supérieur à celui de la veille pour assurer une percée efficace;
Moyenne mobile simple à 200 jours (SMA) - exige que le prix de clôture et le prix d’ouverture soient supérieurs à la ligne de 200 jours pour déterminer la direction de la tendance.
Lorsque plusieurs de ces conditions sont réunies, un signal d’achat est émis. Ensuite, la stratégie utilise un stop-loss de suivi des prix pour arrêter activement les pertes et verrouiller les bénéfices. Plus précisément, la formule de calcul pour suivre la ligne de stop-loss est:
trailPrice = close * (100 - trailPercent) / 100
TrailPercent est un pourcentage de suivi des pertes configurable. Ensure signifie que chaque fois que le prix augmente, la ligne d’arrêt augmente également, bloquant ainsi les bénéfices.
Il s’agit d’une stratégie de percée typique qui présente les avantages suivants:
Cette stratégie comporte aussi des risques:
Les solutions pour gérer les risques sont:
Compte tenu de la fréquence élevée des arrêts de perte de cette stratégie, les directions suivantes peuvent être optimisées:
La stratégie de suivi de la dynamique des éruptions est une stratégie de suivi de la tendance très pratique dans l’ensemble. Elle résout le problème de l’inefficacité des stratégies de rupture pour arrêter et arrêter les pertes, tout en capturant les tendances, mais elle permet également de bien contrôler les risques. L’efficacité de la stratégie a encore plus de place pour être améliorée par l’introduction de moyens tels que l’optimisation des paramètres et l’apprentissage automatique.
/*backtest
start: 2023-03-01 00:00:00
end: 2023-12-10 05:20:00
period: 1d
basePeriod: 1h
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/
// © doks23
//@version=5
strategy(title = "SD:Momentum Burst", overlay=true, initial_capital=1000,commission_value = 0,slippage = 0,process_orders_on_close=true)
//Check Vol
checkVol = input.bool(defval=false,title="IncludeAvgVolume?")
volSMAlength = input(50, title="VolumeLength")
volumeSma = ta.sma(volume, volSMAlength)
highvolume = volume >= volumeSma
volumeCond=checkVol?highvolume:true
// Profit and Loss
trailPercent = input.float(title="Trail%", defval=3, step=0.1)
//longCondition
PercentThreshold=input.float(3.8,'BreakoutPercent', step=0.1)
MaxThreshold=input.float(10,'Max Breakout', step=0.1)
HighCloseRatio=input.float(70,'Close to High Ratio', step=1)
float candleCloseBull = ((close[0] - open[0]) / (high[0] - open[0]) * 100)
float isFourPercentBull = (((close[0] - close[1]) / close[1]) * 100)
LongCond=volume > volume[1] and isFourPercentBull > PercentThreshold and candleCloseBull > HighCloseRatio and isFourPercentBull<MaxThreshold
barcolor(color=(LongCond?color.yellow: na),title='BObar')
longCondition= LongCond and volumeCond and close>ta.sma(close,200) and open>ta.sma(close,200)
//Input Strategy
DateCheck= input.bool(title = 'Custom Date Range?', defval=true,group = 'Strategy')
FromDate= input(defval = timestamp("1 Jan 2019 00:00"),group = 'Strategy')
ToDate =input(defval = timestamp("31 Dec 2023 00:00"),group = 'Strategy')
PostionSize =input.string('Contract','Select Position Size',options = ['Percent of Equity','Contract'],group = 'Strategy')
ContractQty =input.int(1,'No of Contract',group = 'Strategy')
//Backtesting Date Range
TimeWindow=true
// Number of Contract
var int trade_qty=na
if(PostionSize=='Contract')
trade_qty:=ContractQty
else
trade_qty:= (strategy.equity>strategy.initial_capital)?math.floor(strategy.equity/strategy.initial_capital):ContractQty
//Position Buy
BuyTriggerPrice = ta.valuewhen(longCondition,high,0)
//Trailing price
var float trailPrice = na
float percentMulti = (100 - trailPercent) / 100
longCondition2=longCondition and TimeWindow
if longCondition2
strategy.entry("Long", strategy.long,qty=trade_qty,stop = BuyTriggerPrice)
trailPrice := close*percentMulti
if strategy.position_size>0
trailPrice := math.max(close*percentMulti,trailPrice[1])
if low <= trailPrice
strategy.exit('Exit','Long',stop = trailPrice)
if strategy.position_size==0
trailPrice:=na
// Plot Strategy
var float trail_long_SL=na
if strategy.position_size>0
trail_long_SL:=trailPrice
else
trail_long_SL:=na
//Strategy Plot
PlotMA=input.bool(title="Plot MA?", defval=false)
plot(PlotMA?ta.sma(close,10):na,color = color.red,title = '10MA')
plot(PlotMA?ta.sma(close,21):na,color = color.white,title = '21MA')
plot(PlotMA?ta.sma(close,200):na,color = color.orange,title = '200MA')
// plot(trail_long_SL,color = color.gray,style = plot.style_steplinebr,linewidth = 1)