Multifaktorielle quantitative Handelsstrategie, die dynamischen RSI und CCI kombiniert


Erstellungsdatum: 2023-11-27 18:54:34 zuletzt geändert: 2023-11-27 18:54:34
Kopie: 0 Klicks: 732
1
konzentrieren Sie sich auf
1617
Anhänger

Multifaktorielle quantitative Handelsstrategie, die dynamischen RSI und CCI kombiniert

Überblick

Diese Strategie ermöglicht eine quantitative Handelsstrategie, die durch die Kombination von dynamischen RSI-Indikatoren, CCI-Indikatoren und Multiple-MA-Mittellinien durch mehrere Faktoren angetrieben wird. Die Strategie berücksichtigt mehrere Dimensionen wie Trend, Überkauf und Überverkauf, um Urteile zu fällen und Handelssignale zu erzeugen.

Strategieprinzip

Technische Kennzahlen

  • MA-Durchschnittslinie: Berechnung des Durchschnitts der Schlusskosten innerhalb eines bestimmten Zeitraums, um die Preisentwicklung zu beurteilen
  • Relative Schwäche des RSI: Überkauf- und Überverkaufszonen
  • Der CCI-Wechselkurs: Überkauf und Überverkauf
  • Stoch KDJ-Indikator: Beurteilung von Abweichungen von Zufallsindikatoren vom Haupttrend

Handelssignale

Kaufsignale: MA12 mit MA26, CCI unter 100 (Überverkauf), Stoch KDJ unter 80 (Überverkauf)

Verkaufssignale: Dynamische Verluste unter dem RSI, Stoch KDJ über 80 (Überkauf)

Strategische Vorteile

  1. Multi-Faktor-Antriebe, umfassendes Urteilsvermögen, Verringerung von Falschsignalen
  2. Dynamische Abwertungen, die in Echtzeit überkauft und überverkauft werden können
  3. Trends, Zufälligkeit und mehrere Mainstream-Technik-Indikatoren kombiniert
  4. Flexibilität bei der Einstellung von mehreren Parametern

Strategisches Risiko

  1. Die Kombination von mehreren Faktoren ist zu kompliziert und die Optimierung der Parameter ist schwierig.
  2. Strategie-Performance ist stark mit Parameter-Auswahl verbunden
  3. Parameter-Optimierung muss strikt nach dem Quantifizierungsprozess erfolgen
  4. Es besteht ein höheres Risiko für Kurvenübereinstimmung

Strategieoptimierung

  1. Weitere Datensätze, um die Robustheit von Strategien zu testen
  2. Multiple-Parameter-Kombinationstests zur Suche nach den optimalen Parametern
  3. Erhöhung der Stop-Loss-Mechanismen zur Verringerung der maximalen Rücknahme
  4. Erhöhung der Positionskontrolle und Vermeidung von Rückschlägen
  5. Tests zur Eignung verschiedener Varianten

Zusammenfassen

Die Strategie verwendet mehrere technische Indikatoren und mehrere Faktoren, um die besten Parameter durch Parameteroptimierung und strenge statistische Verifizierung zu finden, um eine bessere Strategiewirkung zu erzielen. Die Strategie kann jedoch auf andere Sorten und Zeiträume ausgedehnt werden, um Optimierungstests durchzuführen.

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

//@version=4
strategy(title="ATOM2.0", shorttitle="ATOM V2.0", overlay=false, default_qty_type=strategy.cash, currency=currency.USD, initial_capital=200, default_qty_type=strategy.cash, default_qty_value=100, pyramiding=10)

// Set Parameter MA12
len12 = input(12, minval=1, title="Length")
src12 = input(close, title="Source")
ma12 = sma(src12, len12)
//plot(ma12, color=color.blue, title="MA12")

// Set Parameter MA26
len26 = input(26, minval=1, title="Length")
src26 = input(close, title="Source")
ma26 = sma(src26, len26)
//plot(ma26, color=color.orange, title="MA12")

//Stochastic RSI 14,3,3
smoothK_1 = input(3, minval=1)
smoothD_1 = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src_1 = input(close, title="RSI Source_1")

rsi1 = rsi(src_1, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK_1)
d = sma(k, smoothD_1)
//plot(k, color=color.red)
//plot(d, color=color.yellow)

//Stochastic RSI 5,4,3
smoothK_2 = input(4, minval=1)
smoothD_2 = input(3, minval=1)
lengthRSI_2 = input(5, minval=1)
lengthStoch_2 = input(5, minval=1)
src_2 = input(close, title="RSI Source_2")

rsi2 = rsi(src_2, lengthRSI_2)
k_2 = sma(stoch(rsi2, rsi2, rsi2, lengthStoch_2), smoothK_2)
d_2 = sma(k_2, smoothD_2)
//plot(k_2, color=color.white)
//plot(d_2, color=color.green)

// CCI
cci = cci(close,26)
//plot(cci,color=color.blue)

// Dynamic RSI
DZbuy = 0.1
DZsell = 0.1
Period = 14
Lb = 60

RSILine = rsi(close,Period)
jh = highest(RSILine, Lb)
jl = lowest(RSILine, Lb)
jc = (wma((jh-jl)*0.5,Period) + wma(jl,Period))
Hiline = jh - jc * DZbuy
Loline = jl + jc * DZsell
R = (4 * RSILine + 3 * RSILine[1] + 2 * RSILine[2] + RSILine[3] ) / 10

plot(R, title='R', color=color.white, linewidth=1, transp=0)
plot(Hiline, title='Hiline', color=color.yellow,  linewidth=1, transp=0)
plot(Loline, title='Loline', color=color.yellow, linewidth=1, transp=0)
plot(jc, title='Jc', color=color.purple,  linewidth=1, transp=50)

col_1 = R > Hiline ? color.red:na
col_2 = R < Loline ? color.green:na

fill(plot(R, title='R', color=color.white, linewidth=1, transp=0), plot(Hiline, title='Hiline', color=color.yellow,  linewidth=1, transp=0), color=col_1,transp=0)
fill(plot(R, title='R', color=color.white, linewidth=1, transp=0), plot(Loline, title='Loline', color=color.yellow, linewidth=1, transp=0), color=col_2,transp=0)
//------------------------------------------------------------------------------
// Calculate qty
// Parameter
fund = 10           // Fund per Contract in USD
leverage = 100     // Leverage
// Buy Condition
buyCondition = (ma12>ma26 and cci<100 and k<80 and d<80 and k_2<80 and d_2<80 and crossover(k_2, d_2))
buy = (buyCondition == input(1))
alertcondition(buy, title='time to Long', message='Long!!!')
//closeBuy = (cci>100 and cci<cci[1] and cci<cci[2])
closeBuy = (crossunder(R, Hiline) and k>80)
alertcondition(closeBuy, title='Time to Close', message='Close Long')

// Submit Orders
strategy.entry(id="Long", qty=(fund*leverage)/close, long=true, when=buyCondition)
strategy.close(id="Long", when=closeBuy)