avatar of 发明者量化-小小梦 发明者量化-小小梦
fokus pada Pesan pribadi
4
fokus pada
1271
Pengikut

Membangun fungsi tombol interaktif di bilah status strategi

Dibuat di: 2017-06-13 15:24:05, diperbarui pada: 2024-09-10 14:06:33
comments   22
hits   3888

Membangun fungsi tombol interaktif di bilah status strategi

  • #### Deskripsi dalam dokumentasi 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': '平仓'}) + '`')

Dokumen API dapat dilihat dalam tab status kebijakan yang menampilkan tabel, string, gambar, grafik, dan lain-lain dengan memanggil fungsi API:LogStatusTerwujud. Kita juga bisa membuat sebuah tombol interaktif dengan membuat sebuah data JSON.

  • #### Sumber: 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);
      }
  }

### Jadi, mari kita lihat secara praktis, strategi yang digunakan adalah sebagai berikut:

Membangun fungsi tombol interaktif di bilah status strategi

### Kita bisa mengklik tombol di dalam tabel di status bar untuk memicu interaksi, kita bisa mengklik tombol di leveling bar, dan kita bisa mengklik tombol di sending value bar.

Jika Anda mengklik tombol “Hasilkan”, Anda dapat mengirim pesan secara normal:

Membangun fungsi tombol interaktif di bilah status strategi

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

  ![Membangun fungsi tombol interaktif di bilah status strategi](/upload/asset/2d8e0f86599f1b82da792544b7b840bc824d4a96.png) 
  # 已经优化 兼容了 数值,返回的 为数值形式的 字符串。

### Selanjutnya, kita akan mengklik tombol “Call Function” untuk menguji fungsi yang sedang kita panggil._Fungsi,_D ((() Fungsi akan terus-menerus mengembalikan string waktu saat ini, jadi di sini jika kita menulis panggilan fungsi, akan terus-menerus dipanggil.

Membangun fungsi tombol interaktif di bilah status strategi

Data yang diterima akan dicetak dalam jurnal:

Membangun fungsi tombol interaktif di bilah status strategi

### Akhirnya kita klik tombol kirimkan kode JS, dan kita bisa menjalankan fungsi khusus yang digunakan untuk pengujian dalam kode kita

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

Klik tombol:

Membangun fungsi tombol interaktif di bilah status strategi

Anda dapat melihat bahwa saya telah melakukan fungsi test1Log("调用自定义函数,参数:", p);Pernyataan:

  • #### Masukkan kode.'class': 'btn btn-xs btn-danger',Gaya dapat mengubah tampilan tombol.

Membangun fungsi tombol interaktif di bilah status strategi

Membangun fungsi tombol interaktif di bilah status strategi

Ayo mulai berlatih!