Изменение цены опциона на акции по заказам пользователей (покупка / продажа)

После этого вопросаСоздайте фиктивное изменение цены опциона на акции

Я хочу смоделировать, что цена меняется, пока пользователи отдают приказ покупать или продавать, как на реальной бирже. (Я делаю случай пользователя, чтобы помочь вам понять.)

Исходное состояние «Пример опциона на акции» :

Компания 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       
}

Возможно, я немного сумасшедший, чтобы думать, что это можно автоматизировать, но я верю в это, любая помощь будет принята с благодарностью.

Ответы на вопрос(1)

Ваш ответ на вопрос