Momentum Arbitrage Strategie Rücktestanalyse

Schriftsteller:ChaoZhang, Datum: 2023-10-25 11:10:59
Tags:

img

I. Strategiebezeichnung

Aufgrund der wichtigsten Merkmale dieser Strategie nenne ich sie Momentum Arbitrage Strategy.

II. Überblick über die Strategie

Diese Strategie erzeugt Handelssignale durch Berechnung des Chande Momentum Oscillators und Festlegung von oberen und unteren Schwellenwerten, wodurch Arbitragechancen für Gewinne entstehen.

III. Strategische Logik

Der Code legt zunächst die Parameter Length, TopBand und LowBand fest, wobei Length die Anzahl der Tage für die Momentumberechnung darstellt und TopBand und LowBand die oberen und unteren Schwellenwerte darstellen.

Es berechnet dann den absoluten Impuls xMom über die letzten Länge Tage und den einfachen gleitenden Durchschnitt von xMom über Länge Tage, xSMA_mom.

Danach berechnet es den kumulativen Momentum über Länge Tage, xMomLength.

Als nächstes berechnet er den Impuls-Oszillator nRes, der xMomLength geteilt durch xSMA_mom und dann multipliziert mit Length multipliziert mit 100 entspricht.

Auf der Grundlage des Vergleichs zwischen nRes und den Schwellenwerten bestimmt er die lange oder kurze Richtung und speichert sie in pos.

Schließlich passt es den Pos an, je nachdem, ob der Reverse-Trading aktiviert ist, erzeugt den Trading Signal Possig und erstellt Long/Short-Einträge.

IV. Stärken der Strategie

  1. Identifizieren Sie potenzielle Trendwendepunkte mithilfe eines Impulsindikators, der die Tendenzentdeckung fördert.

  2. Es werden klare Long/Short-Signale mit Schwellenfilterung gebildet, um falsche Trades zu vermeiden.

  3. Umgekehrte Handelslogik anwenden, um Umkehrmöglichkeiten zu erhalten.

  4. Großer einstellbarer Parameterraum, der für verschiedene Produkte und Zeitrahmen optimiert werden kann.

  5. Die dargestellten Parameter sind intuitiv und leicht verständlich.

V. Strategische Risiken

  1. Es ist nur die Dynamik zu berücksichtigen, kann Chancen verpassen, die durch andere technische Indikatoren gebildet werden.

  2. Ein Momentum-Breakout bedeutet nicht unbedingt eine Trendumkehr, es besteht ein Risiko eines falschen Urteils.

  3. Obwohl Reverse-Trading ein Gewinnpotenzial hat, kann es auch Verluste verstärken.

  4. Eine unsachgemäße Optimierung der Parameter kann zu einem Überhandel oder zu fehlenden besten Einstiegspunkten führen.

  5. Wir müssen kurzfristige Momentverzerrungen durch plötzliche Ereignisse herausfiltern.

Die Risiken können durch die Kombination anderer Indikatoren wie Trend und Volatilität kontrolliert werden, um die Signalzuverlässigkeit zu bestätigen, die Parameter an die niedrigere Handelsfrequenz anzupassen, den Stop-Loss ordnungsgemäß zu entspannen usw.

VI. Richtungen zur Optimierung der Strategie

  1. Hinzufügen anderer technischer Indikatorfilter zur Verbesserung der Signalgenauigkeit.

Bestätigen Sie, dass der Schlusskurs über dem gleitenden Durchschnittssystem liegt oder die Volatilität innerhalb des normalen Bereichs liegt, bevor die Impulssignale ausgelöst werden.

  1. Optimierung der Parameter entsprechend den Merkmalen des Produkts.

Für volatilere Produkte sollte der normale Schwellenbereich auf eine geringere Handelsfrequenz verringert werden.

  1. Multi-Zeitrahmen-Optimierung basierend auf verschiedenen Zeiträumen.

Verwenden Sie kleinere Periodenlänge für den Intraday-Ultra-Kurzzeithandel. Anpassen von Parametern auf der Grundlage von wöchentlichen oder monatlichen Diagrammen für mittelfristige Trends.

  1. Setzen Sie den unteren Divergenzzustand.

Für Kaufsignale müssen die Preise über dem vorherigen Tiefpunkt liegen, um falsche Umkehrsignale zu vermeiden.

VII. Schlussfolgerung

Die Strategie identifiziert hauptsächlich kurzfristige Trendumkehrungen durch einen Momentum-Indikator, mit Parameterfilterung zur Erzeugung von Handelssignalen, Balancing Trend Following und Reversal Capture. Die Risiken sind kontrollierbar.


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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 07/02/2017
//    This indicator plots Chande Momentum Oscillator. This indicator was 
//    developed by Tushar Chande. A scientist, an inventor, and a respected 
//    trading system developer, Mr. Chande developed the CMO to capture what 
//    he calls "pure momentum". For more definitive information on the CMO and 
//    other indicators we recommend the book The New Technical Trader by Tushar 
//    Chande and Stanley Kroll.
//    The CMO is closely related to, yet unique from, other momentum oriented 
//    indicators such as Relative Strength Index, Stochastic, Rate-of-Change, 
//    etc. It is most closely related to Welles Wilder`s RSI, yet it differs 
//    in several ways:
//        - It uses data for both up days and down days in the numerator, thereby 
//          directly measuring momentum;
//        - The calculations are applied on unsmoothed data. Therefore, short-term 
//          extreme movements in price are not hidden. Once calculated, smoothing 
//          can be applied to the CMO, if desired;
//        - The scale is bounded between +100 and -100, thereby allowing you to 
//          clearly see changes in net momentum using the 0 level. The bounded scale 
//          also allows you to conveniently compare values across different securities.
////////////////////////////////////////////////////////////
strategy(title="CMO (Chande Momentum Oscillator)", shorttitle="CMO")
Length = input(9, minval=1)
TopBand = input(70, minval=1)
LowBand = input(-70, maxval=-1)
reverse = input(false, title="Trade reverse")
// hline(0, color=gray, linestyle=dashed)
// hline(TopBand, color=red, linestyle=line)
// hline(LowBand, color=green, linestyle=line)
xMom = abs(close - close[1])
xSMA_mom = sma(xMom, Length)
xMomLength = close - close[Length]
nRes = 100 * (xMomLength / (xSMA_mom * Length))
pos = iff(nRes > TopBand, 1,
	   iff(nRes <= LowBand, -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(nRes, color=blue, title="CMO")

Mehr