Изменение цены опциона на акции по заказам пользователей (покупка / продажа)
После этого вопросаСоздайте фиктивное изменение цены опциона на акции
Я хочу смоделировать, что цена меняется, пока пользователи отдают приказ покупать или продавать, как на реальной бирже. (Я делаю случай пользователя, чтобы помочь вам понять.)
Исходное состояние «Пример опциона на акции» :
Компания X, цена опциона $ 20 000
Задача 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.
Результат на картинке (1 час по минутам)
Случай пользователя "Пример покупки" :
Пользователь отправляет заказ на покупку 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
}
Возможно, я немного сумасшедший, чтобы думать, что это можно автоматизировать, но я верю в это, любая помощь будет принята с благодарностью.