d9e5a92d

Программирование симулятора

Вне зависимости от устройства (интегрированный или основанный на компонентах симулятор) в него должна быть введена логика системы, используемой пользователем. Язык программирования может быть или многоцелевым языком программирования, как C++ или FORTRAN, или собственным языком скриптов программы. Без содействия формального языка невозможно выразить торговые правила системы с достаточной для симуляции точностью. Необходимость в программировании того или иного вида не следует рассматривать как неизбежное зло — пользователь может приобрести много опыта, поскольку программирование заставляет выражать свои идеи упорядочение и целенаправленно.
В качестве примера программирования логики торговой системы рассмотрим TradeStation, популярный интегрированный пакет от Omega Research, содержащий интерпретатор для собственного языка программирования, называемого Easy Language, обеспечивающий проведение тестов на исторических данных. Easy Language — собственный язык фирмы, основанный на Pascal (многоцелевом языке программирования). Как выглядит простая торговая система, запрограммированная на Easy Language? В качестве примера предлагаем код для системы простого пересечения скользящей средней:

{Простая система пересечения скользящей средней в Easy Language}
Inputs: Len(4); {параметр длины скользящей средней)
If {Close > Average{Close, Len)) And
{Close[1] <= Average(Close, Len)[1]} Then
Buy ("A") 1 Contract At Market; {покупает на открытии следующего дня}
If (Close <= Average(Close, Len)) And
(Close[1] > Average{Close, Len}[1]) Then
Sell ("B") 1 Contract At Market; {продает на открытии следующего дня}


Эта система открывает длинную позицию (один контракт) при открытии на следующий день, когда цена закрытия пересекает скользящую среднюю вверх, и короткую позицию (один контракт), когда цена закрытия пересекает скользящую среднюю вниз. Каждому приказу присваивается имя или идентификатор: А — на покупку, В — на продажу. Длина скользящей средней (Len) может задаваться пользователем или оптимизироваться программой.
Ниже та же система, запрограммированная на языке C++ с помощью набора инструментов C- Trader от Scientific Consultant Services, в состав которого входит торговый симулятор C++:

//простая система пересечения скользящих средних в C++
len = parms[l]; // параметр длины скользящей средней
if (cls [cb] > Average(cls, len, cb} &&
cls [cb- 1] <= Average(cls, len, cb- 1))
ts.buyopen ('A', 1); // покупает на открытии следующего дня
if (cls[cb] <= Average(cls, len, cb) &&
cls [cb- 1] > Average(cls, len, cb- 1))
ts.sellopen ('B', 1); // продает на открытии следующего дня

За исключением синтаксиса и обозначений, различия в применении C++ и EasyLanguage невелики. Наиболее важны сноски на текущий бар (cb) и на данный симулируемый торговый счет или ссылку на класс симулятора (ts) в версии на C++. Так, на C++ можно использовать любое количество симулируемых счетов; это важно при работе с портфелями и метасистемами (системами, управляющими счетами другой системы) и при разработке моделей, включающих скрытую адаптацию с движением вперед.

Содержание раздела