Die Strategie verwendet zwei verschiedene Perioden von Elastic-Weighted Moving Averages (EVWMA) als Cross-Operation, um ein Kauf- und ein Verkaufssignal zu erzeugen. Es wird ein Kaufsignal erzeugt, wenn eine kurze Periodenlinie eine lange Periodenlinie durchquert. Es wird ein Verkaufssignal erzeugt, wenn eine lange Periodenlinie unter einer kurzen Periodenlinie durchquert wird.
Die Strategie beurteilt Trendänderungen durch Berechnung von EVWMA-Linien mit unterschiedlichen Perioden und deren Kreuzung.
Insbesondere berechnet er zunächst zwei EVWMA-Linien:
Kurze Periodenzähler m1, Periodenzeit 1, Standard ist 5
Die Länge der Zeilenm2, die Zeitspanne 2, die Standardlänge ist 40.
Es beurteilt dann die Kreuzung von m1 und m2 durch die Crossover- und Crossunder-Funktionen:
Wenn m1 auf m2 getragen wird, wird ein Kaufsignal erzeugt und die Long-Operation ausgeführt.
Wenn m1 durch m2 geht, wird ein Verkaufssignal erzeugt und eine Short-Operation durchgeführt
Hier ist zu beachten, dass der EVWMA im Gegensatz zum gewöhnlichen Moving Average den jüngsten Daten ein höheres Gewicht verleiht, um schneller auf Preisänderungen reagieren zu können. Die Berechnungsformel lautet wie folgt:
data = (nz(data[1]) * (nb_floating_shares - volume)/nb_floating_shares) + (volume_price/nb_floating_shares)
Darin sind nz ((data[1]) zeigt den EVWMA-Wert des vorherigen Zyklus an, nb_floating_shares den Gesamtumsatz des Zyklus, volume den Umsatz des aktuellen Zyklus und volume_price den Umsatz des aktuellen Zyklus. Damit wird der jüngsten Daten ein höheres Gewicht zugeteilt.
Diese Strategie hat folgende Vorteile:
Mit EVWMA können Sie schneller auf Preisänderungen reagieren und Ihre Gewinnchancen verbessern
Mit der doppelten EVWMA-Linienüberschreitung können Trendwechselpunkte entdeckt und rechtzeitig eingeschaltet werden.
Einfach zu bedienen und leicht umzusetzen
Anpassbare Zykluslänge für unterschiedliche Marktumstände
Keine komplizierten Parameteroptimierungen, einfach auf Festplatte
Die Strategie birgt auch einige Risiken:
Die Doppelspur kann Marktgeräusche nicht filtern und kann viele unwirksame Signale erzeugen.
Es ist unmöglich, den Wendepunkt zu bestimmen, und es besteht die Gefahr, eine Wende zu verpassen.
Unschadensschutz, keine wirksame Risikokontrolle
Unzureichende Optimierung der Parameter, falsche Linienzyklus-Einstellungen können die Wirkung beeinträchtigen
Diese Strategie kann in folgenden Bereichen optimiert werden:
Erhöhung der Stop-Loss-Strategie und strenge Risikokontrolle
Optimierung der Zeilenlänge und Auswahl der optimalen Parameter
Hinzufügen von Filtersignalen für die Volumenindikatoren, um ungültige Transaktionen zu reduzieren
In Kombination mit anderen Indikatoren wird eine Trendwende und weniger verpasste Chancen beurteilt
Dynamische Optimierungsparameter, die Länge der Zeilen, die sich an Marktveränderungen anpassen
Unterscheidung zwischen Mehrkopf- und Leerkopfmärkten mit unterschiedlichen Parametern
Mit Hilfe von Machine Learning-Algorithmen und Big Data-Trainings kann er entscheiden, wann ein Kauf oder ein Verkauf stattfindet.
Diese Strategie ist einfach, aber es gibt einige Risiken und Optimierungsmöglichkeiten. Die Strategie kann durch Optimierung des Stop-Loss-Mechanismus, Parameter-Auswahl und Kombination mit anderen Indikatoren verstärkt werden, um sie besser für den realen Handel geeignet zu machen. Insgesamt ist diese Strategie als eine nützliche Erforschung von Moving Average Cross-Class-Strategien wert und lohnt sich für weitere Forschung und Anwendung.
/*backtest
start: 2023-08-18 00:00:00
end: 2023-08-26 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Elastic Volume Weighted Moving Average Cross Strategy", shorttitle="EVWMA Cross", overlay=true)
length1=input(5, title="EVWMA Short")
length2=input(40, title="EVWMA Long")
nbfs1=sum(volume, length1)
nbfs2=sum(volume, length2)
medianSrc=close
calc_evwma(price, length, nb_floating_shares) =>
data = (nz(data[1]) * (nb_floating_shares - volume)/nb_floating_shares) + (volume*price/nb_floating_shares)
data
m1=calc_evwma(medianSrc, length1, nbfs1)
m2=calc_evwma(medianSrc, length2, nbfs2)
if (crossover(m1, m2))
strategy.entry("MA2CrossLE", strategy.long, comment="MA2CrossLE")
if (crossunder(m1, m2))
strategy.entry("MA2CrossSE", strategy.short, comment="MA2CrossSE")
p1=plot(m1,color=orange,linewidth=2, title="evwma")
p2=plot(m2,color=orange,linewidth=2, title="evwma")