Тел.факс: +7(831)437-66-01
Факторинг  Разработка торговых систем 

1 2 3 [ 4 ] 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

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

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

int SMA( int day.int period,int type,float *value {

register int i; float total;

*value = 0.0;

if (period<=0)

period = 1;

if (day < period) return( -1 ) ;

total = 0.0;

for ( i = 0; i<period; i++)

total += get price data( type, day-i);

*value = total/(float) period

return( 1 );

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

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

* Автор является разработчиком Advanced Trader, одной из ведущих доступных программ в этой области

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

Period l = 5

MAl Today = sma[с:,Period l,0,0] MAl Yesterday = sma[с:, Period l,0,l] Period 2 =20

MA2 Today = sma[с:,Period 2,0,0] MA2 Yesterday = sma[c:,Period 2,0,1] Longif MAl Today > MA2 Today then

Longif MAl Yesterday < MA2 Yesterday then Order #1

buy net position + 1 at MOO end order

Endif

Endif

Longif MAl Today < MA2 Today then

Longif MAl Yesterday > MA 2 Yesterday then Order #2

sell net position + 1 at MOO end order

Endif

Endif

Как вы видите. Скрипт гораздо легче для понимания, чем код С. Он намного более сжат, чем обычный английский, и очень напоминает вариант спецификации с помощью определений и формул. Скрипт определяет Период 1 как число 5 , а Пери-од 2 как число 20 . Далее, он определяет МА1 Сегодня как Простую скользящую среднюю длины 5 на текущий день (то есть,



sma[c:, Period l,0,01), и точно так же для других значений этой скользящей средней по ценам закрытия.

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

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

Шаг 3: Тестируйте торговую стратегию

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

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

1981-1982 1983-1984 1985-1986 1987-1988 1989-1990

Рогатый скот Соевые бобы S&P 500 Шв. франк Т-бонды

Кол-во тестов

Таблица 2-2 Рынки и данные.

тел И исходных результатов должны подтвердить ваше доверие к системе.

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

Чтобы выполнить второй этап тестирования, эта простая система пересечения скользящих средних будет протестирована на рынках и данных, представленных в Таблице 2-2.

Данный тест включает сочетание и рынков, и временных периодов. Эта группа тестов состоит из 24 различньгх тестов, 5 разных рынков и 10-летнего временного интервала, разбитого на 2-летнис отрезки. Система будет протестирована на 5- и 40-дневной скользящих средних. Результаты этих 24 тестов приведены в Таблице 2-3.

Чего следует ожидать от такого теста? На самом деле, немногого. Если каждый тест показывает высокую прибыль (например, более $10,000), считайте, что найдена выигрышная система. Конечно, при условии, что все аспекты тестирования были представлены правильно и моделирование было реалистичным. Однако если каждый тест показывал большой убыток (например, более $10,000 за год), очевидно, что данная система просто бесполезна. (Есть несколько деликатных исключений из этого правила; они будут обсуждаться в последующих главах.) По всей вероятности, данную систему на этой стадии следует исключить из рассмотрения. Если же, как это часто бывает, результаты смешанные (то есть, есть несколько крупных выифышей и крупных убытков, наряду с меньшими выигрышами и убытками), можно переходить к этапу оптимизации. Переходите к следующему этапу разработки системы только в том случае, если большинство тестов не показывает крупные убытки.



Шаг 4: Оптимизируйте торговую систему

Теперь, когда система удовлетворительно прошла первую серию тестов, пора перейти к следующему шагу: оптимизации. В Словаре Американского Наследия * дается следующее определение: Оптимизировать: сделать использование чего-либо наиболее эффективным . Согласно этому определению, оптимизировать торговую систему, значит сделать ее использование наиболее эффективным. Это и есть истинная цель оптимизации торговой системы. К сожалению, продолжительная история неправильного употребления этого слова привела к тому, что его стали путать термином curve-fitting ( подстраивание под кривую ).

Термин curve-fitting , означающий аппроксимацию, тоже часто понимается неправильно и используется некорректно, в качестве синонима термина overfittmg ( подстройка ). Подстройка происходит тогда, когда построению кривой или тестированию торговой системы на прошлых данных придается чрезмерный вес, а оценке их предсказательной ценности - недостаточный. Понятие подстройки будет подробнее раскрыто в Главе 9.

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

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

* Валидность - достоверность, состоятельность, обоснованность. {Прим. ред.).

Таблица 2-3 Результаты теста.

Фьючерс Прибыли&убытки Проседание Кол-во Процент ----- сделок выигранных

Живой СКОТ

1981-1982 1983-1984 1985-1986 1987-1988 1989-1990 Среднее

Соевые бобы

1981-1982 1983-1984 1985-1986 1987-1988 1989-1990 Среднее

S&P 500

1981-1982 1983-1984 1985-1986 1987-1988 1989-1990 Среднее

Швейцарский франк

1981-1982 $ 2,787

($ 560)

$ 3,180

($ 1,364)

$ 4,844

$ 6,672

$ 2,640

$ 1,500

$ 3,648

$ 1,244

$ 2,040

$ 1,001

$ 3,270

$10,350

$ 1,950

$18,512

$ 3,925

($ 7,300)

$ 7,387

$11,375

$ 5,075

($ 9,662)

$ 9,662

$ 4,655

$ 5,600

($22,250)

$22,250

($ 7,425)

$23,050

$ 14,375

$19,425

($ 8,225)

$35,350

($ 5,881)

$25,019

1983-1984 1985-1986 1987-1988 1989-1990 Среднее

Т-бонды

1981-1982 1983-1984 1985-1986 1987-1988 1989-1990 ?Реднее

$ 8,362 ($13,350) $11,325 $14,187 $ 4,662

$ 2,693 ($ 4,268) $27,456 $ 5,312 $ 3,287 $ 5,581

$ 3,875

$ 1,800

$13,350

$ 7,925

$ 3,775

$ 6,145

$ 8,981

$10,056

$ 6,362

$ 4,981

$ 8,500

$ 7,776



1 2 3 [ 4 ] 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34