Торговые симуляторы могут сильно различаться по таким показателям, как мощность, емкость и скорость. Скорость важна при выполнении многих тестов или проведении сложных оптимизаций, например генетических. Скорость также важна при разработке систем для портфельной торговли или при использовании длинных внутридневных серий данных с тысячами сделок и сотнями тысяч числовых данных. В некоторых случаях от скорости симулятора зависит сама возможность проведения анализа: ряд задач требует поистине огромного объема расчетов, недоступного для «медленных» программ. Емкость симуляторов определяет ограничения объема задач (количество баров данных, которое может загружаться или объем кода самой системы). Мощность симулятора — показатель, определяющий, как сложные тесты и задания могут выполняться на базах данных цен товаров или на целых портфелях, что важно для серьезной профессиональной торговли. Достаточно мощный симулятор требуется, например, для использования многих торговых моделей, приведенных в этой книге.
Скорость
Наиболее важный фактор, влияющий на скорость работы системы, — природа используемого языка: скриптовый или программный, т. е. определение, является ли программа скриптом или используется в интерпретаторе. Современные компиляторы языков общего назначения, таких как C++, FORTRAN и Pascal/Delphi, переводят написанную пользователем программу в высокоэффективный машинный код, пригодный для прямого исполнения процессором; это делает пакеты с использованием таких
языков и компиляторов весьма быстрыми. С другой стороны, собственные интерпретируемые языки, такие как Visual Basic for Applications и Easy Language, должны переводиться и подаваться в процессор построчно при исполнении сложного, насыщенного циклами исходного кода. Каков же возможный выигрыш в скорости для компилируемого языка по сравнению с интерпретируемым? Мы слышали о системах, которые после перевода с собственного языка на C++ стали работать в 50 раз быстрее!
|
Емкость
Если скорость в основном зависит от работы с языком (интерпретируемым или компилируемым), то емкость главным образом от используемого 16- или 32-битного программного обеспечения. Старые 16-битные программы часто зависят от предела в 64 кбайт, т. е. практически для тестирования системы может быть загружено не более 15000 баров данных (около 4 дней тиковых или 7 недель 5-минутных данных S&P 500). Кроме того, если у системы код большого объема, будьте готовы получить сообщение, что программа с ней не может справиться. Современные продукты, написанные на FORTRAN или C++, работают с соответствующими компиляторами,
что позволяет, например, загрузить для тестирования всю историю тиков
S&P 500 с появления индекса в 1983 г., если, конечно, у компьютера достаточно памяти. Кроме того, практически нет ограничений на количество
сделок, принимаемых системой, или на сложность и размер самой системы. Все современные компиляторы для FORTRAN, C+ +, Pascal/Delphi — полностью 32-битные программы, работающие под 32-битными операционными системами, такими как Windows 95, Windows NT или LINUX/UNIX. Любой симулятор, работающий на основе таких компиляторов, способен работать с огромными объемами данных без труда. Поскольку
большинство программных пакетов постоянно совершенствуется, проблема емкости становится все менее и менее принципиальной.
Мощность
Различия в мощности симуляторов главным образом зависят от языка программирования. Для начала рассмотрим язык, но не в аспекте скорости компилируемых и интерпретируемых языков, а в аспекте его возможностей. Можно ли изящно и обстоятельно запрограммировать самую сложную торговую идею? Как правило, примитивные языки не дают всех возможностей, необходимых для кодирования наиболее сложных торговых стратегий. К сожалению, наиболее мощные языки сложнее всего изучать. Но если человеку удалось овладеть таким языком, как C++, возможным становится практически все. Ваш текстовый процессор, программа
работы с таблицами, броузер и сама операционная система, скорее всего,
были исходно написаны на C++ или его предшественнике — Си. Такие
языки, как C++ и Object Pascal (основа Borland Delphi), расширяемы и
могут легко быть приведены в соответствие с требованиями разработки
торговых систем с помощью использования библиотек и дополнительных
компонентов. Языки Visual Basic и Easy Language, хотя и не обладают мощностью многоцелевых объектно-ориентированных языков вроде C++ и
Object Pascal, более легки в изучении и имеют большинство необходимых возможностей. Гораздо слабее и не вполне достаточны для разработчика продвинутых систем макроязыки, встроенные в ряд популярных программ построения графиков, например MetaStock. Как правило, чем мощнее используемый язык, тем мощнее симулятор.
Вопросы оформления также влияют на мощность симулятора, особенно важна модульность и расширяемость. Симуляторы, использующие C++ или Delphi (Object Pascal) как основной язык, чрезвычайно расширяемы и модульны, поскольку таковы сами языки, спроектированные «снизу вверх». Библиотеки классов позволяют определять новые типы данных и операторов. Компоненты могут обеспечивать функции в готовых блоках, например управление базами данных или построение графиков. Даже
«старинные» библиотеки, такие как Numerical Algorithms Group Library,
International Mathematics and Statistics Library и Numerical Recipes Library,
могут обеспечить самые разнообразные потребности. Модули, называемые User Functions могут быть написаны на Easy Language, а функции, написанные на других языках (включая C++), могут быть вызваны, если они записаны в виде DLL (динамической библиотеки ссылок). Макроязыки, с другой стороны, не столь гибки, что сильно лимитирует их эффективность для разработки продвинутых систем. С нашей точки зрения, возможность использования модулей, написанных на другом языке, абсолютно необходима: у разных языков разные «акценты», и даже при использовании мощного языка вроде C++ имеет порой смысл обратиться к модулям, созданным на другом языке, например таком, как Prolog (язык, разработанный для написания экспертных систем).
Еще одно важное свойство симуляторов, не связанное с языками программирования, — способность симулятора работать не только с индивидуальными финансовыми инструментами, но и с портфелями. Многие продукты не имеют возможности выполнять оптимизацию целых портфелей, хотя порой это достижимо при помощи дополнительных модулей. С другой стороны, хорошо организованный симулятор, как правило, позволяет моделировать торговлю портфелем различных финансовых инструментов.
Далее
Вернуться к оглавлению
|