Quantumsstrategie für eine doppelte Umkehrung der GMO

Schriftsteller:ChaoZhang, Datum: 2024-01-04 14:35:23
Tags:

img

Übersicht

Diese Strategie ist eine doppelte Umkehrstrategie, die den 123 Reversion-Indikator und den CMOWMA-Quantenindikator kombiniert, um eine doppelte Bestätigung von Kursumkehrsignalen mit roten und grünen K-Linien-Visuellen Effekten zu erzielen.

Strategieprinzip

Die Strategie besteht aus zwei Teilen:

  1. 123 Umkehrindikator

    • Verwenden Sie den Schlusskurs gegenüber dem vorherigen Schlusskurs, um den Preis nach oben oder unten zu bestimmen
    • Verwenden Sie die Stochastik-Indikatoren für die Überschneidung der schnellen und der langsamen Linien, um Umkehrsignale zu bestätigen
    • Lange oder kurze Signale erzeugen, wenn die Bedingungen erfüllt sind
  2. CMOWMA-Quantenindikator

    • Verwenden Sie den GMO-Indikator zur Messung der Preisdynamik
    • Anwendung des gewichteten gleitenden Durchschnitts der WMA auf den WMO-Indikator
    • Lang (kurz) sehen, wenn die GMO über (unter) ihrer WMA liegt

Positionen eingeben, wenn beide Teile in die gleiche Richtung signalisieren.

Vorteile der Strategie

  1. Doppelbestätigungsmechanismus kann falsche Bremsen filtern und unnötige Positionen reduzieren
  2. Die Farbgebung mit roter und grüner K-Linie erzeugt visuelle Effekte, um die Marktbedingungen leicht zu beurteilen
  3. Die Kombination von Umkehr- und Dynamikindikatoren sorgt für eine allgemeine Stabilität
  4. Einfache Parametereinstellungen machen es für verschiedene Produkte geeignet und einfach zu implementieren

Risiken der Strategie

  1. Die Preise können sich nach der ersten Umkehrung wieder umkehren, wobei die Gefahr von Whipsaws besteht.
  2. Häufige Positionswechsel führen zu übermäßigen Handelsgebühren
  3. Falsche Einstellungen von Parametern können zu viele oder zu wenige Signale verursachen
  4. Die GMO-Parameter müssen anhand der Produktmerkmale angepasst werden

Die Risiken können verringert werden, indem die Umkehrbedingungen gelockert, die Aufbewahrungsdauer verlängert, die Parameterkombinationen optimiert werden usw.

Optimierungsrichtlinien

  1. Prüfwirkung verschiedener Stochastische Parameter
  2. Ersetzen/zufügen von Bestätigungen durch andere Indikatoren wie MACD, KDJ usw.
  3. Testoptimierungen unterschiedlicher Längen der GMO und der WMA
  4. Versuchen Sie, auf bestimmten Ebenen Stop Loss/Profit Taking hinzuzufügen.
  5. Filter zur Steuerung der Häufigkeit neuer Positionen

Zusammenfassung

Die Strategie ist insgesamt robust mit einfachen Parametern, einfach zu implementieren, kombiniert Preisumkehr und Momentumindikatoren, um einen effektiven Dual-Signal-Filtermechanismus zu bilden, um falsche Signale zu eliminieren.


/*backtest
start: 2023-12-04 00:00:00
end: 2024-01-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 19/08/2019
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
//    This indicator plots Chandre Momentum Oscillator and its WMA on the 
//    same chart. This indicator plots the absolute value of CMO.
//    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.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

CMOWMA(Length, LengthWMA) =>
    pos = 0
    xMom = abs(close - close[1])
    xSMA_mom = sma(xMom, Length)
    xMomLength = close - close[Length]
    nRes = 100 * (xMomLength / (xSMA_mom * Length))
    xWMACMO = wma(nRes, LengthWMA)
    pos := iff(nRes > xWMACMO, 1,
    	   iff(nRes <= xWMACMO, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & CMO & WMA", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthCMO = input(14, minval=1)
LengthWMA = input(13, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posCMOWMA = CMOWMA(LengthCMO, LengthWMA)
pos = iff(posReversal123 == 1 and posCMOWMA == 1 , 1,
	   iff(posReversal123 == -1 and posCMOWMA == -1, -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)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Mehr