java - 给定多只股票最大化股票利润

标签 java algorithm stock maximum-profit-problem

<分区>

我根据情况研究了股票利润最大化算法。

我很清楚在您只有一只股票并且可以一次或多次买入/卖出的情况下的策略。您分别使用最大差和最大子数组。

但是当给定两只股票及其各自的波动价格时会发生什么?您不能同时持有两只股票,卖出一只股票再买入另一只股票会产生交易成本。

示例:在给定股票 A 和 B 的情况下最大化返回。股票价格随时间波动。因此,如果给定一个数组,每个数组中 A 和 B 的索引表示特定时间的股票价格。考虑到你不能同时持有两只股票,而且买入 A 和卖出 B 会产生交易成本,那么最好的策略是什么?

最佳答案

让:

dp[i, j] = maximum worth obtainable at period i if we currently hold 
           stock j

假设 t[i] = 第 i 期的交易成本

我们有:

dp[0, A] = A[0] # buy the best at time 0
dp[0, B] = B[0] # you said only buying A and selling B induces a cost,
                # you didn't say buying B induces a cost. If it does,
                # just subtract t accordingly below
dp[i, A] = max(
             dp[i - 1, B] + A[i] - t[i], # sell B, buy A
             A[i]                        # buy A alone
           )                             # we buy A no matter what

dp[i, B] = max(
             dp[i - 1, A] + B[i],        # sell A, buy B, - t[i] if needed
             B[i]                        # buy B alone
           )

答案是:

max{dp[i, A], dp[i, B]}
 i

关于java - 给定多只股票最大化股票利润,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41684159/

相关文章:

java - Spring事务管理

algorithm - 删除导致无向图中循环的边

使用文本搜索查找所有可能结果的算法

php - Mysql触发返回不良股票值(value)

php - 允许在 WooCommerce 订单处于待处理状态时减少库存

java - Libgdx 渲染网格问题

java - 如何在 Java 中将数字文件读入数组列表

java - Android:Selector.select() 立即返回 0

python - 平滑列表中的激进值

php - 当所有变体都缺货时,显示在 WooCommerce 可变产品上售罄