【发布时间】:2015-01-03 23:10:25
【问题描述】:
我目前正在尝试实现一个交易引擎。我的代码可以成功创建和填写限价单和市价单。此外,我希望我的引擎能够成功执行“Fill or Kill”订单。不幸的是,我不知道如何为这个“填充或杀死”编写算法。有谁知道是否有一个有效的算法来做到这一点?
以下是一些交易知识较少的人的背景知识。通常要购买的资产按以下方式排序:
Price Amount
$200 3
$300 4
$350 2.5
$400 1.11
如果一个人想购买资产,一个简单的算法从上到下进行,以便为客户提供最佳价值。不必完全购买整排。例如,如果我想要 4 个苹果,代码将以 200 美元的价格卖给我 3 个,以 300 美元的价格卖给我 1 个(从上到下)。
现在,某些卖家可能会提供“Fill or Kill”的选项。这意味着不能部分购买给定行。所以现在让我们说第二行被指定为“Fill or Kill”:
Price Amount
$200 3
$300 4 (Fill or Kill)
$350 2.5
$400 1.11
在这种情况下,如果我想要 4 个苹果,我不能从第二排买少于 4 个。所以现在我有两个明显的选择。我可以以 4*$300=$1200 从第二排买 4 个苹果,或者我可以从第一排买三个苹果,从第三排买一个苹果,价格为 (3*$200)+(1*350)= $850。现在在这种情况下,第二种选择是更好的选择。不幸的是,情况并非总是如此,具体取决于不同的价格和订单数量。
这些表将在 SQL 中实现并按价格排序。我正在尝试在 php 中实现这个算法。任何帮助将不胜感激。
【问题讨论】:
-
您从哪个 API 获得市场数据?