如何对每对之间的差异求和,然后使用 nedb 对每对的结果求和
Posted
技术标签:
【中文标题】如何对每对之间的差异求和,然后使用 nedb 对每对的结果求和【英文标题】:How to sum the differences between each pair, then sum each pair's results using nedb 【发布时间】:2021-01-04 12:00:51 【问题描述】:我有一个 nedb 数据库 trades.json
,我在其中编写虚构的股票交易:
"buySell":"BUY","currentPrice":431.55,"_id":"GyTaUKVOCa9x5APS",
"buySell":"SELL","currentPrice":431.77,"_id":"Re9VhGrW9ZoiOKFe",
"buySell":"BUY","currentPrice":431.65,"_id":"TJrn63bIV8sKBFYh",
"buySell":"SELL","currentPrice":431.7539,"_id":"qrsz2l3UVKpQEks8"
我试图找出 buySell
对“买入”和“卖出”之间的差异 currentPrice
,然后将这两个结果加在一起,得出我的整体利润。
我有这段代码,它可以工作,但我不确定结果是否有效。我认为这给了我整体的差异,而不是向我展示每笔交易的“利润”。
const Datastore = require('nedb')
const trades = new Datastore( filename: 'trades.json' )
trades.loadDatabase(function (err)
if(err) return console.error(err)
)
let sum = []
trades.find().exec(function (err, docs)
if(err) return console.log(err)
docs.forEach(element =>
sum.push(element.currentPrice)
);
let pandle = diff(sum)
pandle = pandle.reduce((a, b) => a + b, 0)
console.log(pandle)
)
function diff(A)
return A.slice(1).map(function(n, i) return n - A[i]; );
我相信我的答案在于一个 foreach 循环,该循环构建了一个由 bySell
“BUY”和“SELL”对组成的数组,以及另一个跟踪这些对总和的数组,但我很难得到它工作。
在上面的示例中,我相信我应该得到:0.3239
。
我将不胜感激任何帮助或指导!
【问题讨论】:
请添加想要的结果。 【参考方案1】:您可以从总和中减去 'BUY'
值并添加 'SELL'
值。
const
fns = BUY: v => -v, SELL: v => v ,
array = [ buySell: "BUY", currentPrice: 431.55, _id: "GyTaUKVOCa9x5APS" , buySell: "SELL", currentPrice: 431.77, _id: "Re9VhGrW9ZoiOKFe" , buySell: "BUY", currentPrice: 431.65, _id: "TJrn63bIV8sKBFYh" , buySell: "SELL", currentPrice: 431.7539, _id: "qrsz2l3UVKpQEks8" ],
profit = array.reduce((p, buySell, currentPrice ) => p + fns[buySell](currentPrice), 0);
console.log(profit);
【讨论】:
以上是关于如何对每对之间的差异求和,然后使用 nedb 对每对的结果求和的主要内容,如果未能解决你的问题,请参考以下文章