avatar of 发明者量化-小小梦 发明者量化-小小梦
Suivre Messages privés
4
Suivre
1271
Abonnés

Créer une fonction de bouton interactif dans la barre d'état de la stratégie

Créé le: 2017-06-13 15:24:05, Mis à jour le: 2024-09-10 14:06:33
comments   22
hits   3888

Créer une fonction de bouton interactif dans la barre d’état de la stratégie

  • #### Décrit dans la documentation de l’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': '平仓'}) + '`')

Les tableaux, les chaînes, les images, les graphiques, etc. sont affichés dans la barre d’état de la stratégie par l’appel de la fonction API:LogStatusLe projet a été réalisé. Nous pouvons également configurer un bouton interactif en construisant une donnée JSON.

  • #### Le film a été réalisé par le cinéaste et réalisateur DEMO
  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 stratégie est la suivante:

Créer une fonction de bouton interactif dans la barre d’état de la stratégie

### Nous pouvons cliquer sur le bouton de l’interaction dans le tableau sur la barre d’état, puis nous pouvons cliquer sur le bouton de l’équilibrage de l’entrepôt et sur le bouton de l’envoi de valeurs.

Les messages peuvent être envoyés normalement en cliquant sur le bouton “Réduire le stockage”:

Créer une fonction de bouton interactif dans la barre d’état de la stratégie

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

  ![Créer une fonction de bouton interactif dans la barre d'état de la stratégie](/upload/asset/2d8e0f86599f1b82da792544b7b840bc824d4a96.png) 
  # 已经优化 兼容了 数值,返回的 为数值形式的 字符串。

### Ensuite, nous cliquons sur le bouton Appel de la fonction, qui est utilisé pour tester la fonction appelée._La fonction D (()_D() La fonction renvoie continuellement la chaîne de temps actuelle, donc ici si on écrit une fonction appelée, elle sera continuellement appelée。

Créer une fonction de bouton interactif dans la barre d’état de la stratégie

Le journal imprime les données reçues:

Créer une fonction de bouton interactif dans la barre d’état de la stratégie

### Enfin, nous cliquons sur le bouton Envoyer du code JS, et nous pouvons exécuter des fonctions personnalisées que nous avons testées dans notre code.

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

Cliquez sur le bouton:

Créer une fonction de bouton interactif dans la barre d’état de la stratégie

Vous pouvez voir que nous avons exécuté la fonction test1Log("调用自定义函数,参数:", p);Je ne suis pas d’accord avec toi.

  • #### Insérer dans le code'class': 'btn btn-xs btn-danger',Les styles peuvent modifier l’apparence des boutons.

Créer une fonction de bouton interactif dans la barre d’état de la stratégie

Créer une fonction de bouton interactif dans la barre d’état de la stratégie

Je ne sais pas si je peux vous aider, mais je vous en prie.