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

Tendance à la suite d'une stratégie basée sur les signaux croisés OBV et MA

Auteur:ChaoZhang est là., Date: le 29 février 2024
Les étiquettes:VAB- Je vous en prie.SMA

img

Résumé

Cette stratégie, appelée OBVious MA Strategy: Trend Following Strategy Based on OBV and MA Crossover Signals, utilise le croisement entre l'indicateur de volume sur le solde (OBV) et les moyennes mobiles pour générer des signaux de trading.

Principes de stratégie

  1. Calculer la valeur de l'indicateur OBV: si le prix de clôture actuel est supérieur à celui de la bougie précédente, ajouter le volume actuel à OBV; sinon, soustraire le volume.
  2. Calculer quatre moyennes mobiles de la VAB: MA d'entrée à long terme, MA de sortie à long terme, MA d'entrée à court terme et MA de sortie à court terme.
  3. Générer des signaux de trading:
    • Lorsque l'OBV dépasse le long-term long entry MA et que le filtre de direction n'est pas réglé sur short, ouvrir une position longue.
    • Lorsque l'OBV dépasse la valeur de sortie à long terme (MA) à long terme, la position longue est fermée.
    • Lorsque l'OBV dépasse le seuil MA d'entrée courte à court terme et que le filtre de direction n'est pas réglé sur long, ouvrir une position courte.
    • Lorsque l'OBV dépasse la valeur de sortie courte à court terme, la position courte est fermée.
  4. Gestion des transactions: si un signal contraire est généré, la position initiale sera fermée avant d'ouvrir une nouvelle position.

Les avantages de la stratégie

  1. Utiliser pleinement les principaux signaux de tendance de l'OBV pour établir des positions au début d'une tendance.
  2. La séparation des MAs d'entrée et de sortie permet une optimisation indépendante du calendrier d'entrée et de sortie.
  3. La logique du code est simple et claire, facile à comprendre et à améliorer.
  4. L'introduction d'un filtre de direction peut éviter les échanges fréquents et réduire les coûts.

Risques stratégiques

  1. Il manque d'autres indicateurs de confirmation, ce qui peut générer de faux signaux.
  2. Il manque de stop-loss et de gestion de position, face au risque d'amplification des pertes sur une seule transaction.
  3. Une mauvaise sélection de paramètres affectera les performances de la stratégie.

Directions d'optimisation de la stratégie

  1. Il convient d'envisager l'introduction de filtres de tendance, tels que la direction MA, l'ATR, etc., pour améliorer la qualité du signal.
  2. Différents types de MAs peuvent être utilisés sur OBV, tels que EMA, WMA, etc., pour capturer les tendances de vitesses variables.
  3. Optimiser la gestion des positions, par exemple en utilisant une stratégie de mise à l'échelle pour ajouter des positions lorsque la force de la tendance augmente et réduire les positions lorsque celle-ci diminue.
  4. Combinez avec d'autres indicateurs de volume et de prix, tels que la TVA, le PVT, etc., pour construire des signaux conjoints pour améliorer les taux de gain.

Résumé

Cette stratégie démontre une méthode simple de suivi des tendances basée sur des croisements OBV et MA. Ses avantages sont une logique claire, une capture rapide des tendances et un contrôle flexible de la tenue par des MAs d'entrée et de sortie séparés. Cependant, ses inconvénients incluent un manque de mesures de contrôle des risques et de méthodes de confirmation des signaux. Des améliorations peuvent être apportées dans des domaines tels que le filtrage des tendances, l'optimisation des paramètres, la gestion de la position et les signaux conjoints pour obtenir une performance stratégique plus robuste.


/*backtest
start: 2023-04-23 00:00:00
end: 2024-04-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ThousandX_Trader

//@version=5
strategy(title="OBVious MA Strategy [1000X]", overlay=false, 
         initial_capital=10000, margin_long=0.1, margin_short=0.1,
         default_qty_type=strategy.percent_of_equity, default_qty_value=100,
         slippage=1, commission_type=strategy.commission.percent, commission_value=0.1)

// Direction Input ///
tradeDirection = input.string("long", title="Direction", options=["long", "short"], group = "Direction Filter")

    ///////////////////////////////////////
   //  1000X OBV MA INDICATOR           //
  ///////////////////////////////////////

// OBV Trend Length Inputs //
long_entry_length = input(190, title="Long Entry MA Length", group = "Moving Average Settings")
long_exit_length = input(202, title="Long Exit MA Length", group = "Moving Average Settings")
short_entry_length = input(395, title="Short MA Entry Length", group = "Moving Average Settings")
short_exit_length = input(300, title="Short Exit MA Length", group = "Moving Average Settings")

// OBV Calculation
obv = ta.cum(ta.change(close) >= 0 ? volume : -volume)

// Calculate OBV Moving Averages
obv_ma_long_entry = ta.sma(obv, long_entry_length)
obv_ma_long_exit = ta.sma(obv, long_exit_length)
obv_ma_short_entry = ta.sma(obv, short_entry_length)
obv_ma_short_exit = ta.sma(obv, short_exit_length)

   ///////////////////////////////////////
  //         STRATEGY RULES            //
 ///////////////////////////////////////

longCondition = ta.crossover(obv, obv_ma_long_entry) and tradeDirection != "short" and strategy.position_size <= 0
longExitCondition = ta.crossunder(obv, obv_ma_long_exit)
shortCondition = ta.crossunder(obv, obv_ma_short_entry) and tradeDirection != "long" and strategy.position_size >= 0
shortExitCondition = ta.crossover(obv, obv_ma_short_exit)

  ///////////////////////////////////////
 //         ORDER EXECUTION           //
///////////////////////////////////////

// Close opposite trades before entering new ones
if (longCondition and strategy.position_size < 0)
    strategy.close("Short Entry")

if (shortCondition and strategy.position_size > 0)
    strategy.close("Long Entry")

// Enter new trades
if (longCondition)
    strategy.entry("Long Entry", strategy.long)

if (shortCondition)
    strategy.entry("Short Entry", strategy.short)

// Exit conditions
if (longExitCondition)
    strategy.close("Long Entry")

if (shortExitCondition)
    strategy.close("Short Entry")

  ///////////////////////////////////////
 //            PLOTTING               //
///////////////////////////////////////

// Plot OBV line with specified color
plot(obv, title="OBV", color=color.new(#2962FF, 0), linewidth=1)

// Conditionally plot Long MAs with specified colors based on Direction Filter
plot(tradeDirection == "long" ? obv_ma_long_entry : na, title="Long Entry MA", color=color.new(color.rgb(2, 130, 228), 0), linewidth=1)
plot(tradeDirection == "long" ? obv_ma_long_exit : na, title="Long Exit MA", color=color.new(color.rgb(106, 168, 209), 0), linewidth=1)

// Conditionally plot Short MAs with specified colors based on Direction Filter
plot(tradeDirection == "short" ? obv_ma_short_entry : na, title="Short Entry MA", color=color.new(color.rgb(163, 2, 227), 0), linewidth=1)
plot(tradeDirection == "short" ? obv_ma_short_exit : na, title="Short Exit MA", color=color.new(color.rgb(192, 119, 205), 0), linewidth=1)


Relationnée

Plus de