Stratégie sélective de chevauchement par inversion double

Auteur:ChaoZhang est là., Date: 2023-10-26 à 16h56
Les étiquettes:

img

Résumé

La stratégie sélective de double chevauchement de l'inversion combine des stratégies de négociation d'inversion avec des filtres de survente pour obtenir une allocation d'actifs et un trading de calendrier.

La logique de la stratégie

La stratégie est composée de deux sous-stratégies qui se chevauchent:

  1. 123 Stratégie d'inversion

Cette stratégie utilise des signaux d'inversion basés sur deux jours consécutifs d'inversion du prix de clôture. Plus précisément, elle va long si les prix de clôture augmentent au cours des deux derniers jours et que le stochastique lent de 9 jours est inférieur à 50, et va court si les prix de clôture diminuent au cours des deux derniers jours et que le stochastique rapide de 9 jours est supérieur à 50.

  1. Stratégie de l'oscillateur DSS

Cette stratégie utilise l'oscillateur DSS pour l'analyse de la survente. Elle va long si la MA de 5 jours est inférieure à la MA de 10 jours et au niveau de survente de 20, et court si la MA de 5 jours est supérieure à la MA de 10 jours et au niveau de survente de 80. Cette stratégie de survente aide à éviter les transactions inutiles dans les zones irrationnelles.

Le signal final n'est généré que lorsque les deux stratégies s'accordent, ce qui améliore la rentabilité en combinant les forces des deux types de stratégie.

Analyse des avantages

  1. Combine les avantages des stratégies d'inversion et de surachat-survente - capturer les inversions à court terme tout en évitant les transactions en zone irrationnelle.

  2. Une logique simple et peu de paramètres rendent l'inversion 123 facile à mettre en œuvre.

  3. La combinaison améliore la fiabilité du signal en réduisant les faux signaux.

  4. L'ajustement flexible des paramètres permet d'adapter la stratégie aux différents marchés.

Analyse des risques

  1. Les stratégies d'inversion comportent picking up pennies risque et piqûre dans les marchés variés.

  2. L'optimisation du DSS est difficile et sensible aux paramètres.

  3. Les signaux divergents peuvent manquer des opportunités de trading.

  4. Des prix simples limitent la rentabilité.

Les solutions:

  1. Réduire les périodes de détention pour réduire le risque de piqûre.

  2. Un réglage minutieux des paramètres basé sur des exemples réussis.

  3. Ajoutez des filtres pour améliorer la stratégie.

  4. Optimiser le temps d'entrée ou la taille de la position.

Directions de renforcement

  1. Testez d'autres indicateurs d'inversion pour améliorer la précision du signal.

  2. Explorez d'autres indicateurs de surachat-survente comme le RSI.

  3. Ajoutez un stop loss pour verrouiller les profits et limiter les pertes.

  4. Optimiser les paramètres pour différents marchés.

  5. Considérez le réglage des paramètres dynamiques.

  6. Construire des modèles d'apprentissage automatique pour générer des signaux.

Conclusion

La stratégie sélective de chevauchement double offre à la fois une fonctionnalité d'allocation d'actifs et de trading de temps en combinant des stratégies de revers et de surachat. Elle présente des avantages tels que des paramètres flexibles, une logique simple et une mise en œuvre facile, filtrant efficacement les transactions bruyantes dans les zones irrationnelles. Mais des limitations existent comme les risques de renversement et les difficultés d'optimisation des paramètres. Les améliorations futures peuvent provenir de l'ajout de stop loss, d'optimisation des paramètres, de l'intégration d'apprentissage automatique, etc. Dans l'ensemble, elle fournit une solution de trading quantitative robuste.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 12/03/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
// Double Smoothed Stochastics (DSS) is designed by William Blaw. 
// It attempts to combine moving average methods with oscillator principles. 
//
// 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

DSSB(PDS, EMAlen,TriggerLen,Overbought,Oversold) =>
    pos = 0
    xPreCalc = ema(stoch(close, high, low, PDS), EMAlen)
    xDSS = ema(stoch(xPreCalc, xPreCalc, xPreCalc, PDS), EMAlen)
    xTrigger = ema(xDSS, TriggerLen)
    pos := iff(xTrigger < xDSS and xTrigger < Oversold, -1,
	         iff(xTrigger > xDSS and xTrigger > Overbought, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & DSS Bressert", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
PDS = input(10, minval=1)
EMAlen = input(9, minval=1)
TriggerLen = input(5, minval=1)
Overbought = input(80, minval=1)
Oversold = input(20, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDSS = DSSB(PDS, EMAlen,TriggerLen,Overbought,Oversold)
pos = iff(posReversal123 == 1 and posDSS == 1 , 1,
	   iff(posReversal123 == -1 and posDSS == -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