
Une stratégie de canal de régression linéaire auto-adaptative est une stratégie de négociation quantitative basée sur l’analyse de la régression linéaire. La stratégie forme un canal ascendant et descendant en calculant l’équation de régression linéaire du prix d’une valeur mobilière sur une période donnée et en utilisant la trajectoire ascendante et descendante du canal comme signal de négociation pour effectuer des transactions intermédiaires ou suivre la tendance.
Le cœur de la stratégie de canal de régression linéaire auto-adaptatif est de calculer l’équation de régression linéaire de la clôture des prix pour un certain nombre de lignes de racine K de K, formant une ligne médiane représentant le chiffre moyen des prix, une ligne supérieure représentant la limite supérieure des prix et une ligne inférieure représentant la limite inférieure des prix. Le processus de calcul est le suivant:
Rassembler les variables indépendantes x et y de la ligne K de la racine K de la longueur de paramètre d’entrée. x est l’entier de 1 à la longueur, y est le prix de clôture de la ligne K correspondante.
Coefficient de régression calculé:
Calculer la régression linéaire y’ correspondant à chaque ligne K
La ligne médiane est l’équation de régression y’=mx+b, les traces ascendantes et descendantes flottant respectivement sur la ligne médiane pour une distance d’un multiple de la différence standard.
Avec l’arrivée de la nouvelle ligne K, les calculs ci-dessus se renouvellent et forment un canal d’adaptation ascendant et descendant. Selon le croisement des voies ascendant et descendante, faites plus de blanchiment et arrêtez-vous près de la ligne médiane.
Les stratégies d’auto-adaptation de la voie de régression linéaire présentent les avantages suivants par rapport aux stratégies de régression linéaire moyenne traditionnelles:
Des modèles d’analyse de la régression plus scientifiques et rationnels, plus significatifs statistiquement que la moyenne
Plus de flexibilité, le canal s’adapte automatiquement aux changements de prix
La détection est plus efficace, nettement supérieure à la stratégie linéaire pour certaines variétés.
Les résultats de la vérification en laboratoire ont été positifs et satisfaisants.
La stratégie présente principalement les risques suivants:
Les fluctuations de prix excessives entraînent des pertes énormes. La solution consiste à définir des paramètres de stop loss et d’optimisation.
La solution consiste à ajuster les paramètres en combinaison avec d’autres indicateurs techniques.
Les résultats de la rétroaction semblent bons, mais les résultats sur le disque dur sont médiocres. La solution consiste à ajuster les paramètres et à vérifier pleinement.
Cette stratégie peut être optimisée à partir des dimensions suivantes:
Tester plus de combinaisons de paramètres pour trouver le meilleur
Les signaux sont erronés lorsque le mouvement est violent, en combinaison avec d’autres indicateurs techniques.
Augmentation des stratégies de coupe-perte pour contrôler le risque de perte et protéger les fonds
Ajout d’un module de gestion des positions pour ajuster la taille des positions en fonction des conditions du marché
La stratégie du canal de régression linéaire auto-adaptatif est une stratégie de quantification qui fonctionne bien dans l’ensemble. Elle a une base théorique solide, un bon effet pratique, mérite d’être étudiée et optimisée, et peut être une composante efficace d’un système de trading quantifié. Mais il faut également reconnaître ses limites, prévenir les risques et pratiquer avec prudence.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Stealthy 7 Linear Regression Channel Strategy", overlay=true)
source = open
length = input(100, minval=1)
mult1 = input(1, minval=0.001, maxval=50)
mult2 = input(1, minval=0.001, maxval=50)
DayTrader = input(title="Range Mode", type=bool, defval=false)
//Making the first least squares line
sum_x = length * (length + 1) / 2
sum_y = 0
sum_xy = 0
xyproductsum = 0
sum_xx = 0
for i = 1 to length
sum_y := sum_y + close[i]
sum_xy := i * close[i] + sum_xy
sum_xx := i * i + sum_xx
m = (length*sum_xy - (sum_x * sum_y)) / (length * sum_xx - (sum_x * sum_x))
b = sum_y / length - (m * sum_x / length)
//Finding the first standard deviation from the line
difference = 0
for i = 1 to length
y = i * m + b
difference := pow(abs(close[i] - y),2) + difference
STDDEV = sqrt(difference / length)
//Creating trading zones
dev = mult1 * STDDEV
dev2 = mult2 * STDDEV
upper = b + dev
lower = b - dev2
middle = b
if DayTrader == false
if crossover(source, upper)
strategy.entry("RGLONG", strategy.long, oca_name="RegChannel", comment="RegLong")
else
strategy.cancel(id="RGLONG")
if crossunder(source, lower)
strategy.entry("RGSHORT", strategy.short, oca_name="RegChannel", comment="RegShort")
else
strategy.cancel(id="RGSHORT")
if crossover(source, middle) and strategy.position_size < 0
strategy.close_all()
if crossunder(source,middle) and strategy.position_size > 0
strategy.close_all()
if DayTrader == true
if crossover(source, lower)
strategy.entry("RGLONG", strategy.long, oca_name="RegChannel", comment="RegLong")
else
strategy.cancel(id="RGLONG")
if crossunder(source, upper)
strategy.entry("RGSHORT", strategy.short, oca_name="RegChannel", comment="RegShort")
else
strategy.cancel(id="RGSHORT")
plot(upper, title="UpperBand", color=purple, linewidth=1, style=line)
plot(lower, title="LowerBand", color=purple, linewidth=1, style=line)
plot(middle, title="MiddleBand", color=black, linewidth=1, style=line)