Stratégie de rupture du canal Donchian


Date de création: 2023-09-14 14:44:44 Dernière modification: 2023-09-14 14:44:44
Copier: 0 Nombre de clics: 766
1
Suivre
1617
Abonnés

Principe de stratégie

La stratégie de rupture du canal de Dongguan est une stratégie de suivi de la tendance basée sur le canal de Dongguan. La stratégie utilise les prix les plus élevés et les plus bas de différents cycles pour déterminer les points d’entrée et les points d’arrêt pour les hauts et les bas.

La règle d’entrée de la stratégie est la suivante: faire plus lorsque le prix dépasse le prix le plus élevé d’une période donnée (par exemple, 20 jours); faire moins lorsque le prix dépasse le prix le plus bas d’une période donnée (par exemple, 10 jours).

La règle d’EXIT est la suivante: les positions multiples se terminent en milieu ou en bas de la voie; les positions vides se terminent en milieu ou en haut de la voie. La voie médiane est la moyenne des prix les plus élevés et les plus bas d’une période donnée (comme 10 jours).

En supposant que la variété de transaction soit BTCUSDT, les paramètres sont définis comme suit:

  • Cycle d’entrée multiple: 20 jours
  • Cycle de rupture de plusieurs têtes: 10 jours
  • Est-ce que le métro a été endommagé: oui
  • Cycle d’admission à vide: 10 jours
  • Cycle de décharge: 20 jours
  • Est-ce que le métro a été endommagé: oui

Les règles d’entrée et d’arrêt sont les suivantes:

  • L’entrée en position de plus à ce point lorsque le prix dépasse le plus haut de 20 jours
  • Le point de rupture multiposition est le milieu entre le prix le plus élevé et le prix le plus bas sur 10 jours.
  • L’entrée de position vide à ce point lorsque le prix est inférieur au plus bas de 10 jours
  • Le point de rupture de la position vide est le milieu entre le plus haut et le plus bas prix sur 20 jours

En ajustant dynamiquement les paramètres des cycles d’entrée et d’arrêt, il est possible d’optimiser les différents cycles de marché pour obtenir de meilleurs rendements dans des conditions de tendance.

Avantages stratégiques

  • L’utilisation de la percée pour déterminer la direction de la tendance peut être utilisée pour capturer les tendances fortes.
  • Le point de rupture est proche du prix actuel, ce qui permet de maîtriser les risques.
  • Adaptation des paramètres est flexible et peut être optimisée pour différents cycles

Risque stratégique

  • Les transactions de rupture sont faciles à piéger et il faut être prudent pour déterminer l’efficacité de la rupture.
  • Le point de rupture est plus proche du prix et la probabilité de rupture est plus élevée en cas de choc.
  • Une mauvaise configuration des paramètres peut entraîner des sorties trop fréquentes ou l’impossibilité d’arrêter les pertes à temps

Résumer

La stratégie de rupture du canal de Dongguan utilise la rupture pour déterminer la direction de la tendance. Le point de rupture est défini comme le point médian du canal ou la descente, ce qui permet de contrôler efficacement le risque.

Code source de la stratégie
/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Donchian Channel Strategy", overlay=true, default_qty_type= strategy.percent_of_equity, initial_capital = 1000, default_qty_value = 20, commission_type=strategy.commission.percent, commission_value=0.036)

//Long optopns
buyPeriodEnter = input(10, "Channel Period for Long enter position")
buyPeriodExit = input(10, "Channel Period for Long exit position")
isMiddleBuy = input(true, "Is exit on Base Line? If 'no' - exit on bottom line")
takeProfitBuy = input(2.5, "Take Profit (%) for Long position")
isBuy = input(true, "Allow Long?")

//Short Options
sellPeriodEnter = input(20, "Channel Period for Short enter position")
sellPeriodExit = input(20, "Channel Period for Short exit position")
isMiddleSell = input(true, "Is exit on Base Line? If 'no' - exit on upper line")
takeProfitSell = input(2.5, "Take Profit (%) for Short position")
isSell = input(true, "Allow Short?")

// Test Start
startYear = input(2005, "Test Start Year")
startMonth = input(1, "Test Start Month")
startDay = input(1, "Test Start Day")
startTest = timestamp(startYear,startMonth,startDay,0,0)

//Test End
endYear = input(2050, "Test End Year")
endMonth = input(12, "Test End Month")
endDay = input(30, "Test End Day")
endTest = timestamp(endYear,endMonth,endDay,23,59)

timeRange = time > startTest and time < endTest ? true : false

// Long&Short Levels
BuyEnter = highest(buyPeriodEnter)
BuyExit = isMiddleBuy ? ((highest(buyPeriodExit) + lowest(buyPeriodExit)) / 2): lowest(buyPeriodExit)

SellEnter = lowest(sellPeriodEnter)
SellExit = isMiddleSell ? ((highest(sellPeriodExit) + lowest(sellPeriodExit)) / 2): highest(sellPeriodExit)

// Plot Data
plot(BuyEnter, style=plot.style_line, linewidth=2, color=color.blue, title="Buy Enter")
plot(BuyExit, style=plot.style_line, linewidth=1, color=color.blue, title="Buy Exit", transp=50)
plot(SellEnter, style=plot.style_line, linewidth=2, color=color.red, title="Sell Enter")
plot(SellExit, style=plot.style_line, linewidth=1, color=color.red, title="Sell Exit", transp=50)

// Calc Take Profits
TakeProfitBuy = 0.0
TakeProfitSell = 0.0
if strategy.position_size > 0
    TakeProfitBuy := strategy.position_avg_price*(1 + takeProfitBuy/100)
    
if strategy.position_size < 0
    TakeProfitSell := strategy.position_avg_price*(1 - takeProfitSell/100)

// Long Position    
if isBuy and timeRange
    strategy.entry("Long", strategy.long, stop = BuyEnter, when = strategy.position_size == 0) 
    
strategy.exit("Long Exit", "Long", stop=BuyExit, limit = TakeProfitBuy, when = strategy.position_size > 0)

// Short Position
if isSell and timeRange
    strategy.entry("Short", strategy.short, stop = SellEnter, when = strategy.position_size == 0) 
    
strategy.exit("Short Exit", "Short", stop=SellExit, limit = TakeProfitSell, when = strategy.position_size < 0)

// Close & Cancel when over End of the Test
if time > endTest
    strategy.close_all()
    strategy.cancel_all()