
La stratégie d’inversion de prix orientée spatiale détermine la direction de la tendance des fluctuations de prix en calculant la ligne centrale du canal. Elle émet un signal de plus ou de moins lorsque le prix est proche de la ligne centrale du canal. La stratégie combine plusieurs conditions de filtrage pour rechercher des opportunités de transaction à forte probabilité.
L’indicateur central de la stratégie est la ligne centrale du canal de prix. La méthode de calcul est la moyenne des prix les plus élevés et les plus bas des 30 dernières lignes K. La tendance est à la hausse lorsque le bas est au-dessus de la ligne centrale et à la baisse lorsque le haut est en dessous.
La stratégie n’émet des signaux de négociation que lorsque le contexte de la tendance change. Par exemple, dans un contexte haussier, la ligne K devient blanche lorsque la ligne K devient rouge; dans un contexte baissier, la ligne K devient verte lorsque la ligne K devient verte.
En outre, la stratégie impose des conditions de double filtrage: filtrage des entités de coupe et filtrage des barres de canal de prix. Le signal est déclenché uniquement lorsque le volume de l’entité de coupe est supérieur de 20% à la moyenne; il doit y avoir un signal de tendance continu au cours du cycle de filtrage pour ouvrir une position.
Cette stratégie combinant tendance, zone de valeur et forme de ligne K est une stratégie de trading inversée très efficace. Les principaux avantages sont:
Le risque principal de cette stratégie est de manquer le point de basculement et d’attendre inutilement le signal. Elle peut être optimisée par les moyens suivants:
Cette stratégie peut être optimisée dans les domaines suivants:
La stratégie d’inversion des prix orientée spatiale est une stratégie de quantification fiable basée sur l’optimisation des paramètres et le contrôle du vent.
/*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()