O recurso está a ser carregado... Carregamento...

A moeda digital está disponível para novas estratégias de roubo (instruções)

Autora:Inventor quantificado - sonho pequeno, Criado: 2022-04-20 15:59:01, Atualizado: 2023-09-20 10:29:48

img

A moeda digital está disponível para novas estratégias de roubo (instruções)

Nos últimos dois dias, os usuários do Telegram escreveram para mim para que eu pudesse ter um exemplo de design de uma nova estratégia de referência. Às vezes, quando um novo dinheiro é colocado em uma bolsa para roubar uma nova moeda, este artigo cria uma estratégia simples para criar uma nova ferramenta.

Necessidades estratégicas

Por exemplo, atualmente, uma bolsa, um par de negociações: XXX_USDT, ainda não está listado na bolsa. Mas está prestes a ser lançado. É necessário usar um programa para observar o mercado XXX_USDT desta bolsa. Esta transação pode ser negociada uma vez que o limite seja atingido.

A necessidade é muito simples, mas para os pequenos parceiros que não têm conhecimentos de programação, talvez não haja nada para fazer.

Código de estratégia

Parâmetros de estratégia definidos:

Aqui, definimos alguns parâmetros para controlar operações como a lista abaixo.img

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

A estratégia completa:https://www.fmz.com/strategy/358383


Relacionados

Mais.