En la carga de los recursos... Cargando...

La moneda digital está a la venta, y la nueva estrategia para robar monedas (Enseñanza)

El autor:Los inventores cuantifican - sueños pequeños, Creado: 2022-04-20 15:59:01, Actualizado: 2023-09-20 10:29:48

img

La moneda digital está a la venta, y la nueva estrategia para robar monedas (Enseñanza)

En los últimos dos días, los usuarios de Telegram Group han enviado un mensaje privado en el que me gustaría tener un ejemplo de diseño para crear una nueva estrategia.

Necesidades estratégicas

Por ejemplo, en la actualidad, un intercambio, un par de transacciones: XXX_USDT, aún no está listado en el intercambio. Pero pronto estará en línea. Se requiere un programa para mirar el mercado XXX_USDT de este intercambio.

La necesidad es muy simple, pero para los pequeños socios que no tienen conocimientos de programación en el círculo monetario, puede que no haya nada que hacer, y ahora nos pondremos a la obra para hacerla realidad.

Código de la estrategia

Los parámetros de estrategia definidos:

Aquí definimos algunos parámetros para controlar operaciones como la siguiente.img

La implementación del código:

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函数并发下单。下单之后就循环检测当前挂单的状态。策略没有经过实际测试,这里只是给出一个代码设计参考,有兴趣的可以修改、添加功能使用。

La estrategia completa es:https://www.fmz.com/strategy/358383


Relacionados

Más.