Dalam beberapa hari terakhir, saya menerima beberapa mesej peribadi dari pengguna kumpulan telegram, mereka berharap untuk mempunyai contoh reka bentuk langganan saham baru strategi untuk rujukan. kadang-kadang, mereka mahu langganan saham baru apabila bursa tanah mata wang baru, jadi dalam artikel ini, kita akan merancang strategi alat mudah untuk langganan saham baru.
Sebagai contoh, pada masa ini, pertukaran dan pasangan dagangan: XXX_USDT, belum disenaraikan di bursa. Tetapi ia akan disenaraikan tidak lama lagi. Kita perlu mengikuti pasaran XXX_USDT bursa ini dengan program. Setelah pasangan dagangan disenaraikan, ia boleh diperdagangkan. Kami mengeluarkan 10 pesanan pembelian harga terhad, menentukan jumlahnya, dan menyenaraikan pesanan untuk melanggan mata wang baru. Jika anda dapat membelinya dengan berjaya, anda boleh menyelesaikan tugas. Jika tidak, anda boleh menyenaraikannya sehingga semua pesanan ditutup dan anda boleh membeli mata wang.
Keperluan sangat mudah, tetapi bagi mereka yang tidak mempunyai asas pengaturcaraan di pasaran mata wang digital, mereka mungkin tidak dapat memulakan, jadi mari kita mula menerapkannya.
Definisi parameter strategi:
Di sini kita menentukan 7 parameter ini untuk mengawal operasi seperti meletakkan 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("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)
}
}
Strategi ini memeriksa API pertukaran dan antara muka buku pesanan. Setelah data buku pesanan dapat diperoleh, strategi akan menggunakan fungsi exchange.Go untuk meletakkan pesanan secara serentak. Selepas pesanan diletakkan, status pesanan yang sedang menunggu akan diperiksa secara bulat. Strategi ini tidak benar-benar diuji, di sini hanya rujukan reka bentuk kod. Jika anda berminat, anda boleh mengubah suai atau menambah fungsi kepadanya.
Strategi lengkap dari:https://www.fmz.com/strategy/358383