Ссылка на код DreamSum, который в какой-то момент вернет ошибку: TypeError: cannot read property
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)])
Neo1898Изменить var pos = exchange.GetPosition (() в var pos = _C ((exchange.GetPosition (())), можно ли это решить, получить значение и идти вниз.
Neo1898Код в районе строки 553: var t = exchange.GetTicker ((() tbl.rows.push (([currTotalEq, realProfit, t? t.Last : "--", (buyOrder.Price + "/" + buyOrder.Amount), (sellOrder.Price + "/" + sellOrder.Amount))) Если вы не получили данные о тикерах, то вы можете изменить их на var t = _C ((exchange.GetTicker)))
Neo1898Спасибо, Дрем!
Изобретатели количественного измерения - мечты`` tbl.rows.push (([currTotalEq, realProfit, t? t.Last : "--", (buyOrder? buyOrder.Price : "--") + "/" + (buyOrder? buyOrder.Amount :"--"), (sellOrder? sellOrder.Price "--") + "/" + (sellOrder? sellOrder.Amount : "--"))) `` Проблема заключается в том, что если buyOrder является null, то не нужно посещать buyOrder.Amount или buyOrder.Price, чтобы не получить ошибку.
Neo1898Даже если у вас есть заказ, цена там имеет значение, но у Amount всегда нет данных, нет ошибок, это странно, где проблема?
Neo1898В случае, если вы не заказываете: изменить цену, изменить сумму, но попробовать. tbl.rows.push (([currTotalEq, realProfit, t? t.Last : "--", (buyOrder? buyOrder.Price : "--" + "/" + buyOrder? buyOrder.Amount :"--"), (sellOrder? sellOrder.Price "--" + "/" + sellOrder? sellOrder.Amount : "-")) Или TypeError: cannot read property 'Amount' of null at main (__FILE__:554), что код не обновлен? или где ошибка?
Изобретатели количественного измерения - мечтыМожно, это доступ к свойствам какой-либо переменной. При определении, является ли эта переменная null, или нет, не доступ, не возвращается ошибка.
Neo1898tbl.rows.push (([currTotalEq, realProfit, t? t.Last : "--", (buyOrder? buyOrder.Price : "--" + "/" + buyOrder.Amount), (sellOrder? sellOrder.Price : "--" + "/" + sellOrder.Amount))) Это то же самое, что и выше, верно?
Изобретатели количественного измерения - мечтыbuyOrder?buyOrder.Price : "--" Это можно сделать.
Изобретатели количественного измерения - мечтыМожно передавать пустую строку.
Neo1898Спасибо, это правильно, но я не заказывал некоторые шаги, поэтому информация о заказе Null, и я должен разрешить Null, как это изменить?
Легкие облака.var t = _C ((обмен.GetTicker)
Легкие облака.Не удалось вставить ошибку (() и заменить на var pos = _C ((exchange.GetPosition)
Neo1898 tbl.rows.push,是这个不允许传入null值是吗?我有些步骤是没有下单的,所以订单信息为null,必须允许传入null,应该要怎么改呢,谢谢梦总!
Neo1898Я не заказываю, где я могу изменить это, где я могу изменить это, где я не заказываю, где номер заказа должен быть нулем.
Изобретатели количественного измерения - мечтыМожет быть buyOrder или sellOrder является null, можно распечатать проверку.