Stratégie de rupture du canal de Donchian

Auteur:ChaoZhang est là., Date: 2023-09-19 21h47h41
Les étiquettes:

Résumé

Cette stratégie utilise l'indicateur du canal de Donchian pour négocier les ruptures des bandes supérieure et inférieure, ce qui permet de suivre la tendance des opérations sur les actions/futures/crypto/forex, etc., appartenant à des stratégies de rupture de tendance à moyen et long terme.

La logique de la stratégie

  1. Calculer le plus haut plus haut et le plus bas plus bas sur une période donnée (par exemple 20 jours) pour obtenir les bandes supérieure et inférieure.

  2. La ligne médiane est la moyenne des bandes supérieure et inférieure.

  3. Lorsque le prix se ferme au-dessus de la bande supérieure, déterminer la tendance haussière a commencé, aller long pour entrer.

  4. Quand le prix tombe en dessous de la ligne médiane, prenez le profit pour sortir.

  5. Peut se référer à la période de backtest pour générer des signaux de trading réels.

  6. Optionnellement, la rupture de la bande inférieure peut également servir de signal court.

La stratégie détermine le début de la tendance par la rupture du canal, utilise la ligne médiane comme sortie de profit, capturant les tendances à moyen et long terme.

Analyse des avantages

  1. Le canal de Donchian est simple à calculer et à mettre en œuvre.

  2. La rupture du canal de prix indique un changement de tendance.

  3. Le niveau moyen de profit est raisonnablement fixé.

  4. Des règles claires, faciles à mettre en œuvre.

  5. Peut ajuster de manière flexible les paramètres des canaux pour différents produits et délais.

  6. Peut évaluer les performances commerciales à long terme ou à court terme.

  7. Un grand espace d'expansion, peut introduire d'autres indicateurs techniques.

Analyse des risques

  1. La rupture du canal peut être retardée, ce qui risque de manquer les premières opportunités.

  2. Ne prend pas en compte la divergence avant la rupture, peut générer de faux signaux.

  3. L'exposition à la volatilité du marché.

  4. Une période de retest inappropriée risque de sur-ajustement.

  5. Il manque de stop loss, il faut faire attention aux pertes accrues.

Directions d'optimisation

  1. Tester et optimiser les paramètres de la période du canal.

  2. Évaluer les autres types de MA comme lignes de stop loss.

  3. Ajoutez des filtres comme des indicateurs de volume.

  4. Ajouter des mécanismes de stop loss en mouvement ou en retard.

  5. Introduire l'apprentissage automatique pour prédire les événements.

  6. Optimiser la gestion de l'argent, définir le ratio de profit, etc.

  7. Considérez la combinaison d'opérations à long terme/à court terme ou de produits multiples.

Résumé

Cette stratégie utilise le canal Donchian pour déterminer la direction de la tendance, les ruptures de négociation, une approche typique de la tendance à moyen et long terme.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-15 00:00:00
period: 3m
basePeriod: 1m
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 = 100,  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 = 100,  overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true, commission_type=strategy.commission.percent,commission_value=.25,default_qty_value=10000)


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(2018, "Backtest Start Year")
testEndMonth = input(12, "Backtest Start Month")
testEndDay = input(1, "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=yellow, style=line, linewidth=1, title="Mid-Line Average")

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



Plus de