Bugra Handelsstrategie auf der Grundlage eines doppelten kinetischen gleitenden Durchschnitts

Schriftsteller:ChaoZhang, Datum: 2024-02-19 14:36:37
Tags:

img

Übersicht

Die Bugra-Handelsstrategie ist eine Strategie, die den von meinem lieben Lehrer Anıl Özekşi entwickelten OTT-Indikator und den Wavetrend Oscillator-Indikator von lonestar108 kombiniert.

Strategieprinzip

Die Bugra-Handelsstrategie berechnet zunächst die Mittellinie der Bollinger Bands, die die gleitende Durchschnittslinie MAvg ist. Anhand der vom Benutzer festgelegten Prozentsatzbereich und Periode berechnet sie dann den langen Stop-Loss longStop und den kurzen Stop-Loss shortStop. Wenn der Preis durch die obere Schiene bricht, gehen Sie lang. Wenn er durch die untere Schiene bricht, gehen Sie kurz. Das Schlusssignal ist, wenn der Preis um den gleitenden Durchschnitt zurückkehrt.

Der OTT-Indikator besteht aus einem gleitenden Durchschnitt und Grenzlinien. Er passt die Position der Grenzlinien nach der Volatilität des Marktes anhand bestimmter Algorithmen an.

Diese Strategie verwendet auch den Wavetrend-Indikator, um die Richtung des Preistrends zu bestimmen. Wenn es sich um einen Abwärtstrend handelt, gehen Sie nur kurz, nicht lang. Wenn es sich um einen Aufwärtstrend handelt, gehen Sie nur lang, nicht kurz.

Analyse der Vorteile

Die Bugra-Handelsstrategie kombiniert die Vorteile von gleitenden Durchschnitten, Bollinger-Bändern und OTT-Indikatoren. Sie kann Stop-Loss-Positionen automatisch anpassen und die Wahrscheinlichkeit, dass ein Stop-Loss ausgelöst wird, reduzieren. Gleichzeitig vermeidet sie durch die Einbeziehung von Trendbeurteilungsindikatoren, in schwankenden Trends gefangen zu werden.

Die wichtigsten Vorteile dieser Strategie sind insbesondere:

  1. Es kann automatisch Stop-Loss-Positionen anpassen, um Risiken effektiv zu kontrollieren.
  2. Der OTT-Indikator kann Umkehrpunkte relativ genau bestimmen.
  3. Durch die Einbeziehung von Trendbeurteilungsindikatoren wird vermieden, in schwankenden Märkten gefangen zu bleiben.
  4. Ihre Regeln sind relativ einfach und klar, leicht zu verstehen und anzuwenden.

Risikoanalyse

Die Handelsstrategie von Bugra birgt auch einige Risiken, hauptsächlich in folgenden Aspekten:

  1. Bei starken Marktbedingungen kann der Stop Loss gebrochen werden und dadurch größere Verluste entstehen.
  2. Die vom OTT-Indikator beurteilten Umkehrsignale sind möglicherweise nicht genau und es können fehlerhafte Signale auftreten.
  3. Auch Trendurteile können falsch sein, denn ein Long-Going in einer Abwärtsschwingung führt zu Verlusten.
  4. Unzulässige Parameter-Einstellungen beeinträchtigen auch die Strategieleistung.

Die Gegenmaßnahmen sind hauptsächlich folgende:

  1. Der Stop-Loss-Bereich muss angemessen gelockert werden, um sicherzustellen, dass die Stop-Loss-Linien nicht leicht aktiviert werden.
  2. Kombination mit anderen Indikatoren zur Beurteilung der Zuverlässigkeit von OTT-Signalen, um falsche Signale zu vermeiden.
  3. Die Parameter entsprechend anpassen, um die Trendbeurteilungen zuverlässiger zu machen.
  4. Optimieren Sie die Parameter, um die beste Parameterkombination zu finden.

Optimierungsrichtlinien

Es besteht noch Raum für eine weitere Optimierung der doppelten kinetischen gleitenden Durchschnittshandelsstrategie:

  1. Die Kombination mit anderen Indikatoren soll die Genauigkeit des Signalurteils verbessern.
  2. Untersuchen Sie adaptive Stop-Loss-Algorithmen, damit Stop-Loss-Linien entsprechend der Marktvolatilität angepasst werden können.
  3. Hinzufügen von Handelsvolumenindikatoren, um falsche Ausbrüche bei geringem Volumen zu vermeiden.
  4. Versuche verschiedene Arten von gleitenden Durchschnitten, um den am besten geeigneten gleitenden Durchschnitt zu finden.
  5. Versuchen Sie maschinelles Lernen und andere Methoden, um automatisch Parameter zu optimieren.

