Stratégie de suivi de tendance du canal Breakout


Date de création: 2023-11-23 14:04:59 Dernière modification: 2023-11-23 14:04:59
Copier: 0 Nombre de clics: 603
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance du canal Breakout

Aperçu

Cette stratégie est une stratégie de suivi de tendance basée sur la théorie de la rupture de la chaîne. Elle construit une chaîne en calculant les prix les plus élevés et les plus bas d’un certain cycle, générant un signal de transaction lorsque le prix franchit la chaîne.

Principe de stratégie

La stratégie commence par calculer les prix les plus élevés et les plus bas d’une période de longueur, construire des canaux de montée et de descente. Lorsque le prix de clôture franchit la montée, faire plus; Lorsque le prix de clôture franchit la descente, faire moins.

Cette stratégie est simultanée à la mappage de longueur en longitude.*L’indicateur EMA de 2 détermine la direction de la tendance. Lorsque le prix franchit le canal, il augmente l’efficacité de la prise de décision si l’EMA est dans une tendance à la hausse.

Analyse des avantages

  • Cette stratégie permet de capturer les tendances des prix, de s’adapter à une tendance et de générer des gains potentiels.
  • En évaluant la pénétration par le canal, on réduit la probabilité de fausses pénétrations et on améliore la qualité du signal.
  • La combinaison de l’évaluation de l’EMA permet d’éviter les opérations à contre-courant et d’assurer le suivi des tendances dominantes.

Analyse des risques

  • Les stratégies de rupture de canal sont susceptibles de générer des transactions fréquentes lors de fluctuations de prix, ce qui peut entraîner des frais de transaction plus élevés.
  • Si la tendance est inversée, la stratégie ne peut pas être mise en place à temps et peut entraîner des pertes importantes.
  • Cette stratégie est sensible aux paramètres, et différents paramètres peuvent avoir des résultats complètement différents.

Direction d’optimisation

  • Il est possible de combiner les tendances avec d’autres indicateurs afin d’éviter les fausses ruptures, comme le MACD, le RSI, etc.
  • Les paramètres peuvent être automatiquement optimisés par des algorithmes d’apprentissage automatique pour améliorer la robustesse des paramètres.
  • Il est possible de régler le stop-loss pour contrôler le maximum de rétractation.

Résumer

La stratégie est une simple stratégie de suivi de la tendance basée sur les ruptures de canal pour capturer les tendances. Elle a une forte capacité de suivi de la tendance et peut obtenir de bons gains dans les conditions de tendance.

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

//@version=3


initial_capital = 1000,
default_qty_value = 90,
default_qty_type = strategy.percent_of_equity,
pyramiding = 0,
commission_value = 0.002,
commission_type = strategy.commission.percent,
calc_on_every_tick = true
length_val = 2
max_bars_back = 1440
risk_max_drawdown = 9


strategy("Channel Break",max_bars_back=max_bars_back,initial_capital = initial_capital,default_qty_value = default_qty_value,default_qty_type = default_qty_type,pyramiding = pyramiding,commission_value = commission_value,commission_type = commission_type,calc_on_every_tick = calc_on_every_tick)
// strategy.risk.max_drawdown(risk_max_drawdown, strategy.percent_of_equity) 

length = input(title="Length",  minval=1, maxval=1000, defval=length_val)

upBound = highest(high, length)
downBound = lowest(low, length)

//plot (upBound)
//plot (downBound)
//plot (close, color=red)
//plot (ema(close,length * 2), color=green)
//
if (not na(close[length]) and time>timestamp(2018, 02, 24, 0, 00) )
    strategy.entry("Buy", strategy.long, stop=upBound + syminfo.mintick, comment="Buy")
    strategy.entry("Short", strategy.short, stop=downBound - syminfo.mintick, comment="Short")
    
position = strategy.position_size
    
    
//plot(position , title="equity", color=red,style=cross,linewidth=4)
plot(variance(position,2)>0?1:0,style=circles,linewidth=4)

message = ""

if (position > 0) 
    message = "BTCUSD L: " + tostring(strategy.position_size)
    na(position)
    
if (position < 0) 
    message = "BTCUSD S: " + tostring(strategy.position_size)
    na(position)

alertcondition(variance(strategy.position_size,2) > 0, "test", message )