Strategie der zufälligen Schwingung

Schriftsteller:ChaoZhang, Datum: 2023-11-06 09:30:27
Tags:

img

Übersicht

Die Random Oscillation Strategy integriert mehrere technische Indikatoren, darunter Ichimoku Kinko Hyo, MACD und Hull Moving Average, um ein systematisches Handelsentscheidungssystem zu bilden.

Strategie Logik

Der Tenkan-Sen und der Kijun-Sen von Ichimoku Kinko Hyo werden zunächst übernommen. Der Tenkan-Sen wird als Mittelwert des höchsten Hochs und des niedrigsten Tiefs in den letzten 9 Perioden berechnet. Der Kijun-Sen ist der Mittelwert des höchsten Hochs und des niedrigsten Tiefs in den letzten 24 Perioden. Die Kreuzungen von Preis und Kijun-Sen dienen als Handelssignale.

Zweitens wird der MACD-Indikator als wichtiger Trend-following-Momentum-Indikator integriert. Er zeigt die Beziehung zwischen zwei EMAs von Preisen. Crossovers des MACD und seiner Signallinie erzeugen Handelssignale.

Drittens wird der Hull Moving Average eingeführt, um die Verzögerung von gleitenden Durchschnitten zu verbessern und die Empfindlichkeit der Preisumkehrung zu erhöhen.

Schließlich vereint die Strategie alle oben genannten Indikatoren zu einem robusten Handelssystem, das nur dann tatsächlich eintritt und ausgeht, wenn mehrere Indikatoren einmütig Signale geben.

Vorteile

  • Die Diversifizierung über mehrere Indikatoren verringert das Ausbleiben eines einzelnen Punktes.

  • Integration ermöglicht eine stärkere Entscheidungsgewalt durch ein ganzheitliches Modell.

  • Verringerte falsche Signale, da jedes Signal von anderen überprüft wird.

  • Verbesserte Effizienz, indem man nur auf Signalen mit hoher Überzeugung reagiert.

  • Anpassbare Parameter zur Anpassung der Strategie an sich ändernde Märkte.

  • Reduzierte Verzögerung und schnellere Reaktion von Hull Moving Average.

Risiken

  • Höhere Risiken bei schwankenden Märkten mit erhöhten falschen Signalen.

  • Unwirksam, wenn die Indikatorparameter nicht ordnungsgemäß optimiert sind.

  • Potenziell verpasst Trendbewegungen, indem er sich auf Umkehrungen konzentriert.

  • Hull MA ist relativ neu und auf lange Sicht nicht erwiesen.

  • Ein seltener Handel könnte einige Chancen verpassen.

Erweiterung

  • Wenn man mehr Indikatoren wie Bollinger Bands hinzufügt, könnte man das System weiter optimieren.

  • Parameter-Ausrichtung, um die optimale Kombination für verschiedene Vermögenswerte und Zeitrahmen zu finden.

  • Einführung dynamischer Stopps zur Kontrolle einzelner Handelsverluste.

  • Einbeziehen Sie Trendfilter, um zu vermeiden, dass Sie Trendfahrten verpassen.

  • Optimierung der Positionsgröße durch Anpassung der Häufigkeit und Größe anhand der Marktbedingungen.

Schlussfolgerung

Die Random Oscillation Strategy kombiniert mehrere technische Analysetechniken, um Chancen in Bereichsgebundenen Märkten zu erfassen. Sie bietet die Vorteile der Indikatorenintegration, reduzierte falsche Signale und verbesserte Effizienz. Aber sie birgt auch inhärente Risiken, die eine weitere Optimierung und Anpassung erfordern. Insgesamt stellt sie einen robusten, praktischen Ansatz für den Handel mit oszillierenden Märkten dar.


/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Ichimoku Kinko Hyo + HULL-MA_X + MacD", shorttitle="@m", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=1000, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)

keh=input(title="Double HullMA",defval=12, minval=1)

n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(close[1],round(keh/2))
nma1=wma(close[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
b=n1>n2?lime:red
c=n1>n2?green:red
d=n1>n2?red:green

TenkanSenPeriods = input(9, minval=1, title="Tenkan Sen Periods")
KijunSenPeriods = input(24, minval=1, title="Kijun Sen Periods")
SenkouSpanBPeriods = input(51, minval=1, title="Senkou Span B Periods")
displacement = input(24, minval=1, title="Displacement")
donchian(len) => avg(lowest(len), highest(len))
TenkanSen = donchian(TenkanSenPeriods)
KijunSen = donchian(KijunSenPeriods)
SenkouSpanA = avg(TenkanSen, KijunSen)
SenkouSpanB = donchian(SenkouSpanBPeriods)
LS=close, offset = -displacement

MACD_Length = input(9)
MACD_fastLength = input(12)
MACD_slowLength = input(24)
MACD = ema(close, MACD_fastLength) - ema(close, MACD_slowLength)
aMACD = ema(MACD, MACD_Length)

a1=plot(n1,color=c)
a2=plot(n2,color=c)
plot(cross(n1, n2) ? n1 : na, style = circles, color=b, linewidth = 4)
plot(cross(n1, n2) ? n1 : na, style = line, color=d, linewidth = 3)
plot(TenkanSen, color=blue, title="Tenkan Sen", linewidth = 2)
plot(KijunSen, color=maroon, title="Kijun Sen", linewidth = 3)
plot(close, offset = -displacement, color=orange, title="Chikou Span", linewidth = 2)
p1=plot (SenkouSpanA, offset = displacement, color=green,  title="Senkou Span A", linewidth = 2)
p2=plot (SenkouSpanB, offset = displacement, color=red,  title="Senkou Span B", linewidth = 3)
fill(p1, p2, color = SenkouSpanA > SenkouSpanB ? green : red)

closelong = n1<n2 and close<n2 and (MACD<aMACD or TenkanSen<KijunSen or close<KijunSen)
if (closelong)
    strategy.close("Long")

closeshort = n1>n2 and close>n2 and (MACD>aMACD or TenkanSen>KijunSen or close>KijunSen)
if (closeshort)
    strategy.close("Short")

longCondition = n1>n2 and close>n2 and MACD>aMACD and (TenkanSen>KijunSen or close>KijunSen) 
if (longCondition)
    strategy.entry("Long",strategy.long)

shortCondition = n1<n2 and close<n2 and MACD<aMACD and (TenkanSen<KijunSen or close<KijunSen)
if (shortCondition)
    strategy.entry("Short",strategy.short)

Mehr