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.
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.
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:
Les principaux risques de cette stratégie sont les suivants:
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.
Cette stratégie peut également être optimisée dans les aspects suivants:
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)