Die Ressourcen sind geladen. Beförderung...

Anfänger, schauen Sie sich das an Ich bringe Sie zum Quantitative Trading von Kryptowährungen (4)

Schriftsteller:- Ich bin ein Idiot., Erstellt: 2022-04-18 14:16:06, aktualisiert: 2022-04-18 15:39:07

Anfänger, schauen Sie sich das an Ich bringe Sie zum Quantitative Trading von Kryptowährungen (4)

In den ersten Artikeln habe ich so viele grundlegende Konzepte des Kryptowährungskreises sowie des programmatischen und quantitativen Handels gelernt. Schließlich können wir zum Hauptthema kommen und über die Strategie selbst sprechen. Im Artikel werden wir lernen, eine einfache Strategie umzusetzen. Für [Grid Strategy] sollten Studenten, die Handel betreiben, davon gehört haben, aber es spielt keine Rolle, ob Sie es nicht getan haben.PlattformenDie meisten Unternehmen haben ihre eigenen programmatischen und quantitativen Handelsfunktionen eingeführt, und die am häufigsten und am leichtesten verwendete Strategie istNetzstrategieDa wir die Quantifizierung in den Kryptowährungskreis einführen wollen, warum implementieren wir dann nicht einfach eine Netzstrategie selbst?

Dann könnten einige Studenten sagen: Ich kann keine Codes schreiben! Codes machen mich ängstlich!

Das ist wahr. Es ist in der Tat ziemlich schwierig für Studenten, die keine Computersoftware studieren und sich nicht mit Programmierarbeiten beschäftigt haben, eine vollständige Handelsstrategie selbst zu entwickeln. Weil Sie eine Reihe von Vorarbeiten vom Docking der Plattformoberfläche ausführen müssen (vielleicht ist Ihr Handelslogikprogramm nur 100 Zeilen lang, aber die andere zu erledigende Codierungsarbeit ist ziemlich viel, und es ist schwieriger als das Schreiben von Handelslogik.)

Zu diesem Zeitpunkt, wenn Sie ein sehr praktisches Tool haben, wird es ziemlich einfach sein, zumindest wird die Schwierigkeit um 70% reduziert. Sie können sich vorstellen, wenn Sie nur die Handelslogik schreiben, andere Arbeit, einschließlich Docking-Plattform-Schnittstelle, Signaturüberprüfung, Konfigurationsdateien, Betriebsumgebung Konstruktion, UI-Schnittstelle Schreiben, interaktives Schreiben und andere Funktionen, ist alles fertig, wie bequem und schnell es ist.

Glaubst du das nicht? Versuchen wir's!

Verwirklichen Sie eine einfache Strategie des Punktnetzes

Das Werkzeug, das wir verwenden, ist: FMZ Quant Trading Platform (FMZ.COM) Der Kern der Netzstrategie ist eigentlich die Logik des Netzeinkaufs und Verkaufs, also muss dies vor der Strategieentwicklung geklärt werden.

