Я пытаюсь сослаться на функцию из моего модуля alchemy/broker_communication/tradeking.js в другом модуле alchemy/scheduler/scheduler.js
Однако задолго до запуска кода в scheduler запускается функция, которую я пытаюсь экспортировать из tradeking.js. Я не имею понятия почему; Я добавил трассировку стека в функцию в tradeking, и похоже, что компилятор Node по какой-то причине вызывает ее, но много разочарованных поисков в Google не нашли мне ответа на эту конкретную странность.
Вот модули, которые должны быть актуальны:
index.js
module.exports =
{
config: require('./config/config.js'),
analysis_runner: require('./analysis_runner/analysis_runner_prototype.js'),
data_feed: require('./data_feed/iex.js'),
broker: require('./broker_communication/tradeking.js')
}
планировщик/scheduler.js
var routes = require('../index.js');
var data_feed = routes.data_feed;
var analysis_runner = routes.analysis_runner;
var broker = routes.broker;
let results = data_feed.fetch('AAPL', '20190327');
results.then(data => analysis_runner.analyze(data));
broker.printAccountData();
посредник_связь/tradeking.js
var oauth = require('oauth');
var routes = require('../index.js');
var config = require('../config/config.js');
module.exports =
{
printAccountData: function()
{
console.info("Config is " + config);
console.info(new Error().stack);
tradekingConsumer.get(config.api_url + '/accounts.json', config.access_token, config.access_secret, function (err, data, res) {
if (!data == null) {
acctData = JSON.parse(data);
console.info('accttDataccttData: ' + JSON.stringify(acctData.response));
}
});
}
}
var tradekingConsumer = new oauth.OAuth
(
"https://developers.tradeking.com/oauth/request_token",
"https://developers.tradeking.com/oauth/access_token",
config.consumer_key,
config.consumer_secret,
"-1.0",
null,
"HMAC-SHA1"
);
Вы также можете просто увидеть полный проект на https://gitlab.com/dalseides/алхимия (хотя для тестирования части связи с брокером вам потребуется учетная запись Ally Invest + учетные данные API).
Полный вывод программы:
alchemy 厶 node scheduler/scheduler.js
Config is [object Object] Error at Object.printAccountData (/code/alchemy/broker_communication/tradeking.js:10:17)at Object.<anonymous> (/code/alchemy/scheduler/scheduler.js:9:8) at Module._compile (internal/modules/cjs/loader.js:805:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:816:10) at Module.load (internal/modules/cjs/loader.js:672:32) at tryModuleLoad (internal/modules/cjs/loader.js:612:12) at Function.Module._load (internal/modules/cjs/loader.js:604:3) at Function.Module.runMain (internal/modules/cjs/loader.js:868:12) at internal/main/run_main_module.js:21:11 Average: 188.755 S Mv Avg: 188.8498 L Mv Avg: 188.81733333333332shortIsHigh: true
--- BUYBUYBUY --- Average: 188.48 S Mv Avg: 188.79479999999998 L Mv Avg: 188.82755555555553 shortIsHigh: false--- SELLSELLSELL --- Average: 188.666 S Mv Avg: 188.80620000000002 L Mv Avg: 188.7992666666667 shortIsHigh: true
--- BUYBUYBUY --- Average: 188.497 S Mv Avg: 188.76 L Mv Avg: 188.8768965517242 shortIsHigh: false--- SELLSELLSELL --- Average: 188.865 S Mv Avg: 188.7616 L Mv Avg: 188.74286666666669 shortIsHigh: true
--- BUYBUYBUY --- Average: 188.867 S Mv Avg: 189.17379999999997 L Mv Avg: 189.25986666666668 shortIsHigh: false
--- SELLSELLSELL --- Average: 189.03 S Mv Avg: 188.9752 L Mv Avg: 188.96590000000003 shortIsHigh: true--- BUYBUYBUY --- Average: 188.776 S Mv Avg: 188.895 L Mv Avg: 188.89863333333335 shortIsHigh: false
--- SELLSELLSELL --- Average: 188.927 S Mv Avg: 188.8658 L Mv Avg: 188.85473333333337 shortIsHigh: true
--- BUYBUYBUY --- Average: 188.517 S Mv Avg: 188.7594 L Mv Avg: 188.7894 shortIsHigh: false--- SELLSELLSELL --- Average: 187.388 S Mv Avg: 187.12439999999998 L Mv Avg: 187.07276666666667 shortIsHigh: true
--- BUYBUYBUY --- Average: 188.085 S Mv Avg: 188.2184 L Mv Avg: 188.23606666666672 shortIsHigh: false--- SELLSELLSELL --- Average: 188.304 S Mv Avg: 188.2522 L Mv Avg: 188.24159999999998 shortIsHigh: true
--- BUYBUYBUY --- Average: 188.156 S Mv Avg: 188.2298 L Mv Avg: 188.23733333333334 shortIsHigh: false--- SELLSELLSELL --- Average: 188.514 S Mv Avg: 188.1266 L Mv Avg: 188.0391 shortIsHigh: true
--- BUYBUYBUY --- Average: 188.83 S Mv Avg: 188.9246 L Mv Avg: 188.96199999999996 shortIsHigh: false--- SELLSELLSELL --- Average: 189.026 S Mv Avg: 188.9622 L Mv Avg: 188.9615333333333 shortIsHigh: true
--- BUYBUYBUY --- Average: 188.775 S Mv Avg: 188.93040000000002 L Mv Avg: 188.97613333333337 shortIsHigh: false
--- SELLSELLSELL --- Average: 188.419 S Mv Avg: 188.3324 L Mv Avg: 188.31433333333334 shortIsHigh: true
--- BUYBUYBUY --- Average: 188.438 S Mv Avg: 188.5306 L Mv Avg: 188.54593333333332 shortIsHigh: false--- SELLSELLSELL --- TOTALPROFITGUYS: -0.4730000000000132





Object.<anonymous> (/code/alchemy/scheduler/scheduler.js:9:8)
Мне кажется, что он работает из планировщика.
Вызов перед ним асинхронныйlet results = data_feed.fetch('AAPL', '20190327');
results.then(data => analysis_runner.analyze(data));
Вы уверены, что это не должно называться после этого? IElet results = data_feed.fetch('AAPL', '20190327')
.then(data => analysis_runner.analyze(data))
.then(() => broker.printAccountData())