Что такое фондовая биржа Как торговать на бирже
Binomo
Как стать успешным трейдером Стратегии биржевой торговли Лучшие дилинговые центры Forex Лучшие биржевые брокеры
Пардо Р. Разработка, тестирование, оптимизация торговых систем для биржевого трейдера

Боб Пардо работает над оптимизационными проблемами многие годы. Будучи автором тестовой программы широкого применения Advanced Trader и разработчиком многочисленных торговых стратегий, он вне всякого сомнения обладает всеми необходимыми знаниями для рассмотрения процесса оптимизации со всех сторон – с точки зрения разработки, тестирования и получения результатов.

Какой Форекс-брокер лучше?          Альпари          Exness          Forex4you          Сделай свой выбор!

Шаг 2: напишите правила в определенной форме

В следующем примере показано, как преобразовать «расплывчатую» стратегию в четкую, хорошо сформулированную, поддающуюся тестированию стратегию. Джо Трейдер применяет торговую стратегию, которая использует скользящие средние квазисистемным образом. Используя эти распространенные, но полезные индикаторы определенным способом, Джо добился некоторых успехов. Он считает, что мог бы добиться намного большего, если бы больше знал об этих индикаторах. Для этого он отыскал и нанял Алекса Программера, чтобы тот написал компьютерную программу, которая позволит ему четко сформулировать и протестировать эту торговую стратегию. Во время их первой встречи произошел следующий диалог, в котором Джо объяснил свой метод:

Джо: Я покупаю, когда скользящие средние выглядят хорошо, и продаю, когда они выглядят плохо.

Алекс: М-гм, это очень любопытно. И это работает?

Джо: Иногда.

Алекс: Интересно. Но нам надо постараться быть более конкретными, чтобы разобраться в этом. Не возражаете, если я задам вам несколько вопросов?

Джо: Думаю нет, но надеюсь, что это не займет слишком много времени. Мне надо делать деньги. Я хочу свозить семью в Европу этим летом. Давайте приступим.

Алекс: О'К. Давайте начнем со стороны покупки. Могли бы вы сперва сказать мне, что вы имеете в виду, говоря, что средние выглядят хорошо?


А знаете ли Вы, что: пополнив торговый счет на сумму от $1000 и зарегистрировавшись в акции от InstaForex, Вы получаете шанс выиграть спортивный автомобиль Lamborghini Huracan.

С уважением, Админ.


Джо: Ну, я думал, это вполне очевидно. Средние выглядят хорошо, когда короткая средняя просто прорывается через длинную.

Алекс: Может для вас это и очевидно, но не для меня. Под словами «прорывается через» вы подразумеваете, что средняя один пересекает среднюю два снизу вверх?

Джо: Ну да.

Алекс: Хорошо. Имеет ли значение, сколько раз средняя один пересекает среднюю два?

Джо: Иногда да, иногда нет. Зависит от ситуации.

Алекс: От чего конкретно?

Джо: Трудно сказать.

Алекс: Ладно, тогда может быть нам следует оставить вопрос о количестве пересечений до лучших времен. Давайте просто запустим базовую систему. Мы знаем, что будем продавать, если средняя один пересекает среднюю два снизу вверх. Тогда что вы имеете в виду под словами «средние выглядят плохо»?

Джо: Ну это тоже очевидно. Они просто рушатся к чертовой бабушке.

Алекс: Хорошо, раз мы покупаем, когда средняя один пересекает среднюю два снизу вверх, прав ли я в предположении, что мы продаем, когда средняя один пересекает среднюю два сверху вниз?

Джо: Ну, наконец-то, до вас дошло.

Алекс: Хорошо. Похоже, что мы находимся в позиции всегда. Это правильно?

Джо: Почти всегда.

Алекс: А когда вы вне рынка?

Джо: Когда рынок протухает.

Алекс: Что вы имеете в виду? Джо: Когда рынок не движется, скользящие средние про- сто режут меня на куски.

Алекс: Что вы подразумеваете, говоря, что «рынок не движется»?

Джо: Просто нет активности. Много маленьких свингов, но нет больших.

Алекс: Означает ли это, что данная стратегия скользящих средних на самом деле способна отлавливать только большие свинги?

Джо: Да.

Алекс: Тогда что такое большой свинг?

Джо: Зависит от...

Алекс: От чего?

Джо: От рынка.

Алекс: Понятно. Меняется ли это от рынка к рынку и от года к году?

Джо: Безусловно.

Алекс: Влияет ли на это разница в периодах скользящих средних?

Джо: Да.

Алекс: Как вы определяете, какие средние использовать?

Джо: Я играюсь с разными скользящими средними в своей графической программе и использую те, которые хорошо смотрятся.

Алекс: Так вы ничего не знаете о прибыли и риске этих самых средних, которые «хорошо смотрятся», не так ли?

Джо: Нет, не знаю. Именно поэтому я вас и нанял. Я пред- полагал, что вы все это мне рассчитаете.

Алекс: Хорошо, я сделаю все, что смогу. Как вы контролируете свой риск, когда занимаете позицию?

Джо: Зависит от обстоятельств. Если одна средняя про- сто пролетает через вторую, как летучая мышь из ада, я обычно сразу делаю какие-то деньги и проблем нет. Но иногда рынок выглядит таким квелым, и тогда я устанавливаю на позицию близкий стоп.

Алекс: Вы имеете в виду, что иногда используете стоп, а иногда нет?

Джо: Ну да.

Алекс: Это звучит нелогично, а также может быть опасным. Вы хотите тестировать стратегию и со стоп-лоссом, и без него?

Джо: Да.

