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

Stratégie de suivi des tendances 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

基于OBV与MA交叉信号的趋势跟踪策略

Résumé

Cette stratégie est appelée OBVious MA Strategy, une stratégie de suivi de tendance basée sur l'intersection des signaux OBV et MA, qui consiste à utiliser l'indicateur OBV (On Balance Volume) pour générer des signaux de négociation. OBV peut fournir des signaux de tendance de pointe, utilisant l'OBV pour briser les moyennes mobiles comme conditions d'entrée et de sortie pour capturer les tendances.

Les principes stratégiques

  1. Calcul de 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 d'opérations actuel, sinon le volume d'opérations est diminué.
  2. Les quatre moyennes mobiles pour le calcul de l'OBV sont les suivantes: long cycle multi-entrée MA, long cycle multi-sortie MA, court cycle multi-entrée MA et court cycle multi-sortie MA.
  3. Il y a aussi une autre source d'information:
    • Lorsque l'OBV utilise des cycles plus longs pour effectuer plusieurs entrées MA et que le filtre de direction n'est pas vide, le remplacement est effectué.
    • Lorsque l'OBV porte des cycles plus longs pour faire plus de sorties sur MA, les positions sont plus plates.
    • Lorsque l'OBV utilise un cycle court pour effectuer une entrée vide MA et que le filtre directionnel ne fonctionne pas beaucoup, ouvrez le compartiment vide.
    • Lorsque l'OBV porte une courte période d'arrêt d'entraînement MA, le stockage est vide
  4. Gestion des transactions: si un signal inverse est généré, la position précédente est effacée avant d'ouvrir une nouvelle position.

Les avantages stratégiques

  1. Les signaux de tendance de l'OBV permettent de construire un stock en temps opportun dès le début de la tendance.
  2. L'entrée et la sortie MA sont séparées, ce qui permet d'optimiser indépendamment les heures d'entrée et de sortie.
  3. La logique du code est simple, claire, facile à comprendre et à améliorer.
  4. L'introduction d'un filtrage directionnel permet d'éviter les transactions fréquentes et réduit les coûts.

Risque stratégique

  1. L'absence d'autres indicateurs de confirmation peut produire de faux signaux.
  2. L'absence de gestion des pertes et des positions risque d'amplifier les pertes d'un seul coup. Des mesures raisonnables de gestion des pertes et des fonds peuvent être ajoutées.
  3. Une mauvaise sélection de paramètres peut affecter la performance de la stratégie. Des paramètres doivent être optimisés en fonction des différentes caractéristiques et cycles du marché.

Optimisation stratégique

  1. Vous pouvez essayer d'introduire des filtres de tendance, tels que la direction MA, ATR, etc., pour améliorer la qualité du signal.
  2. Il est possible d'utiliser différents types de MA sur l'OBV, tels que l'EMA, la WMA, etc., pour capturer les tendances des différentes vitesses.
  3. La gestion des positions peut être optimisée, par exemple en adoptant une stratégie d'augmentation et de diminution des positions, en augmentant les positions lorsque la tendance est forte et en diminuant les positions lorsque la tendance est faible.
  4. Il peut être combiné avec d'autres indicateurs de prix, tels que MVA, PVT, etc., pour construire des signaux conjoints afin d'améliorer les chances de gagner.

Résumé

Cette stratégie présente une méthode simple de suivi des tendances basée sur l'OBV et le croisement des MA. Les avantages sont qu'elle est logiquement claire et capte les tendances en temps opportun, et permet de contrôler les positions de manière flexible en séparant les MA entrants et sortants. Les inconvénients sont l'absence de mesures de contrôle des risques et de confirmation des signaux.


/*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)


Contenu lié

En savoir plus