Stratégie combinée d'inversion et de flux de trésorerie

Auteur:ChaoZhang est là., Date: 2023-09-17 22h37 et 54 min
Les étiquettes:

Cette stratégie combine 123 modèles de renversement et un indicateur de flux de trésorerie pour identifier les renversements de tendance.

La logique de la stratégie

Tout d'abord, 123 modèles d'inversion sont utilisés pour détecter les points de renversement potentiels. Plus précisément, un signal d'achat est généré lorsque les prix se ferment dans les deux premiers jours, puis se ferment le troisième jour, avec un oscillateur stochastique en dessous du seuil. Un signal de vente est généré lorsque les prix se ferment dans les deux premiers jours, puis se ferment le troisième jour, avec un oscillateur stochastique au-dessus du seuil.

Deuxièmement, les lignes rapides et lentes de l'indicateur de flux d'argent sont calculées. La ligne rapide se compose de la moyenne mobile exponentielle à courte période du flux d'argent, tandis que la ligne lente est l'EMA à plus longue période. Lorsque la ligne rapide est au-dessus de la ligne lente, elle indique l'afflux d'argent et génère un signal d'achat.

Enfin, lorsque les signaux 123 d'inversion et de flux de trésorerie sont en accord, un signal de trading est généré.

Analyse des avantages

  • La combinaison de plusieurs signaux améliore la fiabilité.
  • 123 les renversements détectent des points tournants et les flux de trésorerie indiquent les flux de fonds.
  • Les paramètres peuvent être ajustés pour différents produits et délais.
  • Les signaux individuels peuvent également être utilisés indépendamment.

Analyse des risques

  • Les retours en arrière peuvent générer de faux signaux.
  • Le flux de trésorerie a un effet de retard, incapable de saisir les points tournants en temps opportun.
  • Une logique complexe avec plusieurs signaux combinés.
  • J'ai besoin de régler les paramètres pour éviter le sur-trading.

Les risques peuvent être gérés en améliorant la fiabilité de l'inversion, en ajustant la sensibilité des flux de trésorerie, en mettant en œuvre un stop loss, etc.

Directions d'optimisation

  • Testez différents ensembles de paramètres pour trouver des valeurs optimales.
  • Ajuster les seuils d'achat/de vente pour réduire les transactions incorrectes.
  • Ajouter d'autres indicateurs techniques pour améliorer la qualité du signal.
  • Mettre en œuvre un stop loss pour contrôler les pertes d'une seule transaction.
  • Optimiser les stratégies de gestion de l'argent pour gérer le risque global.

Conclusion

La stratégie intègre les avantages de l'inversion du trading et du suivi des tendances. Elle peut identifier efficacement les points tournants du marché. Cependant, l'ajustement des paramètres et le contrôle des risques sont nécessaires pour éviter de trop faux signaux lors du suivi des tendances. Si elle est utilisée correctement, elle peut devenir une stratégie de trading efficace.


/*backtest
start: 2023-08-17 00:00:00
end: 2023-09-16 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 24/02/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
//    Indicator plots Money Flow Indicator (Chaikin). This indicator looks 
//    to improve on Larry William's Accumulation Distribution formula that 
//    compared the closing price with the opening price. In the early 1970's, 
//    opening prices for stocks stopped being transmitted by the exchanges. 
//    This made it difficult to calculate Williams' formula. The Chaikin 
//    Oscillator uses the average price of the bar calculated as follows 
//    (High + Low) /2 instead of the Open.
//    The indicator subtracts a 10 period exponential moving average of the 
//    AccumDist function from a 3 period exponential moving average of the 
//    AccumDist function.  
//
// 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


MFI(Fast,Slow) =>
    pos = 0.0
    lenMax = max(Fast, Slow)
    lenMin = min(Fast, Slow)
    xDiv = (high - low) * volume
    SumMax = sum(iff(xDiv > 0, (close - open) / (high - low) * volume , 0) , lenMax)
    SumMin = sum(iff(xDiv > 0, (close - open) / (high - low) * volume , 0) , lenMin)
    emaMax = ema(SumMax, lenMax)
    emaMin = ema(SumMin, lenMin)
    nRes = emaMax - emaMin
    pos:= iff(nRes > 0, 1,
           iff(nRes < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Money Flow Indicator", 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, "---- Money Flow ----")
Fast = input(3, minval=1)
Slow = input(10, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMFI = MFI(Fast,Slow)
pos = iff(posReversal123 == 1 and posMFI == 1 , 1,
	   iff(posReversal123 == -1 and posMFI == -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