如何对每对之间的差异求和,然后使用 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 对每对的结果求和的主要内容,如果未能解决你的问题,请参考以下文章

差距和岛屿 - 如何按 ID 对每组连续行求和

MPDF 仅对每页的结果求和

python pandas 对每列求和时少了一列

python pandas 对分组并对每列求和时少了一列

将测试集划分为子组,然后分别对每个子组进行预测

ip首部校验和计算