Stratégie croisée de régression linéaire longue-courte

Auteur:ChaoZhang est là., Date: 2024-03-27 17:52:02 Le président de la République
Les étiquettes:

img

Résumé

La stratégie de rétrogradation linéaire longue courte est une stratégie d'analyse technique qui utilise un modèle de régression linéaire pour prédire les mouvements de prix futurs d'un stock. Le principe de base de la stratégie est le suivant: les mouvements de prix des actions suivent souvent une certaine tendance linéaire, et en calculant la régression linéaire du prix, le prix futur peut être prédit.

Principes de stratégie

La stratégie calcule d'abord la régression linéaire du prix des actions sur une certaine période de temps. La régression linéaire correspond à une ligne droite en utilisant la méthode des moindres carrés, qui représente la tendance du prix à changer au fil du temps. La stratégie trace ensuite la ligne de prix prévue et le prix actuel sur le graphique.

La stratégie définit deux signaux:

  1. Signal long: déclenché lorsque le prix prévu dépasse le prix actuel
  2. Signal court: déclenché lorsque le prix prévu dépasse le prix actuel

Lorsque le signal long apparaît, la stratégie ouvre une position longue; lorsque le signal court apparaît, elle ferme la position.

Les principales étapes de la stratégie sont les suivantes:

  1. Calculer la régression linéaire du prix sur une période de temps
  2. Tracer la ligne de prix prévue et le prix actuel sur le graphique
  3. Définir les signaux long et court
  4. Ouvrez une position longue lorsque le signal long est déclenché
  5. Fermez la position lorsque le signal court est déclenché

Analyse des avantages

La stratégie de croisement de régression linéaire longue-courte présente les avantages suivants:

  1. Simple et efficace: la logique de la stratégie est claire et facile à mettre en œuvre, et elle peut capturer la tendance linéaire du prix.
  2. Applicabilité large: la stratégie peut générer des signaux de négociation sur les marchés à la fois tendance et variation.
  3. Une forte optimisation: la stratégie contient quelques paramètres clés, tels que la période de régression linéaire, les moyennes mobiles, etc., qui peuvent être optimisés pour améliorer les performances.

Analyse des risques

Malgré ses nombreux avantages, la stratégie de croisement de régression linéaire longue-courte comporte également certains risques:

  1. Risque de reconnaissance de tendance: lorsque le mouvement des prix ne suit pas une tendance linéaire, comme sur un marché en variation, la stratégie peut générer de faux signaux. Ce risque peut être réduit en combinaison avec d'autres indicateurs tels que le MACD.
  2. Résultats de la stratégie sont sensibles aux paramètres et les paramètres inappropriés peuvent entraîner des pertes.
  3. Risque de suradaptation: si les paramètres sont sur-optimisés, cela peut entraîner une suradaptation de la stratégie aux données historiques et une mauvaise performance à l'avenir.

Directions d'optimisation

  1. Combiner avec d'autres indicateurs: le signal de régression linéaire peut être combiné avec d'autres indicateurs techniques tels que le MACD, les bandes de Bollinger, etc., afin d'améliorer la précision des signaux.
  2. Optimisation dynamique des paramètres: un mécanisme d'adaptation des paramètres peut être conçu pour ajuster dynamiquement les paramètres en fonction des conditions du marché, améliorant ainsi la capacité d'adaptation.
  3. Ajouter un module de contrôle des risques: intégrer des mesures de contrôle des risques telles que le stop-loss et la gestion de l'argent dans la stratégie afin de réduire le risque d'une seule transaction et d'augmenter les rendements cumulés.
  4. Optimisation de l'apprentissage automatique: les algorithmes d'apprentissage automatique peuvent être utilisés pour optimiser en permanence le modèle de régression linéaire afin de rendre ses prédictions plus précises.

Résumé

