Duale OTT-Trendfolgestrategie


Erstellungsdatum: 2023-10-08 15:10:31 zuletzt geändert: 2023-10-08 15:10:31
Kopie: 0 Klicks: 912
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Die Doppel-OTT-Trend-Tracking-Strategie ist eine verbesserte Version der OTT-Strategie, die Doppel-OTT-Linien und -Faktoren kombiniert, um besser auf Falschsignale zu reformieren. Die Strategie wurde von dem türkischen Händler Anıl Özekşi entwickelt, der die Designidee der Strategie in seinem eigenen Video-Tutorial detailliert erklärt.

Grundsätze

Der Kern der Doppel-OTT-Strategie ist die Verwendung von zwei optimierten Trend-Tracking-Linien OTT, um die Richtung des Trends zu beurteilen. Es berechnet zuerst den Moving Average MAvg und erhält dann den LongStop und den ShortStop, basierend auf dem Prozentsatz des MAvg-Wertes.

Die Strategie wurde in zwei Punkten verbessert, um Falschsignale zu beheben:

  1. Zwei vertikal verschobene OTT-Linien, OTTup und OTTdn, wurden hinzugefügt. Sie sind eine leichte Auf- und Abweichung von OTT. Nur wenn der Preis diese beiden Abweichungen durchbricht, wird ein echtes Handelssignal erzeugt.

  2. Ein kleiner Koeffizient wurde eingeführt, um die zwei digitalen OTT-Leitung zu verfeinern, um sie genauer an den Markt anzupassen.

Durch diese Doppel-OTT-Konstruktion kann der größte Teil des Geräusches der Berücksichtigungsmarkt gefiltert werden, um falsche Signale zu vermeiden. Dadurch können Trendwendepunkte besser erfasst und Positionen rechtzeitig gewechselt werden. Dies ist der größte Vorteil der Doppel-OTT-Strategie.

Vorteile

  • Die Nutzung von Dual-OTT-Leitungskonzepten kann falsche Signale wirksam filtern und die Strategie stabilisieren.
  • Der erhöhte Coeffizient für die Feinabstimmung bringt die OTT-Linie näher an die Marktreaktion.
  • Der Autor Anıl Özekşi erklärt in einem Video die Strategie im Detail und macht es leicht zu verstehen und zu meistern.
  • Mehrfache technische Indikatoren wie EMA, Stop-Line und andere, um die Marktentwicklung zu bestimmen
  • Anıl Özekşi ist ein bekannter türkischer Händler mit einer gewissen beruflichen Bekanntheit.

Die Gefahr

  • Die OTT-Indikatoren selbst sind anfällig für die Gefahr, dass Tests zurückgezogen werden, was durch die Dual-OTT-Design verringert werden kann.
  • Bei starken Schwankungen kann die Stop-Line häufig ausgelöst werden und es besteht die Gefahr eines Überhandels.
  • Der Coeffizient muss sorgfältig getestet werden, um optimale Werte zu erzielen, sonst wird die Wirkung reduziert.
  • Das Video ist ein Tutorial für die türkische Sprache, und Sprachschwierigkeiten können das Verständnis der Algorithmen beeinträchtigen.
  • Die Daten sind nicht ausreichend, um die Wirksamkeit der Strategie über einen längeren Zeitraum und in mehr Märkten zu überprüfen.

Gegenmaßnahmen:

  • Erhöhung der Buffer zwischen Stop Lines und Dual OTT, um eine Überempfindlichkeit zu vermeiden
  • Optimierung der Koeffizienten-Einstellungen, um sie besser an die Rückmessung anzupassen
  • Übersetzen Sie die Tutorials der Autoren, um sicherzustellen, dass die Algorithmenlogik richtig verstanden wird
  • Rückvergleiche unter mehr historischen Umständen, um die Zuverlässigkeit der Strategieparameter zu überprüfen

Optimierungsrichtung

  • Es kann in Erwägung gezogen werden, Parameter wie z. B. die Periodelength als einstellbare Eingabewerte einzustellen.
  • Versuchen Sie mit anderen Arten von Moving Averages, um nach mittleren Algorithmen zu suchen, die dem OTP-Prinzip besser entsprechen.
  • Größe des Coefficients für verschiedene Transaktionsarten
  • Erweiterte Filtermechanismen zur Vermeidung von Fehlsignalen in nicht primären Handelszeiten
  • Umwandlung der Stop-Line in eine dynamische Verfolgung, die sich in Echtzeit an die Schwankungen anpasst
  • Hinzufügen von Machine-Learning-Algorithmen, die AI nutzen, um die Parameter-Einstellungen automatisch zu optimieren

Die Doppel-OTT-Strategie nutzt die OTT-Erfahrung von Anıl Özekşi und ist innovativ. Sie verspricht sich zu einem zuverlässigen und anpassbaren Rahmen für Trends, aber es muss ständig optimiert und getestet werden, um sich an die Veränderungen des Marktes anzupassen.

Zusammenfassen

