Type/to search
8
Follow
1370
Followers
रणनीति स्थिति पट्टी में इंटरैक्टिव बटन फ़ंक्शन का निर्माण करें
Tutorials
Created 2017-06-13 15:24:05  Updated 2024-09-10 14:06:33
 22
 4266

रणनीति स्थिति पट्टी में इंटरैक्टिव बटन फ़ंक्शन का निर्माण करें

  • एपीआई दस्तावेज में विवरण

    javascript
    // 也可以构造一个按钮在表格中, 策略用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': '平仓'}) + '`')

    एपीआई दस्तावेज़ में, आप देख सकते हैं कि नीति स्थिति फलक में प्रदर्शित तालिकाओं, स्ट्रिंग्स, चित्रों, चित्रों आदि को एपीआई फ़ंक्शन को कॉल करके दिखाया गया है:LogStatusपूरा हुआ।
    हम एक JSON डेटा के निर्माण के माध्यम से एक इंटरैक्टिव बटन सेट कर सकते हैं.

  • DEMO स्रोत:

    javascript
    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); } }

    हम इसे वास्तविक रूप से देखेंगे, और रणनीति इस प्रकार हैः

    img

    हम स्टेटस टैब पर क्लिक कर सकते हैं, और हम इंटरैक्शन को ट्रिगर करने के लिए टैब में बटन पर क्लिक कर सकते हैं, और फिर हम दोनों बटनों पर क्लिक कर सकते हैं, और फिर हम दोनों बटनों पर क्लिक कर सकते हैं।

    यह संदेश सामान्य रूप से भेजने के लिए है जब आप 'समान भंडार' बटन पर क्लिक करते हैं:

    img

    > 但是点击 “发送数值” 的时候就不行了,原因是[ ```'cmd': 10, // 数值``` ]这里是 10 。不能发送数值类型。 [/upload/asset/2d8e0f86599f1b82da792544b7b840bc824d4a96.png](/upload/asset/2d8e0f86599f1b82da792544b7b840bc824d4a96.png) # 已经优化 兼容了 数值,返回的 为数值形式的 字符串。

    और फिर हम उस पर क्लिक करते हैं <unk> फ़ंक्शन कॉल <unk> बटन, और हम परीक्षण करते हैं कि कौन सा फ़ंक्शन बुलाया जा रहा है <unk>_फ़ंक्शन,_D (() फ़ंक्शन लगातार वर्तमान समय स्ट्रिंग लौटाता है, इसलिए यहाँ यदि फ़ंक्शन कॉल लिखा जाता है, तो लगातार कॉल किया जाएगा।

    img

    इस तरह से, यह डेटा प्राप्त होता है:

    img

    और अंत में हम पर क्लिक करें भेजें जेएस कोड बटन, और हम हमारे कोड में परीक्षण के लिए कस्टम कार्यों को निष्पादित कर सकते हैं

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

    बटन पर क्लिक करेंः

    img

    और आप देख सकते हैं कि हम test1 में क्या कर रहे हैं.Log("调用自定义函数,参数:", p);बयान:

  • कोड में डालें'class': 'btn btn-xs btn-danger',स्टाइल बटन की उपस्थिति को बदल सकता है।

    img

    img

हम अपने देश के लोगों के साथ हैं।

Related Recommendations
Comment
All comments (16)

    终于让我找到了。。。。。原来按钮是在这学习。。。。

    4 years ago

    这个是个比较老的帖子了。。

    4 years ago

    但是真心好用。

    4 years ago

    嘿嘿,感谢支持。

    4 years ago

    JScode:test1("ceshi")
    这种是另开一个线程执行的吗?是否影响main主循环

    6 years ago

    列2的数值,能不能做成输入类型?

    7 years ago

    暂时 状态栏的 控件类型只有一种 ,按钮。

    7 years ago

    实际测试结果和教程中的结果有出入。所有发送的数据都被解析为了 string,因此:

    1. 发送数值按钮是可以发送数值 10 的。
    2. 调用函数按钮触发的时候,_D() 函数已经被解析了,提示框询问的是“确定要向机器人发送命令 2018-03-16 16:40:50 ?”,而且只被执行一次,并不像教程中说的会不停返回。

    但是,如果我使用别的函数,如:'cmd': Log(exchange.GetAccount()),,机器人启动后即使没有按下按钮,也会不停返回数据。如果是 'cmd': exchange.GetAccount(),,触发按钮的时候提示是的“确定要向机器人发送命令 [object Object] ?”,GetCommand() 也无法获得具体返回的值。

    所以,能否详细解释下 BotVS 对交互按钮中 cmd 属性的处理逻辑?

    8 years ago

    第2点 您可能 理解错了, 我说的 不停调用是 指: 在整个程序 运行期间, 每次这个 _D() 都会 返回一个新的时间,用作这个 按钮的 命令。 并不是说 卡在这个 位置 一直调用_D()。您第一次 点击 调用函数按钮触发 提示框: 2018-03-16 16:40:50 , 下次 再点击的时候 显示 就是 另外一个时间了。 其实 就是 _D()每次策略循环 都在被调用。
    我的代码 你测试下, 会不停输出,亲测。

    var a = 0 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': test1(a++), // 函数 策略运行 期间会一直调用 '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); } }

    第一个问题 : 数值 类型 现在兼容了,这个也亲测,我修改下文档。
    感谢提出建议 ^^

    8 years ago

    想通了,'cmd': _D() 本身是没有输出的,'cmd': Log(_D()) 才会一直不停输出。但是,既然是希望通过按钮来触发的,为什么 cmd 中的函数会一直在被调用呢?这样的设计似乎不妥吧?

    8 years ago

    所以 才有 第四 个 按钮 : 发送JS代码, 这个就是 按下了 才去执行 对应的函数 或者 JS 代码。而不是 不停执行。

    8 years ago

    不好意思,有点迷糊了。您代码中的 test1(a++) 是会不停输出,也正如我前面说的,即便我没有按下那个按钮,机器人一启动就在那儿输出了。可为什么如果换成_D() 就不会有输出,而必须通过按钮才能触发?

    8 years ago

    小小梦,除了可以在状态栏当中添加表格和按钮,其他的表单控件怎么添加,比如文本框

    8 years ago

    哦 目前暂时 只实现了 状态栏表格里 添加 按钮控件, 其他控件 还没有支持 ^^ 。

    8 years ago

    666 这个事件更丰富了

    9 years ago

    666 这个事件更丰富了

    9 years ago
  • 1
Forums
PINE Language
Get the app
iPhone Download
© 2015 - ∞ INVENTOR PTE LTD (SG)