Javascript 从输出对象获取ADX值
我这里有个问题。 所以,我正在制作这个机器人,我需要一个ADX指示器,我使用这个库得到: 代码如下所示:Javascript 从输出对象获取ADX值,javascript,reactjs,Javascript,Reactjs,我这里有个问题。 所以,我正在制作这个机器人,我需要一个ADX指示器,我使用这个库得到: 代码如下所示: function updateIndicators(pair, price){ var output = {}; pairs[pair]['maValue'] = pairs[pair]['ma'].nextValue(price[2]); pairs[pair]['adxValue'] = pairs[pair]['adx'].nextValue({close: price[2
function updateIndicators(pair, price){
var output = {};
pairs[pair]['maValue'] = pairs[pair]['ma'].nextValue(price[2]);
pairs[pair]['adxValue'] = pairs[pair]['adx'].nextValue({close: price[2] , high: price[3],
low: price[4]});
output = pairs[pair]['adxValue'];
console.log(output);
findTradeOpportunity(pair, price[2]);
pairs[pair]['prevMaValue'] = pairs[pair]['maValue']
pairs[pair]['prevClose'] = price[2];
}
变量对的定义如下:
for(pair of pairsArray){
pairs[pair]={
ma: new SMA({period : maPeriods, values :[]}),
maValue: 0,
prevMaValue: 0,
prevClose: 0,
adx: new ADX({period: adxPeriods, close:[], high:[], low:[]}),
adxValue: {},
long: false,
short: false,
stopLossPrice: 0,
entryAmount: 0,
entryPrice: 0
}
}
问题是,当我记录该输出时,nextValue对象根据我使用的库给我提供了以下信息:
{ adx: 34.906756996039285,
pdi: 19.8213833578075,
mdi: 36.373822501854036 }
这是完美的。但是我只想得到adx值,我不知道如何得到。
我试着做:
console.log(output.adx)
但它不明白,它在终端给了我这个:
/home/jturolla/Documents/btcbot/manager.js:73
console.log(output.adx);
^
TypeError: Cannot read property 'adx' of undefined
at updateIndicators (/home/jturolla/Documents/btcbot/manager.js:73:22)
at Manager.runBot (/home/jturolla/Documents/btcbot/manager.js:54:7)
at Object.<anonymous> (/home/jturolla/Documents/btcbot/app.js:4:9)
at Module._compile (internal/modules/cjs/loader.js:702:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
at Module.load (internal/modules/cjs/loader.js:612:32)
at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
at Function.Module._load (internal/modules/cjs/loader.js:543:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:744:10)
at startup (internal/bootstrap/node.js:238:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:572:3)
/home/jturolla/Documents/btcbot/manager.js:73
console.log(output.adx);
^
TypeError:无法读取未定义的属性“adx”
在更新指示器(/home/jturella/Documents/btcbot/manager.js:73:22)
在Manager.runBot(/home/jturolla/Documents/btcbot/Manager.js:54:7)
反对。(/home/jturolla/Documents/btcbot/app.js:4:9)
at模块编译(内部/modules/cjs/loader.js:702:30)
at Object.Module._extensions..js(internal/modules/cjs/loader.js:713:10)
at Module.load(内部/modules/cjs/loader.js:612:32)
在tryModuleLoad(内部/modules/cjs/loader.js:551:12)
at Function.Module._load(内部/modules/cjs/loader.js:543:3)
位于Function.Module.runMain(内部/modules/cjs/loader.js:744:10)
启动时(内部/bootstrap/node.js:238:19)
在bootstrapNodeJSCore(internal/bootstrap/node.js:572:3)
需要有关访问此adx值的帮助。非常感谢。
PS:也尝试了JSON.parse(),但没有成功。答案确实是使用
console.log(output.adx)
但首先检查它是否未定义,因此该函数现在如下所示:
function updateIndicators(pair, price){
var output = {};
pairs[pair]['maValue'] = pairs[pair]['ma'].nextValue(price[2]);
pairs[pair]['adxValue'] = pairs[pair]['adx'].nextValue({close: price[2] , high: price[3],
low: price[4]});
output = pairs[pair]['adxValue'];
if(output){
console.log(output.adx)
findTradeOpportunity(pair, price[2]);
}
pairs[pair]['prevMaValue'] = pairs[pair]['maValue']
pairs[pair]['prevClose'] = price[2];
}
“但它不明白。”这到底是什么意思?计算机通常什么都不懂。编辑原始post您无法获取
console.log(output)
的日志输出,也无法获取相同值的错误。因为无论是输出
是一个对象,还是未定义
。不能两者兼而有之。您是否有可能多次调用该函数?我们无法真正帮助您,因为我们无法运行代码。这个错误很明显。只有你才能真正弄清楚为什么nextValue
返回未定义的。是的,就是这样。比如,我多次运行该函数。我第一次运行它时,下一个值仍然没有足够的信息来生成我向您展示的输出。因此,在第一次返回undefined。如果您愿意,我可以发布整个代码,或者您可以对此进行解释,即,进行代码防御,并且仅在值未定义时使用该值进行操作,或者以某种方式修复您的实现,使其不会返回未定义的值。由于该解决方案是特定于您正在使用的库的,因此您要么自己解决,要么希望其他人熟悉它。