处理交易列表的算法[打字稿]

问题描述 投票:0回答:0

我有点卡在如何实现我想要的输出上。

我只是想得到一些关于如何解决这个问题的帮助,因为我是一名初级开发人员,正在尝试构建一个项目,我觉得我在这里把事情复杂化了,但仍然没有得到我想要的东西。

问题: 我有一大堆对象,这里是其中的一大块:

const trades: Trade[] = [
  { side: 'BUY', asset: 'ETH', quantity: 50, price: 1800 },
  { side: 'BUY', asset: 'ETH', quantity: 20, price: 1850 },
  { side: 'SELL', asset: 'BTC', quantity: 25, price: 36800 },
  { side: 'SELL', asset: 'ETH', quantity: 5, price: 1900 },
  { side: 'BUY', asset: 'BTC', quantity: 10, price: 37000 },
  { side: 'SELL', asset: 'ETH', quantity: 40, price: 1700 },
  { side: 'SELL', asset: 'ETH', quantity: 25, price: 1750 },
  { side: 'BUY', asset: 'BTC', quantity: 15, price: 35000 },
  { side: 'BUY', asset: 'BTC', quantity: 5, price: 39000 },
  { side: 'SELL', asset: 'BTC', quantity: 5, price: 38500 },
  { side: 'SELL', asset: 'ETH', quantity: 80, price: 1350 },
];

我想要实现的是:

  1. 如果没有“originTrade”,则将同类中的第一个指定为 origin trade
  2. 在给定资产的 originTrade 中,将所有即将进行的交易添加到 linkedTrades[],如果数量(或余额)高于 0(因此我们知道头寸尚未完全平仓)
  3. 当达到 0 或低于 0 时,然后创建另一个“originTrade”对象并将所有即将到来的交易分配到 linkedTrades[]。

我挣扎的部分:

  • 我已经实现了将交易分配到初始 originTrade 并使用 reduce 将所有单个交易链接到该给定资产的 linkedTrades,但是当给定 originTrade 的 remainingQuantity 达到 0 或以下时,我缺乏如何实现这一点的想法0,然后创建另一个 originTrade 并开始将交易链接到新交易。

我觉得我在这一点上使代码过于复杂。 任何帮助将不胜感激!

整个代码:

https://playcode.io/1450531

我还在最后添加了一个“expectedOutput”JSON 并在控制台记录了它。

谢谢!

javascript typescript algorithm reduce
© www.soinside.com 2019 - 2024. All rights reserved.