在这个问题之后Generate a fictitious stock option price variation
我希望模拟价格的变化,而用户给出一个购买或出售的命令,就像真正的证券交易所。(我做了一个用户案例来帮助您理解。)
初始状态“股票期权示例”:
X公司,股票期权价格20000美元
cron任务使用以下php脚本每秒更改价格:

function stockVariation($price,$max_up,$max_down)
{
    // Variation calculate, with volatility max (10 to 100)
    $ratio=(mt_rand(0,$max_up)-mt_rand(0,$max_down))/10000;
    // New price
    $price+=$ratio;

    return round($price,5);
}

波动性是由随机新闻造成的,随机时间内,$max_向上>$max_向下或$max_向上结果显示在图片中(1小时/分钟)
用户案例“购买示例”:
用户发送订单以18000美元的价格购买1000个此选项
系统将订单存储在数据库中
cron任务每分钟验证一次,如果价格当此选项的价格用户案例“销售示例”:
用户发送订单以22000美元的价格出售1000个此选项
系统将订单存储在数据库中
cron任务每分钟验证一次,如果价格大于等于一个销售订单,则最后一分钟
当此期权的价格>=到此订单时,用户出售此股票期权。
我的问题
它运作良好,但并不是一个真正的股票交易市场的变化。
我的问题
如何根据订单的价格和数量进行价格变动?
就像“供求规律”。
例如(编辑关于Peter Answer的内容):
function stockOrder($orderPrice,$orderQuantity,$type)//$type= buy or sell
{
    // Record the order in database (ok)
    // Compare with other orders (ok)
    // $orderPrice<=$dbSellPrice or $orderPrice>=$dbBuyPrice
    if checks
       // Buy and sell at the best prices
       // for quantities available holded by users (ok)
       // Record/update the holding of the stock (ok)
       // Update the price of the stock
    end if
}

也许我有点疯狂,认为这是可能的自动化,但我相信,任何帮助都会非常感谢。

最佳答案

只是想再多说一点我的评论。下面是一个基本的场景;假设我们从数据库/系统中的零个未完成订单开始。
用户A提交了一份20支股票x@10美元的限价销售订单。
用户b提交了一份10股x@12美元的限价购买订单。
在步骤1之后,系统中将有一个未完成的订单,因为没有要匹配的未完成订单。
在步骤2之后,提交的订单用户b可以通过系统中的未结订单来完成。(为了简单起见,假设用户A的订单可以被分解,即不是全部或无订单)
用户B的购买订单可以满足的原因有两个:
对于数量大于或等于购买订单数量的未结销售订单。
限购价格大于或等于限售价格,可以约定成交价格。
用户A不想以低于10美元的价格出售,用户B不想以高于12美元的价格购买。因此,在这种情况下,存在一系列合适的交易价格,即10-12美元之间的任何价格都是合适的。
问题是找到合适的交易价格。如何确定?选择中档?这只是一个解决办法。(在一个流动性很大的市场中,你可能不会遇到同样的问题,因为会有很多不同价格的未结订单,有些是市场价格的。)
为了这个例子,假设您选择了11美元的交易价格,即合适范围的中间。用户B的订单现在已经完成了,由于用户A的订单只完成了一部分,系统中还有一个未完成的订单:用户A以10美元的价格出售剩余的10个单元。最后的交易价格将更新为11美元。

10-05 21:09
查看更多