Xây dựng các hàm nút tương tác trong thanh trạng thái chiến lược

Tác giả:Lydia., Tạo: 2023-07-13 14:14:38, Cập nhật: 2024-01-02 21:29:26

img

Xây dựng các hàm nút tương tác trong thanh trạng thái chiến lược

Mô tả trong tài liệu API

// 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- Không. 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);
    }
}

Chúng ta hãy chạy nó. Chiến lược hoạt động như hình:

img

Chúng ta có thể kích hoạt tương tác bằng cách nhấp vào các nút trong bảng trên thanh trạng thái. Chúng ta sẽ nhấp vào các nút Close PositionSend Value lần lượt. Khi chúng ta nhấp vào nút Close Position, thông báo sẽ được gửi như bình thường:

img

img

> But it doesn't work when you click on "Send value" because[ ```'cmd': 10,                              // value``` ]Here is 10. Numeric types cannot be sent.

https://www.fmz.com![img](/upload/asset/2d8e0f86599f1b82da792544b7b840bc824d4a96.png) 
# It has been optimized to be compatible with numeric values, and returns a string of values.

Tiếp theo chúng ta nhấp vào nút Call Function, để kiểm tra hàm được gọi là hàm _D(), và hàm _D( sẽ tiếp tục trả về chuỗi thời gian hiện tại, vì vậy nếu bạn viết một hàm gọi ở đây, nó sẽ tiếp tục gọi nó.

Dữ liệu nhận được được in trong nhật ký:

img

img

Cuối cùng, chúng ta hãy nhấp vào nút Gửi mã JS và chúng ta có thể thực hiện chức năng tùy chỉnh mà chúng ta đã sử dụng để kiểm tra trong mã của chúng tôi.

function test1(p) {
    Log("Calls a custom function with parameters:", p);
    return p;
}

Nhấp vào nút:

img

img

Bạn có thể thấy rằng Log (("Gọi chức năng tùy chỉnh với các tham số: ", p); tuyên bố trong test1 chức năng đã được thực hiện.

Chèn class: btn btn-xs btn-danger, kiểu trong mã thay đổi sự xuất hiện của nút.

img

Bắt đầu luyện tập ngay!


Thêm nữa