Stratégie d'inversion combinée à deux facteurs et d'indicateurs incrémentaux


Date de création: 2023-12-26 12:20:57 Dernière modification: 2023-12-26 12:20:57
Copier: 0 Nombre de clics: 594
1
Suivre
1623
Abonnés

Stratégie d’inversion combinée à deux facteurs et d’indicateurs incrémentaux

Aperçu

La stratégie est basée sur un modèle à double facteur. Elle intègre les deux facteurs de la rétrogradation de la forme 123 et de l’indice de croissance, ce qui permet d’obtenir l’effet d’addition du signal de la stratégie. La stratégie effectue une opération de plus ou de moins correspondante lorsque les deux facteurs émettent simultanément un signal d’achat ou de vente.

Principe de stratégie

123 facteur de réversion

Ce facteur fonctionne en fonction de la forme 123 du prix. Si la relation de clôture des deux jours est basse-haute et que le Stoch est inférieur à 50, jugez que c’est un signal de revers inférieur, faites plus; si la relation de clôture des deux jours est basse-haute et que le Stoch est supérieur à 50, jugez que c’est un signal de revers supérieur, faites moins.

Facteur de croissance

Ce facteur est basé sur l’augmentation ou la diminution de la gamme de fluctuation des prix pour juger de l’inversion de tendance. L’augmentation de la gamme de fluctuation augmente l’indice et la diminution de la gamme diminue l’indice.

Les signaux bidirectionnels permettent d’ouvrir des positions, de réaliser des gains stratégiques et d’éviter le risque de faux signaux causé par un seul facteur.

Analyse des avantages

  • Un modèle à deux facteurs, combiné à des indicateurs de forme et de volatilité des prix, améliore la précision du signal
  • 123 jugements de forme extrémité locale, indice de croissance capture le point de retournement de la tendance globale, complément d’avantages
  • Ouvrir une position uniquement lorsque le binaire émet un signal synchrone, filtrant efficacement les faux signaux et améliorant la stabilité de la stratégie

Analyse des risques

  • La probabilité d’une erreur simultanée est présente, ce qui entraîne un risque de perte.
  • Il existe une probabilité d’échec du renversement et un arrêt de perte est nécessaire pour contrôler les pertes.
  • Une mauvaise optimisation des paramètres peut entraîner une suradaptation

Le risque peut être réduit par l’élargissement des séries d’entraînement, l’arrêt strict des pertes et le filtrage combiné de plusieurs facteurs.

Direction d’optimisation

  • Test d’autres combinaisons d’indicateurs de prix et de volatilité
  • Ajout de modèles d’apprentissage automatique pour juger de la qualité du signal et ajuster dynamiquement la position
  • Le volume des transactions, combiné à des facteurs tels que la ceinture de Brin, a permis d’extraire plus d’Alpha
  • Optimisation du défilement et amélioration de la stabilité grâce à la méthode walk forward

Résumer

La stratégie combine deux facteurs de la forme des prix et de la volatilité des indicateurs, en ouvrant la position uniquement lorsque les deux facteurs émettent des signaux synchrones, évitant ainsi le risque de faux signaux apportés par un seul facteur, ce qui améliore la stabilité globale de la stratégie. Cependant, il existe également un risque que les deux facteurs de probabilité émettent simultanément des signaux erronés. Nous pouvons améliorer encore la performance de la stratégie et le taux de rendement ajusté au risque en élargissant les ensembles d’entraînement, les paramètres d’arrêt et l’optimisation de la combinaison des facteurs de pertes.

Code source de la stratégie
/*backtest
start: 2023-11-25 00:00:00
end: 2023-12-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 22/02/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
// The Mass Index was designed to identify trend reversals by measuring 
// the narrowing and widening of the range between the high and low prices. 
// As this range widens, the Mass Index increases; as the range narrows 
// the Mass Index decreases.
// The Mass Index was developed by Donald Dorsey. 
//
// 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


MASS(Length1,Length2,Trigger) =>
    pos = 0.0
    xPrice = high - low
    xEMA = ema(xPrice, Length1)
    xSmoothXAvg = ema(xEMA, Length1)
    nRes = sum(iff(xSmoothXAvg != 0, xEMA / xSmoothXAvg, 0), Length2)
    pos := iff(nRes > Trigger, -1,
	         iff(nRes < Trigger, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & MASS Index", 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, "---- MASS Index ----")
Length1 = input(9, minval=1)
Length2 = input(25, minval=1)
Trigger = input(26.5, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMASS = MASS(Length1,Length2,Trigger)
pos = iff(posReversal123 == 1 and posMASS == 1 , 1,
	   iff(posReversal123 == -1 and posMASS == -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 )