Dalam beberapa hari terakhir, saya menerima beberapa pesan pribadi dari pengguna grup telegram, mereka berharap untuk memiliki contoh desain berlangganan strategi saham baru untuk referensi. terkadang, mereka ingin berlangganan saham baru ketika bursa tanah mata uang baru, jadi dalam artikel ini, kita akan merancang strategi alat sederhana untuk berlangganan saham baru.
Sebagai contoh, saat ini, sebuah bursa dan pasangan perdagangan: XXX_USDT, belum terdaftar di bursa. Tetapi akan segera terdaftar. Kita perlu mengikuti pasar XXX_USDT dari bursa ini dengan program. Setelah pasangan perdagangan terdaftar, itu dapat diperdagangkan. Kami mengeluarkan 10 pesanan pembelian harga terbatas, menentukan jumlahnya, dan daftar pesanan untuk berlangganan mata uang baru. Jika Anda dapat membelinya dengan sukses, Anda dapat menyelesaikan tugas. Jika tidak, Anda dapat mencantumkannya sampai semua pesanan ditutup dan Anda dapat membeli mata uang.
Kebutuhan sangat sederhana, tetapi bagi mereka yang tidak memiliki dasar pemrograman di pasar mata uang digital, mereka mungkin tidak dapat memulai, jadi mari kita mulai menerapkannya.
Definisi parameter strategi:
Di sini kita mendefinisikan 7 parameter ini untuk mengendalikan operasi seperti menempatkan pesanan.
Pelaksanaan 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("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 antarmuka buku pesanan. Setelah data buku pesanan dapat diperoleh, strategi akan menggunakan fungsi exchange.Go untuk menempatkan pesanan secara bersamaan. Setelah pesanan ditempatkan, status pesanan yang sedang menunggu saat ini akan diperiksa secara berputar. Strategi ini tidak benar-benar diuji, di sini hanya referensi desain kode. Jika Anda tertarik, Anda dapat memodifikasi atau menambahkan fungsi ke dalamnya.
Strategi lengkap dari:https://www.fmz.com/strategy/358383