Stratégie de stop suiveur à moyenne mobile


Date de création: 2023-09-19 21:33:48 Dernière modification: 2023-09-19 21:33:48
Copier: 2 Nombre de clics: 691
1
Suivre
1617
Abonnés

Aperçu

La stratégie génère un signal d’achat par la croisée d’un EMA rapide pour acheter la ligne moyenne et d’un SMA lent pour vendre la ligne moyenne, et utilise un arrêt de suivi ATR dynamique pour contrôler le risque, dans le but d’aller au-delà de la stratégie d’achat et de détention avec un petit nombre de transactions.

Principe de stratégie

  1. Calculer les EMA rapides et les SMA lentes, générant un signal d’achat lorsque la ligne rapide traverse la ligne lente et atteint une certaine intensité de vente.

  2. Calculer l’EMA rapide pour vendre la moyenne et le SMA lent pour vendre la moyenne, générant un signal de vente lorsque la ligne rapide traverse la ligne lente.

  3. La multiplication de la moyenne quotidienne N de l’indicateur ATR par le multiplicateur est utilisée pour suivre dynamiquement les arrêts de perte et contrôler le risque.

  4. La stratégie est lancée pendant la période de réévaluation et les achats et les ventes sont exécutés.

  5. Chaque action optimise une combinaison de paramètres différents pour trouver le paramètre optimal.

Cette stratégie combine les avantages de l’indicateur de moyenne mobile pour juger de la tendance et des signaux croisés et de l’ATR pour suivre les arrêts de perte, en optimisant les paramètres pour s’adapter aux caractéristiques de chaque variété, dans le but d’obtenir des gains supplémentaires au-delà des achats et des détentions avec un petit nombre de transactions précises.

Analyse des avantages

  1. La croisée des EMA rapides et des SMA lentes génère des signaux de négociation permettant d’identifier les tendances.

  2. Le stop ATR s’adapte aux fluctuations du marché pour contrôler efficacement le risque.

  3. L’optimisation des paramètres de chaque action peut améliorer le taux de rendement.

  4. Logique et règles de transaction simples, faciles à mettre en œuvre et à vérifier.

  5. La fonction de détection est complète et permet de vérifier l’efficacité de la stratégie.

  6. La recherche de la stabilité dépasse l’excédent de revenus acquis et détenus.

Analyse des risques

  1. Les paramètres optimisés ne s’appliquent pas forcément à l’avenir et peuvent nécessiter une réoptimisation périodique.

  2. L’intersection entre les EMA et les SMA peut générer un signal erroné ou un signal en retard.

  3. L’arrêt ATR peut être trop radical et la portée de l’arrêt peut être allégée de manière appropriée.

  4. La fréquence des transactions est trop faible et vous risquez de rater de meilleures opportunités.

  5. Il faut tenir compte de l’impact sur le coût des transactions.

Direction d’optimisation

  1. Continuez à tester différentes combinaisons de paramètres pour trouver le meilleur.

  2. Pour filtrer le signal, essayez d’introduire d’autres indicateurs.

  3. Optimiser les paramètres cycliques de l’ATR pour équilibrer la sensibilité du point de rupture.

  4. Évaluer l’efficacité d’un assouplissement approprié de la marge de préjudice.

  5. Considérez les méthodes de recherche automatique des paramètres de préférence combinées avec l’apprentissage automatique.

  6. L’effet de l’augmentation de la fréquence d’ouverture des positions a été étudié.

Résumer

Cette stratégie de suivi des pertes des moyennes mobiles, qui combine les avantages de la génération de signaux de croisement homogène et du contrôle des pertes ATR, est une stratégie de survente simple et pratique adaptée aux caractéristiques de chaque action par l’optimisation des paramètres. Bien que les paramètres optimisés ne garantissent pas l’efficacité future, la logique de négociation globale de la stratégie est claire et exploitable.

Code source de la stratégie
/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//created by XPloRR 04-03-2018

strategy("XPloRR MA-Trailing-Stop Strategy",overlay=true, initial_capital=1000,default_qty_type=strategy.percent_of_equity,default_qty_value=100)

testStartYear = input(2005, "Start Year")
testStartMonth = input(1, "Start Month")
testStartDay = input(1, "Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2050, "Stop Year")
testStopMonth = input(12, "Stop Month")
testStopDay = input(31, "Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriodBackground = input(title="Background", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

ema1Period = input(12, "Fast EMA Buy")
sma1Period = input(54, "Slow SMA Buy")
strength1 = input(52, "Minimum Buy Strength")

ema2Period = input(18, "Fast EMA Sell")
sma2Period = input(55, "Slow SMA Sell")
strength2 = input(100, "Minimum Sell Strength")

delta = input(8, "Trailing Stop (#ATR)")

testPeriod() => true

ema1val=ema(close,ema1Period)
sma1val=sma(close,sma1Period)
ema1strength=10000*(ema1val-ema1val[1])/ema1val[1]

ema2val=ema(close,ema2Period)
sma2val=sma(close,sma2Period)
ema2strength=10000*(ema2val-ema2val[1])/ema2val[1]

plot(ema1val,color=blue,linewidth=1)
plot(sma1val,color=orange,linewidth=1)
plot(ema2val,color=navy,linewidth=1)
plot(sma2val,color=red,linewidth=1)

long=crossover(ema1val,sma1val) and (ema1strength > strength1) 
short=crossunder(ema2val,sma2val) and (ema2strength < -strength2)

stopval=ema(close,6)
atr=sma((high-low),15)

inlong=0
buy=0
stop=0
if testPeriod()
    if (inlong[1])
        inlong:=inlong[1]
        buy:=close
        stop:=iff((stopval>(stop[1]+delta*atr)),stopval-delta*atr,stop[1])
    if (long) and (not inlong[1])
        strategy.entry("buy",strategy.long)
        inlong:=close
        buy:=close
        stop:=stopval-delta*atr
plot(buy,color=iff(close<inlong,red,lime),style=columns,transp=90,linewidth=1)
plot(stop,color=iff((short or (stopval<stop)) and (close<inlong),red,lime),style=columns,transp=60,linewidth=1)
if testPeriod()
    if (short or (stopval<stop)) and (inlong[1])
        strategy.close("buy")
        inlong:=0
        stop:=0
        buy:=0