資源の読み込みに... 荷物...

デジタル通貨の現貨で新しい略奪戦略 (教材)

作者: リン・ハーン発明者 量化 - 微かな夢, 作成日:2022-04-20 15:59:01, 更新日:2023-09-20 10:29:48

img

デジタル通貨の現貨で新しい略奪戦略 (教材)

この2日間で,Telegramのユーザが私的に"私は新しい戦略を立てるためのデザインの例を参考にしたい"とメールした.

戦略的な必要性

例えば,現在ある取引所,ある取引対:XXX_USDTは,取引所でまだ上場していない.しかし,すぐに上場する.この取引所のXXX_USDTの市場をプログラムで監視する必要があります.この取引は,上限に達すると,取引することができます.そして,10つの制限価格の購入注文を発行し,数値を指定し,コインを盗むために注文します.購入は任務が完了するまで購入は,コインを購入するまでは,ずっと置かれています.

必要なものはシンプルですが,プログラミングの基礎を持たない小さなパートナーにとって,手間がかかるかもしれません.

戦略コード

戦略パラメータの定義:

操作を制御するいくつかのパラメータを定義します.img

コード実装:

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


関連性

もっと