Memahami Bot Pengawasan Perintah Sederhana Cryptocurrency Spot

Penulis:Ninabadass, Dicipta: 2022-04-11 11:54:34, Dikemas kini: 2022-04-11 11:55:08

Memahami Bot Pengawasan Perintah Sederhana Cryptocurrency Spot

Terdapat banyak rakan dalam bulatan cryptocurrency yang memerlukan bot penyeliaan pesanan, tetapi mereka mengalami masa yang lama untuk memulakan reka bentuk programatik apabila mereka mempunyai nol asas.

Pertama sekali, mari kita menganalisis keperluan. fungsi bot ini adalah untuk menyedari bahawa apabila satu akaun mempunyai operasi beli atau jual, akaun lain yang mengawasi pesanan akan mengikuti dan melaksanakan operasi juga. Jadi, kita mula-mula menentukan 2 subjek:

  • Akaun rujukan: akaun yang dipantau, setiap tindakan yang dipantau.
  • Rekod pengawasan pesanan: akaun pengawasan pesanan; apabila akaun rujukan mempunyai tindakan, akaun pengawasan pesanan akan melakukan tindakan yang sama.

Setelah keperluan ini diperjelas pada mulanya, kita terus memikirkan langkah seterusnya.

Memantau akaun rujukan. Ia sangat mudah untuk akaun dagangan spot. Kita hanya perlu membandingkan jumlah simbol dalam data maklumat akaun terkini dengan jumlah simbol semasa dalam data maklumat akaun terkini yang diperoleh. Jika jumlah simbol dalam data maklumat akaun terkini yang diperoleh adalah lebih daripada rekod sebelumnya, ia membuktikan bahawa akaun rujukan telah melakukan operasi beli dan pelaksanaan berjaya. sebaliknya, jika terdapat lebih sedikit simbol, operasi jual dilakukan untuk akaun rujukan. Selepas kita mengesan tindakan, biarkan akaun platform lain melakukan operasi yang sama.

Apabila didapati bahawa akaun rujukan telah melakukan perdagangan, rekod data akaun terkini mesti dikemas kini untuk membandingkannya dengan maklumat akaun yang diperoleh pada masa akan datang untuk menentukan sama ada terdapat tindakan perdagangan baru.

Penerangan kod strategi logik di atas:

        // detect order supervising
        var amount = (nowAcc.Stocks + nowAcc.FrozenStocks) - (initAcc.Stocks + initAcc.FrozenStocks)  // detect the currency amount changes 
        var func = null 
        if (amount > 0) {   // the amount increased 
            func = $.Buy    // buy
        } else if (amount < 0) {  // the amount decreased 
            func = $.Sell         // sell 
        } else {
            continue
        }
        
        // execute order supervising 
        Log("Order supervising! Amount:", Math.abs(amount), "#FF0000")
        for (var i = 1 ; i < exchanges.length ; i++) {    // when i equals 0, it indicates the reference platform, not to be processed; process other order supervising platforms 
            func(exchanges[i], Math.abs(amount))          // execute the specified trading function, and it could be $.Buy or $.Sell, which needs to be determined by observing whether amount is larger than 0 or less than 0
        }
        
        // update the information record of the reference account after order supervising 
        initAcc = nowAcc                                  // update the latest account information of the reference platform, to compare it with the next one 

Logik pengesanan utama strategi adalah kod di atas. Untuk mempermudah reka bentuk, strategi menggunakan templat FMZ rasmi [Perpustakaan Dagangan Mata Wang Digital], dan$.Buydan$.Selladalah semua fungsi templat, fungsi adalah untuk melaksanakan operasi pesanan.

Tambah beberapa paparan bar status kepada strategi untuk memudahkan pemantauan data setiap akaun.

function test() { 
    // test function 
    var ts = new Date().getTime()    
    if (ts % (1000 * 60 * 60 * 6) > 1000 * 60 * 60 * 5.5) {
        Sleep(1000 * 60 * 10)
        var x = Math.random()
        if (x > 0.5) {
            $.Buy(exchange, x / 10)    
        } else {
            $.Sell(exchange, x / 10)    
        }        
    }
}

function main() {
    LogReset(1)
    if (exchanges.length < 2) {
        throw "no platform of order supervising"
    }
    var exName = exchange.GetName()
    // detect the reference platform 
    if (exName.includes("Futures_")) {
        throw "only support sport order supervising"
    }
    Log("start monitoring", exName, "platform", "#FF0000")
    
    // detect the order supervising platforms 
    for (var i = 1 ; i < exchanges.length ; i++) {
        if (exchanges[i].GetName().includes("Futures_")) {
            throw "Do not support the order supervising of futures platfroms"
        }
    }
    
    var initAcc = _C(exchange.GetAccount)
    while(1) {
        if(IsVirtual()) {
           // test function
           test()  
        }  
        Sleep(5000)
        
        // update the current information of the reference account 
        var nowAcc = _C(exchange.GetAccount)
        
        // the account information of the reference platform
        var refTbl = {
            type : "table", 
            title : "reference platform",
            cols : ["name", "symbol", "frozen symbol", "assets", "frozen assets"],
            rows : []
        }
        refTbl.rows.push([exName, nowAcc.Stocks, nowAcc.FrozenStocks, nowAcc.Balance, nowAcc.FrozenBalance])
        
        // the account information of the order supervising platform
        var followTbl = {
            type : "table", 
            title : "order supervising platform",
            cols : ["name", "symbol", "frozen symbol", "assets", "frozen assets"],
            rows : []        
        }
        for (var i = 1 ; i < exchanges.length ; i++) {
            var acc = _C(exchanges[i].GetAccount)
            var name = exchanges[i].GetName()
            followTbl.rows.push([name, acc.Stocks, acc.FrozenStocks, acc.Balance, acc.FrozenBalance])
        }
        
        // status bar display 
        LogStatus(_D(), "\n`" + JSON.stringify(refTbl) + "`", "\n`" + JSON.stringify(followTbl) + "`")
        
        // detect order supervising 
        var amount = (nowAcc.Stocks + nowAcc.FrozenStocks) - (initAcc.Stocks + initAcc.FrozenStocks)
        var func = null 
        if (amount > 0) {
            func = $.Buy
        } else if (amount < 0) {
            func = $.Sell
        } else {
            continue
        }
        
        // execute order supervising 
        Log("Order supervising! Amount:", Math.abs(amount), "#FF0000")
        for (var i = 1 ; i < exchanges.length ; i++) {            
            func(exchanges[i], Math.abs(amount))
        }
        
        // update the information record of the reference account after order supervising 
        initAcc = nowAcc
    }
}

Mari kita uji pada bot sebenar, oleh FMZ wexApp simulasi platform untuk menguji. Di sini saya telah menambah tiga akaun wexApp, yang semuanya adalah akaun bebas. Salah satu daripada mereka berfungsi sebagai platform rujukan, dan dua yang lain berfungsi sebagai platform pengawasan pesanan.

img

Kemudian, kami secara manual meletakkan pesanan melalui terminal perdagangan FMZ untuk melihat jika bot boleh secara automatik mengawasi pesanan.

img

Anda boleh lihat bahawa bot mengesan perdagangan dan melaksanakan operasi pengawasan pesanan.

img

Strategi Lengkap:https://www.fmz.com/strategy/255182

Strategi ini hanya untuk kajian. Jika ada sebarang soalan, kami akan menghargai jika anda meninggalkan komen mengenai hal itu.


Lebih lanjut