Stratégie de rupture des canaux de moyenne mobile

Auteur:ChaoZhang est là., Date: 2023-12-12 17h38 et 19h
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie de rupture de canal de moyenne mobile basée sur des moyennes mobiles et des canaux de gamme.

La logique de la stratégie

La logique de base de cette stratégie est la suivante:

  1. Définissez une moyenne mobile d'une certaine période comme ligne médiane.

  2. Définissez les lignes supérieures et inférieures du canal en multipliant la ligne du milieu par certains pourcentages. La ligne supérieure est la ligne du milieu * (100% + pourcentage prédéfini). La ligne inférieure est la ligne du milieu * (100% - pourcentage prédéfini).

  3. Quand le prix dépasse la ligne supérieure, allez court.

  4. Fixer les prix des ordres aux lignes supérieures/inférieures correspondantes.

  5. Fermez les positions lorsque le prix revient à la ligne médiane.

Donc, il se négocie en fonction des ruptures du canal de moyenne mobile.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. Un concept simple et clair, facile à comprendre et à mettre en œuvre.

  2. Paramètres réglables en fonction des différentes conditions du marché.

  3. La ligne médiane et la plage de canaux peuvent filtrer le bruit du marché et détecter les tendances.

  4. Contrôle des risques liés aux commandes limitées.

  5. Coupez les pertes quand le prix revient à la ligne médiane.

Analyse des risques

Il y a aussi des risques:

  1. Des paramètres mal réglés peuvent entraîner une sur-/une sur-négligence des transactions.

  2. Probabilité élevée de fausses fuites et de stop loss.

  3. Échec des lignes intermédiaires et des canaux sous l'effet de fortes fluctuations du marché.

  4. Sortie prématurée quand forcé de fermer sur la ligne du milieu.

Les solutions:

  1. Optimiser les paramètres tels que la période de MA et le pourcentage de canal.

  2. Ajoutez d'autres indicateurs comme le volume pour éviter les fausses fuites.

  3. Augmentez l'intervention manuelle.

  4. Utilisez une période de MA plus longue et une plage de canaux plus large.

Optimisation

La stratégie peut être améliorée par les aspects suivants:

  1. Ajoutez des méthodes de stop-loss comme le trailing stop pour limiter les pertes.

  2. Ajoutez des indicateurs de filtrage comme le MACD pour réduire les faux signaux.

  3. Activez l'optimisation automatique des paramètres.

  4. Ajoutez plus de critères de position ouverte au-delà de l'évasion.

  5. Optimisez les paramètres MA et du canal.

Conclusion

En conclusion, il s'agit d'une stratégie pratique de rupture de canal MA. Elle a une logique simple pour une utilisation facile, tandis que la plage de canaux peut filtrer le bruit. Elle fonctionne bien sur les marchés tendance. Mais des risques existent et des paramètres ainsi que des filtres supplémentaires doivent être optimisés pour le trading réel.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-08-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Robot WhiteBox ShiftMA", shorttitle = "Robot WhiteBox ShiftMA", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
per = input(3, title = "Length")
src = input(ohlc4, title = "Source")
shortlevel = input(10.0, title = "Short line (red)")
longlevel = input(-5.0, title = "Long line (lime)")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//SMAs
sma = sma(src, per) 
shortline = sma * ((100 + shortlevel) / 100)
longline = sma * ((100 + longlevel) / 100)
plot(shortline, linewidth = 2, color = red, title = "Short line")
plot(sma, linewidth = 2, color = blue, title = "SMA line")
plot(longline, linewidth = 2, color = lime, title = "Long line")

//Trading
size = strategy.position_size
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]

if (not na(close[per])) and size == 0 and needlong
    strategy.entry("L", strategy.long, lot, limit = longline)
    
if (not na(close[per])) and size == 0 and needshort
    strategy.entry("S", strategy.short, lot, limit = shortline)
    
if (not na(close[per])) and size > 0 
    strategy.entry("Close", strategy.short, 0, limit = sma)
    
if (not na(close[per])) and size < 0 
    strategy.entry("Close", strategy.long, 0, limit = sma)

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Plus de