리소스 로딩... 로딩...

디지털 화폐 현금 채취 전략 (교육)

저자:발명가들의 수량화 - 작은 꿈, 창작: 2022-04-20 15:59:01, 업데이트: 2023-09-20 10:29:48

img

디지털 화폐 현금 채취 전략 (교육)

최근 두 일 동안, 텔레그램 그룹 사용자들은 "나는 새로운 전략을 세우는 데 필요한 디자인 사례를 참조하기를 바랍니다".라고 사유했습니다.

전략적 요구

예를 들어, 현재 어떤 거래소, 어떤 거래 쌍: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


관련

더 많은