Stratégie de suivi de tendance à trois moyennes mobiles


Date de création: 2024-02-02 17:30:09 Dernière modification: 2024-02-02 17:30:09
Copier: 1 Nombre de clics: 567
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance à trois moyennes mobiles

Aperçu

Cette stratégie, appelée “Lightning Trimmer”, est une stratégie de suivi de tendance basée sur trois moyennes mobiles. Elle détermine la tendance des prix en calculant un croisement de la ligne rapide, la ligne moyenne et la ligne lente, et définit un prix cible et un prix d’arrêt avec des valeurs ATR.

Principe de stratégie

La stratégie utilise les trois moyennes mobiles suivantes:

  1. Les moyennes mobiles pondérées à 13 jours sont utilisées pour déterminer les tendances à court terme.
  2. Moyenne mobile à 55 jours utilisée pour déterminer les tendances à moyen terme
  3. La moyenne mobile simple à 110 jours est utilisée pour déterminer les tendances à long terme.

Lorsque la ligne rapide traverse la ligne moyenne, la ligne moyenne traverse la ligne lente, elle est considérée comme une tendance multiple; lorsque la ligne rapide traverse la ligne moyenne, la ligne moyenne traverse la ligne lente, elle est considérée comme une tendance à vide.

Pour filtrer une partie du bruit des transactions, la stratégie met en place plusieurs conditions complémentaires:

  1. Les cinq premiers points bas de la ligne K sont au-dessus de la ligne médiane.
  2. Les 2 premières lignes K ont des points bas et baissent la ligne médiane
  3. La première ligne K se termine au-dessus de la ligne médiane

Lorsque ces conditions sont remplies, un signal de prise de plus ou de moins est émis. Une position peut être ouverte à nouveau après une seule prise de position, une position nulle ou une perte.

Le prix cible et le prix stop sont définis en fonction d’un certain nombre de multiples de la valeur ATR.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. L’utilisation d’une combinaison de trois moyennes mobiles pour juger de la tendance évite la probabilité d’une erreur de jugement sur un seul indicateur.
  2. La mise en place de plusieurs conditions auxiliaires pour filtrer les transactions de bruit permet d’améliorer la qualité du signal.
  3. ATR est un système de stop-loss dynamique qui permet de maîtriser les pertes individuelles.

Analyse des risques

La stratégie présente également les risques suivants:

  1. Les combinaisons de moyennes mobiles peuvent émettre des signaux erronés et nécessitent un retour d’expérience adéquat.
  2. Un mauvais réglage du multiplicateur ATR peut entraîner une perte de frein trop légère ou trop stricte.
  3. Les prix sont en train d’exploser, et il n’y a pas de filtres efficaces pour filtrer les événements inattendus.

Afin de contrôler le risque, il est recommandé d’ajuster les paramètres de la moyenne mobile, d’optimiser le multiplicateur ATR et de définir un temps de détention maximal pour éviter une perte unique excessive.

Direction d’optimisation

Cette stratégie peut être optimisée dans les domaines suivants:

  1. Tester des moyennes mobiles de différentes longueurs ou types.
  2. Paramètres d’optimisation des conditions auxiliaires
  3. Essayez d’utiliser d’autres indicateurs comme le MACD, le DMI, etc.
  4. Les indicateurs de capacité de fusion comme le volume de transactions, les écarts de prix et les signaux de filtrage.

Résumer

Cette stratégie est une stratégie de suivi de tendance stable dans son ensemble. Elle repose principalement sur la direction de la tendance de la moyenne mobile, et a un certain ensemble d’indicateurs techniques pour l’aider à filtrer une partie du bruit. Bien qu’il y ait encore de la place pour une optimisation supplémentaire, le risque global est contrôlable et convient à l’investissement dans la tendance de la ligne moyenne longue.

Code source de la stratégie
/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 2h
basePeriod: 15m
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/
// © greenmask9

//@version=4
strategy("Dazzling Bolts", overlay=true)
//max_bars_back=3000

// 13 SMMA
len = input(10, minval=1, title="SMMA Period")
src = input(close, title="Source")
smma = 0.0
smma := na(smma[1]) ? sma(src, len) : (smma[1] * (len - 1) + src) / len

// 55 EMA
emalength = input(55, title="EMA Period")
ema = ema(close, emalength)

// 100 SMA
smalength = input(110, title="SMA Period")
sma = sma(close, smalength)

emaforce = input(title="Force trend with medium EMA", type=input.bool, defval=true)
offsetemavalue = input(defval = 6)

bullbounce = smma>ema and ema>sma and low[5]>ema and low[2]<ema and close[1]>ema and (ema[offsetemavalue]>sma or (not emaforce))
bearbounce = smma<ema and ema<sma and high[5]<ema and high[2]>ema and close[1]<ema and (ema[offsetemavalue]<sma or (not emaforce))
plotshape(bullbounce,  title= "Purple", location=location.belowbar, color=#ff33cc, transp=0, style=shape.triangleup, size=size.tiny, text="Bolts")
plotshape(bearbounce,  title= "Purple", location=location.abovebar, color=#ff33cc, transp=0, style=shape.triangledown, size=size.tiny, text="Bolts")
strategy.initial_capital = 50000
ordersize=floor(strategy.initial_capital/close)
longs = input(title="Test longs", type=input.bool, defval=true)
shorts = input(title="Test shorts", type=input.bool, defval=true)
atrlength = input(title="ATR length", defval=12)
atrm = input(title="ATR muliplier",type=input.float, defval=2)
atr = atr(atrlength)

target = close + atr*atrm
antitarget = close - (atr*atrm)

//limits and stop do not move, no need to count bars from since

bullbuy = bullbounce and longs and strategy.opentrades==0
bb = barssince(bullbuy)
bearsell = bearbounce and shorts and strategy.opentrades==0
bs = barssince(bearsell)

if (bullbuy)
    strategy.entry("Boltsup", strategy.long, ordersize)
    strategy.exit ("Bolts.close", from_entry="Boltsup", limit=target, stop=antitarget)
if (crossover(smma, sma))
    strategy.close("Boltsup", qty_percent = 100, comment = "Bolts.crossover")

if (bearsell)
    strategy.entry("Boltsdown", strategy.short, ordersize)
    strategy.exit("Bolts.close", from_entry="Boltsdown", limit=antitarget, stop=target)
if (crossunder(smma, sma))
    strategy.close("Boltsdown", qty_percent = 100, comment = "Bolts.crossover")

// if (bb<5)
//     bulltarget = line.new(bar_index[bb], target[bb], bar_index[0], target[bb], color=color.blue, width=2)
//     bullclose = line.new(bar_index[bb], close[bb], bar_index[0], close[bb], color=color.blue, width=2)
//     bullstop = line.new(bar_index[bb], antitarget[bb], bar_index[0], antitarget[bb], color=color.blue, width=2)
// if (bs<5)
//     bulltarget = line.new(bar_index[bs], antitarget[bs], bar_index[0], antitarget[bs], color=color.purple, width=2)
//     bullclose = line.new(bar_index[bs], close[bs], bar_index[0], close[bs], color=color.purple, width=2)
//     bullstop = line.new(bar_index[bs], target[bs], bar_index[0], target[bs], color=color.purple, width=2)