关注这个问题
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小时分钟)
用户案例“购买示例”:
>用户发送订单以18,000美元购买1000个此选项
>系统将订单存储在数据库中
> CRON任务验证每分钟,如果价格< =买单,最后一分钟
>当此选项的价格< =此订单时,用户获得此股票期权.
用户案例“销售示例”:
>用户发送订单以22,000美元的价格出售1000个此选项
>系统将订单存储在数据库中
> 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
}
也许我有点疯狂,认为可以自动化,但我相信,任何帮助将不胜感激.
最佳答案 只是想扩展我的评论.这是一个基本情景;假设我们从数据库/系统中的未完成订单开始.
>用户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美元.