La stratégie de suivi de l'explosion d'élan

Auteur:ChaoZhang est là., Date: 2024-03-01 11:08:43 Je suis désolé
Les étiquettes:

img

Résumé

La stratégie de suivi de l'explosion de l'élan juge les percées de prix en calculant le pourcentage des changements de prix et filtre les signaux avec le volume de négociation pour implémenter une capture à haute probabilité des points de percée de tendance.

Principe de stratégie

Les principaux indicateurs utilisés par cette stratégie pour déterminer les signaux d'entrée sont:

  1. Changement de prix en pourcentage (isFourPercentBull) - Calcule la variation en pourcentage du prix de clôture par rapport au prix de clôture de la journée précédente pour déterminer si le prix a effectivement franchi le seuil.

  2. Ratio entre prix de clôture et prix le plus élevé (HighCloseRatio) - Calculer le rapport entre le prix de clôture et le prix le plus élevé pour déterminer la force de la percée de prix.

  3. Volume de négociation (volume) - Exiger que le volume de négociation soit supérieur à celui de la journée précédente pour assurer une percée valide.

  4. Moyenne mobile simple de 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 les conditions multiples ci-dessus sont remplies en même temps, un signal d'achat est émis. Par la suite, la stratégie utilise le suivi des prix pour arrêter activement les pertes et verrouiller les bénéfices.

trailPrice = close * (100 - trailPercent) / 100

où trailPercent est le pourcentage de stop loss configurable. Cela garantit que tant que les prix augmentent, la ligne de stop loss augmentera également pour verrouiller les bénéfices. Lorsque les prix reviennent à la ligne de stop loss, fermez les positions pour arrêter les pertes.

Les avantages de la stratégie

En tant que stratégie de rupture typique, elle présente les avantages suivants:

  1. Le filtrage multiconditionnel assure la validité de l'évasion et évite les fausses évasions.

  2. Adopter le suivi des prix stop loss, qui peut réduire activement les pertes et verrouiller les bénéfices pour maximiser l'évitement des retraits.

  3. La logique de la stratégie est simple et claire, facile à comprendre et à optimiser.

Risques liés à la stratégie

La stratégie comporte également certains risques:

  1. Il y a encore une probabilité d'échec des évasions qui ne peuvent pas éviter complètement les pertes.

  2. Des arrêts de suivi trop agressifs peuvent entraîner des arrêts fréquents.

  3. Des paramètres mal réglés peuvent entraîner des fréquences de négociation excessives ou des signaux manqués.

Les solutions aux risques correspondants sont les suivantes:

  1. Optimiser les paramètres et réduire l'amplitude de la perte d'arrêt pour assurer un espace suffisant.

  2. Réduire raisonnablement les conditions de rupture pour s'assurer que les tendances claires ne sont pas manquées.

  3. Testez différentes variétés pour évaluer la stabilité de la stratégie.

Directions d'optimisation

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

  1. Les méthodes d'évaluation de la volatilité sont décrites ci-dessous.

  2. Améliorer les algorithmes d'apprentissage automatique pour former des jugements sur des combinaisons de paramètres plus performantes basées sur des données historiques.

  3. Ajouter des conditions de jugement auxiliaires basées sur les écarts de volume pour assurer l'efficacité.

  4. Évaluer les différences de paramètres entre les différentes variétés pour trouver le meilleur ajustement.

Conclusion

La stratégie de suivi de l'explosion de l'élan est une stratégie de suivi de tendance très pratique dans l'ensemble. Elle résout le problème de l'incapacité d'arrêter efficacement les pertes et les profits dans les stratégies de rupture, tout en contrôlant bien les risques lors de la capture des tendances.


/*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)

Plus de