Strategie zur Filterung der Beweglichen Durchschnitte

Schriftsteller:ChaoZhang, Datum: 2023-12-12 12:35:05
Tags:

img

Übersicht

Dies ist eine gleitende Durchschnittshandelsstrategie, die mit Dynamikfiltertechniken aufgebaut wurde. Sie setzt eine Schwelle für Preisänderungen, um kleine Preisschwankungen auszufiltern, wobei nur große Preisbewegungen für die Berechnung ausgewählt werden, wodurch die Stabilität der Strategie verbessert wird.

Strategie Logik

Der Kernindikator dieser Strategie ist der Chande Momentum Oscillator (CMO), der durch die Dynamik gefiltert wird. Der Chande Momentum Oscillator ist eine Art Momentum-Indikator, der die Dynamik von Trends beurteilt, indem er das Verhältnis der Summe der absoluten Werte von Aufstiegs- und Abstiegstagen zur Summe der Preissteigerungen berechnet. Diese Strategie verbessert es, indem sie eine Mindestschwelle für Preisänderungen namens Filter festlegt. Nur wenn die Preisänderung diese Schwelle überschreitet, wird sie an der CMO-Berechnung teilnehmen. Dies filtert viele kleine Schwankungen im Markt aus und macht den Indikator stabiler und zuverlässiger.

Der Indikator wird mit einem Winkel von 0,01 bis 0,01 Sekunden berechnet, wobei der Indikator auf Basis der Indikatorberechnung die obere Linie TopBand und die untere Linie LowBand festlegt.

Analyse der Vorteile

Dies ist eine sehr stabile und zuverlässige Trendfolgestrategie. Durch die Annahme von Impulsfiltertechniken kann sie effektiv Marktlärm filtern und verhindern, dass sie gefangen wird. Die Strategie verfügt über einen großen Parameteroptimierungsraum, Parameter wie Filter, TopBand, LowBand usw. können angepasst werden, um den Strategieindikator zu optimieren. Sie verfügt auch über eine Reverse-Trading-Funktionalität, die sich flexibel an verschiedene Marktumgebungen anpassen kann.

Risikoanalyse

Die Strategie beruht hauptsächlich auf dem Trend-Folgen, so dass sie anfällig für falsche Signale und Verluste in Bereichsgebundenen Märkten ist. Darüber hinaus kann eine unsachgemäße Optimierung der Parameter auch zu einer übermäßigen Handelsfrequenz oder instabilen Signalen führen. Schließlich kann eine unsachgemäße Verwendung des Reverse-Trading-Parameters zu unnötigen Verlusten führen.

Um diese Risiken zu reduzieren, sollten die Parameter angemessen optimiert werden, um die Signale stabiler und zuverlässiger zu machen. Vermeiden Sie die Verwendung dieser Strategie in Bereichsgebundenen Märkten, wählen Sie geeignete Strategietools; Verwenden Sie umgekehrte Handelsfunktionen mit Vorsicht, vermeiden Sie die Aktivierung, wenn die Parameteroptimierung nicht ideal ist.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Optimieren Sie den Filterparameterwert, um Marktlärm zu filtern und die Handelsfrequenz nicht zu niedrig zu halten.

  2. Optimieren Sie den Parameterbereich von TopBand und LowBand, um den Marktvolatilitätsbereich zu entsprechen, um falsche Signale zu vermeiden.

  3. Verwenden Sie die Wandel-Forward-Analyse und andere Methoden, um die Parameter dynamisch zu optimieren, damit sich die Strategieparameter an die Marktveränderungen anpassen.

  4. Fügen Sie Stop-Loss-Logik hinzu und setzen Sie angemessene Stop-Loss-Punkte, um Verluste zu kontrollieren.

  5. Filtern Sie mit anderen technischen Indikatoren wie MACD, KD, um falsche Trades in nicht-trendigen Märkten zu vermeiden.

Zusammenfassung

Dies ist eine sehr praktische Trendfolgestrategie. Sie setzt Impulsfiltertechniken ein, um Marktlärm effektiv einzudämmen und klarere und zuverlässigere Signale zu erzeugen. Durch Parameteroptimierung und Logikoptimierung kann sie in ein zuverlässiges und stabiles quantitatives Handelswerkzeug eingestellt werden. Dennoch müssen Risiken bei der Verwendung in Bereichsgebundenen Märkten und einer unsachgemäßen Parameteroptimierung beachtet werden. Im Allgemeinen ist dies eine Strategievorlage mit großen Anwendungsperspektiven.


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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 02/03/2017
// This indicator plots a CMO which ignores price changes which are less 
// than a threshold value. CMO 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.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
fFilter(xSeriesSum, xSeriesV, Filter) =>
    iff(xSeriesV > Filter, xSeriesSum, 0)

strategy(title="CMOfilt", shorttitle="CMOfilt")
Length = input(9, minval=1)
Filter = input(3, minval=1)
TopBand = input(70, minval=1)
LowBand = input(-70, maxval=-1)
reverse = input(false, title="Trade reverse")
hline(0, color=gray, linestyle=line)
hline(TopBand, color=red, linestyle=line)
hline(LowBand, color=green, linestyle=line)
xMom = close - close[1]
xMomAbs = abs(close - close[1])
xMomFilter = fFilter(xMom, xMomAbs, Filter)
xMomAbsFilter = fFilter(xMomAbs,xMomAbs, Filter)
nSum = sum(xMomFilter, Length)
nAbsSum = sum(xMomAbsFilter, Length)
nRes =   100 * nSum / nAbsSum
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="CMOfilt")


Mehr