Eine Multi-Faktor-Quantitative-Trading-Strategie, die die Einheitlichkeit und die Schwingungsindikatoren berücksichtigt, um das Risiko zu kontrollieren und die Stabilität zu verbessern. In diesem Artikel werden die Prinzipien, Vorteile und möglichen Risiken der Handelsstrategie im Detail beschrieben.
Die Strategie besteht aus drei Modulen:
Der Trendfilter wird mit den EMA-Mitteln aus 5 verschiedenen Perioden (8, 13, 21, 34 und 55 Tage) erstellt. Die EMA-Mitteln sind von kurz bis lang angeordnet und haben nur dann Trendmerkmale und erzeugen Handelssignale, wenn sie den langen EMA überschreiten.
Der RSI und der Stochastic sind die beiden wichtigsten Oszillationsindikatoren, um einen Bruch zu verifizieren und eine große Anzahl von Falschbrüchen in einem wackligen Markt zu vermeiden.
Der Parameter für den RSI ist 14, wenn der RSI in der Bandbreite 40-70 den Mehrwert-Bedingungen entspricht und in der Bandbreite 30-60 den Leerwert-Bedingungen.
Die stochastischen Parameter sind: ((14,3,3), wenn die K-Linie in der Bandbreite 20-80 den Mehrwert-Bedingungen entspricht, und in der Bandbreite 5-95 den Leerwert-Bedingungen.
Ein Einstiegssignal wird nur ausgelöst, wenn der Mittellinienfaktor und der Schwingungsindikator gleichzeitig qualifiziert sind; ein Ausstiegssignal wird erzeugt, wenn einer der Faktoren nicht mehr qualifiziert ist.
Die gesamte Strategie verwendet strenge Mehrere-Faktor-Filtermechanismen, um die Stabilität und Zuverlässigkeit der Handelssignale zu gewährleisten, während die Gewinnrate hoch bleibt.
Diese Strategie kombiniert die Vorteile von Trend-Tracking und Reverse Trading, ein Multifaktor-Modell, das das Risiko effektiv kontrolliert und einen stabilen Überschuss erzielt. Es ist ein sehr praktisches, quantitatives Handelsstrategie-Modell, das der KI-Community eine gründliche Untersuchung und Anwendung wert ist.
/*backtest
start: 2022-09-12 00:00:00
end: 2022-11-15 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title = "Combined Strategy", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value = .0020, pyramiding = 0, slippage = 3, overlay = true)
//----------//
// MOMENTUM //
//----------//
ema8 = ema(close, 8)
ema13 = ema(close, 13)
ema21 = ema(close, 21)
ema34 = ema(close, 34)
ema55 = ema(close, 55)
plot(ema8, color=red, style=line, title="8", linewidth=1)
plot(ema13, color=orange, style=line, title="13", linewidth=1)
plot(ema21, color=yellow, style=line, title="21", linewidth=1)
plot(ema34, color=aqua, style=line, title="34", linewidth=1)
plot(ema55, color=lime, style=line, title="55", linewidth=1)
longEmaCondition = ema8 > ema13 and ema13 > ema21 and ema21 > ema34 and ema34 > ema55
exitLongEmaCondition = ema13 < ema55
shortEmaCondition = ema8 < ema13 and ema13 < ema21 and ema21 < ema34 and ema34 < ema55
exitShortEmaCondition = ema13 > ema55
// ---------- //
// OSCILLATORS //
// ----------- //
rsi = rsi(close, 14)
longRsiCondition = rsi < 70 and rsi > 40
exitLongRsiCondition = rsi > 70
shortRsiCondition = rsi > 30 and rsi < 60
exitShortRsiCondition = rsi < 30
// Stochastic
length = 14, smoothK = 3, smoothD = 3
kFast = stoch(close, high, low, 14)
dSlow = sma(kFast, smoothD)
longStochasticCondition = kFast < 80
exitLongStochasticCondition = kFast > 95
shortStochasticCondition = kFast > 20
exitShortStochasticCondition = kFast < 5
//----------//
// STRATEGY //
//----------//
longCondition = longEmaCondition and longRsiCondition and longStochasticCondition and strategy.position_size == 0
exitLongCondition = (exitLongEmaCondition or exitLongRsiCondition or exitLongStochasticCondition) and strategy.position_size > 0
if (longCondition)
strategy.entry("LONG", strategy.long)
if (exitLongCondition)
strategy.close("LONG")
shortCondition = shortEmaCondition and shortRsiCondition and shortStochasticCondition and strategy.position_size == 0
exitShortCondition = (exitShortEmaCondition or exitShortRsiCondition or exitShortStochasticCondition) and strategy.position_size < 0
if (shortCondition)
strategy.entry("SHORT", strategy.short)
if (exitShortCondition)
strategy.close("SHORT")