Stratégie de régression linéaire inverse

Auteur:ChaoZhang est là., Date: 2023-12-29 17h15 et 07 min
Les étiquettes:

img

Résumé

La stratégie de régression linéaire inverse est une stratégie de négociation basée sur les fluctuations de prix. Elle combine l'analyse de régression linéaire et l'indicateur AVERAGE TRUE RANGE, définit les conditions pour des lignes K ascendantes consécutives ou des lignes K descendantes consécutives, et effectue des opérations inverses lorsque l'analyse de régression linéaire juge l'inversion de prix.

Principe de stratégie

La stratégie calcule d'abord la pente de régression linéaire. Lorsque la pente de régression linéaire est supérieure ou égale à 0, elle indique que le prix est en tendance haussière; lorsqu'elle est inférieure à 0, elle indique une tendance à la baisse des prix. Dans le même temps, combinée à la comparaison entre le prix de clôture et le prix d'ouverture de la dernière ligne K, il est jugé si la dernière ligne K a augmenté ou baissé. Lorsque la pente de régression linéaire est supérieure ou égale à 0 et que le prix de clôture de la dernière ligne K est inférieur au prix d'ouverture, un signal d'achat est généré; lorsque la pente de régression linéaire est inférieure à 0 et que le prix de clôture de la dernière ligne K est supérieur au prix d'ouverture, un signal de vente est généré.

Lorsqu'il est déterminé que le nombre de lignes K ascendantes consécutives atteint le nombre fixé, un signal de vente est généré à condition que la pente de régression linéaire soit inférieure à 0 pour atteindre le trading d'inversion près du point élevé; lorsqu'il est déterminé que les lignes K descendantes consécutives atteignent le nombre de réglage, lorsque la pente de régression linéaire est supérieure ou égale à 0, un signal d'achat est généré pour atteindre le trading d'inversion près du point bas.

Analyse des avantages

L'analyse de régression linéaire fournit un moyen de déterminer la tendance globale des prix et d'éviter d'inverser les positions courtes ou longues lorsque les prix sont toujours en hausse ou en baisse.

Par rapport aux stratégies d'inversion simples, cette stratégie combine plusieurs indicateurs techniques pour contrôler plus précisément le calendrier des transactions, ce qui permet d'éviter efficacement le risque de fausses ruptures et d'accroître la rentabilité.

Analyse des risques

Le principal risque auquel cette stratégie est confrontée est l'échec de l'inversion. S'il est jugé que le signal d'inversion de prix, le prix continue de maintenir la tendance initiale, il causera des pertes. En outre, la définition des paramètres de l'analyse de régression linéaire et des indicateurs ATR affectera également les revenus de la stratégie.

Le stop loss peut être utilisé pour contrôler une seule perte. Évaluer raisonnablement la fréquence des fluctuations du marché, ajuster de manière appropriée le nombre de lignes K consécutives et réduire la fréquence de négociation. Optimiser les paramètres de cycle de régression linéaire et les paramètres ATR pour les rendre plus conformes aux caractéristiques des différentes variétés.

Direction de l'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Ajoutez d'autres indicateurs techniques pour améliorer la précision du jugement. Par exemple, MACD, Bollinger Band, etc.

  2. Augmenter les composants d'apprentissage automatique pour l'optimisation automatique des paramètres et l'ajustement dynamique des règles de négociation.

  3. Incorporer des mécanismes de gestion des risques tels que la gestion des capitaux et des stratégies de stop loss pour contrôler les risques commerciaux.

  4. Optimisation du portefeuille qui combine des stratégies avec d'autres stratégies indépendantes pour réduire les prélèvements globaux et améliorer la stabilité.

  5. Élargir à plus de variétés, évaluer les paramètres pour différentes variétés pour rendre la stratégie plus polyvalente.

Résumé

La stratégie de régression linéaire inverse intègre plusieurs indicateurs techniques et prend des opérations inverses lors du jugement du moment de l'inversion des prix. C'est une stratégie de trading d'inversion efficace. Grâce à l'optimisation des paramètres et à une gestion améliorée des risques, la stratégie peut encore élargir les marges bénéficiaires et a un grand potentiel d'amélioration.


/*backtest
start: 2023-12-21 00:00:00
end: 2023-12-28 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Reverse Up/Down Strategy", currency=currency.USD, initial_capital=1000, pyramiding=2, default_qty_type=strategy.percent_of_equity, default_qty_value=100,overlay=true)

//User Options
consecutiveBarsUp   = input(title="Sell after how many bars up?",   type=input.integer, minval=1, defval=1)
consecutiveBarsDown = input(title="Buy after how many bars down?",  type=input.integer, minval=1, defval=1)
atrLength           = input(title="ATR Length",                     type=input.integer, minval=1, defval=14)
atrMult             = input(title="ATR Multiplier",                 type=input.float,   minval=0.1, defval=2.33)

//ATR Channel
adjustedATR     = sma(atr(atrLength),atrLength) * atrMult
longATR         = low - adjustedATR
shortATR        = high + adjustedATR
plot(shortATR,  title="Short ATR",  color=color.red)
plot(longATR,   title="Long ATR",   color=color.lime)


// This is the true linear regression slope rather than an approximation given by numerical differentiation
src = hlc3
len = input(defval=14, minval=1, title="Slope Length")
lrc = linreg(src, len, 0)
lrc1 = linreg(src, len,1)
lrs = (lrc-lrc1)

//Check if last candle was up or down
priceOpen = open
priceClose = close
longCondition = priceOpen > priceClose
shortCondition = priceOpen < priceClose
ups = 0.0
dns = 0.0

ups := shortCondition ? nz(ups[1]) + 1 : 0
dns := longCondition ? nz(dns[1]) + 1 : 0

if (shortCondition)
    strategy.close("buy", qty_percent=100, comment="Close")
    if (ups >= consecutiveBarsUp and lrs <= 0)
    	strategy.entry("sell", strategy.short, comment="Sell")
    	

if (longCondition)
    strategy.close("sell", qty_percent=100, comment="Close")
    if (dns >= consecutiveBarsDown and lrs >= 0)
	    strategy.entry("buy", strategy.long, comment = "Buy")


Plus de