avatar of 发明者量化-小小梦 发明者量化-小小梦
konzentrieren Sie sich auf Private Nachricht
4
konzentrieren Sie sich auf
1271
Anhänger

Digitale Währungen entdecken – neue Strategie zum Ergreifen von Münzen (Unterricht)

Erstellt in: 2022-04-20 15:59:01, aktualisiert am: 2023-09-20 10:29:48
comments   0
hits   3060

Digitale Währungen entdecken – neue Strategie zum Ergreifen von Münzen (Unterricht)

Digitale Währungen entdecken – neue Strategie zum Ergreifen von Münzen (Unterricht)

In den letzten zwei Tagen hat mir ein Benutzer in der Telegram-Gruppe eine private Nachricht geschickt, in der er auf ein Gestaltungsbeispiel für eine IPO-Strategie hoffte. Wenn eine Börse neue Münzen auflistet, möchte man manchmal einige davon ergattern. Dieser Artikel beschreibt eine einfache Strategie für neue Münzen.

Strategieanforderungen

Beispielsweise ist derzeit an einer bestimmten Börse ein bestimmtes Handelspaar: XXX_USDT noch nicht gelistet. Aber es kommt bald online. Es wird ein Programm benötigt, um den XXX_USDT-Markt dieser Börse zu überwachen. Sobald die Obergrenze dieses Handelspaares erreicht ist, kann es gehandelt werden. Geben Sie dann 10 Limit-Kaufaufträge aus, geben Sie die Menge an und erteilen Sie Aufträge zum Erwerb von Münzen. Mit dem Kauf ist die Aufgabe abgeschlossen. Wenn Sie es nicht kaufen können, halten Sie es einfach zurück, bis alle Aufträge ausgeführt sind und Sie die Münzen kaufen.

Die Anforderung ist sehr einfach, aber diejenigen, die keine Programmierkenntnisse im Kryptowährungskreis haben, wissen möglicherweise nicht, wo sie anfangen sollen. Als Nächstes werden wir an der Umsetzung dieser Anforderung arbeiten.

Strategiecode

Definition der Strategieparameter:

Hier definieren wir verschiedene Parameter zur Steuerung von Vorgängen wie beispielsweise der Auftragserteilung. Digitale Währungen entdecken – neue Strategie zum Ergreifen von Münzen (Unterricht)

Code-Implementierung:

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)
    }
}

Die Strategie erkennt die Exchange-API und die Orderbuchschnittstelle. Sobald die Orderbuchdaten verfügbar sind, verwendet die Strategie die Funktion „exchange.Go“, um Aufträge zu erteilen. Nach der Auftragserteilung wird in einer Schleife der Status der aktuell ausstehenden Bestellung überprüft. Die Strategie wurde nicht wirklich getestet. Hier ist nur eine Code-Design-Referenz. Interessierte können Funktionen für die Verwendung ändern und hinzufügen.

Vollständige Strategie: https://www.fmz.com/strategy/358383