Поиск ошибки в скрипте, который выполняет вычисления FIFO / LIFO в истории транзакций инвестиционного трекера

#google-apps-script #google-sheets #undefined-reference

Вопрос:

Введение

У меня есть электронная таблица, и идея этой электронной таблицы заключается в том, что любой пользователь может ввести историю своих транзакций в таблицу «история», и на основе этой истории предоставляется обзор реализованных доходов человека (= они продали его в прошлом) и их нереализованных доходов (= никогдапродал его). Запускается скрипт, который затем создает отчет (sheet: Отчет) с необходимыми данными. Таблица запросов суммирует эти данные в таблице сводки отчета RG. На основе этой сводки создается таблица позиций, в которой отображаются все текущие позиции, занимаемые пользователем. Пользователь может выбрать запуск скрипта, перейдя в меню CoinAtlas> Построить отчет> LIFO или HIFO. Пожалуйста, посмотрите здесь образец таблицы.

Что такое FIFO и LIFO?

Это общепринятые методы учета для расчета реализованной прибыли. FIFO (= первый вход, первый выход) и LIFO (= последний вход, первый выход). Пример FIFO: вы покупаете 2 акции компании A по 10 долларов каждая на дату Y. На дату Y 1 вы покупаете еще 2 акции компании A по 15 долларов каждая. У вас 4 акции компании A. Вы решаете продать 3 акции компании A по 20 долларов каждая. Затем прибыль рассчитывается как (3 * 20-(2 * 10 1 * 15)) = 60 — 35 = 25 долларов. Тот же сценарий LIFO будет: 60-40 = 20 долларов.

Описание проблемы

При построении отчета по какой-либо причине MSTR акций и ТЕТА криптовалюты игнорируются и не отображаются в выходном листе «Отчет». Сценарий был написан опытным программистом, который, к сожалению, больше не отвечает на эту проблему. С моими навыками новичка в javascript я, похоже, не могу понять, почему.

Вычисление скрипта FIFO

 function createReport_LIFO () {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const inputSheet = ss.getSheetByName('History');
  const report = ss.getSheetByName('Report');
  const data = inputSheet.getRange(2, 1, inputSheet.getLastRow() - 1, 9).getValues();
  const filterd = data.filter(row => row[2] == 'Buy' || row[2] == 'Sell');
  const sorted = filterd.sort((a, b) => {
    if (a[0] < b[0]) return 1
    if (a[0] > b[0]) return -1
    else return 0
  })

  //console.log(sorted);
  const securityObject = sorted.reduce((acc, curr) => {
    if (curr[1] in acc) {
      if (curr[2] in acc[curr[1]]) {
        acc[curr[1]][curr[2]].push(curr)
      } else {
        acc[curr[1]] = { ...acc[curr[1]], [curr[2]]: [curr] }
      }
    } else {
      acc[curr[1]] = { [curr[2]]: [curr] }
    }
    return acc
  }, {});

  console.log(JSON.stringify(securityObject));
  //console.log(securityObject);

  const objects = [];

  Object.keys(securityObject).forEach(ticker => {
    const tic = securityObject[ticker];
    let index = 0;

    try {
      tic.Sell.forEach(sell => {
        const [date, security, , quanity, total, , account, ] = sell;
        let totalBuy = 0;
        let remainder = quanity;

        do {
          let [, , , buyQuanity, , buyPrice] = tic.Buy[index];
          if (buyQuanity < remainder) {
            totalBuy  = (buyQuanity * buyPrice);
            remainder -= buyQuanity;
            index  ;
          } else {
            totalBuy  = (remainder * buyPrice);
            securityObject[ticker].Buy[index][3] = (buyQuanity - remainder);
            buyQuanity -= remainder;
            remainder = 0;
            if (buyQuanity <= 0) {
              index  ;
            }
          }
        } while (remainder > 0);

        objects.push({
          date,
          security,
          account,
          quanity,
          totalBuy,
          total,
          result: total - totalBuy
        })
      })
    } catch (err) {
      console.log(err)
    }
  })

  const convertToSheetsArray = [["Sell Date", "Security", "Account", "Quantity Sold", "Total Buy", "Total Sell", "Result"]]
  objects.forEach(obj => convertToSheetsArray.push(Object.values(obj)));
  report.getDataRange().clearContent();
  report.getRange(1, 1, convertToSheetsArray.length, 7).setValues(convertToSheetsArray);
}
 