Die grundlegenden Verfahren für die Ausarbeitung einer Strategie sind wie folgt:

  • 1.Zusammenfassung der Anforderungen an die Strategie

    Einfach ausgedrückt, sie sind, was Ihre Strategie tun wird, wie sie zu tun ist und welche Funktionen sie hat. Diese Informationen können in einem Dokument (etwas wie ein Notizbuch) geschrieben werden, bevor Sie den Strategiecode tatsächlich schreiben. Es ist sehr einfach, Strategien auf FMZ zu entwickeln. Die Plattform bietet Ihnen Lösungen für diese Anforderungen, und Sie müssen diese Anforderungen nicht in einem Notizbuch schreiben (was nicht sehr bequem zu verwalten ist).

    img

    Denken Sie daran, die Strategie zu speichern, wenn Sie mit dem Schreiben fertig sind, und dann schreiben wir die Strategieanforderungen weiter (diese Anforderungen sind nicht unverändert; Sie können gleichzeitig aufnehmen und entwickeln).

    • Die Strategie ist als Spot-Taring-Strategie konzipiert.XXX_USDT, wie zum BeispielBTC_USDT.
    • Das Gitter ist so konzipiert, daß es sich um gleiche Differenzintervalle handelt; um es einfach zu machen, ist das Intervall zwischen den beiden angrenzenden Punkten im Gitter eine feste Streuung.
    • Das Gitter ist so konzipiert, dass es ein unendliches Gitter ist, das sich grenzenlos ausdehnen kann.
    • Die Art und Weise der Bestellung verwendet die Marktordnung.
  • 2.Konstruieren Sie die Datenstruktur des Netzwerks:

    Für die unklaren Ideen können wir zu Beginn analysieren.

    img

    Grids können sowohl in Auf- als auch in Abwärtsrichtung vom Basispunkt, dem Anfangspreis am Anfang, konstruiert werden. Das sogenannte Gitter besteht aus Schichten von Bietlinien und Asklinien.

    1. die Preise erhöhen;
    2. Sie haben den Preis gekreuzt.
      Wenn wir den Preis überschreiten, bedeutet das, dass der Preis immer höher wird. Wir müssen verkaufen und dann kaufen, wenn der Preis nach dem Anstieg fällt, um Gewinn zu machen. Wenn der Preis nach unten geht, bedeutet das, dass der Preis immer niedriger wird. Wir müssen kaufen und dann verkaufen, wenn der Preis nach dem Fall steigt, um Gewinn zu machen. Daher hat jede Gitterlinie zwei Handelsarten: Kauf (Bieten) und Verkauf (Fragen). Außerdem hat jede Gitterlinie ein festes Attribut, das der mit der Linie markierte Preis ist, wie A, B, C, D auf dem Bild gezeigt. Wenn wir eine Strategie entwerfen, sollten wir zuerst herausfinden,- Was?Wir wollen es wirklich, und dann wird es bequem sein, es zu tun.

    Codierung einer Funktion zur Konstruktion einer Netzdatenstruktur:

    function createNet(begin, diff) {   // begin and diff are parameters; begin is the initial price, and diff is the grid interval (the interval of the equal difference grid is a price)
        var oneSideNums = 10            // The grid generates 10 lines on both upward and downward sides. The above image only shows the situation of generating 2 lines on both sides (A and B on on side; C and D on the other side), and you can imagine the situation of generating 10 lines.
        var up = []                     // used to store the data structure of the upward "grid lines"
        var down = []                   // used to store the data structure of the downward "grid lines"
        for (var i = 0 ; i < oneSideNums ; i++) {    // determine the number of times according to the number of oneSideNums; construct the "grid line" data structure by loop 
            var upObj = {                            // construct the data structure of a upward "grid line"
                buy : false,                         // buy mark; the initial mark is false, which means no buying 
                sell : false,                        // sell mark ...
                price : begin + diff / 2 + i * diff, // the price position represented by the "grid line", which can be observed and processed according to the loop; the price position is getting higher successively
            }
            up.push(upObj)                           // put the constructed "grid line" data structure into the up array 
    
            var j = (oneSideNums - 1) - i            // when in the loop, j changes from 9 to 0 
            var downObj = {
                buy : false,
                sell : false,
                price : begin - diff / 2 - j * diff,
            }
            if (downObj.price <= 0) {                // the price cannot be less than or equal to 0 
                continue
            }
            down.push(downObj)                       // put the constructed "grid line" data structure into the down array 
        }    
    
        return down.concat(up)                       // add "up" after "down", forming a grid array structure with grid line prices from low to high 
    }
    

    Sie können die Funktion einzeln ausführen, um das Ergebnis zu sehen. Das Debug-Tool auf FMZ oder Backtest-System sind alle sehr praktisch, um diese Art von Kurzcodes zu debuggen.

    img

    Die konstruierten Daten können beobachtet werden.

    [
        {"buy":false,"sell":false,"price":5},
        {"buy":false,"sell":false,"price":15},
        {"buy":false,"sell":false,"price":25},
        {"buy":false,"sell":false,"price":35},
        {"buy":false,"sell":false,"price":45},
        {"buy":false,"sell":false,"price":55},
        {"buy":false,"sell":false,"price":65},
        {"buy":false,"sell":false,"price":75},
        {"buy":false,"sell":false,"price":85},
        {"buy":false,"sell":false,"price":95},
        {"buy":false,"sell":false,"price":105},  // 100 is the initial price, the first line goes up is from 105, and the interval is 10 
        {"buy":false,"sell":false,"price":115},  // ... 
        {"buy":false,"sell":false,"price":125},
        {"buy":false,"sell":false,"price":135},
        {"buy":false,"sell":false,"price":145},
        {"buy":false,"sell":false,"price":155},
        {"buy":false,"sell":false,"price":165},
        {"buy":false,"sell":false,"price":175},
        {"buy":false,"sell":false,"price":185},
        {"buy":false,"sell":false,"price":195}
    ]
    
    1. Analyse der Handelslogik

    Nachdem wir die Datenstruktur des Gitterwerks analysiert haben, müssen wir die spezifische Handelslogik der Gitterstrategie berücksichtigen. Tatsächlich ist die Logik des Kaufs und Verkaufs auch sehr einfach. Wir haben sie bereits in der obigen Abbildung gezeichnet. Kaufen bedeutet, eine bestimmte Linie nach unten zu überqueren, und verkaufen bedeutet, eine bestimmte Linie nach oben zu überqueren. Wie drücken wir also Upcrossing und Downcrossing aus? Es ist auch sehr einfach, wir müssen nur die Preispositionen von zwei Momenten vergleichen, um zu beurteilen.

    Ich zeige es Ihnen auf dem vorherigen Bild.img

    1 ist eine Zeit, t2 ist eine Zeit nach t1; um zu beurteilen, ob die Linie C nach oben gekreuzt ist oder nicht, müssen wir nur beurteilenP1 < CundP2 > C- Ich weiß. Auf die gleiche Weise, um zu beurteilen, ob die Linie B nach unten gekreuzt ist, müssen wir nur zu beurteilenP1 > BundP3 < B- Ich weiß. Zu diesem Zeitpunkt müssen wir nur jede Linie in der Raster-Array zu durchqueren (Traversing wird allgemein gesagt,Einer nach dem anderen überprüfenIch möchte Sie bitten, mir zu sagen, ob Sie sich für eine solche Entscheidung entscheiden.

    Ich habe die Aktion des Preis-Upcrossing und Downcrossing erfasst. Kann ich eine Bestellung aufgeben, wenn diese Aktionen ausgelöst werden? Wenn der Preis auf einer Linie wiederholt nach oben und unten geht, würde dies nicht die Handlinggebühr für wiederholte Trades zum selben Preis verschwenden? Daher gibt es nach Auslösung des Upcross und Downcross noch eine Reihe von Urteilsbedingungen, die die Verwendung der Kauf-/Verkaufsmarke in der gerade konstruierten Gitterlinie-Datenstruktur erfordern (z. B.: {buy:false,"sell ":false,price:5}).

Vielen Dank, daß ihr gelesen habt, und lasst uns die Erklärung und das Studium im nächsten Artikel fortsetzen.


Mehr