Stratégie de trading quantitative d'inversion de suivi bidirectionnel


Date de création: 2024-02-22 13:46:51 Dernière modification: 2024-02-22 13:46:51
Copier: 0 Nombre de clics: 615
1
Suivre
1617
Abonnés

Stratégie de trading quantitative d’inversion de suivi bidirectionnel

Cette stratégie utilise un mécanisme de suivi bidirectionnel, combiné à des signaux de retour de prix et à des indicateurs de volume de transaction, pour réaliser des transactions quantifiées et automatisées. Son plus grand avantage réside dans une maîtrise fiable des risques, afin de bloquer les bénéfices en suivant les arrêts et d’éviter l’expansion des pertes.

Principe de stratégie

Cette stratégie est composée de deux sous-stratégies. La première sous-stratégie utilise des indicateurs aléatoires pour déterminer les signaux de retournement de prix. La logique est la suivante:

Si le cours de clôture est en hausse pendant deux jours consécutifs et que la ligne Slow K est inférieure à 50 le 9e jour, faites plus; si le cours de clôture est en baisse pendant deux jours consécutifs et que la ligne Fast K est supérieure à 50 le 9e jour, faites vide.

La deuxième sous-stratégie consiste à combiner l’indicateur de volume de transactions et la faiblesse du jugement. Plus précisément, il est de comparer le volume de transactions en cours avec la moyenne du volume de transactions sur 40 jours. Si le volume de transactions en cours est supérieur à la moyenne, considérez que le volume peut attaquer, appartient à un signal de retour, faire le vide; Si le volume de transactions en cours est inférieur à la moyenne, considérez que le volume peut baisser, appartient à un signal de retour, faire plus.

Le signal de transaction final est l’intersection des deux signaux de sous-stratégie susmentionnés. C’est-à-dire que la position est ouverte lorsque les deux stratégies émettent des signaux en même temps. Grâce à cette méthode de filtrage des cibles d’intersection, il est possible de filtrer une partie du bruit des transactions et d’améliorer la qualité du signal.

Avantages stratégiques

  1. Utilisation de la double confirmation pour améliorer la qualité du signal
  2. Le modèle de négociation inversée, avec un certain avantage temporel
  3. Les prix sont calculés en fonction de la quantité de marchandises achetées et de la quantité de marchandises vendues.
  4. Des mécanismes de coupe fiables pour contrôler efficacement les pertes individuelles

Risque stratégique

  1. Les signaux inversés peuvent être inefficaces et ne pas filtrer complètement le bruit du marché
  2. La quantité peut être jugée négative en cas d’anomalie de la transaction.
  3. Une mauvaise configuration du stop-loss peut entraîner un stop-loss prématuré ou excessif
  4. Les mécanismes de contrôle du retrait sont imparfaits et peuvent réduire la durée de vie de la stratégie.

Les mesures d’optimisation peuvent être améliorées dans les domaines suivants:

  1. Augmentation des règles de jugement des tendances et évitement des opérations à contre-courant
  2. Optimisation de la logique de stop-loss pour réaliser un stop-loss suivi et un stop-loss par étapes
  3. Augmentation des limites de retrait maximum, stratégie de fermeture pour éviter des pertes massives
  4. Modèles dynamiques de stop loss et de contrôle de position combinés à des algorithmes d’apprentissage automatique

Dans l’ensemble, cette stratégie utilise le suivi bidirectionnel et le renversement des prix comme principale logique de négociation, et est complétée par un jugement quantitatif, pour améliorer la qualité du signal grâce à la double confirmation. Dans la pratique, il reste encore besoin de tests et d’optimisations supplémentaires, en particulier pour prévenir les risques de stop-loss et de gestion des fonds, et pour empêcher le retrait de la faillite causée par la surcharge. Mais dans l’ensemble, cette stratégie utilise de nombreuses techniques de négociation quantitative.

Code source de la stratégie
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 16/11/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
// Volume and SMA
//
// 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

    
VSAVol(Length) =>
    pos = 0.0
    xSMA_vol = sma(volume, Length)
    pos := iff(volume > xSMA_vol, -1,
    	     iff(volume < xSMA_vol, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Volume SMA", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Length_MAVol = input(40, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posVSAVol = VSAVol(Length_MAVol)
pos = iff(posReversal123 == 1 and posVSAVol == 1 , 1,
	   iff(posReversal123 == -1 and posVSAVol == -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 )