Tolong ajar saya.

Penulis:Neo1898, Dicipta: 2022-02-25 08:04:50, Dikemas kini: 2022-02-25 08:52:20

Mengutip satu kod DreamSum, yang mendapati bahawa pada satu ketika akan memberikan kesilapan: TypeError: cannot read property Price of null at main (FileSaya akan menukar var pos = exchange.GetPosition (() menjadi var pos = _C ((exchange.GetPosition (())), adakah masalah ini dapat diselesaikan; kerana analogi re-test tidak dapat menguji bug ini, mesti diskaun sebenar, jadi tolong ubahnya terlebih dahulu, terima kasih!

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

Lebih lanjut

Neo1898Mengubah var pos = exchange.GetPosition (() menjadi var pos = _C ((exchange.GetPosition (())), adakah ia boleh diselesaikan, mengambil nilai dan pergi ke bawah

Neo1898Kod berhampiran baris 553 ialah: var t = exchange.GetTicker ((() tbl.rows.push (([currTotalEq, realProfit, t? t.Last : "--", (buyOrder.Price + "/" + buyOrder.Amount), (sellOrder.Price + "/" + sellOrder.Amount))) Jika data ticker tidak diambil, ia berubah menjadi var t = _C ((exchange.GetTicker)))), adakah ia boleh dilakukan.

Neo1898Terima kasih, impian!

Mimpi kecil`` tbl.rows.push (([currTotalEq, realProfit, t? t.Last : "--", (buyOrder? buyOrder.Price : "--") + "/" + (buyOrder? buyOrder.Amount :"--"), (sellOrder? sellOrder.Price "--") + "/" + (sellOrder? sellOrder.Amount : "--"))) `` Masalahnya ialah, apabila buyOrder adalah null, jangan pergi ke buyOrder.Amount atau buyOrder.Price kerana ia tidak akan memberikan kesalahan.

Neo1898Walaupun ada pesanan, harga ada nilai di sana, tetapi Amount selalu tidak mempunyai data dan tidak melaporkan kesilapan, yang peliknya, di mana masalahnya?

Neo1898Jika anda tidak membuat pesanan, anda boleh menukar harga, anda boleh menukar jumlah, tetapi anda cuba. tbl.rows.push (([currTotalEq, realProfit, t? t.Last : "--", (buyOrder? buyOrder.Price : "--" + "/" + buyOrder? buyOrder.Amount :"--"), (sellOrder? sellOrder.Price "--" + "/" + sellOrder? sellOrder.Amount : "--") Atau laporan TypeError: cannot read property 'Amount' of null at main (__FILE__:554), adakah kod tidak dikemas kini?

Mimpi kecilBoleh, adalah akses Kepada sifat suatu pembolehubah, apabila menentukan sama ada pembolehubah itu null atau tidak, tidak boleh diakses, maka tidak akan dikembalikan kesalahan.

Neo1898tbl.rows.push (([currTotalEq, realProfit, t? t.Last : "--", (buyOrder? buyOrder.Price : "--" + "/" + buyOrder.Amount), (sellOrder? sellOrder.Price : "--" + "/" + sellOrder.Amount) ] Itulah yang di atas, betul?

Mimpi kecilBuyOrder?buyOrder.Price : "--" Ini boleh diuruskan.

Mimpi kecilIa boleh menghantar strings kosong.

Neo1898Terima kasih, betul, saya tidak memesan beberapa langkah, jadi pesanan adalah null, dan saya perlu membenarkan penghantaran null, bagaimana saya boleh mengubahnya?

Awan ringanvar t = _C ((exchange.GetTicker)

Awan ringanTidak boleh dimasukkan dengan kesalahan, digantikan dengan var pos = _C (exchange.GetPosition)

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

Neo1898Jika saya tidak memesan, apakah ini dibenarkan sebagai null, di mana saya boleh menukarnya kepada dibenarkan sebagai null, saya tidak perlu memesan, nombor pesanan itu sepatutnya menjadi null.

Mimpi kecilMungkin buyOrder atau sellOrder adalah null, boleh dicetak untuk memeriksa.