Stratégie de croisement linéaire long-short


Date de création: 2024-03-27 17:52:02 Dernière modification: 2024-03-27 17:52:02
Copier: 0 Nombre de clics: 576
1
Suivre
1617
Abonnés

Stratégie de croisement linéaire long-short

Aperçu

La stratégie de croisement linéaire multi-zones est une stratégie d’analyse technique basée sur un modèle de régression linéaire pour prédire le mouvement futur du prix d’une action. Le principe de base de la stratégie est le suivant: le mouvement du prix d’une action suit souvent une certaine tendance linéaire.

Principe de stratégie

La stratégie commence par calculer la régression linéaire du prix d’une action sur une période de temps. La régression linéaire utilise le multiplicateur de la plus petite puissance pour former une ligne droite qui représente la tendance des prix à évoluer dans le 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. Faire plusieurs signaux: déclenchement lorsque le prix prévu surpasse le prix actuel
  2. Signal de rupture: déclenché lorsque le prix prévu est inférieur au prix actuel

Lorsque le signal de plus est donné, la stratégie est d’ouvrir une position plus; lorsque le signal de moins est donné, la stratégie est d’effacer la position.

Les étapes clés de la stratégie sont les suivantes:

  1. Calculer la régression linéaire du prix sur une période de temps
  2. Tracez une ligne de prix prévue et un prix actuel sur un graphique
  3. Définition des signaux de plus et de moins
  4. Il y a un problème avec les signaux.
  5. La position est levée au déclenchement du signal d’évacuation.

Analyse des avantages

Les stratégies d’intersection linéaire multifonctionnelle présentent les avantages suivants:

  1. Simple et efficace: la logique de la stratégie est claire, facile à mettre en œuvre et capte les tendances linéaires des prix.
  2. La stratégie peut être utilisée pour générer des signaux de trading, que ce soit dans une tendance ou dans un choc.
  3. La stratégie contient des paramètres clés, tels que le cycle de régression linéaire, la moyenne mobile, etc., qui peuvent être optimisés pour améliorer la performance de la stratégie.

Analyse des risques

Malgré les avantages de la stratégie de croisement linéaire polyvalent, elle comporte aussi des risques:

  1. Risque de reconnaissance de tendance: la stratégie peut générer de faux signaux lorsque les mouvements de prix ne suivent pas une tendance linéaire, par exemple une tendance choc. Le risque peut être réduit en combinant d’autres indicateurs tels que le MACD.
  2. Risque de paramétrage: les performances de la stratégie sont sensibles aux paramètres, les paramètres inappropriés peuvent entraîner des pertes. Par conséquent, il est nécessaire de faire un retour d’examen et une optimisation adéquats des paramètres avant le déploiement.
  3. Risque de suradaptation: une suroptimisation des paramètres peut entraîner une suradaptation des stratégies aux données historiques et une mauvaise performance future. Les méthodes pour éviter la suradaptation comprennent le maintien de la simplicité, les tests hors ensemble de données, etc.

Direction d’optimisation

  1. Combinaison avec d’autres indicateurs: Le signal de régression linéaire peut être combiné avec d’autres indicateurs techniques tels que MACD, les bandes de Bryn pour améliorer la précision du signal.
  2. Optimisation des paramètres dynamiques: un mécanisme d’adaptation des paramètres peut être conçu pour ajuster dynamiquement les paramètres en fonction des conditions du marché, ce qui améliore l’adaptabilité.
  3. Ajout d’un module de gestion des risques: intégrer des mesures de gestion des risques telles que la gestion des pertes et des fonds dans la stratégie pour réduire le risque de transaction unique et améliorer les gains cumulés.
  4. Optimisation de l’apprentissage automatique: les algorithmes d’apprentissage automatique permettent d’optimiser en permanence les modèles de régression linéaire afin de rendre leurs prévisions plus précises.

Résumer

La stratégie de croisement linéaire multifonctionnel est basée sur la régression linéaire des prix, générant un signal de transaction en comparant les prix prévus et les prix actuels. La logique de la stratégie est simple et claire, elle peut capturer une tendance linéaire des prix et s’applique à toutes sortes de situations. De plus, la stratégie est facile à mettre en œuvre et à optimiser.

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