Вывод securityObject

 Logging output too large. Truncating output. {"ETH":{"Buy":[["2021-10-26T22:00:00.000Z","ETH","Buy",0.087541,301.25,3441.2446739242187,"Bitvavo","Cryptocurrency",""],["2021-07-11T22:00:00.000Z","ETH","Buy",1.19,2113.84,1776.3361344537818,"Bitvavo","Cryptocurrency",""],["2021-07-09T22:00:00.000Z","ETH","Buy",0.109074,195.55,1792.8195536974897,"Binance","Cryptocurrency",""],["2021-07-09T22:00:00.000Z","ETH","Buy",0.0529245,94.95,1794.0651305161127,"Binance","Cryptocurrency",""],["2021-07-09T22:00:00.000Z","ETH","Buy",0.0443436,81.22,1831.6059138184542,"Binance","Cryptocurrency",""],["2021-07-09T22:00:00.000Z","ETH","Buy",0.31543836,576.66,1828.1226164122843,"Binance","Cryptocurrency",""],["2021-07-05T22:00:00.000Z","ETH","Buy",0.19039196,498.75,2619.595911508028,"Bitvavo","Cryptocurrency",""],["2021-07-05T22:00:00.000Z","ETH","Buy",0.57131,1116.81,1954.823125798603,"Binance","Cryptocurrency",""],["2021-05-18T22:00:00.000Z","ETH","Buy",0.1036,250,2413.127413127413,"Binance","Cryptocurrency",""]]},"MATIC":{"Sell":[["2021-10-21T22:00:00.000Z","MATIC","Sell",37.14,61.82,1.6645126548196014,"Binance","Cryptocurrency",""]],"Buy":[["2021-05-18T22:00:00.000Z","MATIC","Buy",37.14,65,1.7501346257404415,"Binance","Cryptocurrency",""]]},"XTZ":{"Buy":[["2021-10-21T22:00:00.000Z","XTZ","Buy",8.6,58.82,6.839534883720931,"Binance","Cryptocurrency",""],["2021-09-25T22:00:00.000Z","XTZ","Buy",35.17,200,5.686664771111743,"Bitvavo","Cryptocurrency",""],["2021-09-11T22:00:00.000Z","XTZ","Buy",35.777,200,5.590183637532493,"Bitvavo","Cryptocurrency",""]]},"TFUEL":{"Sell":[["2021-10-20T22:00:00.000Z","TFUEL","Sell",754,182,0.2413793103448276,"Binance","Cryptocurrency",""]],"Buy":[["2021-07-04T22:00:00.000Z","TFUEL","Buy",754,261,0.34615384615384615,"Binance","Cryptocurrency",""]]},"THETA":{"Sell":[["2021-10-20T22:00:00.000Z","THETA","Sell",81.4,397.73,4.886117936117936,"Binance","Cryptocurrency",""]],"Buy":[["2021-03-26T23:00:00.000Z","THETA","Buy",19.5,200.56,10.285128205128204,"Binance","Cryptocurrency",""],["2021-03-20T23:00:00.000Z","THETA","Buy",26,200,7.6923076923076925,"Binance","Cryptocurrency",""],["2021-03-19T23:00:00.000Z","THETA","Buy",35.9,249.81,6.95849582172702,"Binance","Cryptocurrency",""]]},"ONE":{"Buy":[["2021-10-20T22:00:00.000Z","ONE","Buy",2768,579.73,0.2094400289017341,"Binance","Cryptocurrency",""],["2021-09-11T22:00:00.000Z","ONE","Buy",1241,200,0.16116035455278002,"Binance","Cryptocurrency",""]]},"ALGO":{"Buy":[["2021-09-25T22:00:00.000Z","ALGO","Buy",145.18,200,1.3776002204160351,"Bitvavo","Cryptocurrency",""]]},"UPST":{"Buy":[["2021-08-09T22:00:00.000Z","UPST","Buy",2.8786672,336,116.7206824046906,"Trading212","Stock",""]]},"AXS":{"Buy":[["2021-08-08T22:00:00.000Z","AXS","Buy",3,106,35.333333333333336,"Binance","Cryptocurrency",""]]},"safemars":{"Sell":[["2021-08-08T22:00:00.000Z","safemars","Sell",206130076,16,7.762089021885385e-8,"Binance","Cryptocurrency",""]],"Buy":[["2021-04-19T22:00:00.000Z","safemars","Buy",206130076,200,9.70261127735673e-7,"Binance","Cryptocurrency",""]]},"safemoon":{"Sell":[["2021-08-08T22:00:00.000Z","safemoon","Sell",55800000,90,0.0000016129032258064516,"Binance","Cryptocurrency",""]],"Buy":[["2021-04-19T22:00:00.000Z","safemoon","Buy",55800000,300,0.000005376344086021505,"Binance","Cryptocurrency",""]]},"FRA:C36":{"Sell":[["2021-07-13T22:00:00.000Z","FRA:C36","Sell",358,343.68,0.96,"Bitvavo","Stock",""]],"Buy":[["2021-03-18T23:00:00.000Z","FRA:C36","Buy",358,253.9,0.7092178770949721,"DeGiro","Stock",""]]},"BTC":{"Sell":[["2021-07-11T22:00:00.000Z","BTC","Sell",0.038237,1116.81,29207.57381593744,"Binance","Cryptocurrency",""],["2021-07-04T22:00:00.000Z","BTC","Sell",0.00537222,257,47838.69610700977,"Binance","Cryptocurrency",""],["2021-07-04T22:00:00.000Z","BTC","Sell",0.00543778,261,47997.528403135104,"Binance","Cryptocurrency",""],["2021-07-04T22:00:00.000Z","BTC","Sell",0.00533832,261,48891.78617992178,"Binance","Cryptocurrency",""],["2021-07-04T22:00:00.000Z","BTC","Sell",0.00550857,261,47380.71768172139,"Binance","Cryptocurrency",""],["2021-07-04T22:00:00.000Z","BTC","Sell",0.00008389000000000313,0,0,"Bitvavo","Cryptocurrency",""],["2021-06-06T22:00:00.000Z","BTC","Sell",0.038276,1116.81,29177.81377364406,"Binance","Cryptocurrency",""],["2021-05-02T22:00:00.000Z","BTC","Sell",0.01032703,498.75,48295.58934175654,"Bitvavo","Cryptocurrency",""],["2021-04-13T22:00:00.000Z","BTC","Sell",0.18413661999999997,9757,52987.83044893515,"Bitvavo","Cryptocurrency",""]],"Buy":[["2021-06-23T22:00:00.000Z","BTC","Buy",0.038276,1000,26126.03197826314,"Binance","Cryptocurrency",""],["2021-04-14T22:00:00.000Z","BTC","Buy",0.18428,9757,52946.60299544172,"Bitvavo","Cryptocurrency",""],["2021-03-22T23:00:00.000Z","BTC","Buy",0.00094112,43.52,46242.77456647399,"Bitvavo","Cryptocurrency",""],["2021-02-21T23:00:00.000Z","BTC","Buy",0.025382,1000,39397.99858167205,"Bitvavo","Cryptocurrency",""],["2021-02-21T23:00:00.000Z","BTC","Buy",0.046151,1770.3,38358.86546337024,"Bitvavo","Cryptocurrency",""],["2021-02-21T23:00:00.000Z","BTC","Buy",0.046339,2003,43224.929325190446,"Bitvavo","Cryptocurrency",""],["2021-02-16T23:00:00.000Z","BTC","Buy",0.048543,2045.36,42135.0143172033,"Bitvavo","Cryptocurrency",""],["2021-02-07T23:00:00.000Z","BTC","Buy",0.0027187,100,36782.28565123036,"Bitvavo","Cryptocurrency",""],["2021-01-23T23:00:00.000Z","BTC","Buy",0.0077802,200,25706.2800442148,"Bitvavo","Cryptocurrency",""],["2021-01-10T23:00:00.000Z","BTC","Buy",0.0019139,50,26124.66691049689,"Bitvavo","Cryptocurrency",""],["2021-01-09T23:00:00.000Z","BTC","Buy",0.0043677,134,30679.7628042219,"Bitvavo","Cryptocurrency",""]]},"BAT":{"Sell":[["2021-07-09T22:00:00.000Z","BAT","Sell",168.5,81.22,0.4820178041543027,"Binance","Cryptocurrency",""]],"Buy":[["2021-05-30T22:00:00.000Z","BAT","Buy",168.5,100,0.5934718100890207,"Binance","Cryptocurrency",""]]},"BNB":{"Sell":[["2021-07-09T22:00:00.000Z","BNB","Sell",0.7359,195.55,265.7290392716402,"Binance","Cryptocurrency",""]],"Buy":[["2021-05-18T22:00:00.000Z","BNB","Buy",0.7359,250,339.7200706617747,"Binance","Cryptocurrency",""]]},"LINK":{"Sell":[["2021-07-09T22:00:00.000Z","LINK","Sell",6.2,94.95,15.314516129032258,"Binance","Cryptocurrency",""]],"Buy":[["2021-07-04T22:00:00.000Z","LINK","Buy",6.2,261,42.096774193548384,"Binance","Cryptocurrency",""]]},"XMR":{"Sell":[["2021-07-09T22:00:00.000Z","XMR","Sell",3.09982,681,219.69017555858085,"Binance","Cryptocurrency",""]],"Buy":[["2021-05-24T22:00:00.000Z","XMR","Buy",1.51782,300,197.65189548167768,"Binance","Cryptocurrency",""],["2021-05-18T22:00:00.000Z","XMR","Buy",1.192,250,209.73154362416108,"Binance","Cryptocurrency",""],["2021-04-19T22:00:00.000Z","XMR","Buy",0.39,100,256.4102564102564,"Binance","Cryptocurrency",""]]},"RUNE":{"Buy":[["2021-07-04T22:00:00.000Z","RUNE","Buy",17.2,261,15.174418604651164,"Binance","Cryptocurrency",""]]},"SOL":{"Buy":[["2021-07-04T22:00:00.000Z","SOL","Buy",7.0007542,257,36.71033043839762,"Binance","Cryptocurrency",""]]},"KSM":{"Buy":[["2021-05-30T22:00:00.000Z","KSM","Buy",0.3869,100,258.46471956577926,"Binance","Cryptocurrency",""]]},"ADA":{"Buy":[["2021-05-18T22:00:00.000Z","ADA","Buy",164.44,250,1.5203113597664801,"Binance","Cryptocurrency",""],["2021-03-19T23:00:00.000Z","ADA","Buy",236,249.5,1.0572033898305084,"Binance","Cryptocurrency",""]]},"TSLA":{"Sell":[["2021-05-16T22:00:00.000Z","TSLA","Sell",1.8606349999999998,864,464.357598346801,"Trading212","Stock",""],["2021-01-18T23:00:00.000Z","TSLA","Sell",0.1449193,100.45,693.144391395763,"Trading212","Stock",""]],"Buy":[["2021-03-04T23:00:00.000Z","TSLA","Buy",0.3166797,150,473.6647154838153,"Trading212","Stock",""],["2021-03-02T23:00:00.000Z","TSLA","Buy",0.3841205,213.44,555.6589663920566,"Trading212","Stock",""],["2021-02-24T23:00:00.000Z","TSLA","Buy",0.3282356,188.45,574.1302893409489,"Trading212","Stock",""],["2021-02-22T23:00:00.000Z","TSLA","Buy",0.2252006,126.5,561.7214163727805,"Trading212","Stock",""],["2021-02-21T23:00:00.000Z","TSLA","Buy",0.2954647,184.99,626.0984814768059,"Trading212","Stock",""],["2021-02-21T23:00:00.000Z","TSLA","Buy",0.1624873,100,615.4327138182492,"Trading212","Stock",""],["2021-01-10T23:00:00.000Z","TSLA","Buy",0.1449193,100,690.03]
 

Produced errors

 10:25:02 AM Info    [TypeError: Cannot read property 'forEach' of undefined]
10:25:02 AM Info    [TypeError: Cannot read property 'forEach' of undefined]
10:25:02 AM Info    [TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator))]
10:25:02 AM Info    [TypeError: Cannot read property 'forEach' of undefined]
10:25:02 AM Info    [TypeError: Cannot read property 'forEach' of undefined]
10:25:02 AM Info    [TypeError: Cannot read property 'forEach' of undefined]
10:25:02 AM Info    [TypeError: Cannot read property 'forEach' of undefined]
10:25:02 AM Info    [TypeError: Cannot read property 'forEach' of undefined]
10:25:02 AM Info    [TypeError: Cannot read property 'forEach' of undefined]
10:25:02 AM Info    [TypeError: Cannot read property 'forEach' of undefined]
10:25:02 AM Info    [TypeError: Cannot read property 'forEach' of undefined]
10:25:02 AM Info    [TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator))]
10:25:02 AM Info    [TypeError: Cannot read property 'forEach' of undefined]
10:25:02 AM Info    [TypeError: Cannot read property 'forEach' of undefined]
10:25:02 AM Info    [TypeError: Cannot read property 'forEach' of undefined]
10:25:02 AM Info    [TypeError: Cannot read property 'forEach' of undefined]
10:25:02 AM Info    [TypeError: Cannot read property 'forEach' of undefined]
10:25:02 AM Info    [TypeError: Cannot read property 'forEach' of undefined]
 

