Les éclairs éblouissants suivent la tendance

Auteur:ChaoZhang est là., Date: 2024-02-02 17:30:09 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie s'appelle Dazzling Bolts. C'est une stratégie de suivi de tendance basée sur trois moyennes mobiles. Elle utilise les croisements de lignes rapides, moyennes et lentes pour déterminer la tendance des prix et définit des cibles et des arrêts basés sur les valeurs ATR.

La logique de la stratégie

La stratégie utilise les trois moyennes mobiles suivantes:

  1. Moyenne mobile pondérée sur 13 périodes, pour évaluer la tendance à court terme
  2. Moyenne mobile exponentielle sur 55 périodes, pour la tendance à moyen terme
  3. Moyenne mobile simple sur 110 périodes, pour la tendance à long terme

Lorsque la ligne rapide traverse au-dessus de la ligne moyenne et que la ligne moyenne traverse au-dessus de la ligne lente, cela indique une tendance haussière.

Pour filtrer certains métiers du bruit, plusieurs conditions auxiliaires sont fixées:

  1. Les prix bas des 5 dernières bougies étaient tous au-dessus de la ligne moyenne
  2. Le prix bas des 2 dernières bougies est tombé en dessous de la ligne moyenne.
  3. Le prix de clôture de la dernière bougie était au-dessus de la ligne moyenne

Lorsque ces critères sont remplis, des signaux longs ou courts seront déclenchés. Il ne détient qu'une position à chaque fois et ne rentrera pas jusqu'à ce que la position existante soit fermée ou arrêtée.

Les cibles et les arrêts sont placés en fonction de certains multiples des valeurs ATR.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. L'utilisation d'une combinaison de trois moyennes mobiles évite le risque d'une erreur de jugement à partir d'un seul indicateur.
  2. Plusieurs conditions auxiliaires permettent d'améliorer la qualité du signal en filtrant le bruit.
  3. L'ATR stop loss dynamique aide à contrôler les pertes d'une seule transaction.

Analyse des risques

Les risques de cette stratégie comprennent également:

  1. La combinaison de moyennes mobiles peut donner des signaux erronés, ce qui nécessite des retests suffisants.
  2. Les paramètres incorrects du multiplicateur ATR peuvent entraîner des arrêts trop lâches ou trop serrés.
  3. Incapable de filtrer efficacement les fluctuations des prix des événements soudains.

Pour atténuer les risques, ajuster correctement les paramètres de la moyenne mobile, optimiser le multiplicateur ATR, fixer la période maximale de détention pour éviter des pertes excédentaires sur une seule transaction.

Directions d'optimisation

Optimisations possibles pour cette stratégie:

  1. Testez des moyennes mobiles de différentes longueurs ou types.
  2. Optimiser les paramètres des conditions auxiliaires.
  3. Essayez d'autres indicateurs pour prévoir la tendance, par exemple MACD, DMI, etc.
  4. Incorporer des indicateurs de volume pour filtrer les signaux.

Résumé

La stratégie Dazzling Bolts est généralement un système de suivi de tendance stable. Elle utilise principalement des croisements de moyennes mobiles pour déterminer la direction de la tendance, avec certaines combinaisons d'indicateurs techniques comme moyens auxiliaires pour filtrer un peu de bruit. Bien qu'il existe une marge d'optimisation supplémentaire, son risque global est contrôlé et il convient pour investir le long des tendances à moyen et long terme.


/*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)


Plus de