Trong những ngày gần đây, tôi đã nhận được một số tin nhắn riêng tư từ người dùng nhóm telegram, họ hy vọng có một ví dụ thiết kế của việc đăng ký chiến lược cổ phiếu mới để tham khảo. đôi khi, họ muốn đăng ký cổ phiếu mới khi sàn giao dịch đất tiền tệ mới, vì vậy trong bài viết này, chúng tôi sẽ thiết kế một công cụ đơn giản chiến lược đăng ký cổ phiếu mới.
Ví dụ, hiện tại, một sàn giao dịch và một cặp giao dịch: XXX_USDT, chưa được niêm yết trên sàn giao dịch. Nhưng nó sẽ sớm được niêm yết. Chúng ta cần theo dõi thị trường XXX_USDT của sàn giao dịch này với một chương trình. Một khi cặp giao dịch được niêm yết, nó có thể được giao dịch. Chúng tôi phát hành 10 lệnh mua giá giới hạn, chỉ định số tiền và liệt kê lệnh đăng ký các loại tiền tệ mới. Nếu bạn có thể mua chúng thành công, bạn có thể hoàn thành nhiệm vụ. Nếu không, bạn có thể liệt kê nó cho đến khi tất cả các lệnh được đóng lại và bạn có thể mua tiền tệ.
Nhu 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 thị trường tiền kỹ thuật số, họ có thể không thể bắt đầu, vì vậy hãy bắt đầu thực hiện nó.
Định nghĩa tham số chiến lược:
Ở đây chúng tôi xác định 7 thông số này để kiểm soát các hoạt động như đặt đơn đặt hàng.
Thực hiện 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("placed an order successfully", orderId)
}
}
return ordersIDs
}
function main() {
if (symbol == "null" || pendingPrice == -1 || pendingAmount == -1 || pendingPrice == -1 || deltaPrice == -1 || deltaAmount == -1) {
throw "Parameter setting error"
}
exchange.SetCurrency(symbol)
// Block error messages
SetErrorFilter("GetDepth")
while (true) {
var msg = ""
var depth = exchange.GetDepth()
if (!depth || (depth.Bids.length == 0 && depth.Asks.length == 0)) {
// No depth
msg = "No depth data, wait!"
Sleep(500)
} else {
// Obtain depth
Log("Place orders concurrently!")
var ordersIDs = pendingOrders(ordersNum, pendingPrice, pendingAmount, deltaPrice, deltaAmount)
while (true) {
var orders = _C(exchange.GetOrders)
if (orders.length == 0) {
Log("The current number of pending orders is 0, and the operation is stopped")
return
}
var tbl = {
type: "table",
title: "The current pending orders",
cols: ["id", "price", "amount"],
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 kiểm tra API trao đổi và giao diện sổ đặt hàng. Một khi có thể lấy dữ liệu sổ đặt hàng, chiến lược sẽ sử dụng chức năng exchange.Go để đặt đơn hàng đồng thời. Sau khi đặt đơn đặt hàng, trạng thái của đơn đặt hàng đang chờ hiện tại sẽ được kiểm tra theo vòng tròn. Chiến lược chưa thực sự được kiểm tra, đây chỉ là một tham chiếu thiết kế mã. Nếu bạn quan tâm, bạn có thể sửa đổi hoặc thêm các chức năng vào nó.
Chiến lược hoàn chỉnh từ:https://www.fmz.com/strategy/358383