Я надеюсь, что кто-нибудь здесь может помочь мне решить эту проблему.

ПРАВКА1: добавление консоли.вывод журнала tic.Sell

 2:02:36 PM  Info    undefined
2:02:36 PM  Info    [ [ Thu Oct 21 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'MATIC',
    'Sell',
    37.14,
    61.82,
    1.6645126548196014,
    'Binance',
    'Cryptocurrency',
    '' ] ]
2:02:36 PM  Info    undefined
2:02:36 PM  Info    [ [ Wed Oct 20 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'TFUEL',
    'Sell',
    754,
    182,
    0.2413793103448276,
    'Binance',
    'Cryptocurrency',
    '' ] ]
2:02:36 PM  Info    [ [ Wed Oct 20 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'THETA',
    'Sell',
    81.4,
    397.73,
    4.886117936117936,
    'Binance',
    'Cryptocurrency',
    '' ] ]
2:02:36 PM  Info    undefined
2:02:36 PM  Info    undefined
2:02:36 PM  Info    undefined
2:02:36 PM  Info    undefined
2:02:36 PM  Info    [ [ Sun Aug 08 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'safemars',
    'Sell',
    206130076,
    16,
    7.762089021885385e-8,
    'Binance',
    'Cryptocurrency',
    '' ] ]
