关注此问题Generate a fictitious stock option price variation
我希望模拟价格变化,而用户会给出买入或卖出的订单,就像真实的股票交易所一样。 (我提出了一个用户案例来帮助您理解。)
初始状态“股票期权示例”:
公司X,股票期权的价格为20,000美元
使用此PHP脚本,CRON任务每秒都会产生价格变化:
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。
图片结果(1小时分钟)
用户案例“购买示例”:
用户案例“销售示例”:
我的问题
它运作良好,但它不是证券交易所市场的真正变体。
我的问题
如何根据订单的价格和数量进行价格变动?
就像“供求法则”一样。
例如(编辑关于彼得回答):
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
}
也许我有点疯狂地认为可以自动化,但我相信,任何帮助都会受到高度赞赏。
答案 0 :(得分:2)
只想更多地扩展我的评论。这是一个基本情景;假设我们从数据库/系统中的未完成订单开始。
在第1步之后,您将在系统中有一个未履行的订单,因为没有要打开的订单。
在步骤2之后,用户B提交的订单可以由系统中的未结订单履行。 (为简单起见,我们假设用户A的订单可以被分解,即不是全有或无订单)
用户B的购买订单可以实现的原因有以下两个原因:
用户A不想以低于10美元的价格出售,而用户B不想以超过12美元的价格购买。因此,在这种情况下,有一系列合适的交易价格,即10-12美元之间的任何价格都是合适的。
问题在于找到合适的交易价格。怎么判断出来?选择范围的中间?这只是一种解决方案。 (在流动性很大的市场中,你可能没有同样的问题,因为会有很多不同价格的开放订单,有些是市场价格。)
为了举例,我们假设您选择了11美元的交易价格,即合适范围的中间值。用户B的订单现在已经完成,并且由于用户A的订单仅部分履行,系统中将剩下一个未结订单:用户A以10美元的价格出售剩余的10个单位。最后的交易价格将更新为11美元。