Como estender a biblioteca personalizada que você precisa para as estratégias visuais?
Como posso adicionar algum código personalizado a esses indicadores? Tomemos adicionar um módulo de cálculo de indicador MA personalizado como exemplo para explicar como estender o módulo de visualização.
Vamos falar sobre o modelo
Biblioteca de negociação spot de criptomoedas; a definição de visualização no início:
/*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
}
*/
Correspondentes aos módulos na página de edição visual (em blocos), respectivamente:
Com o exemplo pronto, é muito simples construí-lo você mesmo, assim como copiar mecanicamente.
Primeiro, crie um novo modelo na linguagem JavaScript.
Edite o código do modelo.
/*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
}
*/
Depois de editar o novo modelo, salve-o. Na estratégia onde precisamos usar este modelo, verifique o modelo.
Podem ver que há dois módulos extras:
O módulo chamado: testA. Vamos olhar para o código de execução:
function(){return 99;}()
É uma função JavaScript muito simples que retorna um valor de 99 quando executada.
O módulo chamado: MA período. Vamos ver o código de execução:
(function(){var r = exchange.GetRecords(); return (!r || r.length < %1) ? false : TA.MA(r, %1); })()
O código é uma chamada de função anônima. A função anônima primeiro executa a operação para obter os dados de linha K, ou seja, os dados de linha K.r
. Em seguida, de acordo com se o r obtido énull
ou se o comprimento der
é inferior ao parâmetro%1
importado para o módulo, juiz para retornarfalse
ou retornar o resultado do indicador calculado porTA.MA(r, %1)
.
Está pronto para ser usado em seguida.
Edição de estratégia visual:
Operação:
Pode-se observar que os dados calculados pelo indicador MA foram obtidos como pretendido.
O acima é apenas um exemplo para o design do módulo de visualização, para que você possa usar a função modelo para expandir por si mesmo.