Stratégie de cyclisme du réseau de l'émetteur de signal

Auteur:ChaoZhang est là., Date: 2024-02-19 10:42:34 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie calcule le signal de prix lissé sur la base de la théorie du cybercycle proposée par Ehlers pour concevoir une stratégie de trading avec des signaux de trading lissés.

Principe de stratégie

  1. Lisser le signal de prix original src avec lissage de deuxième ordre pour obtenir le signal lissé.

  2. Calculer le cycle d'indicateur cyclique sur la base du signal lissé. cycle:= (1 -.5alpha) (1 - .5 alpha)(souple - 2douce [1] + douce [2]) + 2(1 - alpha)cycle[1] - (1 - alpha)(1 - alpha) * cycle [2]

    où α est le paramètre de lissage.

  3. Lisser exponentiellement l'indicateur cyclique avec lissage de premier ordre pour obtenir le signal final de trading. signal: = alpha2cycle + (1 - alpha2)détecteur de déchets [1]

    où α2 est le paramètre de lissage de premier ordre.

  4. Longue lorsque le signal traverse le signal [1]; courte lorsque le signal traverse le signal [1].

Analyse des avantages

  1. L'assouplissement de deuxième ordre du signal de prix peut filtrer efficacement le bruit à haute fréquence et rendre les signaux de trading plus fiables.

  2. L'application de la théorie du cybercycle d'Ehlers peut déterminer plus précisément le tournant des tendances du marché.

  3. Le lissage exponentiel de premier ordre filtre une partie du bruit de l'indicateur cyclique pour produire des signaux de trading plus fiables.

  4. L'ensemble du processus de la stratégie est raisonnable et scientifique, avec un grand espace d'optimisation des paramètres et d'excellentes performances réelles.

Analyse des risques

  1. Comme les autres stratégies d'indicateurs techniques, cette stratégie est également relativement sensible au risque systémique de marché.

  2. En raison de la complexité du processus de calcul, des paramètres mal réglés peuvent entraîner des retards de calcul, ce qui affecte les performances réelles.

  3. Le traitement de lissage conduit également à des signaux de négociation en retard, qui peuvent ne pas capturer les points tournants du marché à temps, ce qui fait perdre des opportunités.

Directions d'optimisation

  1. Différents types d'algorithmes de lissage peuvent être testés, tels que le lissage exponentiel de premier ordre, le lissage de la moyenne mobile, etc., pour trouver le schéma de lissage optimal.

  2. Un mécanisme de réglage adaptatif des paramètres peut être introduit pour ajuster dynamiquement les paramètres en fonction des conditions du marché afin d'améliorer la robustesse de la stratégie.

  3. Les stratégies d'arrêt des pertes et de prise de bénéfices peuvent être conçues pour réduire le risque d'une perte unique et pour verrouiller les bénéfices en même temps.

  4. Il peut être combiné avec d'autres modèles d'apprentissage automatique pour obtenir des portefeuilles de modèles et utiliser d'autres modèles pour filtrer les signaux de trading.

Résumé

Cette stratégie conçoit une stratégie de trading de signal de lissage du cycle cyber d'Ehlers grâce à l'assouplissement du signal de prix et au calcul de l'indicateur du cycle cyber d'Ehlers. Elle peut filtrer efficacement le bruit et générer des signaux de trading plus fiables.


/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Ehlers 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

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]

alpha2 = 1 / (lag + 1)
signal = na
signal := alpha2 * cycle + (1 - alpha2) * nz(signal[1])
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