Zusammenfassung

Die doppelte dynamische gleitende Durchschnittshandelsstrategie integriert die Vorteile mehrerer Indikatoren. Sie kann automatisch Stop-Loss-Positionen anpassen, Umkehrsignale beurteilen und Trendrichtungen identifizieren. Sie hat Vorteile wie starke Risikokontrollfähigkeiten und leicht zu verstehen und zu verwenden. Aber sie hat auch Risiken wie gefangen zu sein und ungenaue Signale. Diese Strategie kann durch Kombination mit anderen Indikatoren, das Studium adaptiver Algorithmen usw. weiter optimiert werden.


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

//@version=4
strategy(title="Bugra trade strategy", shorttitle="Bugra trade strategy", overlay=true)

// Kullanıcı Girdileri
length = input(5, title="Period", minval=1)
percent = input(1, title="Sihirli Yüzde", type=input.float, step=0.1, minval=0)
mav = input(title="Hareketli Ortalama Türü", defval="VAR", options=["SMA", "EMA", "WMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF"])
wt_n1 = input(10, title="Kanal Periyodu")
wt_n2 = input(21, title="Averaj Uzunluğu")
src = close

// Tarih Aralığı Girdileri
startDate = input(20200101, title="Başlangıç Tarihi (YYYYMMDD)")
endDate = input(20201231, title="Bitiş Tarihi (YYYYMMDD)")

// Tarih Filtresi Fonksiyonu
isDateInRange() => true
// Özel Fonksiyonlar
Var_Func(src, length) =>
    valpha = 2 / (length + 1)
    vud1 = src > src[1] ? src - src[1] : 0
    vdd1 = src < src[1] ? src[1] - src : 0
    vUD = sum(vud1, length)
    vDD = sum(vdd1, length)
    vCMO = (vUD - vDD) / (vUD + vDD)
    varResult = 0.0
    varResult := nz(valpha * abs(vCMO) * src + (1 - valpha * abs(vCMO)) * nz(varResult[1]))
    varResult

Wwma_Func(src, length) =>
    wwalpha = 1 / length
    wwma = 0.0
    wwma := wwalpha * src + (1 - wwalpha) * nz(wwma[1])
    wwma

Zlema_Func(src, length) =>
    zxLag = floor(length / 2)
    zxEMAData = src + (src - src[zxLag])
    zlema = ema(zxEMAData, length)
    zlema

Tsf_Func(src, length) =>
    lrc = linreg(src, length, 0)
    lrs = lrc - linreg(src, length, 1)
    tsf = lrc + lrs
    tsf

getMA(src, length) =>
    ma = mav == "SMA" ? sma(src, length) :
         mav == "EMA" ? ema(src, length) :
         mav == "WMA" ? wma(src, length) :
         mav == "TMA" ? sma(sma(src, ceil(length / 2)), floor(length / 2) + 1) :
         mav == "VAR" ? Var_Func(src, length) :
         mav == "WWMA" ? Wwma_Func(src, length) :
         mav == "ZLEMA" ? Zlema_Func(src, length) :
         mav == "TSF" ? Tsf_Func(src, length) : na

// Strateji Hesaplamaları
MAvg = getMA(src, length)
fark = MAvg * percent * 0.01
longStop = MAvg - fark
longStopPrev = nz(longStop[1], longStop)
longStop := MAvg > longStopPrev ? max(longStop, longStopPrev) : longStop
shortStop = MAvg + fark
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := MAvg < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop

dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir
MT = dir==1 ? longStop: shortStop
OTT = MAvg > MT ? MT*(200+percent)/200 : MT*(200-percent)/200

plot(OTT, title="BugRA", color=color.rgb(251, 126, 9))

// Alım ve Satım Koşulları
longCondition = crossover(src, OTT) and isDateInRange()
shortCondition = crossunder(src, OTT) and isDateInRange()

// Strateji Giriş ve Çıkış Emirleri
if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.close("Long")


Mehr