Évasion élevée et faible pour les opérations quantitatives

Auteur:ChaoZhang est là., Date: 2023-11-10 11h09 et 28 min
Les étiquettes:

img

Résumé

La stratégie Fusion combine une stratégie de modèle d'inversion et une stratégie de rupture élevée et faible dans un système de négociation quantitatif.

La logique de la stratégie

La stratégie de fusion est composée de deux éléments:

  1. 123 Stratégie d'inversion Cette stratégie est née de l'idée de la page 183 du livre How I Triple My Money in the Futures Market par Ulf Jensen. Elle génère des signaux de trading en examinant la relation entre les prix de clôture des deux derniers jours et le jour précédent, ainsi que l'indicateur stochastique pour évaluer les conditions de marché de surachat et de survente.

  2. Stratégie de rupture à faible taux élevé Cette stratégie identifie les signaux de négociation en détectant les écarts de prix au-delà des niveaux hauts / bas précédents au cours de différentes périodes. Elle calcule le plus haut et le plus bas plus bas au cours des périodes actuelles et précédentes et génère des signaux d'achat lorsque le prix dépasse le plus haut et des signaux de vente lorsque le prix dépasse le plus bas.

La stratégie Fusion combine les signaux des deux stratégies ci-dessus et génère des signaux de trading réels uniquement lorsque les directions des signaux s'alignent.

Les avantages de la stratégie

  1. La synthèse multi-temps améliore la précision du signal L'intégration de schémas quotidiens et à plus long terme améliore la précision de la génération de signaux de négociation, évitant ainsi de se laisser distraire par les bruits de marché à court terme.

  2. Utilise pleinement le jugement de surachat/survente de Stochastique L'utilisation de l'indicateur Stochastic Slow empêche les achats désireux dans les zones de surachat. L'indicateur Stochastic Fast empêche les ventes désireuses dans les zones de survente. Les pertes inutiles sont réduites.

  3. Détecte rapidement les tendances, réduisant ainsi les occasions manquées La stratégie de rupture élevée et basse identifie l'initiation de la tendance dans des délais plus longs plus tôt, réduisant ainsi les opportunités de trading manquées.

  4. Optimisation flexible avec plusieurs sous-stratégies Avec plusieurs sous-stratégies, un espace d'optimisation énorme permet de régler les paramètres des sous-stratégies ou d'en introduire de nouvelles pour rendre la stratégie plus stable et fiable.

  5. Une logique simple et claire La structure et la logique simples rendent la stratégie facile à comprendre, modifier et maintenir à l'avenir.

Risques liés à la stratégie

  1. La synthèse de plusieurs délais provoque un décalage du signal Bien que la précision soit améliorée, la combinaison de signaux à travers les délais induit un retard et peut manquer des opportunités de trading à court terme.

  2. 123 modèles ne peuvent pas identifier des renversements de tendance sur des périodes plus longues La stratégie 123 de renversement ne porte que sur les derniers jours et omet les points clés de renversement dans des délais plus longs.

  3. Des paramètres incorrects peuvent provoquer de faux signaux. Un mauvais réglage des paramètres des périodes stochastique et de rupture pourrait entraîner des faux signaux excessifs.

  4. Résistance à l'excès Sans tenir compte des fondamentaux, la stratégie s'adapte mal aux événements du cygne noir.

Solution correspondante:

  1. Réduire correctement les périodes de calcul pour réduire le décalage.

  2. Essayez d'introduire des indicateurs ou des tendances à plus long terme comme filtres.

  3. Optimiser les paramètres et tester la robustesse de manière approfondie lors des retests.

  4. Considérez l'incorporation de facteurs fondamentaux pour le filtrage du signal.

Conseils pour optimiser

  1. Tester et optimiser les paramètres des sous-stratégies de robustesse.

  2. Incorporer des signaux supplémentaires tels que les fondamentaux, les flux de trésorerie, etc.

  3. Mettre en place un stop loss pour limiter la perte maximale par transaction.

  4. Paramètres de réglage précis pour des produits spécifiques afin d'améliorer leur adaptabilité.

  5. Aidez avec les modèles d'apprentissage automatique.

Conclusion

En résumé, la stratégie Fusion combine les avantages des indicateurs techniques multi-temporels, visant une génération de signal plus précise et rapide. Par rapport aux stratégies à indicateur unique, elle a une capacité de détection de tendance supérieure et une production de signal plus robuste. Mais elle souffre également de retards et d'une adaptabilité inadéquate aux événements extrêmes.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 25/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
// This script shows a high and low period value.
//    Width - width of lines
//    SelectPeriod - Day or Week or Month and etc.
//    LookBack - Shift levels 0 - current period, 1 - previous and etc. 
//
// 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

    
HLL(LookBack, SelectPeriod) =>
    pos = 0.0
    xHigh  = security(syminfo.tickerid, SelectPeriod, high[LookBack])
    xLow   = security(syminfo.tickerid, SelectPeriod, low[LookBack])
    vS1 = xHigh
    vR1 = xLow
    pos := iff(close > vR1, 1,
             iff(close < vS1, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & High and Low Levels", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
SelectPeriod = input(title="Resolution", type=input.resolution, defval="D")
LookBack = input(1,  minval=0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posHLL = HLL(LookBack, SelectPeriod)
pos = iff(posReversal123 == 1 and posHLL == 1 , 1,
	   iff(posReversal123 == -1 and posHLL == -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