La stratégie de régression linéaire à court terme génère des signaux de trading basés sur la comparaison du prix prédit à partir de la régression linéaire et du prix actuel. La logique de la stratégie est simple et claire, et elle peut capturer la tendance linéaire du prix et s'applique à diverses conditions de marché. Dans le même temps, la stratégie est facile à mettre en œuvre et à optimiser, et les paramètres peuvent être ajustés de manière flexible, combinés à d'autres indicateurs, des modules de contrôle des risques peuvent être ajoutés, etc., pour améliorer continuellement la performance de la stratégie. Cependant, la stratégie comporte également des risques tels que la reconnaissance inexacte de la tendance, des paramètres inappropriés, et le surchargement des données historiques, il faut donc faire preuve de prudence dans l'application pratique.


/*backtest
start: 2024-02-25 00:00:00
end: 2024-03-26 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © stocktechbot
//@version=5
strategy("Linear Cross", overlay=true, margin_long=100, margin_short=0)

//Linear Regression

vol = volume

// Function to calculate linear regression
linregs(y, x, len) =>
    ybar = math.sum(y, len)/len
    xbar = math.sum(x, len)/len
    b = math.sum((x - xbar)*(y - ybar),len)/math.sum((x - xbar)*(x - xbar),len)
    a = ybar - b*xbar
    [a, b]

// Historical stock price data
price = close

// Length of linear regression
len = input(defval = 21, title = 'Strategy Length')
linearlen=input(defval = 9, title = 'Linear Lookback')
[a, b] = linregs(price, vol, len)

// Calculate linear regression for stock price based on volume
//eps = request.earnings(syminfo.ticker, earnings.actual)
//MA For double confirmation

out = ta.sma(close, 200)
outf = ta.sma(close, 50)
outn = ta.sma(close, 90)
outt = ta.sma(close, 21)
outthree = ta.sma(close, 9)

// Predicted stock price based on volume
predicted_price = a + b*vol

// Check if predicted price is between open and close
is_between = open < predicted_price and predicted_price < close

//MACD
//[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)

// Plot predicted stock price
plot(predicted_price, color=color.rgb(65, 59, 150), linewidth=2, title="Predicted Price")
plot(ta.sma(predicted_price,linearlen), color=color.rgb(199, 43, 64), linewidth=2, title="MA Predicted Price")
//offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
plot(out, color=color.blue, title="MA200")
[macdLine, signalLine, histLine] = ta.macd(predicted_price, 12, 26, 9)

//BUY Signal

longCondition=false
mafentry =ta.sma(close, 50) > ta.sma(close, 90)
//matentry = ta.sma(close, 21) > ta.sma(close, 50)
matwohun = close > ta.sma(close, 200)
twohunraise = ta.rising(out, 2)
twentyrise = ta.rising(outt, 2)
macdrise = ta.rising(macdLine,2)
macdlong = ta.crossover(predicted_price, ta.wma(predicted_price,linearlen))  and (signalLine < macdLine)
if macdlong and macdrise
    longCondition := true

if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)
//Sell Signal
lastEntryPrice = strategy.opentrades.entry_price(strategy.opentrades - 1)
daysSinceEntry = len
daysSinceEntry := int((time - strategy.opentrades.entry_time(strategy.opentrades - 1)) / (24 * 60 * 60 * 1000))
percentageChange = (close - lastEntryPrice) / lastEntryPrice * 100
//trailChange = (ta.highest(close,daysSinceEntry) - close) / close * 100

//label.new(bar_index, high, color=color.black, textcolor=color.white,text=str.tostring(int(trailChange)))
shortCondition=false
mafexit =ta.sma(close, 50) < ta.sma(close, 90)
matexit = ta.sma(close, 21) < ta.sma(close, 50)
matwohund = close < ta.sma(close, 200)
twohunfall = ta.falling(out, 3)
twentyfall = ta.falling(outt, 2)
shortmafall = ta.falling(outthree, 1)
macdfall = ta.falling(macdLine,1)
macdsell = macdLine < signalLine
if macdfall and macdsell and (macdLine < signalLine) and ta.falling(low,2)
    shortCondition := true

if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)




Plus de