2:02:36 PM  Info    [ [ Sun Aug 08 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'safemoon',
    'Sell',
    55800000,
    90,
    0.0000016129032258064516,
    'Binance',
    'Cryptocurrency',
    '' ] ]
2:02:36 PM  Info    [ [ Tue Jul 13 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'FRA:C36',
    'Sell',
    358,
    343.68,
    0.96,
    'Bitvavo',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Sun Jul 11 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'BTC',
    'Sell',
    0.038237,
    1116.81,
    29207.57381593744,
    'Binance',
    'Cryptocurrency',
    '' ],
  [ Sun Jul 04 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'BTC',
    'Sell',
    0.00537222,
    257,
    47838.69610700977,
    'Binance',
    'Cryptocurrency',
    '' ],
  [ Sun Jul 04 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'BTC',
    'Sell',
    0.00543778,
    261,
    47997.528403135104,
    'Binance',
    'Cryptocurrency',
    '' ],
  [ Sun Jul 04 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'BTC',
    'Sell',
    0.00533832,
    261,
    48891.78617992178,
    'Binance',
    'Cryptocurrency',
    '' ],
  [ Sun Jul 04 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'BTC',
    'Sell',
    0.00550857,
    261,
    47380.71768172139,
    'Binance',
    'Cryptocurrency',
    '' ],
  [ Sun Jul 04 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'BTC',
    'Sell',
    0.00008389000000000313,
    0,
    0,
    'Bitvavo',
    'Cryptocurrency',
    '' ],
  [ Sun Jun 06 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'BTC',
    'Sell',
    0.038276,
    1116.81,
    29177.81377364406,
    'Binance',
    'Cryptocurrency',
    '' ],
  [ Sun May 02 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'BTC',
    'Sell',
    0.01032703,
    498.75,
    48295.58934175654,
    'Bitvavo',
    'Cryptocurrency',
    '' ],
  [ Tue Apr 13 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'BTC',
    'Sell',
    0.18413661999999997,
    9757,
    52987.83044893515,
    'Bitvavo',
    'Cryptocurrency',
    '' ] ]
