avatar of 发明者量化-小小梦 发明者量化-小小梦
focar em Mensagem privada
4
focar em
1271
Seguidores

Construir função de botão interativo na barra de status da estratégia

Criado em: 2017-06-13 15:24:05, atualizado em: 2024-09-10 14:06:33
comments   22
hits   3888

Construir função de botão interativo na barra de status da estratégia

  • #### Descrição na documentação da API
  // 也可以构造一个按钮在表格中, 策略用GetCommand接收cmd属性的内容
  var table = {
      type: 'table',
      title: '持仓操作',
      cols: ['列1', '列2', 'Action'],
      rows: [
          ['abc', 'def', {'type':'button', 'cmd': 'coverAll', 'name': '平仓'}],
      ]
  };
  LogStatus('`' + JSON.stringify(table) + '`')
  // 或者构造一单独的按钮
  LogStatus('`' + JSON.stringify({'type':'button', 'cmd': 'coverAll', 'name': '平仓'}) + '`')
  // 可以自定义按钮风格(bootstrap的按钮属性)
  LogStatus('`' + JSON.stringify({'type':'button', 'class': 'btn btn-xs btn-danger', 'cmd': 'coverAll', 'name': '平仓'}) + '`')

A documentação da API pode ser vista na barra de status da política, mostrando tabelas, strings, imagens, gráficos e outros conteúdos chamando a função API:LogStatusRealizada. Também podemos criar um botão interativo construindo um JSON.

  • #### A foto foi tirada de uma página do Facebook.
  function test1(p) {
      Log("调用自定义函数,参数:", p);
      return p;
  }
  function main() {
      while (true) {
          var table = {
              type: 'table',
              title: '持仓操作',
              cols: ['列1', '列2', 'Action'],
              rows: [
                  ['a', '1', {
                      'type': 'button',                       // 显示按钮 必须要 把 type 设置为 button 类型
                      'cmd': "CoverAll",                      // 字符串,发送的 数据,由GetCommand()函数接受。
                      'name': '平仓'                           // 按钮上显示的名字
                  }],
                  ['b', '1', {
                      'type': 'button',
                      'cmd': 10,                              // 数值
                      'name': '发送数值'
                  }],
                  ['c', '1', {
                      'type': 'button',
                      'cmd': _D(),                            // 函数 策略运行 期间会一直调用
                      'name': '调用函数'
                  }],
                  ['d', '1', {
                      'type': 'button',
                      'cmd': 'JScode:test1("ceshi")',       // 字符串, 用于执行的 JS 代码。
                      'name': '发送JS代码'
                  }]
              ]
          };
          LogStatus('`' + JSON.stringify(table) + '`')

          var str_cmd = GetCommand();
          if (str_cmd) {
              Log("接收到的交互数据 str_cmd:", "类型:", typeof(str_cmd), "值:", str_cmd);
          }

          if (str_cmd && str_cmd.split(':', 2)[0] == "JScode") {          // 判断是否有消息
              var js = str_cmd.split(':', 2)[1];                          // 分割 返回的消息 字符串, 限制返回2个, 把索引为1的 元素 赋值给 名为js 的变量 
              Log("执行调试代码:", js);                                     // 输出 执行的代码
              try {                                                       // 异常检测
                  eval(js);                                               // 执行 eval函数, 该函数执行传入的参数(代码)。
              } catch (e) {                                               // 抛出异常
                  Log("Exception", e);                                    // 输出错误信息
              }
          }

          Sleep(500);
      }
  }

### A estratégia funciona da seguinte forma:

Construir função de botão interativo na barra de status da estratégia

### Podemos clicar no botão de status na tabela para desencadear a interação, e nós podemos clicar no botão de equilíbrio e no botão de envio de valores.

A mensagem pode ser enviada normalmente ao clicar no botão “Eliminar armazém”:

Construir função de botão interativo na barra de status da estratégia

  > 但是点击  “发送数值” 的时候就不行了,原因是[ ```'cmd': 10,                              // 数值``` ]这里是 10  。不能发送数值类型。

  ![Construir função de botão interativo na barra de status da estratégia](/upload/asset/2d8e0f86599f1b82da792544b7b840bc824d4a96.png) 
  # 已经优化 兼容了 数值,返回的 为数值形式的 字符串。

### E então nós clicamos no botão de chamada de função, para testar que a função que está sendo chamada é a função que está sendo chamada._D () função,_D ((() A função continuamente retorna a corrente de tempo string, então aqui se escrever uma chamada de função, vai ser continuamente chamada.

Construir função de botão interativo na barra de status da estratégia

O Diário de Notícias publica os dados recebidos:

Construir função de botão interativo na barra de status da estratégia

### Finalmente, nós clicamos no botão Enviar código do JS para executar funções personalizadas para testes em nosso código.

  function test1(p) {
      Log("调用自定义函数,参数:", p);
      return p;
  }

Clique no botão:

Construir função de botão interativo na barra de status da estratégia

E você pode ver que a função test1 foi executada.Log("调用自定义函数,参数:", p);Declarações.

  • #### Insira no código.'class': 'btn btn-xs btn-danger',O estilo pode alterar a aparência do botão.

Construir função de botão interativo na barra de status da estratégia

Construir função de botão interativo na barra de status da estratégia

“Você não pode fazer isso, não pode fazer isso.