Тренажер торговой системы.
Трейдер, находящийся в стадии разработки и настройки своей ТС или в стадии повышения своей квалификации (а в таком статусе находится подавляющее большинство трейдеров), должен иметь в своем распоряжении тренажер. Ибо невозможно научиться и достичь уровня стабильно прибыльной торговли только через курс обучения, без продолжительной персональной практики. Что же следует понимать под тренажером ТС? Тренажер – это система, выполняющая все штатные функции ТС, но виртуально, без реального воздействия на рынок и без обратной связи со стороны рынка. (Для рядового трейдера роль рынка выполняет дилерский терминал обслуживающего его брокера.)
Чтобы выполнять все функции ТС, тренажер должен имитировать функции дилерского терминала – открытие/закрытие позиций и расчет прибыли или убытка от сделки. Имитация этих действий необходима для виртуального повторения истории ТС в различных сценариях, т. е с различными параметрами системы, соответственно различными торговыми решениями трейдера и реакциями рынка на эти решения.
(В тренажере история не только терпит, но и живет в сослагательном наклонении!) Такая процедура, разворачивающаяся в виртуальном времени, в отличие от тестирования ТС в реальном времени, ускоряет процедуру настройки и регулярной перенастройки системы, а главное, многократно ускоряет процесс обучения и повышения трейдерской квалификации. В последнем случае ТС становится адаптивной системой управления, что трудно переоценить в условиях нестационарности рынка. Может показаться, что торговля по демосчету выполняет те же функции, которые возлагаются на тренажер. Но здесь есть принципиальное различие: торговля по демосчету идет в реальном времени, тогда как работа на тренажере позволяет имитировать торговлю в виртуальном времени, что может ускорить или замедлить ее в любое число раз. Ускорение торговли актуально при торговле на больших временных тайм фреймах – дневная, недельная, месячная торговля. Замедление торговли необходимо при торговле на коротких интервалах – часовая и минутная торговля, чтобы трейдер успевал анализировать торговые ситуации.
Для сопоставления различных торговых систем и настройки системы на максимум глобального критерия необходимо вычислять его на выбранном интервале истории. Заметим, что в случае расчетов на тренажере длина исторического массива не влияет на длительность и трудоемкость вычисления критерия. Эта величина определяет только потребный объем архива котировок.
Так как тренажер ТС – это программное изделие, то сначала следует выбрать подходящие среду и язык программирования. Для этого сравним достоинства и недостатки программных средств реального и виртуального времени. Для программирования действующей ТС разработан специальный язык реального времени MQL 4. В этом языке предусмотрено оперативное взаимодействие трейдера с дилерским терминалом брокера, а программный код такой программы весьма лаконичен. Такой программный продукт, как и все языки реального времени, требует относительно мало вычислительных ресурсов, но зато вычислительные процедуры не прозрачны и не очевидны пользователю. Это не является недостатком при создании готового изделия - приложения, так как пользователю такого приложения не обязательно наблюдать и детально контролировать вычислительный процесс. Но в случае тренажера для трейдера все обстоит с точностью до наоборот. Назначение тренажера – оптимальная настройка ТС и одновременно обучение трейдера. В такой ситуации прозрачность вычислительных процедур – решающий фактор. Этому фактору наилучшим образом отвечает программирование приложений средствами электронных таблиц Excel . К недостаткам программирования на Excel можно отнести отсутствие реального времени: каждая формула алгоритма тиражируется в электронной таблице столько раз, сколько временных тактов составляет история ТС. Но зато именно это обстоятельство делает программу тренажера абсолютно прозрачной. Кроме того, создателями Excel предусмотрено множество стандартных функций и процедур, облегчающих программирование пользовательских алгоритмов. И наконец, научиться программировать на Excel неизмеримо проще, нежели обучение и освоение языков реального времени. Не случайно Microsoft Office Excel прилагается ко всем персональным компьютерам.
Кроме богатого ассортимента специальных функций в Excel предлагаются готовые процедуры настройки систем. В частности, имеется процедура (опция) «поиск решения», позволяющая автоматически находить максимум любой функции. Правда следует учитывать ограничительные особенности этой процедуры. Экстремум (максимум или минимум) любого показателя отыскивается способами непрерывного поиска при условии гладкой (непрерывной) зависимости этого показателя от всех промежуточных переменных. При наличии же не гладких, скачкообразных зависимостей такая процедура дает сбои. В отношении торговли на рынке именно такая ситуация порождается скачкообразным характером операций открытие/закрытие позиций. Для таких случаев в процедуре «поиск решения» в Excel предусмотрен вариант варьирования независимых переменных скачкообразно, только в виде целых значений. Этот вариант подходит при варьировании объема склада в регулировании риска торговли и этот вариант следует активизировать в меню процедуры «поиск решения». В меню «поиск решения» в качестве целевой ячейки вводится переменная % P , в качестве изменяемой ячейки – константа Zm , а в окне ограничений вводятся два условия: Zm =целое и гар P пр< D (см. выражение (6.1)). По той же причине скачкообразных зависимостей не удается применить процедуру «поиск решения» для отыскания оптимальных значений других варьируемых констант. Но и здесь Excel предлагает инструмент автоматизации такого поиска – это макросы на языке VBA . С помощью макроса можно реализовать поиск максимума % годовых путем прямого перебора значений варьируемых констант в некотором диапазоне. Этому пути не страшны любые негладкости функциональных зависимостей.
писанное программирование в Excel позволяет создать тренажер ТС и производить процедуры настройки. Но этот же тренажер позволяет проводить и фактическую торговлю в реальном времени. Нужно только добавить две функции: передачу котировки из дилерского терминала в Excel -файл тренажера на каждом новом такте работы и передачу в этот терминал приказов на открытие/закрытие позиций, формируемых в Excel -файле. Эти операции не удается запрограммировать средствами Excel , так как это не поддерживается программными средствами дилерской платформы. Ввод новой информации в Excel -файл производится просто. Исторические данные (даты, время и котировки) изначально заполняют некоторый массив, последняя строка которого отвечает самой последней информации (в текущий момент времени t ), а первая строка – самой старой информации (в момент времени t -Тм). На очередном такте работы новая информация вводится вручную в строку, расположенную ниже последней строки массива данных. Затем выделяется массив, образованный из исходного массива добавлением новой нижней строки и исключением самой верхней строки. Выделенный массив копируется в виде значений на одну строку выше. В результате на месте исторического массива оказываются новые данные, сдвинутые на один такт вперед. При этом в файле мгновенно пересчитываются все переменные и получаются новые результаты, отвечающие обновленному историческому массиву, в том числе и обновленные итоговые показатели блока настройки.
Для конкретности описанных положений по тренажеру ТС ниже приводится алгоритм простой системы и инструкция по работе с ней. Рассматривается ТС с прогнозом тренда цены по колебательному звену и торговлей на экстремумах цен, определяемых в моменты смены знака прогнозируемого тренда.
Блок прогноза.
(10.1)…..? X t =2*? X t -1 -? X t -2 +(? Y t -*? X t -1 )/ T – прогноз тренда цены.
(В этом варианте ТС коэффициент демпфирования b =0 – сравни с формулой (3.2б).)
Блок сделки.
(10.2)….. R t =ЕСЛИ(? X t >0;1-1) – торговый критерий,
(10.3)….. Z t = R t * Zm – объем и тип (знак) сделки.
Блок прибыли.
(10.4)….. Xz t =ЕСЛИ( Z t = Z t -1 ; Xz t -1 ; Y t ) – цена открытия сделки,
(10.5)….. P пот t =(( Y t - Xz t )* Z t -1 - dX * ABS ( Z t -1 ))* L – потенциальная прибыль сделки,
(10.6)….. P t =ЕСЛИ( Z t = Z t -1 ;0; P пот t -1 ) – фиксируемая прибыль,
)…..? P =СУММ(СМЕЩ( P t ;-Тн;0;Тм;1)) – суммарная прибыль за историю системы длиной Тм ( P t –ячейка, в которой вычисляется фиксируемая прибыль в последний, текущий момент t ) .
Блок настройки.
(10.7)….. P год=? P /Тм*2*260 – годовая прибыль,
(10.8)……ср P пр= СРЗНАЧ(СМЕЩ( P пр t ;-Тн;0;Тм;1)) - средняя просадка за историю ТС,
(10.9)…..? P пр=СТАНДОТКЛОН(СМЕЩ( P пр t ;-Тн;0;Тм;1)) - стандартное отклонение просадки ? P пр,
(10.10)…..гар P пр=-ср P пр+3*ср P пр – гарантированная просадка.
(10.11)…..% P = P год/(гар P пр+ L /100* Zm )*100. - % годовых.
(Здесь гарантированная просадка суммируется с дилерским залогом для торговли с объемом в Zm лотов.)
Настройке подлежат константа T в блоке прогноза и объем торговли Zm . Величина Т определяет период торгуемой гармоники цены. Как уже отмечалось в главе 3, в движении цен имеется ряд гармоник с относительно большими амплитудами. На этих гармониках и следует торговать. Чтобы выделить периоды таких гармоник следует отыскивать максимумы % годовых % P , возникающие при варьировании величины T . Каждому полученному локальному максимуму % P отвечает свой период T . В данном тренажере предусмотрена процедура автоматического определения максимума % P в заранее выбранном диапазоне изменения T . Выбирая поочередно такие диапазоны, граничащие с предыдущим и следующим диапазонами, получается ряд оптимальных периодов гармоник. Затем в ТС можно выбрать для торговли одну или несколько таких гармоник. Для автоматизации описанной процедуры к Excel - файлу прикреплен макрос. В макросе задаются границы диапазона, а на выходе получается оптимальный период T и отвечающий ему максимум % P .
Подбор объема торговли (объема склада) Zm производится по условию гар P пр? D (см. формулу (6.1). В случае торговли по одной гармонике цены такой подбор проще всего сделать вручную, варьированием Zm до достижения указанного равенства. В случае комбинированной торговли по разным гармоникам и разным инструментам эта процедура в ручном варианте становится весьма сложной и должна автоматизироваться. Для этого в Excel имеются соответствующие средства.
Михаил Яковлевич Фитерман