Comment étendre la bibliothèque personnalisée dont vous avez besoin pour les stratégies visuelles? Par exemple, je veux calculer l'indicateur MA, mais le système est livré avec seulement:
Comment puis-je ajouter du code personnalisé à ces indicateurs? Prenons l'ajout d'un module de calcul d'indicateur MA personnalisé comme exemple pour expliquer comment étendre le module de visualisation.
Parlons du modèle
Bibliothèque de négociation au comptant de crypto-monnaie; la définition de visualisation au début:
/*blockly
{
"type": "ext_Trade",
"message0": "%1 symbol amount %2|%1 Coins %2",
"args0": [{
"type": "field_dropdown",
"options": [
["bid|Buy", "Buy"],
["ask|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": "cancel %1 orders|Cancel %1 Orders",
"args0": [{
"type": "field_dropdown",
"name": "TYPE",
"options": [
["all|All", " "],
["buy order|Buy", "ORDER_TYPE_BUY"],
["sell order|Sell", "ORDER_TYPE_SELL"]
]
}],
"previousStatement": null,
"nextStatement": null,
"template": "$.CancelPendingOrders(%1);",
"colour": 85
}, {
"type": "ext_Cross",
"message0": "calculate cross period %1 and %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": "obtain asset information|GetAccount",
"template": "$.GetAccount()",
"order": "ORDER_ATOMIC",
"output": null
}
*/
Correspondant respectivement aux modules de la page d'édition visuelle (en blocs):
Avec l'exemple prêt à l'emploi, il est très simple de le construire vous-même, tout comme copier mécaniquement.
Tout d'abord, créez un nouveau modèle dans le langage JavaScript.
Modifiez 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 period %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
}
*/
Après avoir modifié le nouveau modèle, enregistrez-le. Dans la stratégie où nous devons utiliser ce modèle, vérifiez le modèle.
Vous pouvez voir qu'il y a deux modules supplémentaires:
Le module nommé: testA. Regardons le code d'exécution:
function(){return 99;}()
Il s'agit d'une fonction JavaScript très simple qui renvoie une valeur de 99 lors de son exécution.
Le module nommé: MA période. Regardons le code d'exécution:
(function(){var r = exchange.GetRecords(); return (!r || r.length < %1) ? false : TA.MA(r, %1); })()
Le code est un appel de fonction anonyme. La fonction anonyme exécute d'abord l'opération pour obtenir les données de ligne K, à savoir les données de ligne K.r
. Ensuite, selon que le r obtenu estnull
ou si la longueur der
est inférieur au paramètre%1
importé dans le module, juge de retourfalse
ou retourner le résultat de l'indicateur calculé parTA.MA(r, %1)
.
Il est prêt à être utilisé.
Montage visuel de stratégie:
Opération:
Il apparaît que les données calculées par l'indicateur de l'AM ont été obtenues comme souhaité.
Ce qui précède n'est qu'un exemple pour la conception du module de visualisation, vous pouvez donc utiliser la fonction modèle pour l'étendre par vous-même.