Por ejemplo, quiero calcular el indicador MA, pero el sistema viene con sólo:
Estos indicadores. ¿Cómo puedo añadir algún código personalizado a esos indicadores? Tomemos como ejemplo la adición de un módulo de cálculo de indicadores MA personalizados para explicar cómo extender el módulo de visualización.
Hablemos de la plantilla
Biblioteca de operaciones al contado de criptomonedas; la definición de visualización al principio:
/*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
}
*/
Correspondiendo a los módulos en la página de edición visual (en bloques) respectivamente:
Con el ejemplo ya hecho, es muy simple construirlo usted mismo, al igual que copiar mecánicamente.
Primero, crea una nueva plantilla en el lenguaje JavaScript.
Edita el código de la plantilla.
/*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
}
*/
Después de editar la nueva plantilla, guárdela. En la estrategia donde necesitamos usar esta plantilla, comprobar la plantilla.
Se puede ver que hay dos módulos adicionales:
El módulo llamado: testA. Veamos el código de ejecución:
function(){return 99;}()
Es una función JavaScript muy simple que devuelve un valor de 99 cuando se ejecuta.
El módulo llamado: período MA. Veamos el código de ejecución:
(function(){var r = exchange.GetRecords(); return (!r || r.length < %1) ? false : TA.MA(r, %1); })()
El código es una llamada de función anónima. La función anónima primero ejecuta la operación para obtener los datos de línea K, a saber, los datos de línea Kr
. Entonces, según si el r obtenido esnull
o si la longitud der
es menor que el parámetro%1
importado al módulo, juez para regresarfalse
o devolver el resultado del indicador calculado porTA.MA(r, %1)
.
Está listo para su siguiente uso.
Edición visual de estrategias:
Operación:
Se puede observar que los datos calculados por el indicador de AAE se han obtenido como se deseaba.
Lo anterior es sólo un ejemplo para el diseño del módulo de visualización, por lo que puede utilizar la función de plantilla para expandir por sí mismo.