Quantitative Handelsstrategie basierend auf Wellentrend


Erstellungsdatum: 2023-11-28 16:17:31 zuletzt geändert: 2023-11-28 16:17:31
Kopie: 1 Klicks: 715
1
konzentrieren Sie sich auf
1619
Anhänger

Quantitative Handelsstrategie basierend auf Wellentrend

Überblick

Diese Strategie basiert auf der Entwicklung von Wellen-Trend-Indikatoren. Die Wellen-Trend-Indikatoren kombinieren die Preiskanäle mit den Durchschnittswerten, um die Markttrends effektiv zu identifizieren und ein Kauf- und Verkaufssignal auszusenden. Die Strategie führt Kauf- oder Verkaufshandlungen durch, indem sie eine Überkauf-Überverkauflinie für Wellen-Trends einrichtet, wenn die Indikatorlinie die Schlüssellinie durchbricht.

Strategieprinzip

  1. Berechnen Sie den Dreiecksbewegungsdurchschnitt des Preises ap, sowie den Indexbewegungsdurchschnitt des Preises esa.
  2. Der Indikator für die absolute Differenz zwischen AP und ESA wird als Moving Average berechnet.
  3. Die Schwankungsindikatoren werden als ci‬ ermittelt.
  4. Berechnen Sie den n2-Zyklus-Durchschnitt von ci und erhalten Sie den Wellen-Trend-Indikator wt1.
  5. Setzen Sie Überkauf- und Überverkaufslinien ein.
  6. Wenn sie die Überverkaufslinie auf wt1 überschreiten, machen sie mehr; wenn sie die Überkaufslinie unter wt1 überschreiten, machen sie leere.

Analyse der Stärken

  1. Der Wave Trend Indicator durchbricht die Überkauf-Überverkauf-Linie und kann die Wendepunkte der Markttrends effektiv erfassen, um Kauf- und Verkaufsentscheidungen zu treffen.
  2. In Kombination mit dem Preiskanal und der Gleichlinientheorie erzeugt der Indikator keine häufigen Signale.
  3. Die Verwendung eines beliebigen Zeitrahmens für verschiedene Handelsarten.
  4. Die Benchmarkparameter sind einstellbar und die Benutzererfahrung ist gut.

Risiken und Lösungen

  1. In stark bewegten Märkten kann der Indikator ein falsches Signal erzeugen, was ein hohes Risiko darstellt. Die Haltedauer kann angemessen verkürzt werden oder in Kombination mit anderen Indikatoren Filtersignale.
  2. Ohne Berücksichtigung von Positionsmanagement und Stop-Loss-Mechanismen besteht ein Verlustrisiko. Die Positionsgröße und der mobile Stop-Loss können eingestellt werden, um das Risiko zu kontrollieren.

Optimierungsrichtung

  1. Es kann in Kombination mit anderen Indikatoren wie KDJ, MACD usw. verwendet werden, um ein Handelsportfolio zu bilden und die Strategie zu stabilisieren.
  2. Automatische Stop-Loss-Mechanismen, wie Tracking-Stops, Stop-Loss-Schaltlinien usw., können entworfen werden, um einzelne Verluste zu kontrollieren.
  3. Die Algorithmen können mit Deep Learning kombiniert werden, um die Erfolgsrate der Strategie zu erhöhen, indem die Parameter automatisch optimiert werden.

Zusammenfassen

Diese Strategie basiert auf Wellen-Trend-Indikatoren, die überkaufte und überverkaufte Trends erkennen. Sie ist eine effektive Trend-Tracking-Strategie. Im Vergleich zu kurzfristigen Indikatoren reduzieren Wellen-Trend-Indikatoren die Fehlsignale und erhöhen die Stabilität. In Kombination mit Positionsverwaltung und Stop-Loss kann die Strategie einen stabilen Ertrag erzielen.

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


//@author SoftKill21
//@version=4

strategy(title="WaveTrend strat", shorttitle="WaveTrend strategy")
n1 = input(10, "Channel Length")
n2 = input(21, "Average Length")
Overbought = input(70, "Over Bought")
Oversold = input(-30, "Over Sold ")

// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2001, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
DST = 1 //day light saving for usa
//--- Europe
London = iff(DST==0,"0000-0900","0100-1000")
//--- America
NewYork = iff(DST==0,"0400-1500","0500-1600")
//--- Pacific
Sydney = iff(DST==0,"1300-2200","1400-2300")
//--- Asia
Tokyo = iff(DST==0,"1500-2400","1600-0100")

//-- Time In Range
timeinrange(res, sess) => time(res, sess) != 0

london = timeinrange(timeframe.period, London)
newyork = timeinrange(timeframe.period, NewYork)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true //and (london or newyork)

ap = hlc3 
esa = ema(ap, n1)
d = ema(abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ema(ci, n2)
 
wt1 = tci
wt2 = sma(wt1,4)

plot(0, color=color.gray)
plot(Overbought, color=color.red)
plot(Oversold, color=color.green)

plot(wt1, color=color.green)
longButton = input(title="Long", type=input.bool, defval=true)
shortButton = input(title="Short", type=input.bool, defval=true)

if(longButton==true)
    strategy.entry("long",1,when=crossover(wt1,Oversold) and time_cond)
    strategy.close("long",when=crossunder(wt1, Overbought))
    
if(shortButton==true)
    strategy.entry("short",0,when=crossunder(wt1, Overbought) and time_cond)
    strategy.close("short",when=crossover(wt1,Oversold))

//strategy.close_all(when= not (london or newyork),comment="time")
if(dayofweek == dayofweek.friday)
    strategy.close_all(when= timeinrange(timeframe.period, "1300-1400"), comment="friday")