avatar of 发明者量化-小小梦 发明者量化-小小梦
Seguir Mensajes Privados
4
Seguir
1271
Seguidores

Construir una función de botón interactivo en la barra de estado de la estrategia

Creado el: 2017-06-13 15:24:05, Actualizado el: 2024-09-10 14:06:33
comments   22
hits   3888

Construir una función de botón interactivo en la barra de estado de la estrategia

  • #### Descripción en la documentación de la 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': '平仓'}) + '`')

El documento de la API puede verse en la barra de estado de la política mostrando tablas, cadenas, imágenes, gráficos, etc. mediante la llamada a la función API:LogStatusEl proyecto se ha llevado a cabo También podemos configurar un botón interactivo construyendo un dato JSON.

  • #### La imagen fue tomada de la página de Facebook de la mujer.
  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);
      }
  }

### La estrategia es la siguiente, y vamos a ponerla en práctica:

Construir una función de botón interactivo en la barra de estado de la estrategia

### Podemos hacer clic en el botón de la tabla en la barra de estado para activar la interacción, y luego podemos hacer clic en el botón de la barra de almacenamiento y en el botón de envío de valores.

El botón para desbloquear el almacén permite enviar mensajes de forma normal:

Construir una función de botón interactivo en la barra de estado de la estrategia

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

  ![Construir una función de botón interactivo en la barra de estado de la estrategia](/upload/asset/2d8e0f86599f1b82da792544b7b840bc824d4a96.png) 
  # 已经优化 兼容了 数值,返回的 为数值形式的 字符串。

### Luego hacemos clic en el botón de llamada de la función de la barra, y la función que se está llamando es_La función,_D ((() La función siempre devuelve la cadena de tiempo actual, por lo que si escribe una llamada a la función aquí, siempre se llamará。

Construir una función de botón interactivo en la barra de estado de la estrategia

El diario imprimirá los datos recibidos:

Construir una función de botón interactivo en la barra de estado de la estrategia

### Finalmente, hacemos clic en el botón Enviar código de JS para ejecutar las funciones personalizadas que utilizamos para probar en nuestro código.

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

Haga clic en el botón

Construir una función de botón interactivo en la barra de estado de la estrategia

Se puede ver que se ejecutó la función test1Log("调用自定义函数,参数:", p);¿Qué es lo que está pasando?

  • #### Se inserta en el código.'class': 'btn btn-xs btn-danger',Los estilos pueden cambiar el aspecto de los botones.

Construir una función de botón interactivo en la barra de estado de la estrategia

Construir una función de botón interactivo en la barra de estado de la estrategia

¡Vamos a hacer ejercicio!