
Cette stratégie est basée sur l’indicateur de retour moyen de Karobein et la dynamique des prix. Elle utilise l’indicateur d’aide de la dynamique des prix pour juger de la tendance et se combine avec l’indicateur de retour moyen de Karobein pour une entrée spécifique.
La stratégie consiste d’abord à calculer le taux de variation des prix sur différentes périodes pour obtenir un indicateur de dynamique des prix. Un signal de tête blanche est généré lorsque l’indicateur de dynamique des prix traverse la ligne de dénivelé dynamique et un signal de tête blanche lorsque la ligne de dénivelé dynamique est traversée.
L’indicateur de régression moyenne de Karobein est calculé en fonction de la régression linéaire moyenne du prix, qui reflète l’accélération et la trajectoire des fluctuations du prix. L’indicateur a une caractéristique d’onde positive intrinsèque qui aide à déterminer la direction et le moment de la tendance des prix.
Lorsque l’indicateur de dynamique des prix émet un signal, un signal d’entrée est généré si l’indicateur de régression de la moyenne de Karobein est dans la zone de direction correspondante.
Cette stratégie a été élaborée en tenant compte de la dynamique des prix et de la régression des valeurs moyennes, avec une plus grande capacité de détection des tendances.
L’indicateur de régression de la valeur moyenne de Karobein permet de déterminer avec précision les points de basculement des prix, ce qui améliore la précision du timing de l’entrée.
La période de détention peut être réglée librement avec des paramètres et s’applique à différentes périodes.
Les paramètres de dépréciation dynamique peuvent être ajustés en temps réel pour s’adapter aux changements du marché.
Cette stratégie est une stratégie de suivi des tendances et est susceptible d’être piégée dans une tendance de choc.
L’indicateur de régression de la valeur moyenne du Karobein est un peu en retard et peut manquer le point de basculement des prix.
Attention aux paramètres de la période de détention, car une période de détention trop longue peut entraîner une augmentation des pertes.
Les paramètres de la dévaluation dynamique doivent être ajustés de manière appropriée, il ne faut pas les régler trop grands, sinon vous manquerez l’heure d’arrivée.
Les solutions pour faire face aux risques:
Les indicateurs de tendance permettent de prédire l’arrivée d’une secousse et d’arrêter la perte de position en temps opportun.
Choisissez un indicateur de régression à la moyenne Karobein approprié pour la période et ne laissez pas trop de retard.
Testez différents paramètres de temps de détention et choisissez le temps de détention qui vous convient.
Ajustez la plage de seuil dynamique, qui ne doit pas être trop large pour éviter de perdre le point d’entrée.
Il est possible de tester différents cycles de calcul de la dynamique des prix et d’optimiser les paramètres.
Il est possible d’ajouter un indicateur de volatilité pour détecter l’arrivée d’une secousse et de régler un stop loss.
Le paramètre de régression de la moyenne de Karobein peut être optimisé pour une plus grande sensibilité.
Des conditions de filtrage supplémentaires peuvent être ajoutées, telles que l’indicateur de volume de transaction, pour améliorer la qualité du signal.
Paramètres d’optimisation dynamique des algorithmes d’apprentissage automatique.
Cette stratégie prend en compte les facteurs de dynamique des prix et les facteurs de régression des valeurs moyennes, a une forte capacité de jugement de tendance et de génération de signaux. Elle peut être ajustée par paramètres pour s’adapter aux différentes conditions du marché. La prochaine étape peut être optimisée davantage en termes de timing d’entrée et de stop loss, ce qui rend la stratégie plus stable et plus puissante.
/*backtest
start: 2022-10-27 00:00:00
end: 2023-11-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// author: capissimo
strategy("Normalized Vector Strategy, ver.3 (sc)", precision=2, overlay=false)
// This is a scaled Normalized Vector Strategy with a Karobein Oscillator
// original: Drkhodakarami (https://www.tradingview.com/script/Fxv2xFWe-Normalized-Vector-Strategy-By-Drkhodakarami-Opensource/)
// Repainting: in general there two types of repainting:
// * when the last candle is constantly being redrawn
// * when the indicator draws a different configuration after it has been deactivated/reactivated, i.e. refreshed
// The former is a natural behaviour, which presents a constant source of frustration,
// when a signal directly depends on the current market situation and can be overcome
// with various indirect techniques like divergence.
// The latter suggests a flaw in the indicator design.
// Unfortunately, the Normalized Vector Strategy is repainting in the latter sense, although being
// really promising. Would be nice if our community suggests a solution to this problem ))
// This strat consistently performs with high accuracy, showing up to 96% scores
// Here are some of the best parameters:
// TF Lookback Performance (ca.)
// 1m 13 92%
// 3m 34 92%
// 5m 85 92%
// 15m 210 90%
// 30m 360 89%
// 1H 1440,720 94%, 87%
// The Karobein Oscillator has an intrinsic sinusoidal behaviour that helps in determining direction and timing.
// It does not repaint.
// original: alexgrover (https://www.tradingview.com/script/JiNi0f62-Karobein-Oscillator/)
scaleMinimax(X, p, min, max) =>
hi = highest(X, p), lo = lowest(X, p)
(max - min) * (X - lo)/(hi - lo) + min
price = input(close, "Price Data")
tf = input(34, "Timeframe", minval=1, maxval=1440)
thresh = input(14., "Threshold", minval=.1, step=.1)
div = input(1000000,"Divisor", options=[1,10,100,1000,10000,100000,1000000,10000000,100000000])
showVol = input(false, "Volume")
useold = input(true, "Use Old System")
lime = color.new(color.lime, 10), fuchsia = color.new(color.fuchsia, 10),
black = color.new(color.black, 100), gray = color.new(color.gray, 50)
vol = useold ? security(syminfo.tickerid, tostring(tf), volume, barmerge.gaps_off, barmerge.lookahead_on)
: security(syminfo.tickerid, tostring(tf), volume)
obv = cum(change(price) > 0 ? vol : change(price) < 0 ? -vol : 0*vol)
prix = showVol ? obv : price
getdiff(prc, tf) =>
prev = useold ? security(syminfo.tickerid, tostring(tf), prc[1], barmerge.gaps_off, barmerge.lookahead_on) :
security(syminfo.tickerid, tostring(tf), prc[1])
curr = useold ? security(syminfo.tickerid, tostring(tf), prc, barmerge.gaps_off, barmerge.lookahead_on) :
security(syminfo.tickerid, tostring(tf), prc)
(curr/prev) - 1
p = getdiff(prix, tf)
up = thresh/div, dn = -thresh/div
longCondition = crossover(p, up)
shortCondition = crossunder(p, dn)
bg = longCondition ? lime : shortCondition ? fuchsia : black
cl = p > up ? color.green : p < dn ? color.red : color.silver
bgcolor(bg, editable=false)
plot(scaleMinimax(up, 2500, -1, 1), color=lime, editable=false, transp=0)
hline(0, linestyle=hline.style_dotted, title="base line", color=gray, editable=false)
plot(scaleMinimax(dn, 2500, -1, 1), color=fuchsia, editable=false, transp=0)
plot(scaleMinimax(p, 2500, -1, 1), color=cl, style=plot.style_histogram, transp=70, editable=false)
plot(scaleMinimax(p, 2500, -1, 1), color=cl, style=plot.style_linebr, title="prediction", transp=0, editable=false)
strategy.entry("L", true, 1, when=longCondition)
strategy.entry("S", false, 1, when=shortCondition)
alertcondition(longCondition, title='Long', message='Long Signal!')
alertcondition(shortCondition, title='Short', message='Short Signal!')
//*** Karobein Oscillator
per = input(8, "Karobein Osc Lookback")
prix2 = ema(price, per)
a = ema(prix2 < prix2[1] ? prix2/prix2[1] : 0, per)
b = ema(prix2 > prix2[1] ? prix2/prix2[1] : 0, per)
c = (prix2/prix2[1])/(prix2/prix2[1] + b)
d = 2*((prix2/prix2[1])/(prix2/prix2[1] + c*a)) - 1
plot(scaleMinimax(d, 2500, -1, 1), color=color.orange, transp=0)