Pour les débutants, vérifiez Je vous emmène à la négociation quantitative de crypto-monnaie (4)

Auteur:Je suis désolée., Créé à partir de:

Pour les débutants, vérifiez Je vous emmène à la négociation quantitative de crypto-monnaie (4)

Dans les premiers articles, j'ai appris tant de concepts de base du cercle de crypto-monnaie ainsi que du trading programmatique et quantitatif. Pour [Grid Strategy], les étudiants qui font du trading devraient en avoir entendu parler, mais peu importe si vous ne l'avez pas fait.les plateformesLa stratégie la plus courante et la plus facilement utilisée est celle de l'échange de titres.Stratégie de réseauCependant, les fonctions de la stratégie de réseau et les détails fournis par chaque plateforme sont différents.

Ensuite, certains étudiants pourraient dire: Je ne sais pas écrire de codes! Les codes me rendent anxieuse!

C'est vrai. Il est en effet assez difficile pour les étudiants qui ne sont pas spécialisés dans les logiciels informatiques et qui n'ont pas été engagés dans le travail de programmation de développer une stratégie de trading complète par eux-mêmes. Parce que vous devez faire une série de travaux préliminaires à partir du docking de l'interface de la plateforme (peut-être que votre programme de logique de trading n'est que de 100 lignes, mais l'autre travail de codage à faire est beaucoup, et il est plus difficile que d'écrire une logique de trading.)

À ce stade, si vous avez un outil très pratique, il sera assez simple, au moins la difficulté est réduite de 70%. Vous pouvez imaginer, si vous écrivez seulement la logique de trading, d'autres travaux, y compris l'interface de la plate-forme d'amarrage, la vérification de la signature, les fichiers de configuration, la construction de l'environnement d'exploitation, l'écriture de l'interface de l'interface utilisateur, l'écriture interactive et d'autres fonctions, est tout prêt, à quel point il est pratique et rapide.

Vous ne le croyez pas? On va essayer!

Réalisez une stratégie de grille de points simple

L'outil que nous utilisons est: FMZ Quant Trading Platform (FMZ.COMLe noyau de la conception de la stratégie de réseau est en fait la logique de l'achat et de la vente du réseau, donc c'est quelque chose qui doit être clarifié avant de concevoir une stratégie.

Les procédures de base pour concevoir une stratégie sont les suivantes:

  • 1.Résumé des exigences de la stratégie

    En termes simples, ce sont ce que votre stratégie va faire, comment faire, et quelles fonctions elle a. Ces informations peuvent être écrites dans un document (un peu comme un carnet de notes) avant d'écrire le code de stratégie. Il est très simple de développer des stratégies sur FMZ. La plateforme vous fournit des solutions à ces exigences, et vous n'avez pas besoin d'écrire ces exigences dans un carnet de notes (ce qui n'est pas très pratique à gérer). Vous pouvez écrire les exigences de stratégie directement dans la note de stratégie.

    img

    Rappelez-vous de sauvegarder la stratégie lorsque vous avez terminé d'écrire, et ensuite nous continuons à écrire les exigences de la stratégie (ces exigences ne sont pas inchangées; vous pouvez enregistrer et développer en même temps).

    • La stratégie est conçue comme une stratégie de taring au comptant; la paire de négociation estXXX_USDT, tels queBTC_USDT.
    • La grille est conçue pour être un intervalle de différence égal; pour être simple, l'intervalle entre les deux points adjacents de la grille est une propagation fixe.
    • La grille est conçue pour être une grille infinie qui peut s'étendre sans limites.
    • La façon de commander utilise l'ordre du marché.
  • 2.Construire une structure de données de réseau:

    Pour les idées peu claires, nous pouvons tracer pour analyser au début.

    img

    Les grilles peuvent être construites dans les deux directions vers le haut et vers le bas à partir du point de base, le prix initial au début. La grille dite est composée de couches de lignes d'offre et de lignes de demande.

    1. augmenter le prix;
    2. En descendant le prix.
      Le prix en hausse signifie que le prix est de plus en plus élevé; nous devons vendre, puis acheter lorsque le prix tombe après la hausse, pour faire un profit. Descendre le prix signifie que le prix est en train de baisser; nous devons acheter, puis vendre lorsque le prix augmente après la chute, pour faire un profit. Par conséquent, chaque ligne de grille a deux façons de négocier: acheter (offre) et vendre (demande). De plus, chaque ligne de grille a un attribut fixe, qui est le prix marqué avec la ligne, comme A, B, C, D montré sur l'image. Lors de la conception d'une stratégie, nous devrions d'abord comprendre- Quoi donc?Nous voulons vraiment, et alors il sera pratique de le faire.

    Codification d'une fonction de construction de la structure de données de la grille:

    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 
    }
    

    Vous pouvez effectuer individuellement la fonction pour voir le résultat. L'outil de débogage sur FMZ ou le système de test arrière sont tous très pratiques pour déboguer ce type de codes courts.

    img

    Les données construites sont observables.

    [
        {"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 de la logique du trading

    Après avoir analysé la structure de données de la grille, nous devons considérer la logique de trading spécifique de la stratégie de grille. En fait, la logique d'achat et de vente est également très simple. Nous l'avons déjà dessinée dans l'image ci-dessus. Acheter signifie descendre une certaine ligne, et vendre signifie descendre une certaine ligne. Alors, comment exprimer le descente et le descente? C'est aussi très simple, nous avons seulement besoin de comparer les positions de prix de deux moments pour juger.

    Je vais vous montrer par l'image précédente.img

    1 est un temps, t2 est un temps après t1; pour juger si la ligne C est croisée ou non, nous avons seulement besoin de jugerP1 < CetP2 > CJe suis désolée. De la même façon, pour juger si la ligne B est en bas traversé, nous avons seulement besoin de jugerP1 > BetP3 < BJe suis désolée. À ce moment-là, nous avons seulement besoin de traverser chaque ligne dans le réseau (traverser est communément dit êtrevérifier un par unIl est très simple de déterminer si l'on est en haut ou en bas.

    J'ai détecté l'action de la hausse et de la baisse des prix. Puis-je passer une commande lorsque ces actions sont déclenchées? Il est évident que ce n'est pas possible. Si le prix monte et descend à plusieurs reprises sur une ligne, cela ne gaspillerait-il pas les frais de traitement pour les transactions répétées au même prix? Par conséquent, il existe encore une série de conditions de jugement après le déclenchement de l'upcross et du downcross, ce qui nécessite l'utilisation de la marque d'achat/vente dans la structure de données de ligne de grille que nous venons de construire (par exemple: {buy:false,"sell ":false,price:5}).

Merci d'avoir lu, et poursuivons l'explication et l'étude dans l'article suivant.


Plus de