Die Doppel-OTT-Strategie löst die Falschsignal-Problematik durch die Doppel-Optimierung von Trend-Tracking-Linien und Feinabstimmungsfaktoren. Sie nutzt die Idee des Moving Averages, unterstützt durch Stop-Loss-Linien, um die Trends dynamisch zu verfolgen. Die Strategie ist einfach und praktisch, stammt aus der persönlichen Erfahrung von bekannten Händlern und ist eine gründliche Untersuchung wert.

Strategiequellcode
/*backtest
start: 2023-09-07 00:00:00
end: 2023-10-07 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © KivancOzbilgic

//created by: @Anil_Ozeksi
//developer: ANIL ÖZEKŞİ
//author: @kivancozbilgic

strategy("Twin Optimized Trend Tracker","TOTT", overlay=true)
src = input(close, title="Source")
length=input(40, "OTT Period", minval=1)
percent=input(1, "Optimization Constant", type=input.float, step=0.1, minval=0)
coeff=input(0.001, "Twin OTT Coefficient", type=input.float, step=0.001, minval=0)
showsupport = input(title="Show Support Line?", type=input.bool, defval=true)
showsignalsk = input(title="Show Signals?", type=input.bool, defval=true)
mav = input(title="Moving Average Type", defval="VAR", options=["SMA", "EMA", "WMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF"])
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
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,9)
    vDD=sum(vdd1,9)
    vCMO=nz((vUD-vDD)/(vUD+vDD))
    VAR=0.0
    VAR:=nz(valpha*abs(vCMO)*src)+(1-valpha*abs(vCMO))*nz(VAR[1])
VAR=Var_Func(src,length)
Wwma_Func(src,length)=>
    wwalpha = 1/ length
    WWMA = 0.0
    WWMA := wwalpha*src + (1-wwalpha)*nz(WWMA[1])
WWMA=Wwma_Func(src,length)
Zlema_Func(src,length)=>
    zxLag = length/2==round(length/2) ? length/2 : (length - 1) / 2
    zxEMAData = (src + (src - src[zxLag]))
    ZLEMA = ema(zxEMAData, length)
ZLEMA=Zlema_Func(src,length)
Tsf_Func(src,length)=>
    lrc = linreg(src, length, 0)
    lrc1 = linreg(src,length,1)
    lrs = (lrc-lrc1)
    TSF = linreg(src, length, 0)+lrs
TSF=Tsf_Func(src,length)
getMA(src, length) =>
    ma = 0.0
    if mav == "SMA"
        ma := sma(src, length)
        ma

    if mav == "EMA"
        ma := ema(src, length)
        ma

    if mav == "WMA"
        ma := wma(src, length)
        ma

    if mav == "TMA"
        ma := sma(sma(src, ceil(length / 2)), floor(length / 2) + 1)
        ma

    if mav == "VAR"
        ma := VAR
        ma

    if mav == "WWMA"
        ma := WWMA
        ma

    if mav == "ZLEMA"
        ma := ZLEMA
        ma

    if mav == "TSF"
        ma := TSF
        ma
    ma
    
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 
OTTup=OTT*(1+coeff)
OTTdn=OTT*(1-coeff)

PPLOT=plot(showsupport ? MAvg : na, color=#0585E1, linewidth=2, title="Support Line")

pALLup=plot(nz(OTTup[2]), color=color.green, linewidth=2, title="OTTup", transp=0)
pALLdn=plot(nz(OTTdn[2]), color=color.red, linewidth=2, title="OTTdown", transp=0)

buySignalk = crossover(MAvg, OTTup[2])
sellSignalk = crossunder(MAvg, OTTdn[2])
K1=barssince(buySignalk)
K2=barssince(sellSignalk)
O1=barssince(buySignalk[1])
O2=barssince(sellSignalk[1])

plotshape(buySignalk and showsignalsk and O1>K2 ? min(low-abs(roc(low,1)),OTTdn-abs(roc(low,1))) : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
plotshape(sellSignalk and showsignalsk and O2>K1 ? max(high+abs(roc(high,1)),OTTup+abs(roc(high,1))) : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0,display=display.none)
longFillColor = highlighting ? (O2>K1 ? color.green : na) : na
shortFillColor = highlighting ? (O1>K2 ? color.red : na) : na
fill(mPlot, PPLOT, title="UpTrend Highligter", color=longFillColor,transp=90)
fill(mPlot, PPLOT, title="DownTrend Highligter", color=shortFillColor,transp=90)
fill(pALLup, pALLdn, title="Flat Zone Highligter", color=color.blue,transp=90)



dummy0 = input(true, title = "=Backtest Inputs=")
FromDay    = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth  = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear   = input(defval = 2005, title = "From Year", minval = 2005)
ToDay      = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth    = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear     = input(defval = 9999, title = "To Year", minval = 2006)
Start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)
Finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)
Timerange() =>
    time >= Start and time <= Finish ? true : false
if buySignalk
    strategy.entry("Long", strategy.long)
if sellSignalk
    strategy.entry("Short", strategy.short)