Extensão de modelo personalizado por edição de estratégia visual (bloco)

Autora:Ninabadass, Criado: 2022-04-27 10:01:48, Atualizado: 2022-04-27 10:12:55

Extensão do modelo personalizado por edição de estratégia visual (bloco)

Como estender a biblioteca personalizada que você precisa para as estratégias visuais?

img

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.

Modelo de negociação spot de criptomoedas

Vamos falar sobre o modelo Cryptocurrency Spot Trading Library; o endereço é:https://www.fmz.com/strategy/10989- Não. Embora este modelo seja um modelo de versão JavaScript da plataforma FMZ (para estudantes que não entendem o conceito de modelo, você pode ir para a documentação da API FMZ para mais detalhes:https://www.fmz.com/api#template- Não. Os comentários no início do modelo contêm o código que define o módulo de visualização, e o código do modelo JavaScript pode ser referenciado no código definido.

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:img

Construir módulo personalizado para calcular MA

Com o exemplo pronto, é muito simples construí-lo você mesmo, assim como copiar mecanicamente.

Primeiro, crie um novo modelo na linguagem JavaScript.img

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
    }
*/
  • Tipo: para definir um tipo de módulo por atributo e definir o módulo por nome.
  • message0: para exibir o texto num módulo
  • Modelo: código executado por um módulo
  • saída: o tipo exportado por um módulo
  • args0: o parâmetro importado por um módulo; no código de definição do módulo, %1 representa o primeiro parâmetro importado e %2 representa o segundo.

Depois de editar o novo modelo, salve-o. Na estratégia onde precisamos usar este modelo, verifique o modelo.img

Podem ver que há dois módulos extras:

  • img

    O módulo chamado: testA. Vamos olhar para o código de execução:img

    function(){return 99;}()
    

    É uma função JavaScript muito simples que retorna um valor de 99 quando executada.

  • img

    O módulo chamado: MA período. Vamos ver o código de execução:

    img

    (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 énullou se o comprimento deré inferior ao parâmetro%1importado para o módulo, juiz para retornarfalseou retornar o resultado do indicador calculado porTA.MA(r, %1).

Está pronto para ser usado em seguida.

Teste de cálculo do indicador MA

Edição de estratégia visual:img

Operação:img

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.


Mais.