Stratégie de négociation de l' élan

Auteur:ChaoZhang est là., Date: 2024-02-05 10:44:19 Je suis désolé
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie de trading d'intervalle quotidien basée sur des techniques de momentum utilisant des arrêts ATR. Elle a été créée par Kory Hoang de Stably.

La stratégie identifie la direction de la tendance à l'aide d'indicateurs de dynamique et définit des lignes de stop-loss basées sur l'ATR pour mettre en œuvre un swing trading à faible prix d'achat et à forte valeur de vente.

La logique de la stratégie

Le code définit d'abord la plage de temps de backtesting.

Ensuite, dans la section des indicateurs, les indicateurs suivants sont calculés:

  • atr ((): calculer l'ATR pour le stop loss;
  • max_/min_: prix le plus élevé/le plus bas de la barre précédente;
  • is_uptrend: évaluer si elle est en hausse;
  • Zobrazić: ligne de stop-loss;

La logique principale pour juger de la tendance est:

Si la clôture est supérieure à la ligne de stop-loss à la baisse précédente, elle est jugée comme une tendance haussière; si la clôture est inférieure à la ligne de stop-loss à la baisse précédente, elle est jugée comme une tendance à la baisse.

Lorsque la tendance change, ajustez la position de la ligne stop loss.

Plus précisément, dans une tendance haussière, la ligne d'arrêt-perte est réglée sur le prix le plus élevé de la barre précédente moins la valeur ATR; dans une tendance baissière, la ligne d'arrêt-perte est réglée sur le prix le plus bas de la barre précédente plus la valeur ATR.

Il s'agit de réaliser la tendance après le stop loss.

Dans la section "Règles de négociation", ouvrez des positions longues ou courtes lorsque le prix franchit la ligne de stop loss.

Analyse des avantages

Les avantages de cette stratégie:

  1. Jugez la direction de la tendance en utilisant des techniques de dynamique, détectez les points tournants en temps opportun et évitez les fausses ruptures.
  2. ATR stop loss trace le prix le plus élevé/le plus bas, peut bien contrôler le risque.
  3. Une logique stratégique simple et claire, facile à comprendre et à mettre en œuvre.
  4. Peut faire des transactions à bas prix entre les oscillations.

Analyse des risques

Il y a aussi des risques:

  1. Un paramètre ATR incorrect peut entraîner une perte d'arrêt trop lâche ou trop serrée.
  2. Des fléchettes violentes peuvent se produire dans des tendances variées, provoquant un stop loss consécutif.
  3. Une fréquence de négociation élevée, des commissions plus élevées.

Quelques optimisations:

  1. Testez différents paramètres ATR pour trouver le meilleur.
  2. Optimiser le stop loss en combinant des métriques de volatilité avec l'ATR.
  3. Ajoutez un filtre de tendance pour éviter les transactions inutiles pendant les marchés agités.

Directions d'optimisation

Quelques pistes pour optimiser cette stratégie:

  1. Testez différents paramètres ATR pour trouver l'optimum, testez plusieurs ensembles de paramètres et évaluez le rapport rendement/risque.

  2. Optimiser le stop loss en combinant des métriques de volatilité en plus de l'ATR. Ajouter des métriques de volatilité, détendre correctement le stop loss pendant les périodes de volatilité croissante.

  3. Ajouter des indicateurs de jugement de tendance, ne négocier que lorsque la tendance est claire.

  4. Ajustez la taille de la position en fonction du ratio d'utilisation du compte, des temps de stop loss consécutifs, etc.

  5. Ajoutez un contrôle du risque de déficit du jour au lendemain.

Conclusion

En tant que stratégie de trading quotidien de base, la logique générale est claire: elle juge la tendance avec des techniques de dynamique et utilise l'ATR pour suivre le stop loss, contrôlant efficacement le risque.

La stratégie de trading quantitative est une stratégie de trading quantitative qui permet d'optimiser la stratégie de trading quantitative et de l'améliorer.


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

//@version=2
strategy("BTC Swinger", overlay=true, commission_value = 0.25, default_qty_type=strategy.percent_of_equity, default_qty_value = 100)

/////////////////////////////////////////////////////////////
//START - SET DATE RANGE

// === BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2010, title = "From Year")
ToMonth   = input(defval = 12, title = "To Month", minval = 1)
ToDay     = input(defval = 31, title = "To Day", minval = 1)
ToYear    = input(defval = 2020, title = "To Year")

startDate = time > timestamp(FromYear, FromMonth, FromDay, 1, 1)
endDate = time < timestamp(ToYear, ToMonth, ToDay, 23, 59)
withinTimeRange = true

/////////////////////////////////////////////////////////////
//END - SET DATE RANGE



/////////////////////////////////////////////////////////////
//START - INDICATORS

length = input(3)
mult = input(1, minval = 0.01)
atr_ = atr(length)
max1 = max(nz(max_[1]), close)
min1 = min(nz(min_[1]), close)
is_uptrend_prev = nz(is_uptrend[1], true)
stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev = nz(vstop[1])
vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend = close - vstop1 >= 0
is_trend_changed = is_uptrend != is_uptrend_prev
max_ = is_trend_changed ? close : max1
min_ = is_trend_changed ? close : min1
vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? yellow : red, style=circles, linewidth=2)

/////////////////////////////////////////////////////////////
//END - INDICATORS



/////////////////////////////////////////////////////////////
//START - TRADING RULES
direction = input(defval=1, title = "Strategy Direction", minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

condition1 = close > vstop and withinTimeRange
condition2 = close < vstop and withinTimeRange

strategy.entry("BUY", strategy.long, when = condition1)
strategy.entry("SELL", strategy.short, when = condition2)

/////////////////////////////////////////////////////////////
//END - TRADING RULES

Plus de