我假设您希望以每只股票的 0 股开始和结束,并且您拥有无限的资本。
问题可以归结为以最低价格买入并以最高价格卖出,附带条件是必须先购买股票再卖出。
我会按时间顺序处理数据并添加购买,只要将来有更高价格的可用数量(对于每次购买,您都需要使用可用的最高未来价格勾选与出售相同数量的股票)。
只要未来有盈利的时间出售,就继续及时增加购买。如果有剩余数量可用数量但未来没有可用的盈利销售点,您需要回头看看当前价格是否低于任何已经购买的价格。在这种情况下,将过去最昂贵的股票换成更便宜的股票,但前提是有未来的卖点可用。还要检查报废的采购订单是否有任何有利可图的卖点。
示例:
Day Price Volume
1 100 1000
2 80 1000
3 110 1000
4 70 1000
5 120 2000
第 1 天:
以每股 100 的价格购买 1000。第 4 天以 120 卖出 1000。
第 2 天:
以每股 80 的价格购买 1000。第 4 天以 120 卖出 1000。
第 3 天:
没有可用的有利可图的卖出机会,因为所有价格高于 70 的未来股票都已被预订!
回头看看你有没有在110以上的价格购买过。
你还没有,所以没有购买。
第 4 天:
没有可用的盈利机会,因为价格高于 70 的所有未来数量都已被预订!
回头看看有没有70以上的价格买过。
将第 1 天购买 1000 股替换为第 70 天第 4 天购买 1000 股。
重新检查第一天的股票并检查是否有任何其他有利可图的销售(您只需要考虑到第 4 天的时间线)。
有,所以第 1 天以每股 100 的价格购买 1000,并在第 3 天以每股 110 的价格出售。
最终的订单是:
Day Price Volume Order type shares owned
1 100 1000 Buy 1000
2 80 1000 Buy 2000
3 110 1000 Sell 1000
4 70 1000 Buy 2000
5 120 2000 Sell 0
Total profit: 10000