Bitte lernen Sie

Schriftsteller:Neo1898, Erstellt: 2022-02-25 08:04:50, Aktualisiert: 2022-02-25 08:52:20

Der Code wurde von Dreamsum zitiert, der zu einem bestimmten Zeitpunkt einen Fehler zurückgeben würde: TypeError: cannot read property Price of null at main (Typfehler: kann keine Eigenschaft lesen)Datei[553], die den Programm-Austritt verursacht, fragen Sie, ob es sich um ein Problem handelt, das durch das Null-Ergebnis des Custom Fields verursacht wurde, oder ob es sich um eine fehlende Preisinformation handelt. Ich werde var pos = exchange.GetPosition (() zu var pos = _C ((exchange.GetPosition))) ändern, ob das Problem gelöst werden kann.

var currTotalEq = getTotalEquity()
var pos = _C(exchange.GetPosition())
//var pos = exchange.GetPosition()
if (currTotalEq && pos) {
                    // LogStatus(_D(), "当前总权益:", currTotalEq, "持仓:", pos)
                    var tblPos = {
                        "type" : "table",
                        "title" : "持仓",
                        "cols" : ["持仓数量", "持仓方向", "持仓均价", "持仓盈亏", "合约代码", "自定义字段 / " + SpecifyPosField],
                        "rows" : []
                    }
                    var descType = ["多头仓位", "空头仓位"]
                    for (var posIndex = 0 ; posIndex < pos.length ; posIndex++) {
                        tblPos.rows.push([pos[posIndex].Amount, descType[pos[posIndex].Type], pos[posIndex].Price, pos[posIndex].Profit, pos[posIndex].ContractType, SpecifyPosField == "" ? "--" : pos[posIndex].Info[SpecifyPosField]])
                    }
                    
                    var tbl = {
                        "type" : "table",
                        "title" : "数据",
                        "cols" : ["当前总权益", "实际盈亏", "当前价格", "买单价格/数量", "卖单价格/数量"],
                        "rows" : []
                    }
                    var buyOrder = null 
                    var sellOrder = null 
                    for (var orderIndex = 0 ; orderIndex < orders.length ; orderIndex++) {
                        if (orders[orderIndex].Type == ORDER_TYPE_BUY) {
                            buyOrder = orders[orderIndex]
                        } else {
                            sellOrder = orders[orderIndex]
                        }
                    }
                    var realProfit = currTotalEq - totalEq
                    if (exchange.GetName() == "Futures_Binance") {
                        _.each(pos, function(p) {
                            realProfit += parseFloat(p.Info.unRealizedProfit)
                        })                        
                    }
                    var t = exchange.GetTicker()
                    tbl.rows.push([currTotalEq, realProfit, t ? t.Last : "--", (buyOrder.Price + "/" + buyOrder.Amount), (sellOrder.Price + "/" + sellOrder.Amount)])

Mehr

Neo1898Verändern Sie var pos = exchange.GetPosition (() in var pos = _C ((exchange.GetPosition (())), ob es gelingt, den Wert zu erhalten und weiter nach unten zu gehen.

Neo1898Der Code in der Nähe von 553 lautet: Var t = exchange.GetTicker (() tbl.rows.push (([currTotalEq, realProfit, t? t.Last : "--", (buyOrder.Price + "/" + buyOrder.Amount), (sellOrder.Price + "/" + sellOrder.Amount))) Wenn nicht, dann ist es nicht möglich, die Daten des Ticker zu erhalten, sondern es ist besser, wenn man die Daten von var t = _C (exchange.GetTicker) wählt.

Neo1898Danke, Träume!

Kleine TräumeIch weiß nicht. tbl.rows.push (([currTotalEq, realProfit, t? t.Last : "--", (buyOrder? buyOrder.Price : "--") + "/" + (buyOrder? buyOrder.Amount :"--"), (sellOrder? sellOrder.Price "--") + "/" + (sellOrder? sellOrder.Amount : "--"))) Ich weiß nicht. Das Problem ist, wenn die BuyOrder Null ist, dann geht man nicht auf die BuyOrder.Amount oder die BuyOrder.Price und es gibt keine Fehler.

Neo1898Wenn es einen Auftrag gibt, ist der Preis dort numerisch, aber bei Amount gibt es immer keine Daten und keine Fehlermeldungen, das ist seltsam, wo ist das Problem?

Neo1898Es gibt keine Bestellung: Preis geändert, Menge geändert, aber versucht. tbl.rows.push (([currTotalEq, realProfit, t? t.Last : "--", (buyOrder? buyOrder.Price : "--" + "/" + buyOrder? buyOrder.Amount :"--"), (sellOrder? sellOrder.Price "--" + "/" + sellOrder? sellOrder.Amount : "--") Oder Typfehler: kann nicht lesen Eigenschaft 'Amount' of null at main (__FILE__:554), ist der Code nicht aktualisiert?

Kleine TräumeKann, ist der Zugriff auf die Eigenschaften einer Variablen, wenn man entscheidet, ob die Variable null ist oder nicht zugegriffen wird, wird kein Fehler zurückgegeben.

Neo1898tbl.rows.push (([currTotalEq, realProfit, t? t.Last : "--", (buyOrder? buyOrder.Price : "--" + "/" + buyOrder.Amount), (sellOrder? sellOrder.Price : "--" + "/" + sellOrder.Amount) ] Das ist wie oben, richtig.

Kleine TräumeBuyOrder?buyOrder.Price: "--" Das ist alles.

Kleine TräumeSie können eine leere Stringung übermitteln.

Neo1898Danke, aber ich habe einige Schritte nicht bestellt, also ist die Bestellmeldung null und muss null zugelassen werden.

Leichte WolkenVAR T = _C (Exchange.GetTicker)

Leichte WolkenDie Fehlerfreiheit kann nicht eingesetzt werden.

Neo1898 tbl.rows.push,是这个不允许传入null值是吗?我有些步骤是没有下单的,所以订单信息为null,必须允许传入null,应该要怎么改呢,谢谢梦总!

Neo1898Also, wenn ich nicht bestelle, ob es null erlaubt ist, wo kann ich es als null erlaubt ändern, sollte ich nicht bestellen, die Bestellnummer sollte null sein.

Kleine TräumeEs kann sein, dass buyOrder oder sellOrder zu null führt.