Duale gleitende Durchschnitts-Trendfolgestrategie


Erstellungsdatum: 2023-12-21 11:45:35 zuletzt geändert: 2023-12-21 11:45:35
Kopie: 0 Klicks: 653
1
konzentrieren Sie sich auf
1621
Anhänger

Duale gleitende Durchschnitts-Trendfolgestrategie

Überblick

Die binäre Moving Average Trend-Tracking-Strategie ist eine quantitative Trading-Strategie, die die Entwicklung der Aktienpreise verfolgt. Die Strategie verwendet ein binäres Moving Average-System, um die Richtung der Kursentwicklung zu bestimmen, und kombiniert die Trend-Bewertung mit der ADX-Indikatorstärke, um die Kursentwicklung auf der Mittel- und Langlinie zu erfassen.

Strategieprinzip

Die Strategie basiert hauptsächlich auf einem binären Index-Moving-Average-System, um die Richtung der Preisentwicklung zu bestimmen. Die Strategie verwendet EMAs mit zwei verschiedenen Parametern, die schnell und langsam sind. Die schnelle EMA1 reagiert schneller auf Preisänderungen und die langsame EMA2 reagiert auf Preisänderungen später.

Die ADX-Anzeige wird verwendet, um die Trendstärke zu bestimmen. Die ADX-Anzeige wird verwendet, um die Trendstärke zu bestimmen. Wenn der ADX-Wert steigt, zeigt er, dass der Trend stärker wird.

Die Strategie basiert auf folgenden Regeln für die Erzeugung von Handelssignalen:

  1. Überschreiten Sie die Schnellleitung, während Sie die langsame Linie durchlaufen, und machen Sie die Schnellleitung frei, während Sie die langsame Linie durchlaufen
  2. ADX>25 ist die maximale Freiraumgrenze.

Dies ermöglicht eine effektive Filterung von unwirksamen Signalen mit schwacher Trendstärke und verbessert die Stabilität des Handelssystems.

Strategische Vorteile

Diese Strategie hat folgende Vorteile:

  1. Erfassung von mittleren und langen PreistrendsDas Dual EMA-Average System ermöglicht es, die langfristige Trendbewegung zu erkennen, ohne von kurzfristigen Marktgeräuschen gestört zu werden.

  2. False-Riss-FilterDie ADX-Indikatoren beurteilen die Trendstärke und vermeiden unnötige Verluste durch Falschbrüche in der Nähe von Trendwendepunkten.

  3. Optimierung von ParameternDie Kombination von Schnell- und Langzeitargumenten, ADX-Parametern usw. hat Optimierungsmöglichkeiten, um bessere Handelsergebnisse durch Kombinationsparameter zu erzielen.

  4. Äußerst anpassungsfähigDie Strategie ist für die meisten Aktien und Zeitspannen geeignet und hat sich in mehreren Märkten bewährt.

  5. Einfach umzusetzenDie Strategie erfordert nur einfache Durchschnittswerte, ist ressourcenfreundlich, einfach zu programmieren und kostet wenig.

Strategisches Risiko

Die Strategie birgt auch Risiken, die sich auf folgende Bereiche konzentrieren:

  1. TrendumkehrrisikoEs gibt keine Trendstrategie, die einen Trendwendepunkt perfekt ermitteln kann, und es ist unumgänglich, dass sie große Verluste verursacht, wenn eine echte Trendwende eintritt.

  2. Parameter zur Optimierung von ÜberrisikenDie Optimierung der Parameter kann auch dazu führen, dass die Strategie zu sehr an die historischen Daten angepasst wird, was die Stabilität der Strategie und ihre Wirksamkeit im Kampf beeinträchtigt.

  3. Risiken von UnvorhergesehenenEin “major event” (großes Ereignis) kann die ursprüngliche Preis-Trend-Muster unterbrechen, wodurch der Moving-Average-Indikator außer Kraft gesetzt wird, und es ist notwendig, den Verlust durch manuelle Intervention oder Stop-Loss-Einstellungen zu kontrollieren.

In Bezug auf diese Risiken können wir in folgenden Bereichen optimieren:

  1. Die Einführung von zusätzlichen Indikatoren zur Bestimmung der Preiswendepunkte. Zum Beispiel die Einführung von Transaktionsmengen, die die Transaktionsmenge beim Preiswechsel verstärken.

  2. Die ADX-Parameter werden entsprechend gelockert, um zu gewährleisten, dass die Chancen auch zu Beginn des Trends wahrgenommen werden können. Zusätzlich können Hilfsurteile wie MACD eingeführt werden.

  3. Eine Kombination von Parametern wird in mehreren Trainingsgruppen getestet, wobei Parameter ausgewählt werden, die sowohl für Stabilität als auch für die Wirksamkeit im Einsatz geeignet sind. Die Gefahr einer Überoptimierung eines einzigen Parameters wird vermieden.

Richtung der Strategieoptimierung

