Blending Bolt Trend nach der Strategie

Schriftsteller:ChaoZhang, Datum: 2024-02-02 17:30:09
Tags:

img

Übersicht

Diese Strategie wird Dazzling Bolts genannt. Es handelt sich um eine Trend-Folge-Strategie, die auf drei gleitenden Durchschnitten basiert. Sie verwendet die Kreuzungen von schnellen, mittleren und langsamen Linien, um den Preistrend zu bestimmen und Ziele und Stopps basierend auf ATR-Werten festzulegen.

Strategie Logik

Die Strategie setzt folgende drei gleitende Durchschnitte ein:

  1. 13-Perioden-gewichteter gleitender Durchschnitt zur Ermittlung der kurzfristigen Entwicklung
  2. Exponentieller gleitender Durchschnitt über 55 Perioden für den mittelfristigen Trend
  3. Einfacher gleitender Durchschnitt über 110 Zeiträume für langfristige Trends

Wenn die schnelle Linie über die mittlere Linie und die mittlere Linie über die langsame Linie kreuzt, signalisiert dies einen Aufwärtstrend. Wenn die schnelle Linie unter die mittlere Linie und die mittlere Linie unter die langsame Linie kreuzt, signalisiert sie einen Abwärtstrend.

Um einige Lärmbranchen auszuschließen, werden mehrere Hilfsbedingungen festgelegt:

  1. Die niedrigen Preise der letzten 5 Kerzen lagen alle über der mittleren Linie.
  2. Der niedrige Preis der letzten 2 Kerzen fiel unter die mittlere Linie.
  3. Der Schlusskurs der letzten Kerze lag über der mittleren Linie

Wenn diese Kriterien erfüllt sind, werden lange oder kurze Signale ausgelöst.

Ziele und Stopps werden basierend auf bestimmten Vielfachen der ATR-Werte platziert.

Analyse der Vorteile

Zu den Vorteilen dieser Strategie gehören:

  1. Die Verwendung einer Kombination aus drei gleitenden Durchschnittswerten vermeidet die Möglichkeit einer Fehleinschätzung aus einem einzigen Indikator.
  2. Mehrere Hilfsbedingungen helfen, die Signalqualität zu verbessern, indem sie Geräusche ausfiltern.
  3. Dynamische ATR-Stop-Loss hilft, Einzelhandelsverluste zu kontrollieren.

Risikoanalyse

Zu den Risiken dieser Strategie gehören außerdem:

  1. Eine Kombination von gleitenden Durchschnitten kann falsche Signale auslösen und erfordert ausreichende Backtests.
  2. Eine unsachgemäße Einstellung des ATR-Multiplikators kann dazu führen, dass die Haltestellen zu locker oder eng sind.
  3. Nicht in der Lage, Preisschwankungen effektiv von plötzlichen Ereignissen zu filtern.

Zur Verringerung der Risiken sollten die gleitenden Durchschnittsparameter ordnungsgemäß angepasst, der ATR-Multiplikator optimiert und eine maximale Haltedauer festgelegt werden, um übermäßige Einzelverluste zu vermeiden.

Optimierungsrichtlinien

Mögliche Optimierungen dieser Strategie:

  1. Versuche gleitende Durchschnittswerte unterschiedlicher Länge oder Art.
  2. Optimieren Sie die Parameter der Hilfsbedingungen.
  3. Versuchen Sie andere Indikatoren für die Trendvorhersage, z.B. MACD, DMI usw.
  4. Einfügen von Lautstärkenanzeigern, um Signale zu filtern.

Zusammenfassung

Die Dazzling Bolts Strategie ist im Allgemeinen ein stetiges Trendfolgensystem. Sie verwendet hauptsächlich gleitende Durchschnitts-Kreuzungen, um die Trendrichtung zu bestimmen, mit bestimmten technischen Indikatorenkombinationen als Hilfsmittel, um etwas Lärm zu filtern. Obwohl es Raum für weitere Optimierung gibt, ist ihr Gesamtrisiko kontrolliert und es eignet sich für Investitionen entlang mittelfristiger bis langfristiger Trends.


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


Mehr