Stratégie d'ouverture et de clôture du canal de prix de dynamique

Auteur:ChaoZhang est là., Date: 2023-12-06 16:44:32 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie est basée sur l'indicateur de canal de prix. En définissant un paramètre de dynamique, il calcule la valeur moyenne des prix les plus élevés et les plus bas dans différents cycles pour former la ligne médiane du canal de prix, et établit des lignes longues et courtes en fonction de cela. Lorsque le prix traverse la ligne longue, il va long; lorsque le prix traverse la ligne courte, il va court. La condition de clôture est que le prix régresse à la ligne médiane du canal.

Principe de stratégie

Cette stratégie utilise l'indicateur de canal de prix pour calculer la valeur moyenne des prix les plus élevés et les plus bas dans différents cycles pour former la ligne médiane du canal.

Lorsque le prix est inférieur à la ligne longue, ouvrez des positions longues avec des ordres de limite; lorsque le prix est supérieur à la ligne courte, ouvrez des positions courtes avec des ordres de limite.

Analyse des avantages

La stratégie présente les avantages suivants:

  1. L'utilisation de l'indicateur de canal de prix permet de capturer efficacement les tendances des prix et les principaux niveaux de support/résistance.
  2. L'ouverture de positions sur des évasions peut réduire les pertes dues à de fausses évasions.
  3. La méthode de stop loss prend directement la ligne médiane du canal de prix comme norme pour éviter des pertes excessives lors d'arrêts de poursuite.

Analyse des risques

La stratégie comporte également certains risques:

  1. Les paramètres incorrects du canal de prix peuvent manquer les tendances actives ou générer trop de fausses ruptures.
  2. Les méthodes d'ouverture de rupture entraînent un certain degré de coûts de glissement.
  3. Incapable d'arrêter les pertes à temps lors de retracements rapides des prix.

Les risques ci-dessus peuvent être atténués en optimisant les paramètres, en établissant des ordres de stop loss ou en combinant d'autres indicateurs de jugement.

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Optimiser les paramètres du canal de prix pour trouver la meilleure combinaison.
  2. Essayez différentes méthodes d'ouverture telles que les modèles de chandeliers et les signaux d'indicateur.
  3. Ajoutez des paramètres d'ordre stop loss pour éviter les pertes dues à des baisses rapides des prix.
  4. Combiner le volume des transactions, la volatilité et d'autres indicateurs pour éviter de fausses ruptures sur le marché boursier.

Conclusion

L'idée de conception de cette stratégie basée sur l'indicateur de canal de prix est claire. L'utilisation de la rupture pour ouvrir des positions peut contrôler efficacement les risques. Mais il existe également de grands espaces d'optimisation des paramètres et des mécanismes de stop loss qui doivent être améliorés. Dans l'ensemble, la stratégie a une certaine valeur pratique et mérite d'être testée et optimisée davantage.


/*backtest
start: 2022-11-29 00:00:00
end: 2023-12-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's PCMA Strategy v1.0", shorttitle = "PCMA 1.0", 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")
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")

//Price Channel
h = highest(high, per)
l = lowest(low, per)
c = (h + l) / 2
ll = c + ((c / 100) * longlevel)
sl = c + ((c / 100) * shortlevel)

//Lines
shortcolor = needshort ? red : na
longcolor = needlong ? lime : na
plot(sl, linewidth = 2, color = shortcolor, title = "Short line")
plot(c, linewidth = 2, color = blue, title = "SMA line")
plot(ll, linewidth = 2, color = longcolor, 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 = ll, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size == 0 and needshort
    strategy.entry("S", strategy.short, lot, limit = sl, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size > 0 
    strategy.entry("Close", strategy.short, 0, limit = c, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size < 0 
    strategy.entry("Close", strategy.long, 0, limit = c, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

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

Plus de