В последние дни, я получил некоторые частные сообщения от пользователей Telegram группы, они надеются, чтобы иметь дизайн пример подписки новой стратегии акций для справки. иногда, они хотят подписывать новые акции, когда биржа приземляется новые валюты, так что в этой статье, мы будем разрабатывать простой инструмент стратегии подписки новых акций.
Например, в настоящее время биржа и торговая пара: XXX_USDT, еще не зарегистрированы на бирже. Но она будет зарегистрирована в ближайшее время. Мы должны следить за рынком XXX_USDT этой биржи с помощью программы. Как только торговая пара будет зарегистрирована, она может быть продана. Мы выпускаем 10 заказов на покупку по ограниченной цене, указываем сумму и перечисляем заказ на подписку новых валют. Если вы можете купить их успешно, вы можете завершить задачу. Если нет, вы можете перечислить его до тех пор, пока все заказы не будут закрыты, и вы можете купить валюты.
Потребности очень просты, но для тех, кто не имеет программирующей базы на рынке цифровой валюты, они могут не быть в состоянии начать, так что давайте начнем его реализацию.
Определение параметров стратегии:
Здесь мы определяем эти 7 параметров для управления операциями, такими как размещение заказов.
Внедрение кода:
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)
}
}
Стратегия проверяет API обмена и интерфейс книги заказов. Как только данные книги заказов могут быть получены, стратегия будет использовать функцию exchange.Go для одновременного размещения заказов. После размещения заказа статус текущего ожидающего заказа будет проверяться циркулярно. Стратегия не была фактически протестирована, вот только ссылка на код дизайна. Если вы заинтересованы, вы можете изменить или добавить в нее функции.
Полная стратегия от:https://www.fmz.com/strategy/358383