Stratégie de cyclisme stochastique d' Ehlers

Auteur:ChaoZhang est là., Date: 2024-01-17 16h03h30
Les étiquettes:

img

Résumé

La stratégie de cyclisme stochastique d'Ehlers est une stratégie de trading quantitative qui génère des signaux de trading à l'aide de l'indicateur de cycle stochastique d'Ehlers.

La logique de la stratégie

Cette stratégie construit d'abord un indicateur de cycle lissé, puis construit une valeur d'indicateur stochastique basée sur cet indicateur.

Plus précisément, l'indicateur de cycle lissé est calculé comme suit:

smooth = (src + 2 * src[1] + 2 * src[2] + src[3]) / 6

où src est les données de prix d'entrée, telles que le prix de clôture.

Sur la base de cet indicateur lissé, le cycle stochastique peut ensuite être calculé:

cycle := (1 - .5 * alpha) * (1 - .5 * alpha) *  
           (smooth - 2 * smooth[1] + smooth[2]) +  
           2 * (1 - alpha) * cycle[1] -  
           (1 - alpha) * (1 - alpha) * cycle[2]

Cette formule de calcul contient la différence de deuxième ordre du signal périodique lissé et les valeurs des deux cycles précédents.

Enfin, une valeur de valeur aléatoire de 0 à 100 est calculée sur la base de cet indicateur de cycle.

Les avantages de la stratégie

Cette stratégie combine des indicateurs stochastiques et des indicateurs cycliques pour intégrer les avantages des deux. Par rapport aux stratégies de tendance simples telles que les moyennes mobiles, cette stratégie peut mieux saisir les opportunités cycliques et ainsi obtenir de meilleurs résultats.

Les principaux avantages sont les suivants:

  1. Les indicateurs cycliques permettent d'identifier les schémas cycliques, les indicateurs stochastiques offrent des opportunités de négociation
  2. La conception de deux indicateurs peut filtrer efficacement les faux signaux
  3. Paramètres personnalisables adaptés aux différents environnements du marché

Risques liés à la stratégie

Les principaux risques de cette stratégie sont les suivants:

  1. Des paramètres mal réglés peuvent entraîner des transactions fréquentes, augmenter les coûts de négociation et les coûts de dérapage
  2. Ne peut pas gérer efficacement les marchés avec des fluctuations de prix violentes, ce qui peut entraîner de grandes pertes
  3. Les indicateurs de cycle dépendent fortement du montage de la courbe, un montage incorrect peut générer de mauvais signaux

Les risques peuvent être maîtrisés en optimisant les paramètres, en fixant des points de stop-loss, en combinant d'autres indicateurs de filtrage, etc.

Directions d'optimisation

Cette stratégie peut également être optimisée dans les aspects suivants:

  1. Combiner avec d'autres indicateurs techniques de filtrage des signaux, tels que les bandes de Bollinger, le RSI, etc., pour réduire les faux signaux
  2. Ajouter des mécanismes de sortie adaptatifs, ajuster dynamiquement les points de stop loss en fonction de la volatilité du marché
  3. Utiliser des méthodes d'apprentissage automatique pour optimiser automatiquement les paramètres afin de s'adapter dynamiquement au marché
  4. Optimiser l'utilisation du capital par le biais d'un effet de levier, d'une composition et d'autres moyens

Conclusion

La stratégie de cyclisme cyber stochastique d'Ehlers intègre les avantages des indicateurs stochastiques et cycliques grâce à une conception de signal double pour contrôler efficacement les risques et peut obtenir de bons rendements sur les marchés à forte cyclicité.


/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Ehlers Stochastic Cyber Cycle Strategy",overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 1, commission_type = strategy.commission.percent, commission_value = 0.1)
src = input(hl2, title = "Source") 
alpha = input(.07, title = "Alpha")
lag = input(9, title = "Lag")
smooth = (src + 2 * src[1] + 2 * src[2] + src[3]) / 6
len = input(8, title = "Stochastic len")
cycle = na
if na(cycle[7])
    cycle := (src - 2 * src[1] + src[2]) / 4
else
    cycle := (1 - .5 * alpha) * (1 - .5 * alpha) * (smooth - 2 * smooth[1] + smooth[2]) + 2 * (1 - alpha) * cycle[1] - (1 - alpha) * (1 - alpha) * cycle[2]

value1 = stoch(cycle, cycle, cycle, len) / 100
value2 = 2 * ((4 * value1 + 3 * value1[1] + 2 * value1[2] + value1[3]) / 10 - 0.5)

signal = value2
oppositeTrade = input(true)
barsSinceEntry = 0
barsSinceEntry := nz(barsSinceEntry[1]) + 1
if strategy.position_size == 0
    barsSinceEntry := 0
if (crossover(signal, signal[1]) and not oppositeTrade) or (oppositeTrade and crossunder(signal, signal[1]))
    strategy.entry("Long", strategy.long)
    barsSinceEntry := 0
if (crossunder(signal, signal[1]) and not oppositeTrade) or (oppositeTrade and crossover(signal, signal[1]))
    strategy.entry("Short", strategy.short)
    barsSinceEntry := 0
if strategy.openprofit < 0 and barsSinceEntry > 8
    strategy.close_all()
    barsSinceEntry := 0
    
    
plot(0, title="ZeroLine", color=gray) 
plotSrc = signal
cyclePlot = plot(plotSrc, title = "CyberCycle", color = blue)
triggerPlot = plot(plotSrc[1], title = "Trigger", color = green)
fill(cyclePlot, triggerPlot, color = plotSrc < plotSrc[1] ? red : lime, transp = 50)

Plus de