avatar of 发明者量化-小小梦 发明者量化-小小梦
konzentrieren Sie sich auf Private Nachricht
4
konzentrieren Sie sich auf
1271
Anhänger

Beschreibung des Backtesting-Mechanismus auf quantitativer Simulationsebene von Inventor

Erstellt in: 2017-02-07 13:04:57, aktualisiert am: 2023-09-07 17:49:15
comments   34
hits   15002

Beschreibung des Backtesting-Mechanismus auf quantitativer Simulationsebene von Inventor


  • ### 1. Rückprüfungsstruktur

Die Strategie des Erfinders ist ein vollständiger Kontrollprozess, der in einer fortlaufenden Befragung nach einer bestimmten Frequenz erfolgt. Die Daten, die von den einzelnen Situationen und Transaktions-APIs zurückgegeben werden, simulieren den tatsächlichen Betrieb im Moment des Aufrufs. Sie gehören zur onTick-Ebene und nicht zur onBar-Ebene anderer Messsysteme.

  • 2. Unterschied zwischen Analog- und Festplatten-Retest

    • #### Analog-Stufe Rückmeldung

    Die Analogie-Stufe der Rückmessung ist die Analogie der Tickerdaten, die nach den Daten der unteren K-Linie des Rückmesssystems in einer Zeitserie dieser Bar nach einem bestimmten Algorithmus in einem Rahmen von Höchst-, Mindest-, Öffnungs- und Schließwerten eines gegebenen unteren K-Linie-Bars simuliert werden.

    • #### Rückmeldung auf Festplatte

    Die Festplatten-Rückmeldung ist die tatsächliche Tickerspiegel-Daten in der Bar-Zeitfolge. Für Strategien, die auf Tickerspiegel-Daten basieren, ist die Festplatten-Rückmeldung eher realistisch. Tickers sind real aufgezeichnete Daten und nicht simuliert generierte Daten.

  • 3. Analog-Stufen-Rückmeldung - Unterseite der K-Leitung

Für die Festplatten-Rückmeldung gibt es keine Unterseite-K-Linie-Option (weil die Tickerdaten echt sind, wird keine Unterseite-K-Linie verwendet, um die Erzeugung zu simulieren). In der Analogie-Stufe der Rückmeldung, basierend auf K-Linie-Daten Simulation erzeugte ticker. Diese K-Linie-Daten ist die Unterseite K-Linie. In der praktischen Verwendung der Analogie-Stufe der Rückmeldung, die Unterseite K-Linie-Periode muss kleiner als die Periode, die API zu erhalten K-Linie bei der Ausführung der Strategie.

  • ### 4. Wie die unterste K-Leitung Tickerdaten erzeugt

Der Mechanismus zur Erzeugung von Simulationstickern auf der unteren K-Leitung ist der gleiche wie auf der MT4.

Beschreibung des Backtesting-Mechanismus auf quantitativer Simulationsebene von Inventor Beschreibung des Backtesting-Mechanismus auf quantitativer Simulationsebene von Inventor Beschreibung des Backtesting-Mechanismus auf quantitativer Simulationsebene von Inventor Beschreibung des Backtesting-Mechanismus auf quantitativer Simulationsebene von Inventor

  • ### 5. Algorithmuscode für die Erzeugung von Tickerdaten

Die spezifische Algorithmus zur Simulation der Tick-Daten aus den unteren K-Liniendaten:

function recordsToTicks(period, num_digits, records) {
    if (records.length == 0) {
        return []
    }
    var ticks = []
    var steps = [0, 2, 4, 6, 10, 12, 16, 18, 23, 25, 27, 29]
    var pown = Math.pow(10, num_digits)

    function pushTick(t, price, vol) {
        ticks.push([Math.floor(t), Math.floor(price * pown) / pown, vol])
    }

    for (var i = 0; i < records.length; i++) {
        var T = records[i][0]
        var O = records[i][1]
        var H = records[i][2]
        var L = records[i][3]
        var C = records[i][4]
        var V = records[i][5]
        if (V > 1) {
            V = V - 1
        }
        if ((O == H) && (L == C) && (H == L)) {
            pushTick(T, O, V)
        } else if (((O == H) && (L == C)) || ((O == L) && (H == C))) {
            pushTick(T, O, V)
        } else if ((O == C) && ((O == L) || (O == H))) {
            pushTick(T, O, V / 2)
            pushTick(T + (period / 2), (O == L ? H : L), V / 2)
        } else if ((C == H) || (C == L)) {
            pushTick(T, O, V / 2)
            pushTick(T + (period * 0.382), (C == L ? H : L), V / 2)
        } else if ((O == H) || (O == L)) {
            pushTick(T, O, V / 2)
            pushTick(T + (period * 0.618), (O == L ? H : L), V / 2)
        } else {
            var dots = []
            var amount = V / 11
            pushTick(T, O, amount)
            if (C > O) {
                dots = [
                    O - (O - L) * 0.75,
                    O - (O - L) * 0.5,
                    L,
                    L + (H - L) / 3.0,
                    L + (H - L) * (4 / 15.0),
                    H - (H - L) / 3.0,
                    H - (H - L) * (6 / 15.0),
                    H,
                    H - (H - C) * 0.75,
                    H - (H - C) * 0.5,
                ]
            } else {
                dots = [
                    O + (H - O) * 0.75,
                    O + (H - O) * 0.5,
                    H,
                    H - (H - L) / 3.0,
                    H - (H - L) * (4 / 15.0),
                    H - (H - L) * (2 / 3.0),
                    H - (H - L) * (9 / 15.0),
                    L,
                    L + (C - L) * 0.75,
                    L + (C - L) * 0.5,
                ]
            }
            for (var j = 0; j < dots.length; j++) {
                pushTick(T + period * (steps[j + 1] / 30.0), dots[j], amount)
            }
        }
        pushTick(T + (period * 0.98), C, 1)
    }
    return ticks
}

Daher kann bei der Verwendung von Simulations-Stufen-Retrospektiven ein Preiswechsel in der Zeitreihenfolge auftreten.