Comment étendre la bibliothèque de classes personnalisée dont vous avez besoin à la stratégie de visualisation? Par exemple, je veux calculer un indicateur MA, mais le système n'apporte que:Ces indicateurs, comment ajouter des codes personnalisés? Nous avons expliqué comment étendre le module de visualisation en ajoutant un module de calcul d'indicateur MA personnalisé.
Tout d'abord, un exemple de ce modèle est celui de l'outil de trading de crypto-monnaie, qui s'appelle:https://www.fmz.com/strategy/10989Bien que ce modèle soit un modèle pour le langage JavaScript de la plateforme FMZ, les élèves qui ne comprennent pas le concept de modèle peuvent consulter la documentation de l'API FMZ:https://www.fmz.com/api#模板类库Je vous en prie. Mais il y a un commentaire au début du modèle qui définit le code pour visualiser le module, et le code défini peut citer le code de ce modèle JavaScript.
La bibliothèque de transactions instantanées de crypto-monnaie, définition visualisée dans la première partie:
/*blockly
{
"type": "ext_Trade",
"message0": "%1 币数 %2|%1 Coins %2",
"args0": [{
"type": "field_dropdown",
"options": [
["买入|Buy", "Buy"],
["卖出|Sell", "Sell"]
]
}, {
"type": "input_value",
"check": "Number"
}],
"template": "(function(){var r = $.%1(%2); return r ? r.amount : 0; })()",
"order": "ORDER_ATOMIC",
"output": "Number",
"colour": 85
}, {
"type": "ext_CancelPendingOrders",
"message0": "取消 %1 订单|Cancel %1 Orders",
"args0": [{
"type": "field_dropdown",
"name": "TYPE",
"options": [
["所有|All", " "],
["买单|Buy", "ORDER_TYPE_BUY"],
["卖单|Sell", "ORDER_TYPE_SELL"]
]
}],
"previousStatement": null,
"nextStatement": null,
"template": "$.CancelPendingOrders(%1);",
"colour": 85
}, {
"type": "ext_Cross",
"message0": "计算交叉 周期 %1 与 %2|Cross Period %1 and %2",
"inputsInline": true,
"args0": [{
"type": "input_value"
}, {
"type": "input_value"
}],
"template": "$.Cross(%1,%2)",
"order": "ORDER_ATOMIC",
"output": "Number"
}, {
"type": "ext_GetAccount",
"message0": "获取资产信息|GetAccount",
"template": "$.GetAccount()",
"order": "ORDER_ATOMIC",
"output": null
}
*/
Les modules correspondant à la page d'édition visualisée:
Avec des exemples prêts à l'emploi, c'est plus facile de construire soi-même, que de peindre une peinture.
Tout d'abord, nous avons créé un nouveau modèle pour le langage JavaScript.
Modifier le code du modèle.
/*blockly
{
"type": "ext_testA",
"message0": "testA|testA",
"template": "function(){return 99;}()",
"order": "ORDER_ATOMIC",
"output": "Number"
},{
"type": "ext_MA",
"message0": "MA 周期 %1| MA Period %1",
"args0": [{
"type": "input_value",
"check": "Number"
}],
"template": "(function(){var r = exchange.GetRecords(); return (!r || r.length < %1) ? false : TA.MA(r, %1); })()",
"order": "ORDER_ATOMIC",
"output": null,
"colour": 85
}
*/
Ce nouveau modèle a été édité et sauvegardé. Dans la stratégie pour utiliser ce modèle, cliquez sur ce modèle.
Vous pouvez voir deux modules supplémentaires:
Il s'agit d'un module appelé testA, et nous allons voir son code d'exécution:
function(){return 99;}()
C'est une fonction JavaScript très simple qui est exécutée et qui renvoie une valeur de 99.
Il s'agit d'un module appelé MA Cycle, et nous allons voir son code d'exécution:
(function(){var r = exchange.GetRecords(); return (!r || r.length < %1) ? false : TA.MA(r, %1); })()
Le code est un appel à une fonction anonyme, dans laquelle l'opération d'obtention de données de ligne K est effectuée en premier lieu.r
Ensuite, si on obtient r, c'est pournull
Ou alorsr
La longueur est inférieure à la paramètre d'entrée du module%1
Pour juger.false
Ou retourner.TA.MA(r, %1)
Les résultats de l'indicateur calculé.
Il est possible de l'utiliser plus tard.
Le site Web de l'organisation est en ligne.
Il fonctionne:
Vous pouvez voir ci-dessus les données pour le calcul de l'indicateur MA.
Ce qui précède n'est qu'une simple mise en page, et pour la conception des modules de visualisation, la fonctionnalité de modèle peut être étendue par elle-même.