
Dalam dua hari lalu, seorang pengguna dalam kumpulan Telegram menghantar mesej peribadi kepada saya mengharapkan contoh reka bentuk untuk strategi IPO. Kadangkala apabila pertukaran menyenaraikan syiling baharu, anda ingin mengambil sebahagian daripada syiling tersebut Artikel ini mereka bentuk strategi syiling baharu yang mudah.
Contohnya, pada masa ini di bursa tertentu, pasangan dagangan tertentu: XXX_USDT, belum lagi disenaraikan di bursa. Tetapi ia akan datang dalam talian tidak lama lagi. Satu program diperlukan untuk memantau pasaran XXX_USDT pertukaran ini. Sebaik sahaja had atas pasangan dagangan ini dicapai, ia boleh didagangkan. Kemudian keluarkan 10 pesanan belian had, nyatakan kuantiti dan buat pesanan untuk merebut syiling. Membelinya menyelesaikan tugas. Jika anda tidak boleh membelinya, simpan sahaja sehingga semua pesanan dilaksanakan dan anda membeli syiling.
Keperluan ini sangat mudah, tetapi bagi mereka yang tidak mempunyai asas pengaturcaraan dalam bulatan mata wang kripto, mereka mungkin tidak tahu di mana untuk bermula Seterusnya, kami akan berusaha untuk merealisasikan keperluan ini.
Takrifan parameter strategi:
Di sini kami mentakrifkan beberapa parameter untuk mengawal operasi seperti membuat pesanan.

Pelaksanaan kod:
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 mengesan API pertukaran dan antara muka buku pesanan Setelah data buku pesanan tersedia, strategi menggunakan fungsi pertukaran.Go untuk membuat pesanan. Selepas membuat pesanan, status pesanan belum selesai semasa akan disemak dalam gelung. Strategi ini sebenarnya belum diuji Ini hanyalah rujukan reka bentuk kod Mereka yang berminat boleh mengubah suai dan menambah fungsi untuk digunakan.
Strategi penuh: https://www.fmz.com/strategy/358383