Stratégie d'inversion bidirectionnelle

Auteur:ChaoZhang est là., Date: 2023-11-02 16:47:08 Je vous en prie.
Les étiquettes:

img

Résumé

La stratégie d'inversion bidirectionnelle est une stratégie de trading Bitcoin simple qui définit des ordres d'achat stop-loss basés sur la plage de trading du jour précédent.

La logique de la stratégie

La stratégie calcule d'abord la fourchette de négociation de la journée précédente, qui est le prix le plus élevé moins le prix le plus bas. Après l'ouverture de la journée en cours, elle juge si le prix est supérieur ou inférieur au prix de clôture de la journée précédente. Si elle est supérieure, le prix d'achat stop-loss est fixé au prix d'ouverture plus 0,6 fois la fourchette de la journée précédente. Si elle est inférieure, le prix d'achat stop-loss est fixé au prix d'ouverture plus 1,8 fois la fourchette de la journée précédente. La stratégie ouvrira une position longue lorsque le stop loss est déclenché et fermera la position avant la fin de la journée en cours.

Plus précisément, la stratégie contient deux règles d'entrée:

  1. Si le prix d'ouverture de la journée en cours est supérieur au prix de clôture de la journée précédente (longCond1 satisfait), et dans la fenêtre de temps de backtest (fenêtre() satisfaite, définissez un achat stop-loss au prix d'ouverture plus 0,6 fois la fourchette de la journée précédente (stratégie.long1).

  2. Si le prix d'ouverture de la journée en cours est inférieur au prix de clôture de la journée précédente (longCond2 satisfait), et dans la fenêtre de backtest, définir un achat stop-loss au prix d'ouverture plus 1,8 fois la fourchette de la journée précédente (stratégie.long2).

La stratégie ouvrira une position longue lorsque l'un des stop-loss ci-dessus est déclenché et fermera la position avant la fin de la journée en utilisant strategy.close_all (().

Analyse des avantages

La stratégie d'inversion bidirectionnelle présente les avantages suivants:

  1. Capture les mouvements d'inversion sans biais directionnel. La stratégie prend en compte à la fois la hausse et la baisse, capturant les ruptures d'inversion dans les deux sens.

  2. Risque contrôlable avec stop loss. Le stop loss prédéterminé limite efficacement la perte maximale par transaction.

  3. Éviter le risque du jour au lendemain en clôturant toutes les positions quotidiennement.

  4. Une fréquence de négociation plus élevée pour les transactions à court terme: la détention de positions pour une seule journée garantit une fréquence de négociation élevée.

  5. Une logique simple et claire, facile à comprendre et à mettre en œuvre.

Analyse des risques

Cependant, il y a aussi quelques risques à prendre en compte pour la stratégie:

  1. Si le stop loss est trop serré, il pourrait être arrêté prématurément dans des conditions de marché extrêmes.

  2. Une fréquence de négociation élevée peut entraîner des coûts de transaction importants. L'ouverture et la clôture quotidiennes de positions peuvent accumuler des commissions considérables.

  3. Les stops-losses ont tendance à être déclenchés plus fréquemment dans des conditions de frappe.

  4. La stratégie est plus adaptée aux renversements, incapable de capturer des bénéfices de la poursuite de la tendance.

Des possibilités d'amélioration

Certaines façons d'améliorer la stratégie:

  1. Optimiser la distance d'arrêt de perte. Tester différents niveaux d'arrêt pour trouver des points d'arrêt de perte optimaux. Considérez également des arrêts dynamiques basés sur la volatilité du marché.

  2. Ajoutez des filtres de tendance. Vérifiez les tendances sur des délais plus longs avant d'entrer pour éviter les transactions contre-tendance.

  3. Améliorez les règles d'entrée, et envisagez d'ajouter des indicateurs de volume ou de momentum pour augmenter la précision d'entrée.

  4. Mettre en place une gestion des positions, tester les arrêts de trail ou les tendances à la suite des sorties pour suivre les tendances rentables.

  5. La stratégie peut fonctionner mieux avec des produits à volatilité plus élevée.

  6. Utiliser des techniques d'apprentissage automatique. Optimiser des paramètres comme les arrêts et les entrées en utilisant des algorithmes ML.

Conclusion

Dans l'ensemble, la stratégie d'inversion bidirectionnelle est un concept de stratégie à court terme très simple et pratique. Elle peut capturer efficacement les opportunités d'inversion dans les mouvements à la fois à la hausse et à la baisse. Cependant, des risques tels que la distance de stop loss et les règles d'entrée doivent être optimisés pour réduire les risques et améliorer la robustesse.


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

//@version=2
strategy("Simple strat", shorttitle="Simple Strat", overlay=true)

// X001TK R1 strategy
//
// 
// This strategy combines the special approach in previous daily range trading
//
// This strategy goes long on stop buy order which is calculated as previous day range
// multiplied by special number.
//
// This pure strategy does not have any
// stop loss or take profit money management logic.
//
// Exit rule is simple. We close the position on market close or next day open
//
// 
// 
//
// Input
length = input(10, minval=1)
stopLossPercent=input(1.1,"Stop Loss Percent")
profitPercent=input(9,"Profit Percent")


// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2000)
ToMonth   = input(defval = 3, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2029, title = "To Year", minval = 2017)
ses_cls = input(defval=true, title="End of Session Close Out?")


// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"


// === STRATEGY ===
// conditions
longCond1 = close>close[1]
longCond2 = close<close[1]


strategy.entry("long1", strategy.long, when=longCond1==true and window()==true, stop=close+(high - low)*0.6)
strategy.entry("long2", strategy.long, when=longCond2==true and window()==true, stop=close+(high - low)*1.8)
strategy.close_all(when=ses_cls)

// === /STRATEGY ===

Plus de