Es gibt einige Optimierungsmöglichkeiten:

  1. Einführung eines Stop-Loss-MechanismusEs ist möglich, dass der Trend umgekehrt wird, um zu verhindern, dass die Position zu stark verliert.

  2. In Kombination mit dem HandelsvolumenindexDer Preiswechsel wird durch die Erhöhung des Handelsvolumens verhindert, so dass falsche Signale an den Preiswendepunkten entstehen.

  3. Optimierung der Anpassung der ParameterDas heißt, die Parameter des Indikators können sich an die Veränderungen des Marktes in Echtzeit anpassen, anstatt die Parameter statisch zu fixieren, was die Stabilität der Strategie erheblich verbessert.

  4. Einführung von maschinellem LernenMit Hilfe von Machine-Learning-Algorithmen können große Mengen an historischen Daten analysiert werden, um die Parameter für Moving Averages und ADX zu bestimmen und sogar die zukünftige Entwicklung des Preises vorherzusagen.

  5. Überkreislauf-OptimierungDie Parameter-Einstellungen können unterschiedlich sein, um die optimale Konfiguration der Parameter für jede Periode zu testen.

Zusammenfassen

Die Doppel-Moving-Average-Trend-Tracking-Strategie ist insgesamt eine ausgereifte und stabile Strategie. Die Strategie erfasst die mittleren langen Preistrends über die Doppel-EMA-Average-System und hat ADX-Indikatoren, um Signale zu filtern, um die Aktienpreistrends effektiv zu erfassen und von kurzfristigen Marktgeräuschen abgehalten zu werden. Gleichzeitig besteht ein gewisses Risiko für die Strategie, die Optimierung der Parameterkombination und der Stop-Loss-Methode erfordert, und sogar die Einführung von zusätzlichen Hilfsindikatoren und Machine-Learning-Algorithmen zur Steigerung der Strategie.

Strategiequellcode
/*backtest
start: 2022-12-14 00:00:00
end: 2023-11-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Kitaec Strategy4", shorttitle = "Kitaec str4", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
len = input(14, defval=14, minval=1, maxval=1000, title="Smoothing")
len2 = input(14, defval=14, minval=1, maxval=1000, title="Smoothing2")
len3=input(550)
src = close
ema1=ema(src, len)
ema2=ema(ema1, len2)
d=ema1-ema2
zlema=ema1+d

ema21=ema(src, (len/3)*2)
ema22=ema(ema21, (len2/3)*2)
d2=ema21-ema22
zlema2=ema21+d2

ema31=ema(src, len3)
ema32=ema(ema21, len3)
d3=ema31-ema32
zlema3=ema31+d2

fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//MAs
//ma1 = security(tickerid, "60", vwma(src, len)[1])
//ma2 = security(tickerid, "120", vwma(src, len)[1])
//plot(ma1, linewidth = 2, color = blue, title = "MA")
//plot(ma2, linewidth = 2, color = red, title = "MA2")

// ADX
lenadx = 14
lensig = 14
limadx = 18

up = change(high)
down = -change(low)
trur = rma(tr, lenadx)
plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, lenadx) / trur)
minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, lenadx) / trur)
sum = plus + minus 
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), lensig)
adx2 = ema(adx, 14)
adx2i = ema(adx2,14)
dadx2 = adx2 - adx2i
zladx2 = adx2 + dadx2
plus2 = ema(plus, 14)
plus2i = ema (plus2, 14)
dplus2 = plus2 - plus2i
zlplus2 = plus2 + dplus2

minus2 = ema(minus, 14)
minus2i = ema (minus2, 14)
dminus2 = minus2 - minus2i
zlminus2 = minus2 + dminus2

vwma = vwma(close, 150)
vwma2 = ema(vwma, 9)
vwma2i = ema(vwma2, 9)
dvwma2 = vwma2 - vwma2i
zlvwma2 = vwma2 + dvwma2


rmax=rma(src, len)
rmax2=rma(rmax, len2)
rmd=rmax-rmax2
zlrmax=rmax+rmd
rmaxz=rma(src, (len/3)*2)
rmaxz2=rma(rmaxz, (len2/3)*2)
rmzd=rmaxz-rmaxz2
zlrmaxz=rmaxz+rmzd
rmaxcol2=zlrmaxz[1] > zlema2[1] ? red:lime
rmaxcol= zlrmax[1] > zlema[1] ? red:lime


rmazlema3=rma(zlema3, 100)
plot(rmazlema3, color=gray, linewidth=2)
plot(zlema, color=green)
plot(zlema2, color=yellow)
plot(zlema3, color=teal, linewidth=2)
plot(ema2, color=na)
plot(rmax, color=rmaxcol2, linewidth=3)
plot(zlrmax, color=rmaxcol, linewidth=3)


//Trading
size = strategy.position_size
lot = 0.0 
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]

if zlrmax[1] < zlema[1]
    strategy.entry("Buy", strategy.long, needlong ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if zlrmax[1] > zlema[1]
    strategy.entry("Sell", strategy.short, needshort ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))