Разделы



Надёжность симуляторов

Разные торговые симуляторы имеют разную степень надежности и досто­верности. Не существует компьютерных программ, полностью гарантиро­ванных от ошибок, даже если ее производитель — знаменитая фирма ми­рового уровня. Кроме того, проблемы возникают при принятии решений в состоянии неустойчивого равновесия — когда в пределах одного и того же бара возникают условия для исполнения различных приказов. Некоторые из этих состояний, например так называемый прыгающий тик (Ruggiero , 1998), могут привести к тому, что система будет казаться лучшей на свете, в то время, как, по сути, она сможет разорить любого. Считается предпоч­тительным, чтобы симулятор выбирал худший вариант развития событий в неоднозначных ситуациях; таким образом, при начале реальной торгов­ли вероятность приятных сюрпризов будет выше, чем неприятных. Все это сводится к тому, что при выборе симулятора следует выбирать хорошо про­веренный, с историей надежной работы и четким описанием того, как про­грамма трактует неоднозначные состояния. Кроме того, обязательно изу­чите недостатки симулятора и способы их обходить.

ВЫБОР ПРАВИЛЬНОГО СИМУЛЯТОРА

Если вы серьезно хотите заниматься разработкой продвинутых торговых систем, торговать сильно диверсифицированными портфелями, прово­дить тестирование индивидуальных контрактов или опционов, вам нуж­но собраться с силами для изучения программирования — вам нужен си-мулятор, созданный с помощью языков программирования общего назна­чения, таких как C ++ или Object Pascal . Такие симуляторы имеют откры­тую архитектуру, позволяющую использовать множество дополнений и библиотек: библиотеки по техническому анализу, например от FM Labs (609-261-7357) и Scientific Consultant Services (516-696-3333); библиотеки общих числовых алгоритмов, например от Numerical Recipes (800-872-7423), Numerical Algorithms Group (NAG ) (44-1865-511-245) и International Mathematics and Statistics Library (IMSL ), в которых хорошо освещена ста­тистика, линейная алгебра, спектральный анализ, дифференциальные уравнения и другие математические приложения. Продвинутые симуля-торы с использованием общих языков программирования также доступ­ны целому миру компонентов и графических средств управления, покры­вающих все аспекты от сложного построения графиков и представления данных до продвинутого управления базами данных, и при этом совмес­тимы с C ++ Builder и Delphi , а также с Visual Basic и Visual C ++.

Если же вам нужно нечто менее трудоемкое, выбирайте полные ин­тегрированные решения. Убедитесь, что язык симулятора позволяет ис­пользовать процедуры, вызываемые по необходимости из DLL . Остерегайтесь продуктов, нацеленных в основном на построение графиков и с ограниченными возможностями программирования, если вы собираетесь разрабатывать, тестировать на исторических данных и использовать в торговле механические торговые системы, значительно отличающиеся от традиционных индикаторов.

СИМУЛЯТОРЫ , ИСПОЛЬЗОВАННЫЕ В ЭТОЙ КНИГЕ

п»ї

Мы предпочитаем использовать симуляторы, основанные на практике современного объектно-ориентированного программирования. Одна из причин такого выбора состоит в том, что объектное ориентирование упро­щает создание нужного количества моделируемых счетов, каким бы оно ни было. Это в особенности полезно при моделировании торговой систе­мы, управляющей целым портфелем товаров или акций, как это сделано в большинстве тестов в данной книге. Объектно-ориентированные симу-ляторы также хороши для построения адаптивных самооптимизирующих­ся систем, в которых иногда требуется использовать внутреннее модели­рование. Кроме того, такие программы позволяют достаточно просто со­здавать метасистемы (системы, принимающие решения на основе графи­ков изменения капитала других систем). Например, метасистемами мож­но считать модели распределения активов, поскольку они динамически меняют распределение средств между отдельными торговыми система­ми или счетами. Хороший объектно-ориентированный симулятор может генерировать графики изменения капитала портфелей и другую инфор­мацию для создания и тестирования на исторических данных систем рас­пределения активов, работающих на основе множественных торговых систем. Из этих соображений, а также в силу привычки большинство те­стов в этой книге проведены с использованием C -Trader tookit . Для того чтобы почерпнуть полезные знания из этой книги, не требуются позна­ния в C ++ и программировании. Логика любой системы или элемента системы будет подробно рассматриваться в тексте.

Оптимизаторы и оптимизация

