Stratégie combinée d'interception par inversion et régression linéaire

Auteur:ChaoZhang est là., Date: le 26 février 2023
Les étiquettes:

Résumé

Cette stratégie combine la stratégie d'inversion 123 et la stratégie d'interception de régression linéaire pour mettre en œuvre une stratégie de trading combinée axée sur plusieurs facteurs. La stratégie d'inversion 123 juge la relation de prix entre les deux derniers jours de négociation et combine l'indicateur Stoch pour déterminer le signal d'inversion.

Principe de stratégie

123 Stratégie d'inversion

La stratégie repose sur les principes suivants:

  1. Si la relation de prix de clôture entre les deux derniers jours de négociation est supérieure au prix de clôture d'aujourd'hui à celui d'hier et que la ligne rapide de Stoch est inférieure à la ligne lente, on considère qu'il y a un signal d'inversion haussier.

  2. Si la relation de prix de clôture entre les deux derniers jours de négociation est inférieure à celle d'hier et que la ligne rapide de Stoch est supérieure à la ligne lente, on considère qu'il y a un signal d'inversion baissière.

Les règles de jugement sont les suivantes:

  • Si le prix de clôture d'aujourd'hui > le prix de clôture d'hier et la ligne rapide de Stoch < la ligne lente de Stoch et la ligne rapide de Stoch > paramètres définis, générer un signal d'achat

  • Si le prix de clôture d'aujourd'hui < le prix de clôture d'hier et la ligne rapide de Stoch > la ligne lente de Stoch et la ligne rapide de Stoch < paramètre défini, générer un signal de vente

La stratégie doit fixer des paramètres pour l'indicateur Stoch, notamment: longueur du cycle de la ligne K pour le calcul de Stoch, cycle de lissage KSlissage pour la ligne rapide de Stoch, cycle d'lissage DLength pour la ligne lente de Stoch, niveau de seuil pour le jugement de la ligne rapide de Stoch.

Stratégie d'interception de régression linéaire

La stratégie est basée sur l'analyse de régression linéaire pour juger de la relation entre le prix et la ligne de tendance de régression linéaire.

  • Si le prix de clôture est supérieur à l'intersection de régression linéaire, un signal d'achat est généré

  • Si le prix de clôture est inférieur à l'intersection de régression linéaire, un signal de vente est généré.

La stratégie doit définir le cycle de régression linéaire LengthLRI et la source de données d'entrée de régression linéaire xSeria.

Stratégie combinée

La stratégie combinée nécessite des signaux d'achat/vente simultanés de la stratégie d'inversion 123 et de la stratégie d'interception de régression linéaire pour générer des ordres de négociation réels, ce qui filtre efficacement les faux signaux et améliore les performances de négociation.

Analyse des avantages

La stratégie présente les avantages suivants:

  1. Facteur multifactoriel, filtrant efficacement les faux signaux et améliorant la qualité du signal

La combinaison de deux types différents de stratégies nécessite des signaux provenant des deux stratégies pour effectuer réellement des commandes.

  1. La surveillance en temps réel des relations entre les prix et les tendances évite d'être piégé

L'intersection de régression linéaire peut refléter la relation entre le prix et la ligne de tendance en temps réel. Si le prix s'écarte de manière significative de la tendance, il incitera rapidement la stratégie à ajuster la direction de la position. Cela permet d'arrêter les pertes en temps opportun et d'éviter d'être piégé dans les tendances historiques.

  1. Prendre en compte les opportunités de négociation pour les tendances et les renversements

La stratégie de régression linéaire est meilleure pour identifier les points d'achat et de vente de tendance. Alors que la stratégie de renversement 123 se concentre sur l'identification des points d'inversion. Les deux stratégies peuvent combiner les avantages du trading de tendance et du trading de renversement.

  1. Optimisation des stratégies par paramètres personnalisables

Les deux stratégies fournissent certains paramètres de personnalisation, qui peuvent être optimisés pour différentes variétés et différentes tendances afin d'optimiser l'effet de la stratégie combinée.

Analyse des risques

La stratégie comporte également les risques suivants:

  1. Les conducteurs multifactoriels peuvent manquer certaines opportunités

