Stratégie de suivi de tendance basée sur les signaux de croisement OBV et MA

OBV MA SMA
Date de création: 2024-04-29 13:48:58 Dernière modification: 2024-04-29 13:48:58
Copier: 0 Nombre de clics: 802
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance basée sur les signaux de croisement OBV et MA

Aperçu

Cette stratégie est appelée “stratégie de suivi de tendance basée sur les signaux croisés OBV et MA”, et son cœur consiste à utiliser l’indicateur OBV (On Balance Volume) et la croisée de la moyenne mobile pour générer un signal de négociation. OBV peut fournir un signal de tendance de pointe, cette stratégie utilise OBV pour percer la moyenne mobile comme condition d’entrée et d’exit pour capturer la tendance.

Principe de stratégie

  1. Calculer la valeur de l’indicateur OBV: si le prix de clôture actuel est supérieur à la ligne K précédente, l’OBV est ajouté au volume de transactions actuel, sinon le volume de transactions est soustrait.
  2. Les quatre moyennes mobiles de l’OBV sont calculées comme suit: MA pour les périodes longues avec des entrées multiples, MA pour les périodes longues avec des sorties multiples, MA pour les périodes courtes avec des entrées nulles et MA pour les périodes courtes avec des sorties nulles.
  3. Les signaux de transaction sont générés:
    • Ouvrir une position de plus lorsque le MA est en cours sur un OBV et que le filtre de direction n’est pas en place
    • Lorsque l’OBV fait plus de sorties MA dans le cycle long, la position plus égale
    • Lorsque l’OBV a un MA de vide d’entrée de courtes périodes et que le filtre de direction ne fait pas grand-chose, ouvrez la réserve
    • Lorsque l’OBV est à court-circuit et qu’il est à court-circuit, la position est à vide.
  4. Gestion de la transaction: Si un signal de revers se produit, les positions existantes sont effacées et de nouvelles positions sont créées.

Avantages stratégiques

  1. Le système d’exploitation de l’OBV permet d’exploiter les signaux de tendance en amont et de construire une position en temps opportun au début de la tendance.
  2. Le temps d’entrée et de sortie peut être optimisé indépendamment en séparant les MA entrants et sortants.
  3. La logique du code est simple et claire, facile à comprendre et à améliorer.
  4. L’introduction de filtres directionnels permet d’éviter les transactions fréquentes et de réduire les coûts.

Risque stratégique

  1. L’absence d’autres indicateurs de confirmation peut générer de faux signaux. Il est recommandé d’utiliser le signal en combinaison avec d’autres indicateurs.
  2. Le manque de gestion des stop-loss et des positions risque d’accroître les pertes individuelles. Des mesures de stop-loss et de gestion des fonds raisonnables peuvent être ajoutées.
  3. Le mauvais choix des paramètres peut affecter la performance de la stratégie. Il est nécessaire d’optimiser les paramètres en fonction des caractéristiques et des cycles différents du marché.

Orientation de l’optimisation de la stratégie

  1. On peut essayer d’introduire des filtres de tendance, tels que la direction MA, ATR, etc., pour améliorer la qualité du signal.
  2. Différents types d’AM, tels que les AME, les AMW, etc., peuvent être utilisés sur les OBV pour capturer les tendances de différentes vitesses.
  3. Il est possible d’optimiser la gestion des positions, par exemple en adoptant une stratégie de prise et de retrait des positions, en augmentant les positions lorsque la tendance augmente et en diminuant les positions lorsque la tendance diminue.
  4. Il est possible de combiner d’autres indicateurs de valeur, tels que MVA, PVT, etc., pour construire un signal combiné afin d’améliorer le taux de victoire.

Résumer

Cette stratégie présente une méthode simple de suivi de la tendance basée sur le croisement des OBV et des MA. L’avantage est la clarté logique, la capacité à capturer la tendance en temps opportun et le contrôle flexible de la position par la séparation des MA entrants et sortants.

Code source de la stratégie
/*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)