给定下表中的股票交易:
TID |DATE |TIME |SYMBOL|SIDE|QUANTITY |PRICE |OPENPOSITION
339791|2014-11-14|12:45:25|ABEV3 |Buy | -900.00|15.920000| -900
339780|2014-11-21|10:54:37|ABEV3 |Sell| 900.00|16.650000| 0
339775|2014-11-24|14:52:59|ABEV3 |Buy | -1500.00|16.950000| -1500
339725|2017-01-20|14:54:26|ABEV3 |Sell| 1500.00|17.280000| 0
339662|2017-02-03|10:43:31|ABEV3 |Buy | -5900.00|17.020000| -5900
339661|2017-02-03|11:44:57|ABEV3 |Buy | -5900.00|17.229492| -11800
339655|2017-02-03|12:37:08|ABEV3 |Sell| 10800.00|17.250000| -1000
339528|2017-02-15|11:04:07|ABEV3 |Buy |-15000.00|17.580000| -16000
339527|2017-02-15|12:07:30|ABEV3 |Sell| 2300.00|17.610000| -13700
339524|2017-02-15|12:10:36|ABEV3 |Sell| 100.00|17.620000| -13600
339522|2017-02-15|12:44:23|ABEV3 |Sell| 14900.00|17.640000| 1300
339518|2017-02-15|12:49:52|ABEV3 |Buy | -2300.00|17.670000| -1000
339474|2017-02-17|11:45:33|ABEV3 |Buy |-20000.00|17.860000| -21000
339472|2017-02-17|13:36:16|ABEV3 |Sell| 20000.00|17.960000| -1000如何生成mysql查询来计算交易的平均加权价格,无论交易是买入还是卖出。
在上面的例子中,交易员开始买入900股,卖出900股,头寸余额为0(见第二行)。他用1500股做了同样的事情,但他买了几次又卖了几次,还剩下1000股。手工计算时,采购的平均加权价格为
5900*17.23+5900*17.02+2300*17.67+15000*17.58+20000*17.86/49100 =17.59美元
有没有办法构建一个查询或php函数,只考虑仍在进行的交易的价格?
发布于 2017-02-23 02:29:12
是。
如果该信息位于数据库中,则需要编写sql select语句,如下所示:
SELECT price,quantity FROM stock_transactions WHERE ___但是你所说的过去关闭是什么意思?如果它们在当前日期之前,它们会关闭吗?(今天)?
如果是这样的话,应该是:
SELECT price,quantity FROM stock_transactions WHERE CURDATE() >= '2017-02-22'才能拿到那些记录。
然后运行一个结果集,在while循环中运行那些乘以您的价格*数量的结果集,将其(+=而不是assignment)添加到一个变量(该变量在该循环的外部声明)。然后再重复一遍。
发布于 2017-02-23 02:48:13
https://stackoverflow.com/questions/42399390
复制相似问题