Les ressources ont été chargées... Je charge...

Une nouvelle stratégie de vol de crypto-monnaie (enseignement)

Auteur:L'inventeur de la quantification - un petit rêve, Créé: 2022-04-20 15:59:01, Mis à jour: 2023-09-20 10:29:48

img

Une nouvelle stratégie de vol de crypto-monnaie (enseignement)

Au cours des deux derniers jours, les utilisateurs du groupe Telegram m'ont envoyé un message privé pour me demander si je pouvais utiliser un exemple de conception pour créer de nouvelles stratégies. Parfois, les échanges de billets de banque veulent voler une nouvelle pièce, mais cet article conçoit une stratégie simple pour créer une nouvelle stratégie.

Les besoins stratégiques

Par exemple, une bourse, une paire de transactions: XXX_USDT, n'est pas encore en cours d'échange. Mais elle sera bientôt en ligne. Il est nécessaire d'utiliser un programme pour surveiller le marché XXX_USDT de cette bourse. Cette transaction peut être négociée une fois le plafond atteint.

Les besoins sont simples, mais pour les petits partenaires qui n'ont pas de base de programmation, nous pouvons nous en occuper.

Le code stratégique

Définition des paramètres stratégiques:

Ici, nous définissons quelques paramètres pour contrôler les opérations de la liste ci-dessous.img

La mise en œuvre du code:

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 stratégie complète:https://www.fmz.com/strategy/358383


Relationnée

Plus de