Membangun Fungsi Tombol Interaktif di Bilah Status Strategi

Penulis:Lydia, Dibuat: 2023-07-13 14:14:38, Diperbarui: 2024-01-02 21:29:26

img

Membangun Fungsi Tombol Interaktif di Bilah Status Strategi

Deskripsi dalam Dokumentasi 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'}) + '`')

Dokumentasi API menunjukkan bahwa menampilkan tabel, string, gambar, grafik, dll di bilah status strategi dicapai dengan memanggil fungsi API:LogStatusAku tidak tahu. Kita juga dapat mengatur tombol interaktif dengan membangun data JSON.

DEMO Kode Sumber:

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

Mari kita jalankan strategi berjalan seperti yang ditunjukkan:

img

Kita dapat memicu interaksi dengan mengklik tombol di tabel pada bilah status. Kita akan mengklik tombol Close Position dan Send Value secara bergantian. Ketika kita mengklik tombol Close Position, pesan akan dikirim seperti biasanya:

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.

Selanjutnya kita klik tombol Call Function, untuk menguji fungsi yang dipanggil adalah fungsi _D(), dan fungsi _D() akan terus mengembalikan string waktu saat ini, jadi jika Anda menulis panggilan fungsi di sini, itu akan terus memanggilnya.

Data yang diterima dicetak di log:

img

img

Akhirnya, mari kita klik pada Send JS Code tombol dan kita dapat menjalankan fungsi kustom yang kita gunakan untuk menguji dalam kode kami.

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

Klik tombol:

img

img

Anda dapat melihat bahwa Log (("Calling custom function with parameters: ", p); statement in function test1 telah dijalankan.

Menambahkan class: btn btn-xs btn-danger, gaya dalam kode mengubah tampilan tombol.

img

Mulailah berlatih sekarang!


Lebih banyak