Tài nguyên đang được tải lên... tải...

Thực hiện một robot thanh toán mặt tiền kỹ thuật số đơn giản

Tác giả:Những nhà phát minh định lượng - những giấc mơ nhỏ, Tạo: 2021-02-18 16:09:43, Cập nhật: 2023-09-26 20:57:30

img

Thực hiện một robot thanh toán mặt tiền kỹ thuật số đơn giản

Một số bạn trong Coin Circle cần một robot theo dõi theo tay, nhưng cũng phải mất nhiều thời gian để bắt đầu thiết kế lập trình khi gặp khó khăn về cơ bản 0.

Trước tiên, chúng ta sẽ phân tích nhu cầu, và chức năng của robot này là thực hiện khi một tài khoản mua bán xảy ra, các tài khoản thanh toán khác sẽ thực hiện hoạt động này. Vì vậy, trước tiên chúng ta hãy xác định hai chủ thể:

  • Tài khoản tham khảo: Tài khoản được theo dõi, theo dõi từng bước của tài khoản này.
  • Tài khoản theo dõi: Tài khoản theo dõi, khi tài khoản tham khảo có hành động, tài khoản theo dõi thực hiện hành động tương tự.

Khi đã xác định được nhu cầu này, bước tiếp theo là tiếp tục suy nghĩ; làm thế nào để chúng ta nhận ra từng bước của tài khoản tham khảo?

Theo dõi tài khoản tham khảo, rất đơn giản đối với tài khoản hiện tại, chúng ta chỉ cần so sánh số tiền trong dữ liệu thông tin tài khoản gần đây với số tiền trong dữ liệu thông tin tài khoản mới nhất hiện tại. Nếu số tiền trong dữ liệu thông tin tài khoản mới nhất được thu được hiện nay nhiều hơn số tiền ghi trước đó, chứng minh tài khoản tham khảo đã thực hiện một giao dịch mua và mua thành công. Trái lại, nếu ít tiền, thì thực hiện một giao dịch bán cho tài khoản tham khảo. Sau khi chúng tôi phát hiện hành động này, chúng tôi có thể yêu cầu các tài khoản giao dịch khác thực hiện cùng một hoạt động.

Khi tìm thấy tài khoản tham khảo đã thực hiện một giao dịch, hãy chắc chắn cập nhật hồ sơ dữ liệu tài khoản gần đây nhất để so sánh với thông tin tài khoản tiếp theo được lấy để xác định liệu có hành động giao dịch mới hay không.

Các chiến lược sau đây được mô tả bằng mã chiến lược:

        // 检测跟单
        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                                  // 更新参考交易所最近一次的账户信息,用于下次对比

Lập pháp này sử dụng các mẫu mẫu của thư viện giao dịch tiền kỹ thuật số chính thức của FMZ để đơn giản hóa.$.Buy , $.SellTất cả đều là các hàm của mẫu này, chức năng là thực hiện các thao tác dưới đây.

Sau đó, thêm một số thanh trạng thái vào chính sách để dễ dàng theo dõi dữ liệu của từng tài khoản, chính sách đầy đủ là:

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

Chúng ta hãy thử nghiệm trên thực tế, thử nghiệm giao dịch giả mạo wexApp của FMZ. Ở đây tôi đã thêm ba tài khoản wexApp, tất cả đều độc lập với nhau. Một trong số đó là giao dịch tham khảo, hai khác là giao dịch theo dõi.

img

Sau đó, chúng tôi sử dụng FMZ để tự động thực hiện đơn hàng tiếp theo và xem liệu robot có tự động thanh toán hay không.

img

Bạn có thể thấy robot phát hiện giao dịch và thực hiện các thao tác theo dõi.

img

Chiến lược đầy đủ:https://www.fmz.com/strategy/255182

Các chiến lược chỉ dành cho việc học tập, cảm ơn để ý nếu có vấn đề.


Có liên quan

Thêm nữa

Người Si-aXin chào, bạn có thể giúp tôi triển khai không?

Người Si-aXin chào, bạn có thể giúp tôi triển khai không?

Chú béo.Bạn có thể phát hiện được những cái treo trên đó không?

13169222039Xin chào, tôi muốn hỏi bạn có thể lấy mã số người trên đồng xu này không?

Những nhà phát minh định lượng - những giấc mơ nhỏKhóa học này là mã nguồn mở, được công bố trên quảng trường chiến lược, có thể xem các hướng dẫn của cộng đồng FMZ, hướng dẫn cơ bản được sử dụng để giảng dạy và sẽ được triển khai.

rootmeCó thể giá của bạn khác rất nhiều so với giá của họ.