Stratégie combinée de renversement quantitatif et de volume

Auteur:ChaoZhang est là., Date: 2021-09-21 21:07:09
Les étiquettes:

Résumé

Cette stratégie combine deux stratégies de négociation quantitatives pour générer des signaux de négociation plus précis et fiables. La première stratégie est basée sur l'inversion des prix et la seconde est basée sur l'analyse du volume. Les signaux combinés peuvent améliorer efficacement la rentabilité.

La logique de la stratégie

La stratégie se compose de deux parties:

  1. Stratégie de renversement

Utilise l'indicateur STO pour les signaux d'inversion. Va long lorsque le close monte pendant 2 jours et que la ligne lente STO est inférieure à 50. Va court lorsque le close tombe pendant 2 jours et que la ligne rapide STO est supérieure à 50.

  1. Stratégie de volume

Analyse la relation prix-volume sur une période pour déterminer la direction, avec lissage de la moyenne mobile.

Il va long quand les deux stratégies signalent long, et court quand les deux signalent court.

Le combo améliore la qualité du signal en réduisant considérablement les faux signaux provenant de l'une ou l'autre stratégie.

Les avantages

  • Combine deux stratégies indépendantes, améliorant la précision
  • L'inversion capte les opportunités de redressement, le volume prévoit la direction future
  • Différents types de stratégies se vérifient mutuellement, réduisant les faux signaux
  • Combinaison directe simple, facile à mettre en œuvre
  • Les paramètres de chaque stratégie peuvent être optimisés séparément

Les risques

  • Résultats des opérations d'inversion sans règles strictes
  • L'analyse du volume peut être retardée
  • Basé uniquement sur des indicateurs, nécessite une analyse technique
  • Séries de données plus longues nécessaires pour les moyennes mobiles
  • Les paramètres peuvent ne pas être universels pour tous les produits

Les risques peuvent être réduits par:

  • Optimisation de la STO pour une meilleure détection de l'inversion
  • Ajout d'indicateurs pour confirmer les écarts de volume
  • Optimisation des périodes de moyenne mobile
  • Analyse complémentaire des schémas graphiques
  • Épreuves séparées de paramètres par produit

Directions de renforcement

La stratégie peut être améliorée par:

  1. Optimisation des paramètres du STO

    Les valeurs de réglage fin K, D pour les meilleures combinaisons

  2. Confirmation secondaire des ruptures de volume

    Avec des indicateurs comme MACD, BOLL etc.

  3. Optimisation des périodes de moyenne mobile

    Test de différentes périodes pour des signaux plus stables

  4. Ajout de modèles de graphiques

    Entrée sur les modèles en plus des signaux de combo

  5. Épreuves de paramètres spécifiques au produit

    Les paramètres peuvent varier selon les produits.

Résumé

Cette stratégie combine des stratégies d'inversion et de volume pour améliorer la qualité et l'exactitude du signal. Mais l'optimisation des paramètres, des indicateurs techniques supplémentaires, etc. peuvent encore affiner les performances. Nous pouvons continuellement ajuster en fonction des résultats des backtests, valider dans le trading en direct, pour obtenir une stratégie de combo vraiment robuste. Cela nécessite un temps et des efforts immenses, mais les récompenses seront également importantes.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 21/10/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
// This is another version of FVE indicator that we have posted earlier 
// in this forum.
// This version has an important enhancement to the previous one that`s 
// especially useful with intraday minute charts.
// Due to the volatility had not been taken into account to avoid the extra 
// complication in the formula, the previous formula has some drawbacks:
// The main drawback is that the constant cutoff coefficient will overestimate 
// price changes in minute charts and underestimate corresponding changes in 
// weekly or monthly charts.
// And now the indicator uses adaptive cutoff coefficient which will adjust to 
// all time frames automatically.
//
// 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


FVI(Samples,Perma,Cintra,Cinter) =>
    pos = 0
    xhl2 = hl2
    xhlc3 = hlc3
    xClose = close
    xIntra = log(high) - log(low)
    xInter = log(xhlc3) - log(xhlc3[1])
    xStDevIntra = stdev(sma(xIntra, Samples) , Samples)
    xStDevInter = stdev(sma(xInter, Samples) , Samples)
    xVolume = volume
    TP = xhlc3
    TP1 = xhlc3[1]
    Intra = xIntra
    Vintra = xStDevIntra
    Inter = xInter
    Vinter = xStDevInter
    CutOff = Cintra * Vintra + Cinter * Vinter
    MF = xClose - xhl2 + TP - TP1
    FveFactor =  iff(MF > CutOff * xClose, 1, 
                  iff(MF < -1 * CutOff * xClose, -1,  0))
    xVolumePlusMinus = xVolume * FveFactor
    Fvesum = sum(xVolumePlusMinus, Samples)
    VolSum = sum(xVolume, Samples)
    xFVE = (Fvesum / VolSum) * 100
    xEMAFVE = ema(xFVE, Perma)
    pos :=iff(xFVE > xEMAFVE, 1,
    	   iff(xFVE < xEMAFVE, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Volatility Finite Volume Elements", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Samples = input(22, minval=1)
Perma = input(40, minval=1)
Cintra = input(0.1)
Cinter = input(0.1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posFVI = FVI(Samples,Perma,Cintra,Cinter)
pos = iff(posReversal123 == 1 and posFVI == 1 , 1,
	   iff(posReversal123 == -1 and posFVI == -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