La stratégie d'inversion de prix guidée par le canal de prix calcule la ligne centrale du canal de prix pour déterminer la direction de tendance des fluctuations de prix. Elle génère des signaux longs et courts lorsque le prix s'approche de la ligne centrale du canal. Cette stratégie combine plusieurs conditions de filtre pour rechercher des opportunités de trading à haute probabilité.
L'indicateur principal de cette stratégie est la ligne centrale du canal de prix. Il est calculé comme la moyenne du prix le plus élevé et du prix le plus bas des 30 bougies les plus récentes. Lorsque le bas est supérieur à la ligne centrale, il est considéré comme une tendance haussière. Lorsque le haut est inférieur à la ligne centrale, il est considéré comme une tendance baissière.
La stratégie ne génère des signaux de trading que lorsque le fond de tendance change. C'est-à-dire que, dans un fond de tendance haussière, elle devient courte seulement lorsque le chandelier devient rouge. Dans un fond de tendance baissière, elle devient longue seulement lorsque le chandelier devient vert.
En outre, la stratégie définit également des conditions de double filtre: filtre du corps du chandelier et filtre des barres de canal de prix. Les signaux ne sont déclenchés que lorsque le volume du corps du chandelier est supérieur à 20% de la valeur moyenne, et il doit y avoir des signaux de tendance consécutifs dans le cycle du filtre pour ouvrir des positions.
Cette stratégie combine tendance, zone de valeur et modèles de bougies, ce qui est une stratégie de trading d'inversion efficace.
Les principaux risques de cette stratégie résident dans le manque de points de renversement des prix et l'attente inutile de signaux.
Cette stratégie peut être optimisée dans les aspects suivants:
La stratégie d'inversion de prix guidée par le canal de prix détermine les points d'inversion à travers les canaux de prix et définit des conditions de double filtre pour générer des signaux de haute qualité.
/*backtest start: 2023-11-19 00:00:00 end: 2023-11-26 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's PriceChannel for D1 v1.0", shorttitle = "PriceChannel D1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0) //Settings needlong = input(true, "long") needshort = input(true, "short") slowlen = input(30, defval = 30, minval = 2, maxval = 200, title = "PriceChannel Period") pcbars = input(1, defval = 1, minval = 1, maxval = 20, title = "PriceChannel Bars") usecol = input(true, "Use color-filter") usebod = input(true, "Use body-filter") needbg = input(false, defval = false, title = "Need trend Background?") 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") src = close //PriceChannel lasthigh = highest(src, slowlen) lastlow = lowest(src, slowlen) center = (lasthigh + lastlow) / 2 //Trend ub = low > center ? 1 : 0 db = high < center ? 1 : 0 trend = sma(ub, pcbars) == 1 ? 1 : sma(db, pcbars) == 1 ? -1 : trend[1] //Body body = abs(close - open) abody = sma(body, 10) //Signals up = trend == 1 and (close < open or usecol == false) and (body > abody / 5 or usebod == false) dn = trend == -1 and (close > open or usecol == false) and (body > abody / 5 or usebod == false) //Lines plot(center, color = blue, linewidth = 3, transp = 0, title = "PriceChannel Center") //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 80) //Trading if up strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if dn strategy.entry("Short", strategy.short, needshort == false ? 0 : na, 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()