Stratégie de rupture du canal de prix ZZ-4

Auteur:ChaoZhang est là., Date: 21 septembre 2023 à 10 h 59 min 55 s
Les étiquettes:

Résumé

Cette stratégie consiste à négocier sur la base du canal de prix de l'indicateur ZZ, en prenant des positions longues/courtes lorsque le prix dépasse/dépasse les bandes de canal.

La logique de la stratégie

  1. Calcul des bandes supérieures/inférieures du canal de prix
  2. Allez long lorsque le prix dépasse la bande supérieure
  3. Passer à la vente à découvert lorsque le prix tombe en dessous de la fourchette inférieure
  4. Plateforme de négociation
  5. Positions libres avant la clôture quotidienne

En particulier, il utilise l'indicateur ZZ pour calculer les bandes des canaux de prix. Lorsque le prix dépasse la bande inférieure, allez long. Lorsque le prix dépasse la bande supérieure, allez court. Les ordres de stop loss sont utilisés avec les bandes de canaux comme niveaux de stop loss. Les heures de trading sont également définies pour éviter les risques du jour au lendemain.

Analyse des avantages

  1. Le canal de prix identifie les éventuelles ruptures de tendance
  2. Signaux commerciaux simples et clairs
  3. Période de canal personnalisable adaptée à différents produits et cycles
  4. Les heures de négociation et la gestion quotidienne des risques de sortie
  5. Limites de stop loss pour les pertes de transactions uniques

Analyse des risques

  1. Les fentes à l'intérieur du canal peuvent frapper à plusieurs reprises le stop loss
  2. Requiert un réglage rapide des paramètres, sinon la plage de canaux peut être inexacte
  3. Les évasions peuvent être fausses, le risque d'être piégé
  4. Le potentiel de profit est limité par la fourchette de canaux
  5. Ne parvient pas à capitaliser pleinement sur les mouvements de tendance

Les risques peuvent être réduits en élargissant la plage des canaux, en optimisant le stop loss, en mesurant la force de la tendance, etc.

Directions d'optimisation

  1. Testez différentes combinaisons de paramètres pour une meilleure configuration
  2. Élargir le canal de prix pour capturer les mouvements les plus importants
  3. Ajouter un indicateur de tendance pour éviter les fausses ruptures
  4. Optimiser le stop loss pour éviter d'être piégé
  5. Augmenter la taille de la position pour maximiser les bénéfices de rupture
  6. Évaluer la rentabilité sur différentes périodes

Résumé

Cette stratégie traite les ruptures des canaux de prix pour identifier les flambées de tendance. Les avantages sont de simples signaux clairs et un fonctionnement facile; les inconvénients sont des coups de fouet et l'incapacité de suivre les tendances. L'optimisation des paramètres et la combinaison de la stratégie peuvent surmonter les inconvénients tout en conservant les avantages.


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=4
strategy(title = "Noro's ZZ-4 Strategy", shorttitle = "Noro's ZZ-4 Strategy", 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 = "Capital, %")
len = input(7, minval = 1, title = "Length")
showll = input(true, defval = true, title = "Show Levels")
showbg = input(false, defval = false, title = "Show Background")
showpc = input(false, defval = false, title = "Show Price Channel")
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")

//Price channel
h = highest(ohlc4, len)
l = lowest(ohlc4, len)
pccol = showpc ? color.blue : na
plot(h, color = pccol, transp = 0)
plot(l, color = pccol, transp = 0)

//Levels
ml = 0
ml := l > l[1] ? 1 : l < l[1] ? -1 : ml[1]
ll = 0.0
ll := ml == 1 and ml[1] == -1 ? l[1] : ll[1]
mh = 0
mh := h > h[1] ? 1 : h < h[1] ? -1 : mh[1]
hl = 0.0
hl := mh == -1 and mh[1] == 1 ? h[1] : hl[1]

//Lines
colorh = showll and hl == hl[1] ? color.lime : na
colorl = showll and ll == ll[1] ? color.red : na
plot(hl, color = colorh, linewidth = 2, transp = 0, title = "Long")
plot(ll, color = colorl, linewidth = 2, transp = 0, title = "Short")

//Background
size = strategy.position_size
trend = 0
trend := size > 0 ? 1 : size < 0 ? -1 : high >= hl ? 1 : low <= ll ? -1 : trend[1]
bgcol = showbg == false ? na : trend == 1 ? color.lime : trend == -1 ? color.red : na
bgcolor(bgcol, transp = 80)

//Trading
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if ll > 0 and hl > 0
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = hl, when=(truetime))
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = ll, when=(truetime))
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")

Plus de