Моделирование фондовой биржи
Генерация случайных чисел
Основой эмулятора является метод Run (Запуск) класса Engine (Машинный модуль). Основная работа метода Run (Запуск) состоит в присвоении данных, полученных в результате генерации случайных чисел. Для генерации случайных чисел используется класс System::Random (Система::Случайный), рассмотренный нами в главе 3 "Программирование на управляемом C++".
double r = pRangen › NextDouble(); if (r < tradeProbti]) { int delta = // дельта (int) (price[i] * volatility[i]); // цена * изменение if (pRangen › NextDouble() <.5) { delta = -delta; // дельта = -дельта } price[i] += delta; // цена + = дельта int volume = pRangen › Next( minVolume, maxVolume) * 100; pTradeOp( tick, stocks[i], price [i], volume); // шаг, акции, //цена, объем
Использование делегатов
Указатели на экземпляры делегатов объявляются в классе Engine (Машинный модуль):
TickCallback *pTickOp; TradeCallback *pTradeOp;
Указатели на делегаты инициализируются в конструкторе класса Engine (Машинный модуль):
Engine(TickCallback *pTickOp, TradeCallback *pTradeOp) { this › pTickOp = pTickOp; this › pTradeOp = pTradeOp; }
Метод, связанный с экземпляром делегата, можно вызвать, используя указатель на делегат:
pTickOp(tick); pTradeOp( tick, stocks[i], price [i], volume); // шаг, акции, цена, объем