La nécessité de répondre aux signaux de négociation des deux stratégies va manquer certaines opportunités qui peuvent être rentables en s'appuyant uniquement sur une seule stratégie.

  1. La régression linéaire a un retard

La régression linéaire nécessite des données historiques pour le calcul et ne peut pas répondre en temps réel à des événements soudains, ce qui entraîne un certain retard.

  1. Une optimisation raisonnable des paramètres est nécessaire

Les deux stratégies nécessitent une sélection de paramètres appropriée, qui peut nécessiter un ajustement indépendant pour certaines variétés.

Les risques peuvent être réduits par les méthodes suivantes:

  1. Détente appropriée des conditions de déclenchement du signal de combo pour éviter de manquer trop d'opportunités

  2. Combiner les indicateurs de tendance pour remplacer la régression linéaire afin d'obtenir plus de jugements de tendance en temps réel

  3. Utiliser des méthodes d'apprentissage automatique pour faciliter l'optimisation des paramètres et améliorer la sélection des paramètres

Directions d'optimisation

La stratégie peut être encore optimisée de la manière suivante:

  1. Utiliser des méthodes d'apprentissage automatique pour l'optimisation des paramètres

Rassembler des données historiques, concevoir des objectifs d'optimisation des paramètres et utiliser des algorithmes d'apprentissage automatique tels que des algorithmes génétiques et une optimisation bayésienne pour rechercher les meilleures combinaisons de paramètres.

  1. Ajouter un mécanisme de stop-loss

Les règles de stop-loss peuvent être définies en fonction de l'ATR, des indicateurs de tendance, etc., afin de contrôler la perte maximale par transaction.

  1. Optimiser la logique d'entrée et de sortie

Des conditions auxiliaires telles que des filtres de moyennes mobiles et des bandes de Bollinger peuvent être ajoutées sur la base des signaux de négociation afin de réduire la fréquence des ajustements de position et d'éviter d'être pris au piège.

  1. Analyse combinée des sentiments

Utiliser des techniques de traitement du langage naturel pour déterminer le sentiment des participants au marché et aider à prendre des décisions commerciales.

  1. Ajouter un module de prédiction d'apprentissage automatique

Utiliser des modèles d'apprentissage en profondeur comme LSTM et GRU pour prédire les prix comme une référence importante pour les décisions stratégiques.

Résumé

Cette stratégie combine la stratégie d'inversion 123 et la stratégie d'interception de régression linéaire pour mettre en œuvre un trading quantitatif axé sur plusieurs facteurs. Le mécanisme de vérification peut filtrer efficacement les faux signaux et capturer les opportunités de trading d'inversion et de tendance.


/*backtest
start: 2023-09-18 00:00:00
end: 2023-09-19 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 25/01/2021
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// Linear Regression Intercept is one of the indicators calculated by using the 
// Linear Regression technique. Linear regression indicates the value of the Y 
// (generally the price) when the value of X (the time series) is 0. Linear 
// Regression Intercept is used along with the Linear Regression Slope to create 
// the Linear Regression Line. The Linear Regression Intercept along with the Slope 
// creates the Regression line.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

LRI(Length,xSeria) =>
    pos = 0.0
    xX = Length * (Length - 1) * 0.5
    xDivisor = xX * xX - Length * Length * (Length - 1) * (2 * Length - 1) / 6
    xXY = 0.0
    for i = 0 to Length-1
    	xXY := xXY + (i * xSeria[i])
    xSlope = (Length * xXY - xX * sum(xSeria, Length)) / xDivisor
    xLRI = (sum(xSeria, Length) - xSlope * xX) / Length
    pos:= iff(close > xLRI, 1,
           iff(close < xLRI, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Line Regression Intercept", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Line Regression Intercept ----")
LengthLRI = input(14, minval=1)
xSeria = input(title="Source", type=input.source, defval=close)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posLRI = LRI(LengthLRI,xSeria)
pos = iff(posReversal123 == 1 and posLRI == 1 , 1,
	   iff(posReversal123 == -1 and posLRI == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Plus de