Stratégie de négociation de la réversion décentralisée de Gauss

Auteur:ChaoZhang est là., Date: 2023-11-07 15h01 et 19h
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie qui identifie les renversements de prix potentiels en utilisant un oscillateur de prix décentralisé gaussien (GDPO) personnalisé combiné à des cycles de prix lissés.

La logique de la stratégie

La stratégie calcule d'abord l'oscillateur de prix décentralisé (DPO) en comparant le prix de clôture à une moyenne mobile exponentielle (EMA) sur une période spécifiée pour identifier les cycles de prix à court terme.

Les règles d'entrée et de sortie sont définies en fonction des événements de croisement entre le GDPO lissé et sa version retardée. Une position longue est entrée lorsque le GDPO lissé traverse le décalage et est négatif. La position longue est sortie lorsque le GDPO lissé traverse le décalage ou la ligne zéro. Une position courte est entrée lorsque le GDPO lissé traverse le décalage et est positif. La position courte est sortie lorsque le GDPO lissé traverse le décalage ou la ligne zéro.

La ligne zéro est également affichée comme référence. La couleur de fond du graphique change lorsque la stratégie entre dans une position. Les marqueurs croisés sont tracés aux points de croisement comme signaux de sortie.

Analyse des avantages

La stratégie combine des techniques de détente et de lissage gaussienne pour identifier plus clairement les opportunités d'inversion par rapport aux autres oscillateurs.

Analyse des risques

La stratégie est sensible à l'ajustement des paramètres tels que la longueur de la période et les paramètres de lissage. Un backtesting intensif est nécessaire pour déterminer les paramètres optimaux, sinon des faux signaux excessifs peuvent se produire. La stratégie peut produire des pertes consécutives sur les marchés tendance. Le stop loss doit être utilisé pour contrôler la perte d'un seul commerce. Les renversements échoués sont également un risque majeur. La probabilité d'inversion doit être confirmée en utilisant les modèles de graphique et la force de la tendance.

L'optimisation peut être effectuée en ajustant dynamiquement les paramètres et en incorporant des indicateurs de tendance pour améliorer la robustesse.

Directions d'optimisation

La stratégie peut être optimisée sous plusieurs aspects:

  1. Ajustez dynamiquement les paramètres de lissage pour augmenter le lissage des tendances et réduire les faux signaux.

  2. Incorporer des indicateurs de tendance tels que l'ADX pour éviter les pertes sur les marchés en tendance.

  3. Ajoutez des mécanismes de stop-loss comme les stops dynamiques ou de trailing.

  4. Optimiser les conditions d'entrée en utilisant des indicateurs ou des modèles supplémentaires pour une plus grande précision d'entrée.

  5. Optimiser la gestion des capitaux en ajustant la taille des positions et les arrêts en fonction des conditions du marché.

  6. Testez la stratégie sur différentes périodes, comme les données quotidiennes ou hebdomadaires.

Résumé

La stratégie d'inversion gaussienne décentralisée identifie les cycles à court terme en utilisant le PIBO et extrait des signaux avec un filtrage gaussien pour capturer les inversions en vertu de règles d'entrée et de sortie définies. Elle contrôle efficacement les risques de négociation d'inversion, mais nécessite une optimisation des paramètres et une validation de la tendance.


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

// This source code is subject to the terms of the Mozilla Public License 2.0
// © DraftVenture

//@version=5
strategy(title="Gaussian Detrended Reversion Strategy", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=15)

//Detrended Price Oscillator for price cycles
period_ = input.int(50, title="Price Length", minval=1)

barsback = period_/2 + 1
ma = ta.ema(close, period_)
dpo = close - ma[barsback]

// Rounded ALMA Calculations for gaussian smoothing
almaSource = dpo
almaWindowSize = input(title="Smoothing Length", defval=50)
lagLength = input(title="Lag Length", defval=25)
almaSmoothed = ta.alma(almaSource, almaWindowSize, 0.85, 6)
almaLag = almaSmoothed[lagLength]

// Reversion entry conditions
entryL = ta.crossover(almaSmoothed, almaLag) and almaSmoothed < 0
exitL = ta.crossunder(almaSmoothed, almaLag) or ta.crossunder(almaSmoothed, 0)
entryS = ta.crossunder(almaSmoothed, almaLag) and almaSmoothed > 0
exitS = ta.crossover(almaSmoothed, almaLag) or ta.crossover(almaSmoothed, 0)

// Long entry and exit
if entryL
    strategy.entry("Long", strategy.long)

if exitL
    strategy.close("Long")

// Short entry and exit
if entryS
    strategy.entry("Short", strategy.short)

if exitS
    strategy.close("Short")

// Plot the oscillator
plot(almaSmoothed, title="GDPO", color=color.green)
plot(almaLag, title="Lag", color=color.white)

hline(0, title="Zero Line", color=color.white)

bgcolor(entryL ? color.new(color.green, 40) : na)
bgcolor(entryS ? color.new(color.red, 40) : na)

plotshape(series=ta.crossunder(almaSmoothed, almaLag) or ta.crossunder(almaSmoothed, 0), style=shape.xcross, location=location.top, color=color.white, size=size.tiny)
plotshape(series=ta.crossover(almaSmoothed, almaLag) or ta.crossover(almaSmoothed, 0), style=shape.xcross, location=location.bottom, color=color.white, size=size.tiny)

//Strategy by KP

Plus de