2:02:36 PM  Info    [ [ Fri Jul 09 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'BAT',
    'Sell',
    168.5,
    81.22,
    0.4820178041543027,
    'Binance',
    'Cryptocurrency',
    '' ] ]
2:02:36 PM  Info    [ [ Fri Jul 09 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'BNB',
    'Sell',
    0.7359,
    195.55,
    265.7290392716402,
    'Binance',
    'Cryptocurrency',
    '' ] ]
2:02:36 PM  Info    [ [ Fri Jul 09 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'LINK',
    'Sell',
    6.2,
    94.95,
    15.314516129032258,
    'Binance',
    'Cryptocurrency',
    '' ] ]
2:02:36 PM  Info    [ [ Fri Jul 09 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'XMR',
    'Sell',
    3.09982,
    681,
    219.69017555858085,
    'Binance',
    'Cryptocurrency',
    '' ] ]
2:02:36 PM  Info    undefined
2:02:36 PM  Info    undefined
2:02:36 PM  Info    undefined
2:02:36 PM  Info    undefined
2:02:36 PM  Info    [ [ Sun May 16 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'TSLA',
    'Sell',
    1.8606349999999998,
    864,
    464.357598346801,
    'Trading212',
    'Stock',
    '' ],
  [ Mon Jan 18 2021 18:00:00 GMT-0500 (Eastern Standard Time),
    'TSLA',
    'Sell',
    0.1449193,
    100.45,
    693.144391395763,
    'Trading212',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Mon Apr 12 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'MSTR',
    'Sell',
    0.61234957,
    413.5,
    675.2678866092778,
    'Trading212',
    'Stock',
    '' ] ]
