4
Подписаться
1271
Подписчики

Стратегия захвата новой монеты на рынке цифровой валюты (обучение)

Создано: 2022-04-20 15:59:01, Обновлено: 2023-09-20 10:29:48
comments   0
hits   3060

Стратегия захвата новой монеты на рынке цифровой валюты (обучение)

Стратегия захвата новой монеты на рынке цифровой валюты (обучение)

За последние два дня один из пользователей группы Telegram отправил мне личное сообщение в надежде получить пример разработки стратегии IPO. Иногда, когда биржа выставляет новые монеты, вы хотите захватить некоторые из них. В этой статье описывается простая стратегия новых монет.

Требования к стратегии

Например, в настоящее время на определенной бирже определенная торговая пара: XXX_USDT, еще не котируется на бирже. Но скоро он появится в сети. Необходима программа для мониторинга рынка XXX_USDT этой биржи. Как только будет достигнут верхний предел данной торговой пары, ею можно будет торговать. Затем выставьте 10 лимитных ордеров на покупку, укажите количество и разместите ордера на получение монет. Покупка завершает задачу. Если вы не можете его купить, просто держите его на удержании, пока все заказы не будут выполнены, и вы не купите монеты.

Требование очень простое, но для тех, у кого нет основ программирования в криптовалютном кругу, они могут не знать, с чего начать. Далее мы будем работать над реализацией этого требования.

Стратегический код

Определение параметров стратегии:

Здесь мы определяем несколько параметров для управления операциями, такими как размещение заказов. Стратегия захвата новой монеты на рынке цифровой валюты (обучение)

Реализация кода:

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)
    }
}

Стратегия обнаруживает API биржи и интерфейс книги заказов. Как только данные книги заказов становятся доступны, стратегия использует функцию exchange.Go для размещения заказов. После размещения ордера статус текущего отложенного ордера будет проверяться в цикле. Стратегия фактически не была протестирована. Вот только ссылка на дизайн кода. Те, кому интересно, могут модифицировать и добавлять функции для использования.

Полная стратегия: https://www.fmz.com/strategy/358383