avatar of 发明者量化-小小梦 发明者量化-小小梦
집중하다 사신
4
집중하다
1271
수행원

디지털 화폐 스팟 새로운 코인 획득 전략 (교육)

만든 날짜: 2022-04-20 15:59:01, 업데이트 날짜: 2023-09-20 10:29:48
comments   0
hits   3060

디지털 화폐 스팟 새로운 코인 획득 전략 (교육)

디지털 화폐 스팟 새로운 코인 획득 전략 (교육)

지난 이틀 동안 Telegram 그룹의 한 사용자가 IPO 전략에 대한 디자인 사례를 요청하는 개인 메시지를 저에게 보내왔습니다. 가끔 거래소에서 새로운 코인을 상장할 때, 당신은 그 중 일부를 잡고 싶어합니다. 이 글은 간단한 새로운 코인 전략을 설계합니다.

전략 요구 사항

예를 들어, 현재 특정 거래소에서는 특정 거래 쌍인 XXX_USDT가 아직 거래소에 상장되지 않았습니다. 하지만 곧 온라인에 나올 거예요. 이 거래소의 XXX_USDT 시장을 모니터링하는 프로그램이 필요합니다. 이 거래 쌍의 상한선에 도달하면 거래가 가능합니다. 그런 다음 10개의 매수 제한 주문을 발행하고 수량을 지정한 다음 주문을 내어 코인을 획득하세요. 그것을 사면 작업이 완료됩니다. 구매할 수 없다면 모든 주문이 실행되고 코인을 구매할 때까지 보류 상태로 유지하세요.

요구 사항은 매우 간단하지만, 암호화폐 분야에서 프로그래밍 기초가 없는 사람들은 어디서부터 시작해야 할지 모를 수도 있습니다. 다음으로, 우리는 이 요구 사항을 실현하기 위해 노력할 것입니다.

전략 코드

전략 매개변수 정의:

여기서는 주문 등의 작업을 제어하기 위한 여러 매개변수를 정의합니다. 디지털 화폐 스팟 새로운 코인 획득 전략 (교육)

코드 구현:

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