avatar of 发明者量化-小小梦 发明者量化-小小梦
tập trung vào tin nhắn riêng tư
4
tập trung vào
1271
Người theo dõi

Tiền kỹ thuật số phát hiện chiến lược thu thập tiền xu mới (giảng dạy)

Được tạo ra trong: 2022-04-20 15:59:01, cập nhật trên: 2023-09-20 10:29:48
comments   0
hits   3060

Tiền kỹ thuật số phát hiện chiến lược thu thập tiền xu mới (giảng dạy)

Tiền kỹ thuật số phát hiện chiến lược thu thập tiền xu mới (giảng dạy)

Trong hai ngày qua, một người dùng trong nhóm Telegram đã gửi tin nhắn riêng cho tôi với hy vọng nhận được ví dụ thiết kế cho chiến lược IPO. Đôi khi khi một sàn giao dịch niêm yết các đồng tiền mới, bạn muốn mua một số đồng tiền đó. Bài viết này thiết kế một chiến lược đơn giản cho đồng tiền mới.

Yêu cầu chiến lược

Ví dụ, hiện tại trên một sàn giao dịch nhất định, cặp giao dịch nhất định: XXX_USDT vẫn chưa được niêm yết trên sàn giao dịch đó. Nhưng nó sẽ sớm được đưa lên mạng. Cần có một chương trình để theo dõi thị trường XXX_USDT của sàn giao dịch này. Khi đạt đến giới hạn trên của cặp giao dịch này, bạn có thể giao dịch. Sau đó phát hành 10 lệnh mua giới hạn, chỉ định số lượng và đặt lệnh để mua coin. Mua nó là hoàn thành nhiệm vụ. Nếu bạn không thể mua, hãy giữ lại cho đến khi tất cả các lệnh được thực hiện và bạn mua được đồng tiền đó.

Yêu cầu rất đơn giản, nhưng đối với những người không có nền tảng lập trình trong lĩnh vực tiền điện tử, họ có thể không biết bắt đầu từ đâu. Tiếp theo, chúng ta sẽ thực hiện yêu cầu này.

Mã chiến lược

Định nghĩa tham số chiến lược:

Ở đây chúng tôi định nghĩa một số tham số để kiểm soát các hoạt động như đặt hàng. Tiền kỹ thuật số phát hiện chiến lược thu thập tiền xu mới (giảng dạy)

Triển khai mã:

function pendingOrders(ordersNum, price, amount, deltaPrice, deltaAmount) {
    var routineOrders = []
    var ordersIDs = []
    for (var i = 0 ; i < ordersNum ; i++) {
        var routine = exchange.Go("Buy", price + i * deltaPrice, amount + i * deltaAmount)
        routineOrders.push(routine)
        Sleep(ApiReqInterval)        
    }
    for (var i = 0 ; i < routineOrders.length ; i++) {
        var orderId = routineOrders[i].wait()
        if (orderId) {
            ordersIDs.push(orderId)
            Log("成功挂单", orderId)
        }        
    }
    return ordersIDs
}

function main() {
    if (symbol == "null" || pendingPrice == -1 || pendingAmount == -1 || pendingPrice == -1 || deltaPrice == -1 || deltaAmount == -1) {
        throw "参数设置错误"
    }
    exchange.SetCurrency(symbol)
    // 屏蔽错误信息
    SetErrorFilter("GetDepth")
    while (true) {
        var msg = ""
        var depth = exchange.GetDepth()
        if (!depth || (depth.Bids.length == 0 && depth.Asks.length == 0)) {
            // 没有深度
            msg = "没有深度数据,等待!"
            Sleep(500)
        } else {
            // 获取到深度
            Log("并发下单!")
            var ordersIDs = pendingOrders(ordersNum, pendingPrice, pendingAmount, deltaPrice, deltaAmount)
            while (true) {
                var orders = _C(exchange.GetOrders)
                if (orders.length == 0) {
                    Log("当前挂单个数0,停止运行")
                    return 
                }
                var tbl = {
                    type: "table",
                    title: "当前挂单",
                    cols: ["id", "价格", "数量"], 
                    rows: []
                }
                _.each(orders, function(order) {
                    tbl.rows.push([order.Id, order.Price, order.Amount])
                })
                LogStatus(_D(), "\n`" + JSON.stringify(tbl) + "`")
                Sleep(500)
            }
        }
        LogStatus(_D(), msg)
    }
}

Chiến lược phát hiện API trao đổi và giao diện sổ lệnh. Khi dữ liệu sổ lệnh khả dụng, chiến lược sử dụng hàm exchange.Go để đặt lệnh. Sau khi đặt lệnh, trạng thái của lệnh đang chờ hiện tại sẽ được kiểm tra trong một vòng lặp. Chiến lược này chưa được thử nghiệm thực tế. Đây chỉ là tham chiếu thiết kế mã. Những ai quan tâm có thể sửa đổi và thêm chức năng để sử dụng.

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