avatar of 发明者量化-小小梦 发明者量化-小小梦
fokus pada mesej peribadi
4
fokus pada
1271
Pengikut

Laksanakan robot dagangan spot mata wang digital yang mudah

Dicipta dalam: 2021-02-18 16:09:43, dikemas kini pada: 2023-09-26 20:57:30
comments   6
hits   3831

Laksanakan robot dagangan spot mata wang digital yang mudah

Laksanakan robot dagangan spot mata wang digital yang mudah

Terdapat banyak peniaga manual dalam dunia mata wang kripto yang memerlukan robot peniru, tetapi mereka terganggu oleh hakikat bahawa ia mengambil masa yang lama untuk memulakan reka bentuk program apabila mereka tidak mempunyai pengetahuan asas. Berdasarkan jenis permintaan ini, dalam artikel ini kami akan mereka bentuk robot perdagangan salinan spot yang mudah untuk membantu rakan dalam kalangan mata wang kripto yang tidak mempunyai pengetahuan asas tentang perdagangan algoritma.

Pertama, mari kita menganalisis keperluan Fungsi robot ini adalah untuk memastikan bahawa apabila satu akaun mempunyai operasi beli atau jual, akaun salinan lain akan mengikuti dan melaksanakan operasi ini. Oleh itu, kami mula-mula menjelaskan dua subjek:

  • Akaun rujukan: Akaun yang dipantau yang memantau setiap pergerakan akaun ini.
  • Salin Akaun: Akaun yang mengikut pesanan Apabila tindakan berlaku dalam akaun rujukan, akaun salinan melakukan tindakan yang sama.

Memandangkan kita telah mengenal pasti keperluan ini secara awal, kita perlu terus memikirkan langkah seterusnya. Bagaimanakah kita mengenal pasti tindakan akaun rujukan?

Memantau akaun rujukan adalah sangat mudah untuk akaun spot Kami hanya perlu membandingkan bilangan syiling dalam data maklumat akaun terkini dengan bilangan syiling dalam data maklumat akaun terkini yang diperolehi. Jika bilangan syiling dalam data maklumat akaun terkini yang diperoleh pada masa ini adalah lebih daripada rekod sebelumnya, ini membuktikan bahawa akaun rujukan telah melaksanakan operasi belian dan pembelian itu berjaya. Sebaliknya, jika syiling kurang, operasi jual dilakukan untuk akaun rujukan. Selepas kami menemui tindakan ini, kami hanya membiarkan akaun pertukaran lain melakukan operasi yang sama.

Apabila transaksi didapati telah dilaksanakan pada akaun rujukan, rekod data akaun terkini mesti dikemas kini untuk perbandingan dengan maklumat akaun yang diperoleh pada masa akan datang untuk menentukan sama ada terdapat sebarang tindakan transaksi baharu.

Logik di atas diterangkan oleh kod strategi:

        // 检测跟单
        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
        }
        
        // 执行跟单
        Log("跟单!数量:", Math.abs(amount), "#FF0000")
        for (var i = 1 ; i < exchanges.length ; i++) {    // i 等于 0 时,是参考交易所,不处理,处理其它的跟单交易所        
            func(exchanges[i], Math.abs(amount))          // 执行具体的交易函数,可能是$.Buy 或者是 $.Sell ,具体看amount 是大于0,还是小于0
        }
        
        // 执行跟单之后更新参考交易所账户信息记录
        initAcc = nowAcc                                  // 更新参考交易所最近一次的账户信息,用于下次对比

Logik pengesanan utama strategi ialah kod di atas. Demi kesederhanaan dalam reka bentuk, strategi menggunakan templat [Perpustakaan Perdagangan Mata Wang Digital] rasmi FMZ.$.Buy , $.SellIni semua adalah fungsi templat ini, dan fungsinya adalah untuk melaksanakan operasi pesanan.

Tambahkan beberapa paparan bar status pada strategi untuk memudahkan pemantauan data setiap akaun Strategi lengkap adalah seperti berikut:

function test() { 
    // 测试函数
    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 "没有跟单的交易所"
    }
    var exName = exchange.GetName()
    // 检测参考交易所
    if (exName.includes("Futures_")) {
        throw "仅支持现货跟单"
    }
    Log("开始监控", exName, "交易所", "#FF0000")
    
    // 检测跟单交易所
    for (var i = 1 ; i < exchanges.length ; i++) {
        if (exchanges[i].GetName().includes("Futures_")) {
            throw "不支持期货交易所跟单"
        }
    }
    
    var initAcc = _C(exchange.GetAccount)
    while(1) {
        if(IsVirtual()) {
           // 测试函数
           test()  
        }  
        Sleep(5000)
        
        // 更新参考账户当前的账户信息
        var nowAcc = _C(exchange.GetAccount)
        
        // 参考交易所账户信息
        var refTbl = {
            type : "table", 
            title : "参考交易所",
            cols : ["名称", "币", "冻结币", "钱", "冻结钱"],
            rows : []
        }
        refTbl.rows.push([exName, nowAcc.Stocks, nowAcc.FrozenStocks, nowAcc.Balance, nowAcc.FrozenBalance])
        
        // 跟单交易所账户信息
        var followTbl = {
            type : "table", 
            title : "跟单交易所",
            cols : ["名称", "币", "冻结币", "钱", "冻结钱"],
            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])
        }
        
        // 状态栏显示
        LogStatus(_D(), "\n`" + JSON.stringify(refTbl) + "`", "\n`" + JSON.stringify(followTbl) + "`")
        
        // 检测跟单
        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
        }
        
        // 执行跟单
        Log("跟单!数量:", Math.abs(amount), "#FF0000")
        for (var i = 1 ; i < exchanges.length ; i++) {            
            func(exchanges[i], Math.abs(amount))
        }
        
        // 执行跟单之后更新参考交易所账户信息记录
        initAcc = nowAcc
    }
}

Mari lakukan ujian masa nyata menggunakan ujian pertukaran simulasi wexApp FMZ. Di sini saya menambah tiga akaun wexApp, yang bebas antara satu sama lain. Satu daripadanya berfungsi sebagai pertukaran rujukan, dan dua lagi berfungsi sebagai pertukaran salinan.

Laksanakan robot dagangan spot mata wang digital yang mudah

Kemudian kami menggunakan terminal dagangan FMZ untuk membuat pesanan secara manual untuk melihat sama ada robot akan mengikut pesanan secara automatik.

Laksanakan robot dagangan spot mata wang digital yang mudah

Anda boleh melihat bahawa robot mengesan transaksi dan melaksanakan operasi penyalinan.

Laksanakan robot dagangan spot mata wang digital yang mudah

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

Strategi ini hanya untuk pembelajaran Jika anda mempunyai sebarang pertanyaan, sila tinggalkan mesej.