Stratégie de fusion sur deux voies pour capturer les tendances

Auteur:ChaoZhang est là., Date: 2023-11-06 11h49 et 41 min
Les étiquettes:

img

Résumé

Cette stratégie fusionne les sous-stratégies 123 Reversal et SMA Ergodic Oscillator pour former une stratégie de suivi de tendance avec filtrage de signal à double piste.

La logique de la stratégie

  1. 123 Stratégie d'inversion

Cette stratégie est tirée du système de la page 183 du livre d'Ulf Jensen Comment j'ai triplé mon argent sur le marché des contrats à terme. Elle appartient au type d'inversion. Lorsque le prix de clôture est supérieur à la clôture précédente pendant 2 jours consécutifs, et que la ligne lente du stochastique de 9 jours est inférieure à 50, passez long; lorsque le prix de clôture est inférieur à la clôture précédente pendant 2 jours consécutifs, et que la ligne rapide du stochastique de 9 jours est supérieure à 50, passez court.

  1. L'oscillateur ergodique SMA

Cet indicateur est similaire au TSI développé par William Blau, sauf que l'oscillateur SMA contient une ligne de signal.

Double confirmation: ouvrir des positions uniquement lorsque 123 Reversal et SMA Ergodic donnent des signaux dans le même sens.

Les avantages

  1. L'intégration de plusieurs indicateurs forme un mécanisme de confirmation double, qui peut filtrer efficacement les faux signaux.

  2. 123 La stratégie d'inversion juge les points de renversement potentiels à travers des modèles de bougies.

  3. Les paramètres de l'oscillateur ergodic SMA sont réglables pour optimisation sur différents produits et délais.

  4. En tant que stratégie globale de suivi des tendances, il peut suivre la tendance en continu pour capturer une forte dynamique.

Les risques

  1. L'intégration et l'équilibre entre les stratégies d'inversion et de tendance nécessitent une optimisation continue, sinon elle peut manquer des points tournants ou causer d'énormes pertes.

  2. Les stratégies d'inversion comportent des risques inhérents de faux échanges. Les paramètres doivent être ajustés pour réduire le taux d'échec.

  3. Les stratégies de suivi de tendance pure ne peuvent pas juger des renversements. Il existe des risques de perte potentiels. La taille de la position doit être réduite à temps pour éviter les risques.

  4. Les paramètres nécessitent une optimisation et des tests itératifs pour différents produits et délais. Ne les appliquez pas directement.

Améliorations

  1. Ajustez les paramètres de 123 Reversal pour réduire la fréquence des faux échanges.

  2. Ajuster les paramètres de l'oscillateur ergodique SMA pour optimiser la sensibilité de l'indicateur.

  3. Ajouter une stratégie de stop loss à la limite de perte par transaction.

  4. Incorporer d'autres indicateurs pour juger des éventuels renversements et réduire la taille de la position dans le temps.

  5. Paramètres d'essai sur différents produits pour améliorer la robustesse.

Résumé

Cette stratégie intègre les avantages des stratégies d'inversion et de tendance grâce à un mécanisme de confirmation double, formant un fort effet de suivi de tendance. Elle peut filtrer efficacement le bruit, suivre la tendance et capturer en permanence des opportunités de tendance de haute qualité. Pendant ce temps, certains risques de retrait existent. Les paramètres doivent être continuellement optimisés et contrôlés en utilisant le stop loss.


/*backtest
start: 2022-10-30 00:00:00
end: 2023-02-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 14/07/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
// The SMI Ergodic Indicator is the same as the True Strength Index (TSI) developed by 
// William Blau, except the SMI includes a signal line. The SMI uses double moving averages 
// of price minus previous price over 2 time frames. The signal line, which is an EMA of the 
// SMI, is plotted to help trigger trading signals. Adjustable guides are also given to fine 
// tune these signals. The user may change the input (close), method (EMA), period lengths 
// and guide values.
//
// 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


SMI_Erg(fastPeriod, slowPeriod,SmthLen, TopBand,LowBand) =>
    pos = 0.0
    xPrice = close
    xPrice1 = xPrice - xPrice[1]
    xPrice2 = abs(xPrice - xPrice[1])
    xSMA_R = ema(ema(xPrice1,fastPeriod),slowPeriod)
    xSMA_aR = ema(ema(xPrice2, fastPeriod),slowPeriod)
    xSMI = xSMA_R / xSMA_aR
    xEMA_SMI = ema(xSMI, SmthLen)
    pos:= iff(xEMA_SMI < LowBand, -1,
    	   iff(xEMA_SMI > TopBand, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & SMI Ergodic Oscillator", 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, "---- SMI Ergodic Oscillator ----")
fastPeriod = input(4, minval=1)
slowPeriod = input(8, minval=1)
SmthLen = input(3, minval=1)
TopBand = input(0.5, step=0.1)
LowBand = input(-0.5, step=0.1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posSMI_Erg = SMI_Erg(fastPeriod, slowPeriod,SmthLen, TopBand,LowBand )
pos = iff(posReversal123 == 1 and posSMI_Erg == 1 , 1,
	   iff(posReversal123 == -1 and posSMI_Erg == -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