2:02:36 PM  Info    undefined
2:02:36 PM  Info    [ [ Sun Apr 11 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'ACTC',
    'Sell',
    8,
    109.91,
    13.73875,
    'DeGiro',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Sun Apr 11 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'CTRM',
    'Sell',
    110,
    43.46,
    0.3950909090909091,
    'DeGiro',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Sun Apr 11 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'NVCN',
    'Sell',
    74,
    61.85,
    0.8358108108108109,
    'DeGiro',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Sun Apr 11 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'SFT',
    'Sell',
    13,
    92.2,
    7.092307692307693,
    'Trading212',
    'Stock',
    '' ] ]
2:02:36 PM  Info    undefined
2:02:36 PM  Info    [ [ Sun Apr 11 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'SNGX',
    'Sell',
    65,
    80.2,
    1.2338461538461538,
    'Trading212',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Sun Mar 28 2021 18:00:00 GMT-0400 (Eastern Daylight Time),
    'LMND',
    'Sell',
    1.6704908,
    121.86,
    72.94862084843568,
    'Trading212',
    'Stock',
    '' ] ]
2:02:36 PM  Info    undefined
2:02:36 PM  Info    [ [ Thu Mar 25 2021 19:00:00 GMT-0400 (Eastern Daylight Time),
    'AZRX',
    'Sell',
    100,
    112.35,
    1.1235,
    'Trading212',
    'Stock',
    '' ],
  [ Thu Mar 25 2021 19:00:00 GMT-0400 (Eastern Daylight Time),
    'AZRX',
    'Sell',
    59,
    66.14,
    1.1210169491525424,
    'Trading212',
    'Stock',
    '' ] ]
