
Dalam dua hari terakhir, seorang pengguna di grup Telegram mengirim pesan pribadi kepada saya dengan harapan mendapat contoh desain untuk strategi IPO. Terkadang saat bursa mencantumkan koin baru, Anda ingin mengambil beberapa di antaranya. Artikel ini merancang strategi koin baru yang sederhana.
Misalnya, saat ini di bursa tertentu, pasangan perdagangan tertentu: XXX_USDT, belum terdaftar di bursa tersebut. Namun, ini akan segera tersedia secara online. Diperlukan program untuk memantau pasar XXX_USDT di bursa ini. Setelah batas atas pasangan perdagangan ini tercapai, pasangan tersebut dapat diperdagangkan. Lalu keluarkan 10 perintah beli batas, tentukan jumlahnya, dan tempatkan perintah untuk mendapatkan koin. Membelinya menyelesaikan tugas. Jika Anda tidak dapat membelinya, tunda saja hingga semua pesanan dieksekusi dan Anda membeli koin.
Persyaratannya sangat sederhana, tetapi bagi mereka yang tidak memiliki dasar pemrograman dalam dunia mata uang kripto, mereka mungkin tidak tahu harus mulai dari mana. Selanjutnya, kami akan berupaya mewujudkan persyaratan ini.
Definisi parameter strategi:
Di sini kami mendefinisikan beberapa parameter untuk mengendalikan operasi seperti penempatan pesanan.

Implementasi kode:
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)
}
}
Strategi ini mendeteksi API bursa dan antarmuka buku pesanan. Setelah data buku pesanan tersedia, strategi ini menggunakan fungsi exchange.Go untuk melakukan pemesanan. Setelah menempatkan pesanan, status pesanan tertunda saat ini akan diperiksa secara berulang. Strategi ini belum benar-benar diuji. Berikut ini hanya referensi desain kode. Mereka yang tertarik dapat memodifikasi dan menambahkan fungsi untuk digunakan.
Strategi lengkap: https://www.fmz.com/strategy/358383