Stratégie de négociation de renversement à double confirmation

Auteur:ChaoZhang est là., Date: 2023-11-14 13:42:47 Je vous en prie.
Les étiquettes:

img

Résumé

La stratégie de trading de renversement à double confirmation combine le modèle de renversement 123 avec l'indicateur RSI stochastique pour créer un système de renversement moyen robuste.

La logique de la stratégie

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

  1. 123 Retour en arrière

Il utilise le modèle 123 pour identifier les renversements potentiels.

  • Long si la clôture < clôture précédente et clôture actuelle > clôture précédente et Stochastique lent de 9 jours < 50

  • Cours court si close > close précédent et close actuel < close précédent et 9-day Fast Stochastic > 50

Cela fournit un signal précoce d'inversions de prix.

  1. RSI stochastique

Il applique l'indicateur stochastique sur le RSI pour une confirmation supplémentaire:

  • Calculer le RSI avec la longueur 14

  • Calculer le stochastique du RSI, avec des longueurs 14, pour obtenir K

  • Prenez 3 jours SMA de K pour obtenir D

  • Si K est supérieur à 80, c'est long. Si K est inférieur à 20, c'est court.

Un échange n'est déclenché que si les deux parties sont d'accord.

Analyse des avantages

L'avantage principal de cette stratégie est la double confirmation, qui améliore la précision et réduit les échecs.

  1. L'inversion de la tendance permet de détecter rapidement l'inversion de tendance

  2. Le RSI stochastique confirme le signal de renversement

  3. La combinaison améliore le taux de victoire et réduit les faux signaux

  4. Les paramètres peuvent être optimisés pour différents marchés

  5. Mise en œuvre simple et propre pour le trading en direct

Analyse des risques

Quelques risques à prendre en considération pour cette stratégie:

  1. Le risque d'échec de l'inversion peut entraîner des pertes.

  2. Le risque d'optimisation des paramètres. Les mauvais paramètres conduisent à de mauvaises performances.

  3. Une optimisation excessive des données historiques.

  4. Risque de fréquence de négociation élevée. Plus de signaux peuvent augmenter les coûts.

  5. Risque d'erreur de codage, erreurs dans la logique de mise en œuvre.

Des solutions possibles:

  1. Utilisez une taille de position prudente pour limiter les pertes.

  2. Utilisez des méthodes d'optimisation de marche vers l'avant.

  3. Concentrez-vous sur la stabilité des paramètres, pas sur les rendements élevés.

  4. Adaptez les conditions pour réduire la fréquence des échanges.

  5. Testez la logique du code.

Des possibilités d'amélioration

La stratégie peut être améliorée dans les domaines suivants:

  1. Paramètres ajustés pour des marchés spécifiques.

  2. Ajout de filtres pour éviter les retours hâtifs.

  3. Incorporer des mécanismes de stop loss.

  4. Réduire la fréquence des échanges avec des filtres supplémentaires.

  5. Mise en œuvre de la dimensionnement dynamique de la position.

  6. Ajustement des coûts de transaction.

Conclusion

La stratégie d'inversion à double confirmation est un système stable et pratique pour l'inversion moyenne à court terme. Elle équilibre la sensibilité à la capture des inversions et la précision de la double confirmation. Avec une optimisation et des modifications appropriées, elle peut compléter efficacement un portefeuille de stratégie quantitative.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 03/08/2021
// 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 strategy used to calculate the Stochastic RSI
//
// 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


SRSI(lengthRSI,lengthStoch,smoothK,smoothD, TopBand,LowBand) =>
    pos = 0.0
    Source = close
    rsi1 = rsi(Source, lengthRSI)
    k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
    d = sma(k, smoothD)
    d_cross_80 = cross(d,TopBand) 
    pos := iff(k > TopBand, 1,
              iff(k < LowBand, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Stochastic RSI", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Stochastic RSI ----")
TopBand = input(80, step=0.01)
LowBand = input(20, step=0.01)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posSRSI = SRSI(lengthRSI,lengthStoch,smoothK,smoothD, TopBand,LowBand)
pos = iff(posReversal123 == 1 and posSRSI == 1 , 1,
	   iff(posReversal123 == -1 and posSRSI == -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