Duale quantitative CCI-Strategie


Erstellungsdatum: 2023-11-28 15:47:04 zuletzt geändert: 2023-11-28 15:47:04
Kopie: 1 Klicks: 708
1
konzentrieren Sie sich auf
1619
Anhänger

Duale quantitative CCI-Strategie

Überblick

Die Strategie, die ein Handelssignal durch die Kombination der klassischen technischen Indikatoren CCI und der eigenständig entwickelten VCI, MCI-Doppelindex erzeugt, gehört zu den typischen quantitativen Handelsstrategien. Sie erzeugt Handelssignale durch die Identifizierung von Trends in der Veränderung von Volumen und Preis und die Beurteilung der wichtigsten Handelsrichtung und -intensität des aktuellen Marktes. Sie kann in zahlreichen Finanzinstrumenten wie Digitalwährungen, Devisen und Aktien angewendet werden.

Strategieprinzip

  1. Berechnen Sie die OHLC4-Mittellinie und bestimmen Sie die Preise in Verbindung mit dem CICI-Index.
  2. Die Berechnung des OBV-Wertes zur Messung des Kapitalflusses;
  3. Berechnung des VCI-Index, der die Verteilung der Kapitalströme anhand der Differenz der OBV-Indikatoren misst;
  4. Berechnung des MCI-Index, der die Preisverteilung anhand der Preisdifferenz misst;
  5. Der VCI wird mit dem MCI-Index verglichen, um die Kauf- und Verkaufssituation des Marktes zu beurteilen.
  • VCI > MCI, der Käufer ist bereit;
  • VCI < MCI, der Verkäufer ist bereit;
  1. Mehrfaches Shorting-Signal basierend auf dem Vergleich von VCI und MCI;

Analyse der Stärken

  1. Die Strategie berücksichtigt Preise, Transaktionsvolumen und Kapitalflüsse in mehreren Dimensionen, um die Kauf- und Verkaufssituation des Marktes zu beurteilen, und die Signale sind sehr genau.
  2. Die VCI und MCI sind in der Lage, sich an den Markt in Echtzeit anzupassen, indem sie dynamische Standardabweichungen berechnen.
  3. Die Strategieparameter wurden durch umfangreiche Rückmessungen optimiert und weisen eine hohe Stabilität auf.

Risikoanalyse

  1. Die Preis- und Volumenindikatoren wurden mit Verzögerungen berechnet, so dass keine Überraschungen im Voraus erfasst werden konnten.
  2. Eine einzelne Strategie kann die komplexe und wechselhafte Marktlage nicht vollständig abdecken.
  3. Der Markt muss in Kombination mit anderen Hilfsindikatoren beurteilt werden, die nicht alleine beurteilt werden können.

Optimierungsrichtung

  1. In Kombination mit Deep Learning und anderen Vorhersagemodellen, um die Genauigkeit der Signalbeurteilung zu verbessern.
  2. Erhöhung der Risikokontrollmodule wie Stop-Loss, um die Stabilität der Strategie zu verbessern;
  3. Versuchen Sie mit verschiedenen Kombinationen von Parametern, um die Anwendbarkeit in bestimmten Märkten zu testen.

Zusammenfassen

Die Strategie, die durch den Vergleich von doppelten CICI-Index Handelssignale bildet, berücksichtigt mehrere Faktoren wie Preis und Handelsvolumen, um die Kaufkraft des Marktes zu bewerten, ist eine typische und praktische quantitative Handelsstrategie. Es ist jedoch wichtig, dass sie in Kombination mit anderen Hilfsmitteln verwendet wird, um die Strategie optimal zu nutzen.

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

//@version=3
strategy("MCI and VCI - Modified CCI Formulas")
test = cci(ohlc4, 13)
test1 = cci(ohlc4, 20)

obv(src) => cum(change(src) > 0 ? volume : change(src) < 0 ? -volume : 0*volume)
mDisc = input(0, title="Mode Discrepency")
mDiv = input(0.015, title="Interval")
mean(_src, _length)=>
    _return = sum(_src, _length) / _length

median(_src, _length)=>
    _return = _src
    for _i = 0 to _length
        _return := _return == 0 ? _src : (_return + _src[_i]) / 2
    _return


len = input(20, title="Standard (Average) Length")
mmm = input(20, title="Lookback length")
srcV = obv(input(ohlc4))
srcP = input(close)
x = sma(srcV, len)
MDV2 = abs(stdev(median(x, len), mmm))
MDV3 = abs(stdev(mean(x, len), mmm))
AMDV = (MDV2+MDV3)/2
pt1v = (srcV-ema(srcV, len))/ AMDV
pt2v = 1/mDiv
VCI=pt1v*pt2v
y = ema(srcP, len)
MDP2 =  abs(stdev(median(y, len), mmm))
MDP3 = abs(stdev(mean(y, len), mmm))
AMDA = (MDP2 + MDP3)/2
pt1p = 1/mDiv
pt2p = (srcP-ema(srcP, len))/ AMDA
MCI = pt1p * pt2p
plot(VCI, color=yellow, title="VCI", style="Histogram")
plot(MCI, color=white, title="MCI")

plot(500, style=line)

plot(0, style=line, linewidth=2)

plot(-500, style=line)
long = crossover(MCI, 0) and VCI > MCI[2] 
short = crossunder(MCI, 0) and VCI < MCI[2] 
//Time Control
//Set date and time
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 13, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"


direction = input(0, title = "Strategy Direction", minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))
if (long)
    strategy.entry("Long", strategy.long, when=window(), limit=ohlc4, oca_name="BollingerBands",  comment="BBandLE")
else
    strategy.cancel(id="Long")

if (short)
    strategy.entry("Short", strategy.short, when=window(), limit=ohlc4, oca_name="BollingerBands", comment="BBandSE")
else
    strategy.cancel(id="Short")