2:02:36 PM  Info    undefined
2:02:36 PM  Info    [ [ Thu Mar 18 2021 19:00:00 GMT-0400 (Eastern Daylight Time),
    'FB',
    'Sell',
    1,
    244.81,
    244.81,
    'DeGiro',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Mon Mar 15 2021 19:00:00 GMT-0400 (Eastern Daylight Time),
    'ARB',
    'Sell',
    173.1368712,
    482.54,
    2.7870435491616994,
    'Trading212',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Wed Mar 10 2021 18:00:00 GMT-0500 (Eastern Standard Time),
    'GNUS',
    'Sell',
    72,
    134.94,
    1.8741666666666665,
    'Trading212',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Mon Mar 08 2021 18:00:00 GMT-0500 (Eastern Standard Time),
    'ABNB',
    'Sell',
    0.4281417,
    66.98,
    156.44353259680148,
    'Trading212',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Mon Mar 08 2021 18:00:00 GMT-0500 (Eastern Standard Time),
    'EQQQ',
    'Sell',
    1,
    253.87,
    253.87,
    'DeGiro',
    'Stock',
    '' ] ]
2:02:36 PM  Info    undefined
2:02:36 PM  Info    undefined
2:02:36 PM  Info    [ [ Mon Mar 08 2021 18:00:00 GMT-0500 (Eastern Standard Time),
    'QDVA',
    'Sell',
    6,
    48.93,
    8.155,
    'DeGiro',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Mon Mar 08 2021 18:00:00 GMT-0500 (Eastern Standard Time),
    'SPY',
    'Sell',
    5,
    273.66,
    54.732000000000006,
    'DeGiro',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Mon Mar 08 2021 18:00:00 GMT-0500 (Eastern Standard Time),
    'SXLV',
    'Sell',
    7,
    188.23,
    26.889999999999997,
    'DeGiro',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Sun Mar 07 2021 18:00:00 GMT-0500 (Eastern Standard Time),
    'BABA',
    'Sell',
    1.7718482,
    342.51,
    193.3066275090609,
    'Trading212',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Sun Mar 07 2021 18:00:00 GMT-0500 (Eastern Standard Time),
    'NIO',
    'Sell',
    1.888702,
    61.79,
    32.71558986012616,
    'Trading212',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Wed Feb 24 2021 18:00:00 GMT-0500 (Eastern Standard Time),
    'IQQH',
    'Sell',
    5,
    60.09,
    12.018,
    'DeGiro',
    'Stock',
    '' ],
  [ Wed Feb 24 2021 18:00:00 GMT-0500 (Eastern Standard Time),
    'IQQH',
    'Sell',
    2,
    25.63,
    12.815,
    'DeGiro',
    'Stock',
    '' ],
  [ Wed Feb 24 2021 18:00:00 GMT-0500 (Eastern Standard Time),
    'IQQH',
    'Sell',
    8,
    102.46,
    12.8075,
    'DeGiro',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Mon Feb 22 2021 18:00:00 GMT-0500 (Eastern Standard Time),
    'ESPO',
    'Sell',
    5,
    191.18,
    38.236000000000004,
    'Trading212',
    'Stock',
    '' ],
  [ Mon Feb 22 2021 18:00:00 GMT-0500 (Eastern Standard Time),
    'ESPO',
    'Sell',
    4.994859,
    186.59,
    37.35640986061869,
    'Trading212',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Sun Feb 21 2021 18:00:00 GMT-0500 (Eastern Standard Time),
    'AMZN',
    'Sell',
    0.05568394,
    147.39,
    2646.903218414501,
    'Trading212',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Sun Feb 21 2021 18:00:00 GMT-0500 (Eastern Standard Time),
    'COUP',
    'Sell',
    0.5194278,
    155.58,
    299.521896979715,
    'Trading212',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Sun Feb 21 2021 18:00:00 GMT-0500 (Eastern Standard Time),
    'CRWD',
    'Sell',
    0.5152084,
    99.28,
    192.69872152705585,
    'Trading212',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Sun Feb 21 2021 18:00:00 GMT-0500 (Eastern Standard Time),
    'FVRR',
    'Sell',
    0.5002109,
    122.67,
    245.2365592193213,
    'Trading212',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Sun Feb 21 2021 18:00:00 GMT-0500 (Eastern Standard Time),
    'TTWO',
    'Sell',
    1,
    160.04,
    160.04,
    'Trading212',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Wed Jan 27 2021 18:00:00 GMT-0500 (Eastern Standard Time),
    'NAKD',
    'Sell',
    55.421,
    68.03,
    1.2275130365745837,
    'Trading212',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Mon Dec 07 2020 18:00:00 GMT-0500 (Eastern Standard Time),
    'OTGLY',
    'Sell',
    6.180493,
    91.07,
    14.735070487095445,
    'Trading212',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Sun Nov 29 2020 18:00:00 GMT-0500 (Eastern Standard Time),
    'WDI',
    'Sell',
    23,
    8.21,
    0.35695652173913045,
    'DeGiro',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Tue Sep 08 2020 18:00:00 GMT-0400 (Eastern Daylight Time),
    'ADP',
    'Sell',
    1,
    114.63,
    114.63,
    'DeGiro',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Tue Sep 08 2020 18:00:00 GMT-0400 (Eastern Daylight Time),
    'AQN',
    'Sell',
    3,
    35.2,
    11.733333333333334,
    'DeGiro',
    'Stock',
    '' ] ]