Прекрасно разрабатывать торговые системы, не задумываясь об оптими­зации. Но в реальности создание надежной системы — путь проб и оши­бок, на котором какие-либо формы оптимизации неизбежны. Оптимиза­тор присутствует всегда — если не на поверхности, то в глубине процесса. Оптимизатор как таковой — это программа или алгоритм, пытающий­ся найти лучшее из возможных решений задачи; оптимизация — процесс поиска, подбора этого решения. Оптимизатор может быть отдельной про­граммой, возможно, выполненной в виде класса C ++, объекта Delphi или функции ActiveX . Мощные продвинутые оптимизаторы часто создаются в виде компонентов, встраиваемых в программы, которые будет разраба­тывать пользователь. Менее сложные оптимизаторы, например встреча­емые в программах построения графиков высокого уровня, — обычно простые алгоритмы, занимающие несколько строчек программного кода. Поскольку любое решение, приводящее к оптимизации, является опти­мизатором, оптимизация не обязательно связывается с компьютера­ми — оптимизатором может быть и человек, занятый решением задачи! Надо сказать, что человеческий мозг — одна из наилучших эвристичес­ких систем на земле!

Рынок Форекс - это чудесная возможность вольного, ничем не ограниченного дохода, который позволяет применять свои аналитические способности!

ЧТО ДЕЛАЮТ ОПТИМИЗАТОРЫ

п»ї

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

У всех торговых систем есть не менее двух правил (правило входа и правило выхода), и у большинства имеется один или несколько парамет­ров. Правила содержат логику системы и обычно имеют вид команд типа если-то на языке, на котором написана торговая система. Параметры определяют поведение описанной в правилах логики; они могут включать длины скользящих средних, важности связей в нейронной сети, пороги сравнений, уровни защитных остановок и цели фиксации прибыли и т.д. Простая система пересечения скользящей средней, использованная как пример в предыдущей главе, имеет два правила: одно — для приказа на покупку, другое — для приказа на продажу. У нее также был один пара­метр — длина скользящего среднего. Правила и параметры полностью определяют систему и ее поведение. Для получения лучшего эффекта от торговой системы может потребоваться изменение параметров и форму­лировок правил.

Нет сомнения, что одни сочетания правил и параметров, которые оп­ределяют системы, работают хорошо, а другие — плохо; т.е. решения бы­вают разного качества. Хорошее качество модели или решения, измерен­ное относительно некоего стандарта, называется пригодностью. Проти­воположность пригодности, т.е. показатель неадекватности решения, на­зывается расходом.

На практике пригодность определяется функцией пригодности — бло­ком программы, который рассчитывает показатель относительной при­влекательности решения. Функция может быть запрограммирована для определения пригодности именно так, как пожелает трейдер: например, пригодность можно определять как общую прибыль за вычетом макси­мального падения капитала. Функция расходов устроена аналогично, но чем выше ее значение, тем хуже работает система. Сумма квадратов оши­бок, часто вычисляемая при использовании систем с нейронными сетями или линейной регрессией, может служить примером функции расходов.

Теперь можно определить н а и л у ч ш е е возможное решение з а д а ч и : это решение, имеющее максимальную пригодность или минимальный рас­ход. Оптимизаторы пытаются найти лучшее решение проблемы с помо­щью поиска максимума функции пригодности или минимума функции расхода.

Лучшее возможное решение задачи может быть найдено разнообраз­ными способами. В некоторых случаях задача может быть решена простым методом проб и ошибок, особенно если поиск решения не полностью авто­матизирован, а проводится вручную. В других случаях могут потребо­ваться сложные процедуры и алгоритмы. Например, симуляция процесса эволюции (в генетическом оптимизаторе) — очень мощный метод поиска качественных решений для сложных задач. В некоторых случаях лучшее решение — аналитическая (вычислительная) процедура, например метод сопряженных градиентов. Аналитическая оптимизация — эффективный подход для задач с гладкими (дифференцируемыми) функциями пригод­ности, например задач, встречающихся при обучении нейронных сетей или разработке множественных моделей линейной регрессии.

КАК ИСПОЛЬЗУЮТСЯ ОПТИМИЗАТОРЫ

Оптимизаторы — замечательные инструменты, применимые множеством способов. Они помогают определить форму самолетов, сконструировать


автомобили и даже выбрать маршрут доставки почты. Трейдеры в некото­рых случаях используют оптимизаторы для определения комбинаций пра­вил, ведущих к выгодной торговле. Во втором разделе мы покажем, как генетический оптимизатор может создавать выгодные модели для правил входа. Чаще всего трейдеры обращаются к оптимизаторам для поиска наи­более подходящих параметров системы; практически любые оптимизато­ры, за исключением разве что аналитических, могут привлекаться для этой цели. Различные виды оптимизаторов, включая мощные генетические ал­горитмы, полезны для обучения систем с нейронными сетями или нечет­кой логикой. Должным образом подобранные стратегии оптимизации по­зволяют решать проблемы распределения активов. Иногда кажется, что единственный предел применения оптимизаторов — фантазия пользова­теля, но в этом кроется опасность: мощность и привлекательность инстру­мента часто приводят к злоупотреблению оптимизацией. Далее рассмот­рим правильное и ошибочное применение оптимизаторов.

Читать далее: Виды оптимизаторов