Basé sur une stratégie de suivi des rafales de momentum


Date de création: 2024-03-01 11:08:43 Dernière modification: 2024-03-01 11:08:43
Copier: 0 Nombre de clics: 826
1
Suivre
1617
Abonnés

Basé sur une stratégie de suivi des rafales de momentum

Aperçu

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.

Principe de stratégie

La stratégie consiste à déterminer le moment de l’achat en fonction des indicateurs suivants:

  1. 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;

  2. 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.

  3. Volume - nécessite un volume de transactions supérieur à celui de la veille pour assurer une percée efficace;

  4. 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.

Avantages stratégiques

Il s’agit d’une stratégie de percée typique qui présente les avantages suivants:

  1. Le filtrage des conditions multiples pour assurer l’efficacité des percées et éviter les fausses percées;
  2. L’utilisation d’un stop-loss de suivi des prix, permettant de bloquer activement les pertes et de bloquer les bénéfices et d’éviter au maximum les retraits;
  3. La logique de la stratégie est simple et claire, facile à comprendre et à optimiser.

Risque stratégique

Cette stratégie comporte aussi des risques:

  1. La probabilité d’un échec de la percée est toujours présente et les pertes ne peuvent être totalement évitées;
  2. Le fait d’être trop radical dans le suivi peut entraîner des interruptions fréquentes;
  3. Une mauvaise configuration des paramètres peut entraîner une fréquence de transaction trop élevée ou un signal manquant.

Les solutions pour gérer les risques sont:

  1. Optimiser les paramètres, réduire le stop loss et assurer un espace suffisant;
  2. Une relaxation appropriée des conditions de rupture pour s’assurer de ne pas rater les tendances clairement définies;
  3. Test des variétés pour évaluer la stabilité de la stratégie.

Direction d’optimisation

Compte tenu de la fréquence élevée des arrêts de perte de cette stratégie, les directions suivantes peuvent être optimisées:

  1. Essayez d’utiliser d’autres méthodes de suivi de la perte, comme le suivi de la moyenne, le suivi de l’ATR et le suivi de la volatilité.
  2. l’ajout d’algorithmes d’apprentissage automatique pour déterminer les paramètres de rupture les plus efficaces en fonction de la formation des données historiques;
  3. L’augmentation des critères d’appréciation auxiliaires basés sur le volume des transactions, afin d’assurer l’efficacité de la rupture;
  4. Évaluer les différences de paramètres de différentes variétés pour trouver les variétés les plus adaptées.

Résumer

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.

Code source de la stratégie
/*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)