Stratégie de retour à la moyenne de Karobein basée sur la tendance


Date de création: 2023-11-03 16:56:13 Dernière modification: 2023-11-03 16:56:13
Copier: 1 Nombre de clics: 752
1
Suivre
1617
Abonnés

Stratégie de retour à la moyenne de Karobein basée sur la tendance

Aperçu

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.

Principe de stratégie

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.

Avantages stratégiques

  1. 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.

  2. 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.

  3. La période de détention peut être réglée librement avec des paramètres et s’applique à différentes périodes.

  4. Les paramètres de dépréciation dynamique peuvent être ajustés en temps réel pour s’adapter aux changements du marché.

Risque stratégique

  1. Cette stratégie est une stratégie de suivi des tendances et est susceptible d’être piégée dans une tendance de choc.

  2. 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.

  3. 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.

  4. 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:

  1. 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.

  2. Choisissez un indicateur de régression à la moyenne Karobein approprié pour la période et ne laissez pas trop de retard.

  3. Testez différents paramètres de temps de détention et choisissez le temps de détention qui vous convient.

  4. Ajustez la plage de seuil dynamique, qui ne doit pas être trop large pour éviter de perdre le point d’entrée.

Orientation de l’optimisation de la stratégie

  1. Il est possible de tester différents cycles de calcul de la dynamique des prix et d’optimiser les paramètres.

  2. 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.

  3. Le paramètre de régression de la moyenne de Karobein peut être optimisé pour une plus grande sensibilité.

  4. 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.

  5. Paramètres d’optimisation dynamique des algorithmes d’apprentissage automatique.

Résumer

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.

Code source de la stratégie
/*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)