Dans les articles précédents, nous avons appris les concepts de base de la sphère de monnaie, de la programmation et de la quantification des transactions. Les élèves qui font des transactions devraient avoir entendu parler de la stratégie de la grille, peu importe si oui ou non.Les boursesLa stratégie la plus simple et la plus facile à utiliser est d'utiliser des outils de trading.La stratégie de la grilleMais les fonctionnalités, les détails, etc. des stratégies de grille proposées par les différents échanges sont différents, et si nous avons l'intention d'entrer dans la sphère de la quantification, pourquoi ne pas commencer à mettre en œuvre une stratégie de grille nous-mêmes?
Il est possible que des camarades de classe disent: Vous n'écrivez pas de code! Je vois que le code est grand!
C'est vrai. Pour les professionnels non informatiques qui n'ont jamais travaillé sur des programmes, il est assez difficile de développer une stratégie de trading complète. Parce que vous devez commencer par une série de travaux préalables à partir de l'interface d'un échange de liaisons.
À ce stade, si vous avez un outil pratique, il est assez simple, avec une réduction de difficulté de 70% au minimum. Vous pouvez imaginer à quel point c'est facile et rapide si vous écrivez seulement la logique de transaction elle-même, les autres fonctions d'interface d'échange, la validation de la signature, le fichier de profil, la construction de l'environnement d'exploitation, l'écriture de l'interface utilisateur, l'écriture interactive, etc. sont toutes prêtes à l'emploi.
Vous ne le croyez pas? Nous allons essayer!
Nous utilisons un outil appelé: Inventor Quantitative Trading Platform.FMZ.COMLe cœur de la stratégie de la grille est en fait la logique de la grille d'achat et de vente, donc c'est quelque chose que vous devez comprendre avant de concevoir une stratégie. Notre objectif est de concevoir une stratégie simple et facile à comprendre, donc moins de paramètres, meilleure logique.
Voici le processus de base pour concevoir une stratégie:
Résumé des besoins stratégiques
En termes simples, ce que vous voulez que votre stratégie fasse, comment le faire, quelles fonctions, etc., toutes ces informations peuvent être écrites dans une documentation avant que vous n'écriviez réellement le code de la stratégie. Dans FMZ, développer une stratégie est très simple, la plate-forme vous donne des moyens de résoudre ces besoins, et je n'ai pas besoin d'écrire ces besoins dans un cahier (ce n'est pas très pratique à gérer).
Une fois que nous avons écrit la stratégie de sauvegarde, nous pouvons ensuite écrire les exigences de la stratégie (les exigences de la stratégie ne sont pas inchangées, elles peuvent également être enregistrées en développement).
XXX_USDT
Il y a aussi des articles sur les droits de l'homme.BTC_USDT
。2° Construire une structure de données de grille:
Pour les idées obscures, nous pouvons commencer par une analyse graphique.
On peut construire une grille dans les deux directions suivantes à partir du prix de départ initial comme point de départ. Une grille est une ligne d'achat et une ligne de vente à plusieurs niveaux. 1, le prix est le vêtement. 2, le prix est bas. Les prix indiquent que le prix est en hausse, qu'il faut le vendre, puis attendre que le prix baisse pour acheter un profit. Les prix bas indiquent que le prix est en baisse, il faut acheter, puis attendre que le prix augmente pour vendre au profit. Ainsi, chaque ligne de grille a deux modes de transaction: acheter, vendre. Et chaque ligne de grille a une propriété propre, le prix indiqué par cette ligne. La première chose que nous faisons quand nous concevons une stratégie, c'est de comprendre ce que nous voulons.Quel est?Il y a des gens qui ne sont pas prêts de faire quelque chose, mais qui ne sont pas prêts de le faire.
Écrire une fonction qui construit une structure de données de grille:
function createNet(begin, diff) { // begin,diff是参数,begin是初始价格,diff是网格间距(等差网格的间距是价格)
var oneSideNums = 10 // 网格向上、向下一边生成10条线,上图是一边生成2条(AB一边,CD一边),生成10条的自行脑补画面
var up = [] // 用来储存向上的“网格线”数据结构
var down = [] // 用来储存向下的“网格线”数据结构
for (var i = 0 ; i < oneSideNums ; i++) { // 根据oneSideNums的大小确定次数,循环构造“网格线”数据结构
var upObj = { // 构造一条向上的“网格线”数据结构
buy : false, // 买入标记,初始标记为false ,意思为没有买入
sell : false, // 卖出标记....
price : begin + diff / 2 + i * diff, // 这条“网格线”表示的价格位,可以观察根据循环进行,价格位是依次升高的
}
up.push(upObj) // 构造好的“网格线”数据结构放入up数组
var j = (oneSideNums - 1) - i // 循环时 j 的变动是:9 ~ 0
var downObj = {
buy : false,
sell : false,
price : begin - diff / 2 - j * diff,
}
if (downObj.price <= 0) { // 价格不能小于等于0
continue
}
down.push(downObj) // 构造好的“网格线”数据结构放入down
}
return down.concat(up) // 把up加在down之后,形成一个网格线价格从小到大的网格数组结构
}
Cette fonction peut être exécutée séparément pour voir l'effet. Les outils de débogage de puces sur FMZ ou les puces de système de débogage de puces sont très pratiques pour le débogage de ce type de petit code.
Il est possible d'observer les données construites.
[
{"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是起始价格,从105开始向上第一条线,间距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}
]
3, analyse de la logique des transactions
Après avoir analysé la structure des données de la grille, nous devons considérer la logique d'achat et de vente spécifique de la stratégie de la grille. En fait, la logique d'achat et de vente est également très simple, comme nous l'avons dessiné ci-dessus, acheter est de descendre à travers une certaine ligne, vendre est de monter à travers une certaine ligne.
Il y a aussi une autre photo.
T1 est un instant, t2 est un moment après t1, et si on juge que c'est une ligne qui traverse C, on peut juste dire que c'est une ligne qui traverse C.P1 < C
etP2 > C
Je ne sais pas.
Donc, si nous passons par la ligne B, nous avons juste besoin de juger si nous passons par cette ligne.P1 > B
etP3 < B
Je ne sais pas.
Nous avons commencé à travailler sur des projets qui ont été conçus pour les enfants.Une fois de plus.Chaque ligne dans l'ensemble de la grille peut être traversée.
Si vous avez saisi les mouvements de hausse et de baisse des prix, pouvez-vous passer des commandes lorsque ces mouvements sont déclenchés?
Il est évident que ce n'est pas possible, si le prix traverse une ligne à plusieurs reprises, ce n'est pas un frais de combustion de transaction à plusieurs reprises sur un niveau de prix. Donc, il y a une série de conditions de jugement pour déclencher le traversement, après le traversement, cela nécessite l'utilisation de la marque buy/sell dans la structure de données de la grille que nous venons de construire (par exemple: {
Merci d'avoir lu, nous continuerons à vous expliquer et à apprendre dans la prochaine édition.
Je vous en prie.Je n'arrive pas à comprendre mon code.
Je vous en prie.Pourquoi es-tu si fort?
CYZWXLe débogage et le py sont meilleurs.
Je vous en prie.Il est difficile d'arriver à une transaction en ligne.
L'inventeur de la quantification - un petit rêveIl n'est pas difficile de lire patiemment les articles dans les didacticiels, les communautés et les bibliothèques.