Xin hãy dạy cho tôi

Tác giả:Neo1898, Tạo: 2022-02-25 08:04:50, Cập nhật: 2022-02-25 08:52:20

Có một đoạn mã được trích dẫn bởi DreamSum, và nó sẽ báo lỗi vào một thời điểm nào đó: TypeError: cannot read propertyĐIUTôi sẽ thay đổi var pos = exchange.GetPosition (() thành var pos = _C ((exchange.GetPosition)))), liệu có thể giải quyết được vấn đề này không; vì thử nghiệm giả lập không thể kiểm tra lỗi này, phải có đĩa thực, vì vậy hãy thử nghiệm tổng thể trước, cảm ơn!

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

Thêm nữa

Neo1898Thay đổi var pos = exchange.GetPosition (() thành var pos = _C ((exchange.GetPosition (())), có thể giải quyết được không, lấy giá trị và đi xuống

Neo1898Mã gần đường 553 là: var t = exchange.GetTicker [currTotalEq, realProfit, t? t.Last : "--", (buyOrder.Price + "/" + buyOrder.Amount), (sellOrder.Price + "/" + sellOrder.Amount) ] Nếu không lấy dữ liệu ticker, nó sẽ được thay đổi thành var t = _C ((exchange.GetTicker)))

Neo1898Cảm ơn bạn, Dream Team!

Giấc mơ nhỏ`` tbl.rows.push (([currTotalEq, realProfit, t? t.Last : "--", (buyOrder? buyOrder.Price : "--") + "/" + (buyOrder? buyOrder.Amount :"--"), (sellOrder? sellOrder.Price "--") + "/" + (sellOrder? sellOrder.Amount : "--"))) `` Vấn đề là khi buyOrder là null, bạn không nên truy cập vào buyOrder.Amount hoặc buyOrder.Price.

Neo1898Nếu bạn đặt hàng, giá cả là số, nhưng Amount luôn không có dữ liệu và không báo cáo sai, điều này thật kỳ lạ, vấn đề ở đâu?

Neo1898Không có đặt hàng: thay đổi giá cả, cũng cần thay đổi số tiền, nhưng đã thử tbl.rows.push (([currTotalEq, realProfit, t? t.Last : "--", (buyOrder? buyOrder.Price : "--" + "/" + buyOrder? buyOrder.Amount :"--"), (sellOrder? sellOrder.Price "--" + "/" + sellOrder? sellOrder.Amount : "--") hoặc báo cáo TypeError: cannot read property 'Amount' of null at main (__FILE__:554), có phải mã không được cập nhật?

Giấc mơ nhỏCó thể, đó là truy cập vào thuộc tính của một biến. Khi quyết định biến này là null, không truy cập, sẽ không báo lỗi.

Neo1898tbl.rows.push (([currTotalEq, realProfit, t? t.Last : "--", (buyOrder? buyOrder.Price : "--" + "/" + buyOrder.Amount), (sellOrder? sellOrder.Price: "--" + "/" + sellOrder.Amount) ] Nó giống như ở trên, đúng không?

Giấc mơ nhỏbuyOrder?buyOrder.Price : "--"

Giấc mơ nhỏCó thể truyền vào một chuỗi trống.

Neo1898Cảm ơn bạn đã nói đúng, nhưng tôi đã không đặt hàng một số bước, vì vậy thông tin đặt hàng là null, phải cho phép nhập null, làm thế nào để thay đổi nó?

Những đám mây nhẹvar t = _C ((exchange.GetTicker)

Những đám mây nhẹKhông thể cài đặt lỗi vào () và thay đổi thành var pos = _C ((exchange.GetPosition)

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

Neo1898Sau đó, tôi không đặt hàng, có được phép là null ở đây, nơi mà tôi có thể thay đổi cho phép là null, nên không đặt hàng, số lệnh đó nên là null.

Giấc mơ nhỏCó thể là buyOrder hoặc sellOrder là null, bạn có thể in kiểm tra.