NodeJS запускает экспортированную функцию при компиляции - почему? - PullRequest
0 голосов
/ 08 апреля 2019

Я пытаюсь сослаться на функцию из моего alchemy/broker_communication/tradeking.js модуля в другом модуле alchemy/scheduler/scheduler.js

Однако задолго до запуска кода в scheduler запускается функция, которую я пытаюсь экспортировать из tradeking.js. Я не имею понятия почему; Я добавил трассировку стека к функции при торговле, и похоже, что компилятор Node по какой-то причине вызывает ее, но большое разочарование в поиске не нашло мне ответа на эту странность.

Это модули, которые должны иметь отношение:

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();

broker_communication / tradeking.js

var oauth = require('oauth');
var routes = require('../index.js');
var config = require('../config/config.js');

module.exports =
{
  printAccountData: function() 
  {
    console.log("Config is " + config);
    console.log(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.log('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/alchemy (хотя для проверки коммуникационной части брокера вам понадобится учетная запись Ally Invest + учетные данные API).

Полный вывод программы:

Алхимия 厶 планировщик узлов / scheduler.js
Config is [объект] ошибка в 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.81733333333332          

shortIsHigh: true
--- BUYBUYBUY --- Среднее: 188,48 S Mv Avg: 188.79479999999998 L Mv Avg: 188.82755555555553 shortIsHigh: false

--- SELLSELLSELL --- Среднее: 188,666 S Mv Avg: 188.80620000000002 L Mv Avg: 188.7992666666667 shortIsHigh: true
--- BUYBUYBUY --- Среднее значение: 188,497 S Mv Avg: 188,76 L Mv Avg: 188.8768965517242 shortIsHigh: false

--- SELLSELLSELL --- Среднее значение: 188,865 S Сред. Ср .: 188,7616 L Сред. Значение сред .: 188,74286666666669 shortIsHigh: true
--- BUYBUYBUY --- Среднее: 188,867 S Mv Avg: 189.17379999999997 L Mv Avg: 189.25986666666668 shortIsHigh: false
--- SELLSELLSELL --- Среднее значение: 189,03 S Сред. Среднее значение: 188,9752 л Средн. Значение среднего: 188,96590000000003 shortIsHigh: true

--- BUYBUYBUY --- Среднее значение: 188,776 S Mv Avg: 188,895 L Mv Avg: 188.89863333333335 shortIsHigh: false

--- SELLSELLSELL --- Среднее: 188,927 S Сред. Ср .: 188,8658 л Сред. Сред .: 188,85473333333337 shortIsHigh: true
--- BUYBUYBUY --- Среднее: 188,517 S Mv Avg: 188,7594 L Mv Avg: 188.7894 shortIsHigh: false

--- SELLSELLSELL --- Среднее: 187,388 S Mv Avg: 187.12439999999998 L Mv Avg: 187.07276666666667 shortIsHigh: true
--- BUYBUYBUY --- Среднее: 188,085 S Mv Avg: 188,2184 L Mv Avg: 188.23606666666672 shortIsHigh: false

--- SELLSELLSELL --- Среднее: 188,304 S Mv Avg: 188,2522 L Mv Avg: 188.24159999999998 shortIsHigh: true
--- BUYBUYBUY --- Среднее: 188,156 S Mv Avg: 188,2298 L Mv Avg: 188.23733333333334 shortIsHigh: false

--- SELLSELLSELL --- Среднее значение: 188,514 сред. Мв. Средн .: 188,1266 л. Сред. Ср. Средн .: 188,0391 shortIsHigh: true
--- BUYBUYBUY --- Среднее: 188,83 S Mv Avg: 188,9246 L Mv Avg: 188.96199999999996 shortIsHigh: false

--- SELLSELLSELL --- Среднее значение: 189,026 S Сред. Средняя величина: 188,9622 л Средн. Значение средней: 188,9615333333333 shortIsHigh: true
--- BUYBUYBUY --- Среднее: 188,775 S Mv Avg: 188.93040000000002 L Mv Avg: 188.97613333333337 shortIsHigh: false
--- SELLSELLSELL --- Среднее значение: 188,419 S Среднее значение Sv: 188,3324 L Среднее значение Mv: 188,31433333333334 shortIsHigh: true
--- BUYBUYBUY --- Среднее значение: 188,438 S Mv Avg: 188,5306 L Mv Avg: 188,545933333333331058 *

--- SELLSELLSELL --- TOTALPROFITGUYS: -0,4730000000000132

1 Ответ

0 голосов
/ 08 апреля 2019

Object.<anonymous> (/code/alchemy/scheduler/scheduler.js:9:8)
Мне кажется, что он запускается из планировщика.

Вызов до того, как он будет асинхронным
let results = data_feed.fetch('AAPL', '20190327'); results.then(data => analysis_runner.analyze(data));

Вы уверены, что он не должен быть вызванпосле этого?IE
let results = data_feed.fetch('AAPL', '20190327') .then(data => analysis_runner.analyze(data)) .then(() => broker.printAccountData())

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...