avatar of 发明者量化-小小梦 发明者量化-小小梦
집중하다 사신
4
집중하다
1271
수행원

전략 상태 표시줄에 대화형 버튼 기능 구축

만든 날짜: 2017-06-13 15:24:05, 업데이트 날짜: 2024-09-10 14:06:33
comments   22
hits   3888

전략 상태 표시줄에 대화형 버튼 기능 구축

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

API 문서는 정책 상태 에서 표시되는 테이블, 문자열, 그림, 도표 등의 내용을 API 함수를 호출하여 볼 수 있습니다.LogStatus이 모든 것이 실현되었습니다. 우리는 JSON 데이터를 구성하여 대화형 버튼을 설정할 수 있습니다.

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

### 이 전략은 다음과 같습니다.

전략 상태 표시줄에 대화형 버튼 기능 구축

### 우리는 상태 탭에 있는 탭 안에 있는 버튼을 누르면 상호작용이 시작됩니다. 우리는 탭을 누르면 평준화 저장고 탭을 누르고, 탭을 누르면 숫자를 보내기 탭을 누릅니다.

이 버튼을 누르면 메세지가 정상적으로 전송됩니다.

전략 상태 표시줄에 대화형 버튼 기능 구축

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

  ![전략 상태 표시줄에 대화형 버튼 기능 구축](/upload/asset/2d8e0f86599f1b82da792544b7b840bc824d4a96.png) 
  # 已经优化 兼容了 数值,返回的 为数值形式的 字符串。

### 다음으로 함수 호출 버튼을 누르면 함수 호출을 테스트합니다._D () 함수,_D ((() 함수는 계속적으로 현재 시간 문자열을 반환한다. 따라서 여기서 함수 호출을 쓰면 계속적으로 호출된다.

전략 상태 표시줄에 대화형 버튼 기능 구축

이 자료는 다음과 같은 내용을 담고 있습니다:

전략 상태 표시줄에 대화형 버튼 기능 구축

### 마지막으로, JS 코드를 보내기 버튼을 누르면 우리 코드에 있는 테스트용 사용자 정의 함수를 실행할 수 있습니다.

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

버튼을 누르면:

전략 상태 표시줄에 대화형 버튼 기능 구축

이 함수는 test1에서 실행된 함수입니다Log("调用自定义函数,参数:", p);문장:

  • #### 코드에 삽입합니다.'class': 'btn btn-xs btn-danger',스타일은 버튼의 모양을 바꿀 수 있습니다.

전략 상태 표시줄에 대화형 버튼 기능 구축

전략 상태 표시줄에 대화형 버튼 기능 구축

“이봐, 이봐, 이봐.