Stratégie de trading quantitative basée sur l'inversion de la moyenne mobile du canal ATR


Date de création: 2023-12-11 15:38:25 Dernière modification: 2023-12-11 15:38:25
Copier: 3 Nombre de clics: 776
1
Suivre
1621
Abonnés

Stratégie de trading quantitative basée sur l’inversion de la moyenne mobile du canal ATR

Aperçu

Cette stratégie est une stratégie de simple surplus qui utilise la rupture du prix de la limite inférieure du canal ATR pour déterminer le moment d’entrée et la sortie avec la ligne moyenne du canal ATR ou la limite supérieure du canal ATR comme arrêt. En même temps, elle utilise également l’ATR pour calculer le prix d’arrêt.

Principe de stratégie

Lorsque le prix dépasse la limite inférieure du canal ATR, cela indique qu’il y a une baisse anormale du prix. À ce moment-là, la stratégie effectue une entrée supplémentaire lors de l’ouverture de la prochaine ligne K. Le prix d’arrêt est le prix d’entrée moins le coefficient d’arrêt ATR multiplié par ATR. Le prix d’arrêt est la ligne moyenne du canal ATR ou la limite du canal ATR.

Plus précisément, la stratégie est basée sur la logique suivante:

  1. Calculer la moyenne des ATR et des ATR
  2. Déterminer les conditions de filtrage temporel
  3. Les marqueurs peuvent effectuer des entrées supplémentaires lorsque les prix sont inférieurs à la limite inférieure du canal ATR.
  4. Je vais faire une entrée supplémentaire pour le prochain K-line.
  5. Le prix d’entrée
  6. Calculer le prix stop-loss
  7. Le placement est arrêté lorsque le prix est supérieur à la moyenne ou à la limite supérieure du canal ATR.
  8. Le prix est inférieur au prix de l’arrêt de la perte et le stop-loss s’éteint.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. Utilisation du canal ATR pour déterminer l’entrée et l’arrêt, plus fiable
  2. Il est important d’éviter de faire des gains et d’entrer en jeu seulement après une chute anormale.
  3. Des règles strictes de prévention des pertes et une maîtrise efficace des risques
  4. Pour les transactions rapides et courtes, il n’est pas nécessaire de conserver une position pendant une longue période.
  5. Des règles simples, faciles à appliquer et à optimiser

Analyse des risques

Cette stratégie comporte aussi des risques:

  1. Les frais de transaction et les risques de glissement liés aux transactions fréquentes
  2. Il peut y avoir une série de déclenchements de stop-loss.
  3. Une mauvaise optimisation des paramètres peut affecter l’efficacité de la stratégie
  4. Le stop loss peut être trop élevé lorsque le prix de l’indice fluctue fortement

Il est également important de choisir un courtier dont les frais de transaction sont moins élevés.

Direction d’optimisation

La stratégie peut également être optimisée pour:

  1. Ajout de filtres sur d’autres indicateurs pour éviter de rater les meilleurs moments d’entrée
  2. Optimiser les paramètres de cycle ATR
  3. Considérer la possibilité d’adhérer au mécanisme de réadmission
  4. Modification dynamique du stop loss
  5. Les règles de la tendance sont ajoutées afin d’éviter les entrées en contrepartie.

Résumer

La stratégie est globalement simple et pratique. Elle a des règles d’entrée claires, un mécanisme de stop-loss strict et une méthode de stop-loss parfaite. Elle offre également un espace d’optimisation pour l’ajustement de certains paramètres.

Code source de la stratégie
/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Bcullen175

//@version=5
strategy("ATR Mean Reversion", overlay=true, initial_capital=100000,default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=6E-5) // Brokers rate (ICmarkets = 6E-5)
SLx = input(1.5, "SL Multiplier", tooltip = "Multiplies ATR to widen stop on volatile assests, Higher values reduce risk:reward but increase winrate, Values below 1.2 are not reccomended")
src = input(close, title="Source")
period = input.int(10, "ATR & MA PERIOD")
plot(open+ta.atr(period))
plot(open-ta.atr(period))
plot((ta.ema(src, period)), title = "Mean", color=color.white)

i_startTime     = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime       = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")

// Check filter(s)
f_dateFilter = true

atr = ta.atr(period)

// Check buy/sell conditions
var float buyPrice = 0
buyCondition    = low < (open-ta.atr(period)) and strategy.position_size == 0 and f_dateFilter
sellCondition   = (high > (ta.ema(close, period)) and strategy.position_size > 0 and close < low[1]) or high > (open+ta.atr(period))
stopDistance    = strategy.position_size > 0 ? ((buyPrice - atr)/buyPrice) : na
stopPrice       = strategy.position_size > 0 ? (buyPrice - SLx*atr): na
stopCondition   = strategy.position_size > 0 and low < stopPrice

// Enter positions
if buyCondition
    strategy.entry(id="Long", direction=strategy.long)

if buyCondition[1]
    buyPrice := open

// Exit positions
if sellCondition or stopCondition
    strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
    buyPrice := na

// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)