Stratégie combinée d'inversion de l'élan à facteurs multiples

Auteur:ChaoZhang est là., Date: 2023-11-21 11h20 et 31h
Les étiquettes:

img

Résumé

Cette stratégie est une stratégie combinée de facteurs multiples qui combine les facteurs d'inversion et les facteurs de dynamique pour découvrir les opportunités d'inversion sur le marché. La stratégie utilise d'abord le facteur d'inversion à long terme pour identifier les opportunités d'inversion après des baisses en plage, puis utilise des indicateurs d'impulsion pour le dépistage secondaire pour filtrer les faux signaux d'inversion sous les tendances majeures, afin de bloquer les opportunités d'arbitrage d'inversion à court terme.

La logique de la stratégie

La stratégie se compose de deux parties:

  1. 123 Facteur d'inversion

    Cette partie utilise l'idée de l'inversion intradienne pour déterminer la relation entre le prix de clôture de la journée précédente et le prix de clôture de la 2 jours pour identifier les opportunités d'inversion avec lente ligne K. La logique spécifique est:

    • Signal d'achat: après deux jours consécutifs de baisse du prix de clôture, si le prix de clôture augmente le jour en cours et que la lente K-line de 9 jours est inférieure à 50, un signal d'achat est généré;

    • Signal de vente: Après deux jours consécutifs de hausse du prix de clôture, si le prix de clôture diminue le jour en cours et que la ligne K rapide de 9 jours est supérieure à 50, un signal de vente est généré.

  2. L'oscillateur à élan dynamique Ehlers (ETSI)

    Cette partie utilise la méthode de la dynamique des prix à trois EMA pour construire un indicateur de dynamique, dont la formule est la suivante:

    xPrice1 = close - close[1]
    xPrice2 = abs(close - close[1]) 
    xSMA_R = EMA(EMA(EMA(xPrice1,r), s), u)
    xSMA_aR = EMA(EMA(EMA(xPrice2, r), s), u) 
    xTSI = xSMA_R / xSMA_aR * 100
    xEMA_TSI = EMA(xTSI, N)
    

    où xSMA_R est la valeur de la dynamique des prix à l'EMA, xSMA_aR est la valeur de la volatilité des prix à l'EMA, xTSI est l'indicateur de dynamique construit à partir du rapport des deux, et xEMA_TSI est l'équilibrage secondaire de l'EMA de xTSI. L'indicateur détermine la direction du signal de négociation en fonction de la relation entre xTSI et xEMA_TSI.

Enfin, la stratégie ANDs les signaux des deux parties, et émet seulement des ordres de négociation réels lorsque les signaux des deux facteurs sont d'accord.

Les avantages de la stratégie

Le plus grand avantage de cette stratégie réside dans sa conception multifactorielle, qui peut filtrer les faux signaux et découvrir des opportunités de trading de haute qualité.

  1. Le facteur d'inversion 123 permet d'identifier des points de rebond à court terme après des baisses dans la fourchette.

  2. L'indicateur de dynamique Ehlers peut déterminer efficacement la direction de la tendance majeure pour éviter les signaux d'inversion se produisant sous une tendance majeure, filtrant ainsi les faux signaux.

  3. L'opération AND sur les deux parties du signal peut améliorer la qualité du signal et renforcer la stabilité de la stratégie.

Risques liés à la stratégie

Bien que la stratégie adopte une conception multifactorielle pour contrôler les risques, les principaux risques restent les suivants:

  1. Des signaux d'inversion peuvent apparaître dans les tendances oscillantes et ne pas générer de bénéfices.

  2. Il y a une subjectivité dans les paramètres entre les deux facteurs, ce qui peut être trop adapté à des produits spécifiques.

  3. Le risque d'augmentation des pertes après l'inversion des prix s'inverse à nouveau.

Ces risques peuvent être atténués en optimisant les paramètres pour s'adapter à davantage de variétés, en contrôlant les positions post-inversion, en surveillant en temps réel les changements dans les relations entre les indicateurs et par d'autres moyens.

Directions d'optimisation

Les principaux aspects pour optimiser cette stratégie sont les suivants:

  1. Ajuster les paramètres des deux facteurs pour trouver des échantillons de données qui correspondent mieux.

  2. Augmentation des stratégies de stop loss pour contrôler les pertes uniques.

  3. Utilisation de différentes combinaisons de paramètres pour les variétés tendance et oscillation.

  4. Augmentation du mécanisme de pondération des facteurs afin d'accorder un plus grand poids aux facteurs performants.

  5. Augmentation des algorithmes d'apprentissage automatique pour optimiser et mettre à jour automatiquement les paramètres.

Conclusion

La stratégie combine avec succès des facteurs d'inversion et des indicateurs de dynamique pour obtenir une conception optimisée pour plusieurs facteurs. Elle peut identifier efficacement les opportunités d'inversion à court terme et utiliser des indicateurs de dynamique pour effectuer une vérification secondaire des signaux, améliorant ainsi le taux de victoire de la stratégie. Bien qu'il y ait encore place à l'amélioration de la stratégie, son idée de base fournit une bonne référence pour la conception de stratégies quantitatives.


/*backtest
start: 2023-10-21 00:00:00
end: 2023-11-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 30/07/2020
// 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
// r - Length of first EMA smoothing of 1 day momentum        4
// s - Length of second EMA smoothing of 1 day smoothing      8    
// u- Length of third EMA smoothing of 1 day momentum         6  
// Length of EMA signal line                                  3
// Source of Ergotic TSI                                      Close
//
// This is one of the techniques described by William Blau in his book "Momentum,
// Direction and Divergence" (1995). If you like to learn more, we advise you to 
// read this book. His book focuses on three key aspects of trading: momentum, 
// direction and divergence. Blau, who was an electrical engineer before becoming 
// a trader, thoroughly examines the relationship between price and momentum in 
// step-by-step examples. From this grounding, he then looks at the deficiencies 
// in other oscillators and introduces some innovative techniques, including a 
// fresh twist on Stochastics. On directional issues, he analyzes the intricacies 
// of ADX and offers a unique approach to help define trending and non-trending periods.  
//
// 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


ETSI(r,s,u,SmthLen) =>
    pos = 0
    xPrice = close
    xPrice1 = xPrice - xPrice[1]
    xPrice2 = abs(xPrice - xPrice[1])
    xSMA_R = ema(ema(ema(xPrice1,r), s),u)
    xSMA_aR = ema(ema(ema(xPrice2, r), s),u)
    Val1 = 100 * xSMA_R
    Val2 = xSMA_aR
    xTSI = iff (Val2 != 0, Val1 / Val2, 0)
    xEMA_TSI = ema(xTSI, SmthLen)
    pos:= iff(xTSI > xEMA_TSI, 1,
    	   iff(xTSI < xEMA_TSI, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Ergodic TSI", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
r = input(4, minval=1)
s = input(8, minval=1)
u = input(6, minval=1)
SmthLen = input(3, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posETSI = ETSI(r,s,u,SmthLen)
pos = iff(posReversal123 == 1 and posETSI == 1 , 1,
	   iff(posReversal123 == -1 and posETSI == -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