在回答此问题生成虚构的股票期权价格变化
我希望模拟价格变化,就像真正的股票交易一样,在用户下单买入或卖出时。(这里有一个用户案例帮助您理解。)
初始状态“股票期权示例”:
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_up > $max_down或$max_up < max_down,在这些情况下,$max_up = $max_down。如图所示(每小时一次)。
用户案例“购买示例”:
- 用户发送一个订单以购买1000份该期权,价格为18,000美元。 - 系统将订单存储在数据库中。 - CRON任务每分钟验证一次,如果该期权的价格小于或等于上一分钟的购买订单,则执行以下操作。 - 当该期权的价格小于或等于该订单时,用户获得该股票期权。
用户案例“出售示例”:
- 用户发送一个订单以卖出1000份该期权,价格为22,000美元。 - 系统将订单存储在数据库中。 - CRON任务每分钟验证一次,如果该期权的价格大于或等于上一分钟的出售订单,则执行以下操作。 - 当该期权的价格大于或等于该订单时,用户出售该股票期权。
我的问题是:如何通过订单的价格和数量来产生价格波动?类似于“供需法则”。例如(关于彼得的回答的编辑)。
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
}
也许我有点疯狂,认为自动化可能是可能的,但我相信它,非常感谢您的帮助。
buyOrder()
和sellOrder()
函数都接受一个价格,这意味着它们实际上是限价单。考虑到这一点,逻辑应该是这样的:在收到给定价格的订单时,搜索数据库以寻找相应的“匹配”订单,并以“正确”的价格履行订单,即每个订单限价内的价格。然后执行订单,从数据库中删除条目并更新最后售价。 - Peter