
La spectralisation est une stratégie de suivi de tendance basée sur les canaux de prix. Elle utilise les canaux de tangjian, rapides et lents, pour identifier la direction de la tendance et effectuer des achats à basse et des ventes à hauteur lors d’un retournement. L’avantage de cette stratégie est de pouvoir suivre automatiquement la tendance, en arrêtant et en inversant les positions en cas de changement de tendance.
La stratégie définit d’abord un cycle de passage rapide de 20 lignes K et un cycle de passage lent de 50 lignes K. Le passage rapide est utilisé pour définir le prix de stop loss et le passage lent pour déterminer la direction de la tendance et le moment d’entrée.
La stratégie commence par calculer le prix maximum et le prix minimum du passage rapide, en prenant la ligne médiane comme ligne d’arrêt. En même temps, le prix maximum et le prix minimum du passage lent sont calculés, le long du passage en haut et en bas comme ligne d’entrée.
Faire plus lorsque le prix franchit la ligne supérieure de la voie lente; faire moins lorsque le prix franchit la ligne inférieure de la voie lente. Après l’entrée, le point d’arrêt est placé sur la ligne médiane de la voie rapide.
De cette façon, le canal lent détermine la direction de la grande tendance, tandis que le canal rapide suit les points d’arrêt de la courbe. Lorsque la grande tendance est inversée, le prix franchit d’abord la ligne d’arrêt du canal rapide pour réaliser un arrêt.
Suivi automatique de la tendance, arrêt en temps opportun. Utilisation d’une structure à deux canaux, permettant un suivi automatique de la tendance et un arrêt rapide en cas de renversement de tendance.
La rétrogradation ouvre la position, avec un certain effet de filtrage de la tendance. La position est ouverte uniquement lorsque le prix franchit la frontière du canal, ce qui permet d’éliminer certaines fausses ruptures non tendancielles.
Le risque est maîtrisé. Le stop loss est plus proche et les pertes individuelles sont maîtrisées.
Les retraits peuvent être importants et nécessitent une préparation psychologique.
Le point d’arrêt est trop proche. Le cycle de passage rapide est plus court, la distance d’arrêt est plus proche et il est plus facile d’être piégé. Le cycle de passage rapide peut être approprié.
La structure à deux canaux entraîne une augmentation du nombre de points d’achat et de vente, ce qui nécessite un contrôle raisonnable des positions.
Ajout de conditions de filtrage pour l’ouverture de position. Des indicateurs tels que la volatilité peuvent être ajoutés aux conditions d’ouverture de position, filtrant les ruptures de tendance faible.
Optimiser les paramètres du cycle de la chaîne. Une approche plus systématique permet de trouver la combinaison optimale de paramètres de la chaîne.
La combinaison de plusieurs cycles de temps permet de déterminer les grandes tendances dans les cycles de temps plus élevés et de faire des transactions spécifiques dans les cycles inférieurs.
Il est possible d’ajuster dynamiquement la distance d’arrêt en fonction de la volatilité du marché.
La stratégie de spectralité est une stratégie de suivi de tendance plus standardisée. Elle utilise le canal de prix pour déterminer la direction de la tendance et définir des arrêts pour contrôler les risques. La stratégie présente certains avantages, mais il existe également des problèmes de retrait et de point de rupture trop proche.
/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2020
//@version=4
strategy("Noro's RiskTurtle Strategy", shorttitle = "RiskTurtle str", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, commission_value = 0.1)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
risk = input(2, minval = 0.1, maxval = 99, title = "Risk size, %")
fast = input(20, minval = 1, title = "Fast channel (for stop-loss)")
slow = input(50, minval = 1, title = "Slow channel (for entries)")
showof = input(true, defval = true, title = "Show offset")
showll = input(true, defval = true, title = "Show lines")
showdd = input(true, defval = true, title = "Show label (drawdown)")
showbg = input(true, defval = true, title = "Show 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")
//Donchian price channel fast
hf = highest(high, fast)
lf = lowest(low, fast)
center = (hf + lf) / 2
//Donchian price chennal slow
hs = highest(high, slow)
ls = lowest(low, slow)
//Lines
colorpc = showll ? color.blue : na
colorsl = showll ? color.red : na
offset = showof ? 1 : 0
plot(hs, offset = offset, color = colorpc, title = "Slow channel high")
plot(ls, offset = offset, color = colorpc, title = "Slow channel low")
plot(center, offset = offset, color = colorsl, title = "Fast channel stop-loss")
//Background
size = strategy.position_size
colorbg = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na
bgcolor(colorbg, transp = 70)
//Var
loss = 0.0
maxloss = 0.0
equity = 0.0
truetime = true
//Lot size
risksize = -1 * risk
risklong = ((center / hs) - 1) * 100
coeflong = abs(risksize / risklong)
lotlong = (strategy.equity / close) * coeflong
riskshort = ((center / ls) - 1) * 100
coefshort = abs(risksize / riskshort)
lotshort = (strategy.equity / close) * coefshort
//Orders
strategy.entry("Long", strategy.long, lotlong, stop = hs, when = needlong and strategy.position_size == 0 and hs > 0 and truetime)
strategy.entry("Short", strategy.short, lotshort, stop = ls, when = needshort and strategy.position_size == 0 and ls > 0 and truetime)
strategy.exit("LongExit", "Long", stop = center, when = needlong and strategy.position_size > 0)
strategy.exit("Short", stop = center, when = needshort and strategy.position_size < 0)
if time > timestamp(toyear, tomonth, today, 23, 59)
strategy.close_all()
strategy.cancel("Long")
strategy.cancel("Short")
if showdd
//Drawdown
max = 0.0
max := max(strategy.equity, nz(max[1]))
dd = (strategy.equity / max - 1) * 100
min = 100.0
min := min(dd, nz(min[1]))
//Max loss size
equity := strategy.position_size == 0 ? strategy.equity : equity[1]
loss := equity < equity[1] ? ((equity / equity[1]) - 1) * 100 : 0
maxloss := min(nz(maxloss[1]), loss)
//Label
min := round(min * 100) / 100
maxloss := round(maxloss * 100) / 100
labeltext = "Drawdown: " + tostring(min) + "%" + "\nMax.loss " + tostring(maxloss) + "%"
var label la = na
label.delete(la)
tc = min > -100 ? color.white : color.red
osx = timenow + round(change(time)*10)
osy = highest(100)
// la := label.new(x = osx, y = osy, text = labeltext, xloc = xloc.bar_time, yloc = yloc.price, color = color.black, style = label.style_labelup, textcolor = tc)