Stratégie combinée de l'oscillateur 123 inversion et fractal chaos

Auteur:ChaoZhang est là., Date: 2023-11-02 16:43:41 Je suis désolé
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie combinée qui combine la stratégie 123 Reversal et la stratégie Fractal Chaos Oscillator pour obtenir des signaux de trading plus fiables.

La logique de la stratégie

La stratégie se compose de deux parties:

  1. 123 Stratégie d'inversion

    Cette stratégie est tirée du livre Comment j'ai triplé mon argent dans le marché des contrats à terme par Ulf Jensen, page 183.

    • Passez long lorsque le prix de clôture est supérieur au prix de clôture précédent pendant 2 jours consécutifs et que le stock lent de 9 jours est inférieur à 50.

    • Allez court lorsque le prix de clôture est inférieur au prix de clôture précédent pendant 2 jours consécutifs, et que le stock rapide de 9 jours est supérieur à 50.

  2. Stratégie de l'oscillateur de chaos fractal

    Le FCO calcule la différence entre les mouvements les plus subtils du marché. Sa valeur fluctue entre -1 et 1. Plus la valeur est élevée, plus la tendance est forte, peu importe la tendance haussière ou baissière.

    Cette valeur est utilisée pour les transactions intraday.

Lorsque les signaux des deux stratégies s'accordent, un échange sera effectué dans cette direction.

Analyse des avantages

  • La combinaison des stratégies d'inversion et de tendance aide à filtrer les faux signaux et améliore la fiabilité.

  • La stratégie d'inversion capte les opportunités d'inversion à court terme, tandis que la stratégie du FCO capte les tendances à moyen et long terme.

  • Les paramètres Stoch optimisés filtrent efficacement les faux signaux sur les marchés à fourchette.

  • Le FCO est sensible aux fluctuations subtiles du marché et peut détecter rapidement les changements de tendance.

Risques et solutions

  • Les stratégies d'inversion peuvent être submergées par d'énormes retours de tendance.

  • Les stratégies d'indicateur peuvent générer des signaux excessifs.

  • Optimiser les paramètres basés sur les résultats des backtests pour améliorer la coopération.

  • Ajouter un stop loss pour contrôler les pertes d'une seule transaction.

Directions d'optimisation

  • Testez différentes combinaisons de paramètres d'inversion pour trouver le meilleur.

  • Testez différents paramètres du FCO pour trouver le meilleur.

  • Essayez différentes méthodes d'optimisation des paramètres comme les algorithmes génétiques, la forêt aléatoire, etc.

  • Ajouter des indicateurs auxiliaires à d'autres signaux filtrants.

  • Ajouter des modèles d'apprentissage automatique pour améliorer la précision du signal.

  • Mettre en place des mécanismes de gestion des risques tels que le stop loss, la taille des positions, etc.

Résumé

Cette stratégie combine les atouts des stratégies d'inversion et de FCO grâce à l'utilisation du portefeuille et améliore la qualité du signal. Elle montre de bonnes performances dans les backtests. Des optimisations supplémentaires telles que le réglage des paramètres, l'ajout d'indicateurs, la gestion des risques, etc. peuvent améliorer ses performances en direct. Dans l'ensemble, il s'agit d'une stratégie innovante qui mérite d'être étudiée et appliquée.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 07/10/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
//   The value of Fractal Chaos Oscillator is calculated as the difference between 
// the most subtle movements of the market. In general, its value moves between 
// -1.000 and 1.000. The higher the value of the Fractal Chaos Oscillator, the 
// more one can say that it follows a certain trend – an increase in prices trend, 
// or a decrease in prices trend.
//
//   Being an indicator expressed in a numeric value, traders say that this is an 
// indicator that puts a value on the trendiness of the markets. When the FCO reaches 
// a high value, they initiate the “buy” operation, contrarily when the FCO reaches a 
// low value, they signal the “sell” action. This is an excellent indicator to use in 
// intra-day trading.
//
// 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

fractalUp(pattern) =>
    p = high[pattern+1]
    okl = 1
    okr = 1
    res = 0.0
	for i = pattern to 1
		okl := iff(high[i] < high[i+1] and okl == 1 , 1, 0)
	for i = pattern+2 to pattern*2+1
		okr := iff(high[i] < high[i-1] and okr == 1, 1, 0)
	res := iff(okl == 1 and okr == 1, p, res[1])
    res

fractalDn(pattern) =>
    p = low[pattern+1]
    okl = 1
    okr = 1
    res = 0.0
	for i = pattern to 1
		okl := iff(low[i] > low[i+1] and okl == 1 , 1, 0)
	for i = pattern+2 to pattern*2+1
		okr := iff(low[i] > low[i-1] and okr == 1, 1, 0)
	res := iff(okl == 1 and okr == 1, p, res[1])
    res

FCO(Pattern) =>
    pos = 0.0
    xUpper = fractalUp(Pattern) 
    xLower = fractalDn(Pattern)
    xRes = iff(xUpper != xUpper[1], 1, 
             iff(xLower != xLower[1], -1, 0))
    pos := iff(xRes == 1, 1,
             iff(xRes == -1, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Fractal Chaos Oscillator", shorttitle="Combo", overlay = true)
Length = input(15, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Pattern = input(1, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posFCO = FCO(Pattern)
pos = iff(posReversal123 == 1 and posFCO == 1 , 1,
	   iff(posReversal123 == -1 and posFCO == -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