Les ressources ont été chargées... Je charge...

Stratégie de négociation dynamique adaptative basée sur des rendements logarithmiques standardisés

Auteur:ChaoZhang est là., Date: 2024-12-27 14h39 et 32h
Les étiquettes:Le SZISMARésultats de l'enquêteMaladie sexuellement transmissible

img

Résumé

Cette stratégie est un système de négociation adaptatif basé sur l'indice Shiryaev-Zhou (SZI). Elle identifie les conditions de marché de surachat et de survente en calculant des scores standardisés de rendements logarithmiques, visant à capturer les opportunités de renversement moyen.

Principes de stratégie

Le noyau de la stratégie est la construction d'un indicateur normalisé utilisant des propriétés statistiques de retour logarithmique.

  1. Calculer les rendements logarithmiques pour la normalisation
  2. Calcul de la moyenne mobile et de l'écart type à l'aide d'une fenêtre de 50 périodes
  3. Construire SZI: (retour logarithmique - moyenne de roulement) /déviation type de roulement
  4. Générer des signaux longs lorsque le SZI tombe en dessous de -2,0 et des signaux courts lorsque celui-ci dépasse 2,0
  5. Définir des niveaux de stop-loss de 2% et de profit de 4% en fonction du prix d'entrée

Les avantages de la stratégie

  1. Fondement théorique solide: basé sur des hypothèses de distribution log-normale avec un solide soutien statistique
  2. Une grande adaptabilité: les calculs des fenêtres tournantes s'adaptent aux changements dans les caractéristiques de volatilité du marché
  3. Contrôle complet du risque: la stratégie de stop-loss basée sur le pourcentage permet un contrôle précis du risque pour chaque transaction
  4. Visualisation conviviale: annotation claire des signaux de négociation et des niveaux de contrôle des risques sur les graphiques

Risques stratégiques

  1. Sensitivité des paramètres: les performances de la stratégie affectées de manière significative par le choix de la longueur et des seuils de la fenêtre mobile
  2. Dépendance de l'environnement du marché: peut générer de fréquents faux signaux sur les marchés en tendance
  3. Impact du glissement: les prix d'exécution réels peuvent s'écarter sensiblement des niveaux idéaux pendant les périodes volatiles
  4. Retard de calcul: le calcul en temps réel des indicateurs statistiques peut entraîner un retard de signal

Directions d'optimisation

  1. Limites dynamiques: envisager d'ajuster les seuils de signaux en fonction de la volatilité du marché
  2. Mélanges de temps multiples: Mettre en place des mécanismes de confirmation du signal sur plusieurs délais
  3. Filtrage de la volatilité: interrompre la négociation ou ajuster les positions pendant les périodes de volatilité extrême
  4. Confirmation du signal: ajouter du volume, du momentum et d'autres indicateurs auxiliaires pour la confirmation du signal
  5. Gestion des positions: mise en œuvre d'une dimensionnement dynamique des positions basé sur la volatilité

Résumé

Il s'agit d'une stratégie de trading quantitative construite sur des bases statistiques solides, capturant les opportunités de volatilité des prix grâce à des rendements logarithmiques standardisés. Les principales forces de la stratégie résident dans son adaptabilité et son contrôle complet des risques, bien qu'il reste encore une marge d'optimisation dans la sélection des paramètres et l'adaptation à l'environnement du marché.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Jalambi Paul model", overlay=true)

// Define the length for the rolling window
window = input.int(50, title="Window Length", minval=1)
threshold = 2.0 // Fixed threshold value
risk_percentage = input.float(1.0, title="Risk Percentage per Trade", step=0.1) / 100

// Calculate the logarithmic returns
log_return = math.log(close / close[1])

// Calculate the rolling mean and standard deviation
rolling_mean = ta.sma(log_return, window)
rolling_std = ta.stdev(log_return, window)

// Calculate the Shiryaev-Zhou Index (SZI)
SZI = (log_return - rolling_mean) / rolling_std

// Generate signals based on the fixed threshold
long_signal = SZI < -threshold
short_signal = SZI > threshold

// Plot the signals on the main chart (overlay on price)
plotshape(series=long_signal, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY", offset=-1)
plotshape(series=short_signal, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL", offset=-1)

// Strategy logic: Buy when SZI crosses below the negative threshold, Sell when it crosses above the positive threshold
if (long_signal)
    strategy.entry("Buy", strategy.long, comment="Long Entry")
    
if (short_signal)
    strategy.entry("Sell", strategy.short, comment="Short Entry")

// Calculate the stop loss and take profit levels based on the percentage of risk
stop_loss_pct = input.float(2.0, title="Stop Loss (%)") / 100
take_profit_pct = input.float(4.0, title="Take Profit (%)") / 100

// Set the stop loss and take profit levels based on the entry price
strategy.exit("Take Profit / Stop Loss", "Buy", stop=close * (1 - stop_loss_pct), limit=close * (1 + take_profit_pct))
strategy.exit("Take Profit / Stop Loss", "Sell", stop=close * (1 + stop_loss_pct), limit=close * (1 - take_profit_pct))

// Plot the stop loss and take profit levels for visualization (optional)
plot(stop_loss_pct != 0 ? close * (1 - stop_loss_pct) : na, color=color.red, linewidth=1, title="Stop Loss Level")
plot(take_profit_pct != 0 ? close * (1 + take_profit_pct) : na, color=color.green, linewidth=1, title="Take Profit Level")


Relationnée

Plus de