Stratégie de suivi de tendance à double moyenne mobile


Date de création: 2024-01-24 11:28:57 Dernière modification: 2024-01-24 11:28:57
Copier: 1 Nombre de clics: 302
1
Suivre
1166
Abonnés

Stratégie de suivi de tendance à double moyenne mobile

Aperçu

La stratégie de suivi de tendance à deux lignes est une stratégie qui utilise une combinaison de moyennes mobiles rapides et moyennes mobiles lentes pour juger de la tendance du marché et émettre un signal de transaction lors d’un revirement de direction. La stratégie combine à la fois l’indicateur de la ligne de parité et l’indicateur de la chaîne de prix pour identifier la tendance, ce qui permet de filtrer efficacement le bruit du marché et de juger de la direction de la tendance.

Principe de stratégie

La stratégie de suivi de tendance à double équilibre utilise deux indicateurs de moyenne mobile: la moyenne mobile rapide (en 5 cycles) et la moyenne mobile lente (en 21 cycles). La moyenne rapide est utilisée pour générer un signal de transaction et la moyenne lente est utilisée pour déterminer la direction de la tendance du marché.

La stratégie utilise également deux canaux de prix, le premier avec un cycle de 21 canaux de prix et le second avec un cycle de 5 canaux de prix, correspondant au cycle de la moyenne.

Lors du jugement des signaux d’achat et de vente, la stratégie exige l’apparition de colonnes rouges successives (le nombre de colonnes que l’utilisateur peut régler) comme condition de filtrage supplémentaire. Cela évite l’émission de signaux erronés dans la zone de comptage.

Dans l’ensemble, la logique d’une stratégie de suivi de tendance en ligne à deux vitesses est la suivante:

  1. Utilisation des canaux de prix pour déterminer la direction des tendances à grande échelle
  2. Utilisez la moyenne rapide pour déterminer les tendances à court terme et émettre des signaux de négociation
  3. Combiné à un filtre à colonnes supplémentaire pour éviter les signaux erronés lors de l’ajustement

Il permet de filtrer efficacement le bruit et de déterminer la direction des tendances à travers plusieurs niveaux de jugement de tendances.

Analyse des avantages

Les avantages de la stratégie de suivi de tendance à deux lignes sont:

  1. L’utilisation d’un système bi-linéaire permet d’identifier efficacement les tendances et de déterminer les principales tendances
  2. La ligne moyenne rapide émet des signaux de négociation permettant de saisir en temps opportun un renversement de tendance.
  3. Les canaux de prix jugent les tendances à grande échelle et évitent d’être trompés par le bruit du marché à court terme
  4. Les conditions de filtrage de la colonne rouge/verte permettent de réduire la probabilité d’un signal erroné dans la zone de réglage
  5. Les paramètres de la stratégie peuvent être ajustés pour différents marchés afin d’améliorer la stabilité de la stratégie
  6. Vous pouvez ajouter une stratégie de stop loss pour contrôler efficacement le risque de chaque transaction.

Dans l’ensemble, la stratégie a une bonne stabilité globale et un excellent rendement dans les marchés à forte tendance.

Analyse des risques

Les stratégies de suivi de tendance bi-linéaire présentent également des risques, principalement:

  1. Il est facile de générer des signaux erronés lorsque le marché se calme sur une longue période, ce qui peut entraîner de petites pertes consécutives.
  2. Les paramètres de stratégie ne sont pas réglés à l’heure, les signaux de négociation peuvent être retardés et manquer le meilleur moment d’entrée
  3. Le risque d’une seule transaction est difficile à maîtriser en l’absence d’une stratégie de stop loss efficace.

En conséquence, les risques stratégiques peuvent être atténués par:

  1. Adaptation des conditions de filtrage de la colonne rouge/verte pour réduire la fréquence des transactions sur le marché de la consolidation
  2. Optimiser les paramètres de la ligne moyenne rapide pour assurer un signal de transaction en temps opportun
  3. Ajout d’une stratégie de stop-loss mobile ou de stop-loss en pourcentage et contrôle strict des pertes individuelles

Direction d’optimisation

Il y a encore de la place pour optimiser la stratégie de suivi de tendance en ligne à double équilibre, principalement dans les domaines suivants:

  1. Le stop-loss est automatiquement ajusté en fonction d’un indicateur de volatilité tel que l’ATR
  2. Optimiser automatiquement les paramètres de stratégie à l’aide de méthodes d’apprentissage automatique
  3. Ajout de modules pour les réseaux neuronaux qui déterminent la direction des tendances
  4. Une combinaison d’indicateurs et de conditions de filtrage pour construire un portefeuille stratégique

Ces orientations d’optimisation peuvent améliorer encore la stabilité, l’adaptabilité et l’intelligence des stratégies.

Résumer

La stratégie de suivi de tendance à double équilibre est une stratégie de suivi de tendance plus robuste dans l’ensemble. Elle combine l’indicateur d’équilibre et le canal de prix pour déterminer la direction et l’intensité de la tendance et envoyer un signal de transaction à la même vitesse. Les conditions supplémentaires de filtrage de la colonne permettent également d’éviter davantage de signaux erronés.

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

//@version=2
strategy(title = "Noro's Trend MAs Strategy v1.8", shorttitle = "Trend MAs str 1.8", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, "long")
needshort = input(true, "short")
needstops = input(false, "stops")
stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %")
useohlc4 = input(false, defval = false, title = "Use OHLC4")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
slowlen = input(21, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")
needbg = input(false, defval = false, title = "Need trend Background?")
needarr = input(false, defval = false, title = "Need entry arrows?")

src = useohlc4 == true ? ohlc4 : close
fastsma = ema(src, 5)

//PriceChannel 1
lasthigh = highest(src, slowlen)
lastlow = lowest(src, slowlen)
center = (lasthigh + lastlow) / 2

//PriceChannel 2
lasthigh2 = highest(src, fastlen)
lastlow2 = lowest(src, fastlen)
center2 = (lasthigh2 + lastlow2) / 2

//Trend
//ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0
//trend = low > ma and low[1] > ma[1] and low[2] > ma[2] ? 1 : high < ma and high[1] < ma[1] ? -1 : trend[1]

trend1 = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend1[1]
trend2 = low > center2 and low[1] > center2[1] ? 1 : high < center2 and high[1] < center2[1] ? -1 : trend1[1]
trend = trend1 == 1 and trend2 == 1 ? 1 : trend2 == -1 and trend2 == -1 ? -1 : trend[1]

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0
greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0

//Signals
up = trend == 1 and (low < center2 or usefastsma == false) and (redbars == 1) ? 1 : 0
dn = trend == -1 and (high > center2 or usefastsma == false) and (greenbars == 1) ? 1 : 0

//Lines
colorfastsma = usefastsma == true ? red : na
plot(fastsma, color = colorfastsma, title = "Fast MA")
plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA")
plot(center2, color = red, linewidth = 3, transp = 0, title = "PriceChannel 2")

//Arrows
plotarrow(up == 1 and needarr == true ? 1 : 0, colorup = black, colordown = black, transp = 0)
plotarrow(dn == 1 and needarr == true ? -1 : 0, colorup = black, colordown = black, transp = 0)

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 90)

//Alerts
alertcondition(up == 1, title='buy', message='Uptrend')
alertcondition(dn == 1, title='sell', message='Downtrend')

//Trading
stoplong = up == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1]
stopshort = dn == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1]

longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
    strategy.exit("Stop Long", "Long", stop = stoplong)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    strategy.exit("Stop Short", "Short", stop = stopshort)