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