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!
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!
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.
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).
XXX_USDT
, tels queBTC_USDT
.2.Construire une structure de données de réseau:
Pour les idées peu claires, nous pouvons tracer pour analyser au début.
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.
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.
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}
]
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.
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 < C
etP2 > C
Je 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 > B
etP3 < B
Je 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: {
Merci d'avoir lu, et poursuivons l'explication et l'étude dans l'article suivant.