Алекс: О'К. Я введу в программу такую опцию. Что вы делаете, когда находитесь в плюсовой позиции?

Джо: Если я уже имею пару штук прибыли, то обычно звоню кассиру.

Алекс: Имеете ли вы в виду, что забираете прибыль после того, как сделаете на позиции определенную сумму денег?

Джо: Точно.

Алекс: И сколько же для вас достаточно?

Джо: Зависит от...

Алекс: От чего?

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

Алекс: Ладно, следует ли мне встроить в программу в качестве варианта какую-нибудь идею относительно прибыли?

Джо: Да.

Алекс: Давайте посмотрим, что у нас уже есть. Наша основная торговая модель использует две скользящих средних с разными периодами. Модель всегда в открытой позиции – либо в покупке, либо в продаже. Мы покупаем, если короткая средняя пересекает длинную снизу вверх. Мы продаем, если короткая средняя пересекает длинную сверху вниз. Пока все верно?

Джо: Пока все нормально.

Алекс: Существует два варианта управления рисками для базовой модели – риск-стоп и целевой ордер. Использование любого из них приведет к фундаментальному изменению модели. Если выход из позиции осуществляется посредством риск-стопа или целевого ордера, ориентированного на некоторую прибыль, то модель не будет всегда в рынке. Это так?

Джо: Давайте сварганим то, что есть, а там разберемся.

Алекс: О'К. Я настрою эту программу так, чтобы длины скользящих средних устанавливал пользователь. Будет опция для использования риск-стопа или целевого ордера, или ордера «по цене или лучше». Программа будет способна тестировать несколько комбинаций скользящих средних разной длины. Как вы думаете – это удовлетворит ваши пожелания?

Джо: Это начало. Давайте посмотрим что получится.

Эта небольшая пьеса призвана осветить неопределенность, характерную для незавершенной торговой идеи. Хотя Джо Трейдер может казаться чересчур утрированным персонажем, он ближе к реальности, чем к вымыслу. И Алекс Программер обладает гораздо лучшими коммуникативными и адаптивными качествами, чем многие программисты. Более того, этот диалог прошел намного деликатнее, чем большинство подобных разговоров.

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

На обычном языке данная торговая система, основанная на скользящих средних, может быть выражена следующим перечнем правил:

Правило 1. Покупайте, когда краткосрочная скользящая средняя пересекает долгосрочную скользящую среднюю снизу вверх.

Правило 2. Находясь в покупке, оставайтесь в ней до тех пор, пока не появится сигнал на продажу.

Правило 3. Продавайте, когда краткосрочная скользящая средняя пересекает долгосрочную скользящую среднюю сверху вниз.

Правило 4. Находясь в продаже, оставайтесь в нем до тех пор, пока не появится сигнал на покупку.

Эта торговая система может быть определена следующим набором формул и правил:

Определение 1: C(t) – цена закрытия t-m дня, при этом, что сегодняшний день t= 1.

Определение 2: х это период скользящей средней один (МА1).

Определение 3: у это период скользящей средней два (МА2).

Формула 1: MA1 = [C(f)+C(t+l)+...+C(t+x-l)]/x
Формула 2: МА2 = [C(t)+C(t+l)+...+C(t+y-l)]/y

Правило 1: у никогда не меньше двух х.

Правило 2: Если МА1(t)>МА2(0 и МА1(М)<МА2(М), то покупать.

Правило 3: Если вы находитесь в покупке и МА1 (t)>МА2(t), то не делать ничего.

Правило 4: Если МА1(0<МА2(t) и МА1(t-1)>МА2(t-2), то продавать.

Правило 5: Если вы находитесь в продаже и МА1(t)<МА2(t), то не делать ничего.

На языке программирования С эти же идеи выглядят несколько иначе. Программа на языке С для вычисления значения скользящей средней показана ниже:

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

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

В примерах этой книги будет использована программа Advanced Trader; однако другие доступные программы должны давать пользователю те же возможности определенно выражать правила, а также тестировать и оптимизировать эти правила. Торговая идея излагается на языке Скрипт (Script), являющимся языком торговли и тестирования в программе Advanced Trader.

На Скрипте предыдущая торговая система, задаваемая двумя скользящими средними, выглядит следующим образом:

Как вы видите, Скрипт гораздо легче для понимания, чем код С. Он намного более сжат, чем обычный английский, и очень напоминает вариант спецификации с помощью определений и формул. Скрипт определяет «Период_1» как число «5», а «Период_2» как число «20». Далее, он определяет «МА1_Сегодня» как простую скользящую среднюю длины 5 на текущий день (то есть, sma[c:, Period_l,0,0]), и точно так же для других значений этой скользящей средней по ценам закрытия.

Условие покупки устанавливается с помощью команды, называемой «longif». Команда «longif» – это способ использования условия – то есть, если выражение истинно, то делай это; если оно ложно, то делай что-то другое. Когда эти условия выполняются, выставляется ордер на покупку и переворот из текущей короткой позиции с помощью приказа «рынок по открытию» (Market-on-open, MOO) следующего дня. Условие продажи тоже задается с помощью другой команды «longif». Когда эти условия выполняются, выставляется ордер на продажу и переворот из текущей длинной позиции с помощью МОО-приказа – «рынок по открытию» следующего дня.

С помощью Скрипта достигается в точности тот же результат, что и с помощью С-программы, с гораздо меньшими усилиями и намного быстрее, за счет всех встроенных возможностей программы Advanced Trader. Некоторые из этих ключевых возможностей включают управление данными, управление торговлей и сотни встроенных функций, полезных в трейдинге.
Содержание Далее

Что такое фондовая биржа
Яндекс.Метрика