// You can also construct a button in the form, and use GetCommand to receive the contents of the cmd attribute.
var table = {
type: 'table',
title: 'position operation',
cols: ['Column1', 'Column2', 'Action'],
rows: [
['abc', 'def', {'type':'button', 'cmd': 'coverAll', 'name': 'close position'}],
]
};
LogStatus('`' + JSON.stringify(table) + '`')
// Or construct a separate button
LogStatus('`' + JSON.stringify({'type':'button', 'cmd': 'coverAll', 'name': 'close position'}) + '`')
// Button styles can be customized (bootstrap's button attributes)
LogStatus('`' + JSON.stringify({'type':'button', 'class': 'btn btn-xs btn-danger', 'cmd': 'coverAll', 'name': 'close position'}) + '`')
Tài liệu API cho thấy hiển thị bảng, chuỗi, hình ảnh, biểu đồ, vv trong thanh trạng thái chiến lược được thực hiện bằng cách gọi hàm API:
LogStatus
.Chúng ta cũng có thể thiết lập một nút tương tác bằng cách xây dựng một dữ liệu JSON.
Mã nguồn DEMO:
“
function test1(p) { Log("Calls a custom function with parameters:", p); return p; } function main() { while (true) { var table = { type: 'table', title: 'position operation', cols: ['Column1', 'Column2', 'Action'], rows: [ ['a', '1', { 'type': 'button', // To display a button, you must set the type to button. 'cmd': "CoverAll", // String, sent data, accepted by the GetCommand() function. 'name': 'close position' // The name displayed on the button. }], ['b', '1', { 'type': 'button', 'cmd': 10, // numerical value 'name': 'Send value' }], ['c', '1', { 'type': 'button', 'cmd': _D(), // The function is called for the duration of the strategy run 'name': 'call the function' }], ['d', '1', { 'type': 'button', 'cmd': 'JScode:test1("ceshi")', // String, the JS code to execute. 'name': 'Send JS Code' }] ] }; LogStatus('
+ JSON.stringify(table) + ` )
var str_cmd = GetCommand();
if (str_cmd) {
Log("Received Interaction Data str_cmd:", "type:", typeof(str_cmd), "value:", str_cmd);
}
if (str_cmd && str_cmd.split(':', 2)[0] == "JScode") { // Determine if there is a message
var js = str_cmd.split(':', 2)[1]; // Split the returned message string, limit it to two, and assign the element with index 1 to a variable named js.
Log("Execute debugging code:", js); // Output executed code
try { // Abnormal detection
eval(js); // Executes the eval function, which executes the parameters (code) passed in.
} catch (e) { // throw an exception
Log("Exception", e); // Output error messages
}
}
Sleep(500);
}
}
Let's run it. The strategy runs as shown:
![Constructing Interactive Button Functions in the Strategy Status Bar](/upload/asset/28d692a53d0c76776636b.png)
We can trigger the interaction by clicking on the buttons in the table on the status bar. We will click on the "Close Position" and "Send Value" buttons in turn.
When we click on the "Close Position" button, the message will be sent as normal:
![Constructing Interactive Button Functions in the Strategy Status Bar](/upload/asset/28d692a53d0c76776636b.png)
![Constructing Interactive Button Functions in the Strategy Status Bar](/upload/asset/28d4338ccfcdaf615af37.png)
Nhưng nó không hoạt động khi bạn nhấp vào
Gửi giá trị bởi vì[ 'cmd': 10, // value
Đây là 10 con số không thể gửi được.https://www.fmz.comChức năng nút tương tác trong thanh trạng thái chiến lược](/upload/asset/2d8e0f86599f1b82da792544b7b840bc824d4a96.png)
Nó đã được tối ưu hóa để tương thích với các giá trị số, và trả về một chuỗi các giá trị.
”`
Tiếp theo chúng ta nhấp vào nút
Dữ liệu nhận được được in trong nhật ký:
Cuối cùng, chúng ta hãy nhấp vào nút
function test1(p) {
Log("Calls a custom function with parameters:", p);
return p;
}
Nhấp vào nút:
Bạn có thể thấy rằng Log ((
Calling custom function with parameters: , p); câu lệnh trong function test1 đã được thực hiện.
Chèn
Bắt đầu luyện tập ngay!