La stratégie de négociation à double cycle de facteurs est une stratégie de négociation quantitative qui combine deux types d'indicateurs techniques différents pour générer des signaux de négociation et suivre les tendances du marché pour des rendements excédentaires.
L'avantage de cette stratégie est qu'elle peut trouver des opportunités de trading en combinant différents facteurs et la double confirmation peut améliorer la fiabilité du signal et réduire la probabilité de transactions erronées.
La stratégie se compose de deux parties:
123 Stratégie d'inversion
Cette stratégie provient du livre
Stratégie de soutien/résistance
Cette stratégie génère des signaux en jugeant si les prix franchissent les niveaux de support ou de résistance clés. Lorsque le prix franchit le prix le plus élevé de la journée de négociation précédente, il indique un signal haussier; lorsque le prix franchit le prix le plus bas de la journée de négociation précédente, il indique un signal baissier.
En combinant les signaux des deux stratégies ci-dessus, les positions ouvertes lorsque les deux signaux sont cohérents, autrement les positions claires.
Cette stratégie de négociation à double cycle de facteurs présente les avantages suivants:
La conception multifactorielle assure une fiabilité élevée du signal. La stratégie d'inversion 123 et la stratégie de support/résistance se vérifient mutuellement et peuvent réduire les signaux erronés.
Le mécanisme cyclique permet à la stratégie de s'adapter aux changements du marché et de contrôler efficacement les pertes unilatérales.
L'utilisation de l'indicateur Stochastique à 9 jours peut filtrer le bruit du marché et donner des signaux plus clairs.
Il est moins risqué que les stratégies à facteur unique et présente des retombées plus faibles.
Cette stratégie comporte également des risques:
Il est difficile de bien saisir les tendances sur les marchés latéraux, et les arrêts fréquents et les ouvertures inversées augmenteront les coûts de transaction.
Les paramètres de Stochastics affecteront la qualité du signal. Des paramètres incorrects peuvent entraîner un déplacement erroné du signal et une dégradation de la qualité. Les paramètres doivent être testés et optimisés à plusieurs reprises.
Bien que la conception à deux facteurs améliore la qualité du signal, elle augmente également l'impact du "bruit" du marché sur la stratégie.
Nous pouvons optimiser encore cette stratégie à partir des aspects suivants:
Test de stochastique de différentes longueurs de cycle pour trouver la combinaison optimale de paramètres permettant d'éliminer le bruit du marché
Ajouter un filtre de tendance pour filtrer les marchés latéraux et n'ouvrir que des positions dans des tendances claires
Optimiser l'algorithme de réglage de la ligne de stop loss pour réduire les coûts de transaction tout en assurant un stop loss efficace
Testez différentes combinaisons de facteurs pour trouver des combinaisons de facteurs avec des signaux de trading plus clairs et des stratégies plus stables
Grâce à la conception à double facteur, cette stratégie a obtenu une meilleure qualité de signal et des rendements ajustés au risque. Dans le même temps, l'utilisation du cycle de négociation contrôle efficacement les pertes sur le marché unilatéral. La stratégie a trouvé un bon équilibre entre risque et rendement. Des recherches plus approfondies sont encore nécessaires sur l'optimisation des paramètres, les paramètres de contrôle des risques, etc. pour obtenir de meilleures performances de la stratégie.
/*backtest start: 2023-11-04 00:00:00 end: 2023-12-04 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 13/11/2019 // 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 // Cueing Off Support And Resistance Levels, by Thom Hartle // modified by HPotter for trade signals. // The related article is copyrighted material from Stocks & Commodities. // // 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 COSRL(SigVal) => pos = 0.0 xLow = low xHigh = high xHighD = security(syminfo.tickerid,"W", high[1]) xLowD = security(syminfo.tickerid,"W", low[1]) sigpre1 = iff(xHigh <= xLowD, -1, iff(xLow >= xHighD, 1, nz(pos[1], 0))) sigpre2 = iff( xHigh <= xHighD, -1, iff(xLow >= xLowD, 1, nz(pos[1], 0))) pos := SigVal ? sigpre1 : sigpre2 pos strategy(title="Combo Backtest 123 Reversal & Cueing Off Support And Resistance 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) //------------------------- SigVal = input(true, title="To Line \ From Line") reverse = input(false, title="Trade reverse") posReversal123 = Reversal123(Length, KSmoothing, DLength, Level) posCOSRL = COSRL(SigVal) pos = iff(posReversal123 == 1 and posCOSRL == 1 , 1, iff(posReversal123 == -1 and posCOSRL == -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 )