
Die Momentum-Richtungs-Divergenz-Strategie ist eine der Techniken, die William Blau in seinem Buch Momentum, Richtung und Divergenz beschreibt. Die Strategie konzentriert sich auf drei Schlüsselbereiche: Momentum, Richtung und Divergenz. Herr Blau war ein Elektroingenieur und später ein Händler, der sich mit der Beziehung zwischen Preis und Dynamik befasste.
Die Strategie zeichnet den Ergotic CSI und seine Gleitlinie für die Filterung von Geräuschen aus.
Der Code beginnt mit der Definition einer Funktion fADX, die sich an den Adaptiv-Aufmarsch-Index (((ADX)) anpasst, die den Gleitzyklus der Parameter Len annimmt. Die Funktion berechnet den realen Bereich (((TR)) mit dem Selective Moving Average (((RMA) als Divisor, berechnet die Mehrkopf- und die Leerkopf-Bewegung (RMA) als Molekül, und subtrahiert dann das Ergebnisverhältnis, das die relative Intensität von Mehrkopf und Leerkopf angibt.
Dann ist die Definition der Strategie-Parameter: r ist die Gleitparameter des ATR, Length ist die Länge des ADX, BigPointValue ist die Länge des BigPointValue, SmthLen ist die Länge des CSI, SellZone und BuyZone sind die berechtigten Verkaufs- und Kaufzonen.
Die Schlüssellogik bei der Berechnung des CSI. Zuerst berechnet man die tatsächlichen Schwankungsbreiten ATR und ADX. Dann berechnet man den Strafkoeffizienten K, der die Großpunkte, ATR und ADX berücksichtigt.
Die Richtung des Handels wird anhand der SMA-Werte des CSI bestimmt. Wenn die BuyZone überschritten wird, wird der Handel überschritten, wenn die SellZone überschritten wird, wird der Handel unterbrochen. Die CSI-Kurve und ihre SMA werden gezeichnet und die verschiedenen Handelsbereiche werden mit Farbe markiert.
Die Strategie kombiniert die Vorzüge des Dynamikindikators ATR und des Trendindikators ADX und berücksichtigt sowohl die Marktvolatilität als auch den Trendgrad und vermeidet die Einschränkungen von ATR und ADX allein. Die Konstruktion des Strafkoeffizienten K kombiniert diese Indikatoren geschickt mit der Beziehung zu den Großpunkten.
Der Standardisierungsrückstand nRes wird mit der Nutzung von Preisinformationen ergänzt, um nicht nur die Dynamik zu beobachten, sondern auch das absolute Niveau des Preises, was die Strategie im Gegensatz zum allgemeinen Oszillator verbessert.
Glatte Handhabung und Segmentierung liefern klare Handelssignale für strategische Entscheidungen, die für den Betrieb in der Praxis geeignet sind.
Die Strategie ist empfindlich auf Parameter-Einstellungen, wie z. B. ATR- und ADX-Zykluslängen, Bigpoint-Einstellungen, CSI-Gleichparameter, die die Strategie-Performance beeinflussen. Die richtige Kombination von Parametern muss durch eine große Anzahl von Rückmessungen ermittelt werden.
Der CSI ist ein neu entwickelter Oszillator, dessen Wirksamkeit in mehreren verschiedenen Märkten überprüft werden muss. Wenn der Indikator nicht gut funktioniert, kann dies die Strategieprofitabilität beeinträchtigen.
Die Strategie selbst hat keinen Stop-Loss-Mechanismus, sondern leitet sich direkt nach dem CSI-Signal aus und birgt ein gewisses Risiko, das in Verbindung mit Stop-Loss verwendet werden muss.
Es ist möglich, eine Kombination von Parametern in verschiedenen Märkten zu testen, um eine allgemeinere Kombination zu finden.
Es kann ein Mechanismus der dynamischen ADX-Zykluslänge eingeführt werden, der die Parameter des ADX an die Marktlage anpasst.
In Kombination mit anderen Oszillator-Indikatoren kann der Zeitpunkt des Kaufs und Verkaufs festgelegt werden, um die Strategie zu stabilisieren.
Die Stop-Loss-Strategie kann zur Verbesserung der Gesamtstrategie beitragen.
Die dynamische Ausbreitungsstrategie integriert die Vorzüge mehrerer Indikatoren, nutzt die verschiedenen Dimensionen von Preis, Dynamik und Trend, um CSI-Indikatoren zu entwerfen und zu handeln. Die Strategie ist flexibel und leistungsstark, verdient weitere Tests und Optimierungen und kann ein gutes Instrument für quantitative Transaktionen sein.
/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 20/06/2018
// This is one of the techniques described by William Blau in his book
// "Momentum, Direction and Divergence" (1995). If you like to learn more,
// we advise you to read this book. His book focuses on three key aspects
// of trading: momentum, direction and divergence. Blau, who was an electrical
// engineer before becoming a trader, thoroughly examines the relationship between
// price and momentum in step-by-step examples. From this grounding, he then looks
// at the deficiencies in other oscillators and introduces some innovative techniques,
// including a fresh twist on Stochastics. On directional issues, he analyzes the
// intricacies of ADX and offers a unique approach to help define trending and
// non-trending periods.
// This indicator plots Ergotic CSI and smoothed Ergotic CSI to filter out noise.
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
fADX(Len) =>
up = change(high)
down = -change(low)
trur = rma(tr, Len)
plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, Len) / trur)
minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, Len) / trur)
sum = plus + minus
100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), Len)
strategy(title="Ergodic CSI Backtest")
r = input(32, minval=1)
Length = input(1, minval=1)
BigPointValue = input(1.0, minval=0.00001)
SmthLen = input(5, minval=1)
SellZone = input(0.004, minval=0.00001)
BuyZone = input(0.024, minval=0.001)
reverse = input(false, title="Trade reverse")
hline(BuyZone, color=green, linestyle=line)
hline(SellZone, color=red, linestyle=line)
source = close
K = 100 * (BigPointValue / sqrt(r) / (150 + 5))
xTrueRange = atr(1)
xADX = fADX(Length)
xADXR = (xADX + xADX[1]) * 0.5
nRes = iff(Length + xTrueRange > 0, K * xADXR * xTrueRange / Length,0)
xCSI = iff(close > 0, nRes / close, 0)
xSMA_CSI = sma(xCSI, SmthLen)
pos = iff(xSMA_CSI > BuyZone, 1,
iff(xSMA_CSI <= SellZone, -1, nz(pos[1], 0)))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos))
if (possig == 1)
strategy.entry("Long", strategy.long)
if (possig == -1)
strategy.entry("Short", strategy.short)
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(xCSI, color=green, title="Ergodic CSI")
plot(xSMA_CSI, color=red, title="SigLin")