2:02:36 PM  Info    [ [ Tue Sep 08 2020 18:00:00 GMT-0400 (Eastern Daylight Time),
    'MGRC',
    'Sell',
    1,
    53.1,
    53.1,
    'DeGiro',
    'Stock',
    '' ] ]
 

Комментарии:

1. Вы получаете ошибку в этой Object.keys(securityObject).forEach строке или в этой другой tic.Sell.forEach ?

2. @ale13 ошибка в tic.Sell.forEach

3. И как это tic.Sell выглядит?

4. Я отредактирую вопрос и добавлю выходные данные. Интересно, что ТЕТА, похоже, присутствует в tic.Sell

5. @ale13 кто-то предположил, что это может быть проблема с десятичным числом. Я добавил totalBuy.toFixed(8); total.toFixed(8); quanity.toFixed(8); remainder.toFixed(8) , и, похоже, это устранило часть проблемы, например, MSTR теперь присутствует на вкладке «Отчет». Однако THETA по-прежнему отсутствует, и я все еще получаю те же ошибки.

Ответ №1:

Проблема существует внутри цикла do / while. Remainder становится невероятно маленьким (для MSTR остаток = 5,551115123125783e-17 вместо 0), но не совсем нулевым, поэтому цикл выполняется снова и выдается ошибка. MSTR и THETA , таким образом, никогда не вводятся objects .

Исправлена проблема путем изменения while (remainder > 1e-9) . Возможно, это не лучшее решение, но оно работает.