Tendance à la suite de la stratégie de moyenne mobile

Auteur:ChaoZhang est là., Date: le 29 février 2024 à 14h35
Les étiquettes:

img

Résumé

Cette stratégie calcule les lignes moyennes mobiles du canal et établit des positions longues ou courtes lorsque le prix traverse les lignes du canal pour suivre la tendance du prix de l'action.

Principe de stratégie

La stratégie calcule d'abord la moyenne haute de 20 jours comme la ligne supérieure du canal, la moyenne basse de 20 jours comme la ligne inférieure du canal, et calcule la ligne médiane du canal. La ligne médiane du canal représente la tendance récente du prix moyen. Lorsque le prix traverse la ligne médiane du canal vers le haut, une position longue est établie. Lorsque le prix traverse la ligne médiane du canal vers le bas, une position courte est établie. Suivez la tendance du prix jusqu'à ce que le prix recule du côté opposé de la plage du canal, fermez la position.

Analyse des avantages

  • Utiliser le canal pour suivre les tendances des prix, éviter que les fonds ne soient bloqués sur différents marchés;
  • Les voies ferrées permettent de déterminer les points d'entrée et de sortie, ce qui facilite le contrôle des entrées;
  • La portée des canaux filtre un certain bruit et augmente la probabilité de profit;
  • Les paramètres des canaux peuvent être ajustés en fonction de la sensibilité de la stratégie;

Analyse des risques

  • Les ruptures significatives de la ligne intermédiaire peuvent être suivies de tests de retrait de la ligne intermédiaire, entraînant un piégeage;
  • Les stocks oscillants ne conviennent pas à cette stratégie et peuvent conduire à des opérations à haute fréquence;
  • Des paramètres mal réglés peuvent également affecter les performances de la stratégie;

Directions d'optimisation

  • Optimiser les paramètres du cycle du canal pour tester les impacts de différents paramètres;
  • Ajouter des stratégies de prise de bénéfices et de stop-loss pour contrôler les pertes uniques et totales;
  • Combiner d'autres indicateurs comme jugements auxiliaires pour éviter les signaux erronés;
  • Prendre des positions par lots afin de réduire la probabilité d'être piégé lors des essais de remise en marche;

Résumé

En général, cette stratégie est relativement simple et directe. Elle juge les tendances des cours des actions à travers les canaux de prix de base et appartient au type de tendance suivant. Les avantages sont une utilisation facile, une utilisation complète des opportunités d'investissement apportées par les tendances des prix et l'évitement des blocages de fonds. Les inconvénients sont que des paramètres inappropriés peuvent affecter les performances et qu'il existe certains risques de retrait.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//future strategy
//strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2)
//stock strategy
strategy(title = "dc", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=.005)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true, commission_type=strategy.commission.percent,commission_value=.25,default_qty_value=20)


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

testEndYear = input(2019, "Backtest Start Year")
testEndMonth = input(3)
testEndDay = input(31, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testPeriod() =>
    true
    //time >= testPeriodStart  ? true : false

dcPeriod = 20

dcUpper = highest(close, dcPeriod)[1]
dcLower = lowest(close, dcPeriod)[1]
dcAverage = (dcUpper + dcLower) / 2

plot(dcLower, style=line, linewidth=3, color=red, offset=1)
plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1)

plot(dcAverage, color=black, style=line, linewidth=3, title="Mid-Line Average")

strategy.entry("simpleBuy", strategy.long, when=close > dcAverage)
strategy.close("simpleBuy",when=close < dcLower)
    
strategy.entry("simpleSell", strategy.short,when=close < dcAverage)
strategy.close("simpleSell",when=close > dcAverage)
    



Plus de