Главная Forex Торговые методы Создание и оптимизация торговых систем.
Создание и оптимизация торговых систем. Печать



Вступление.

C появлением большого числа Форекс брокеров, которые предлагают возможность автоматизированной торговли, популярность механических торговых систем/стратегий (МТС) растет постоянно. На смену классическому техническому анализу приходит автоматическая торговля. Торговые советники, эксперты, роботы интересуют начинающих трейдеров в большей степени, чем классический технический анализ. Такой интерес обусловлен доступностью и популярностью программ (MetaTrader, TradeStation), которые позволяют легко и просто запустить процесс автоматической торговли.

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


Поиск и формализация закономерностей на истории котировок.

Чтобы торговая система была прибыльна на достаточно большом отрезке времени, в основу системы должна быть заложена некая постоянно повторяющаяся закономерность рынка. Искомая закономерность – это повторяющиеся действия, которые предпринимают участники рынка в тех или иных условиях. Задача трейдера – найти такие повторяющиеся действия (закономерности), формализовать их и превратить в правила торговой системы.

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

1. Совершение сделок согласно фигурам технического анализа.
2. Перепродажа кредита и извлечение прибыли за счет разницы процентных ставок.
3. Использование одной торговой системы (индикатора) большим числом участников рынка.

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

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

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

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

Отдельный совет хочется дать начинающим трейдерам. После того как вы выбрали инструмент для анализа, добавили нужные вам индикаторы, берите пачку бумаги и ПЕЧАТАЙТЕ, ПЕЧАТАЙТЕ и еще раз ПЕЧАТАЙТЕ графики! Я не могу словами описать, сколько времени, сил и денег может сэкономить вам простая распечатка графиков и анализ полученных результатов. Вы даже не представляете, насколько важна работа с распечатками. Важность ее обусловлена тем, что наш мозг просто природой не тренирован для сопоставления большого объема ценовой информации в памяти. Поэтому когда трейдер может видеть листы с графиками он легко и просто сопоставляет одни отрезки истории с другими, одни сделки с другими. Закономерности, особенности ценовых паттернов находятся легко и быстро. Глядя на небольшой интервал истории, который виден на экране компьютера, эту работу выполнить на должном уровне ПРАКТИЧЕСКИ НЕ ВОЗМОЖНО! Именно по этой причине масса отличных идей и возможностей упускаются начинающими трейдерами. Но стоит им показать распечатки, обработанные профессиональным трейдером, как через неделю они повторяют аналогичную работу на приемлемом уровне и сокращают срок работы над собственной системой на годы!

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

Для создания тестовой системы исследуем ценовые графики GBPUSD и обратим внимание на то, что происходило с ценой в моменты преодоления уровней поддержки/сопротивления. Под уровнями поддержки/сопротивления будем подразумевать ценовые экстремумы, которых цена больше не достигала BarRight-баров справа от экстремальной цены и BarLeft-баров слева от экстремальной цены:


На рисунке выше красными и синими точками отмечены уровни поддержки/сопротивления. Кружками отмечены моменты пробития уровней поддержки сопротивления.

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

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

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

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

{Сбрасываем значение экстремума, если цена его преодолевает}
if h >= srMax then
srMax = 0;
if l < srMin then
srMin = 0;

{Вычисляем уровень сопротивления}
if h[wp_BarLeft] > Highest(h, wp_BarLeft - 1) then
if h[wp_BarLeft] > Highest(h, wp_BarRight)[wp_BarLeft + 1] then
srMax = h[wp_BarLeft];

{Вычисляем уровень поддержки}
if l[wp_BarLeft] < Lowest(l, wp_BarLeft - 1) then
if l[wp_BarLeft] < lowest(l, wp_BarRight)[wp_BarLeft + 1] then
srMin = l[wp_BarLeft];

{Устанавливаем ордер для продажи ниже уровня поддержки на несколько пунктов (2 пункта)}
if srMin <> 0 then
OrderSell = srMin - wp_Plus points;

{Устанавливаем ордер для покупки выше уровня поддержки на несколько пунктов (2 пункта)}
if srMax <> 0 then
OrderBuy = srMax + wp_Plus points;

В качестве стопа и лимита мы будем использовать фиксированное значение в пунктах:

SetStopPosition;

if wp_Stop > 0 then
SetStopLoss(wp_Stop * Contr);

if wp_Profit > 0 then
SetProfitTarget(wp_Profit * Contr);

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

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


Настройка торговой системы.

Настройка параметров торговой системы может преследовать две различные цели:

1. Поиск закономерностей или расчет статистики.
2. Оптимизации параметров.

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

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

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

Настройка параметров системы выполняется тогда, когда определены базовые закономерности, по которым работает система. То есть, моменты открытия/закрытия позиций определены и требуется более точно настроить параметры согласно контексту рыночной динамики.


Интервалы настройки и проверки.

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

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

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

Для проверки того, что система не подогнана под кривую, применяется следующая методика. История котировок разбивается на два интервала: интервал настройки и интервал проверки. На интервале настройки параметры системы оптимизируются. Затем проверяется устойчивость полученного результата на интервале проверки. С точки зрения статистики, результат считается достоверным, если работа системы остается стабильной в течение 30% времени от интервала настройки. Таким образом, интервал настройки должен быть в три раза больше, чем интервал проверки.

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

Рассмотрим динамику волатильности GBPUSD за последние девять лет:


На рисунке красными прямоугольниками отмечены области схожей динамики. Так в период 2002-2004 и 2006-2007 на рынке преобладали долгосрочные большие тренды. В период 2000-2001, 2004-2005, начало 2008, преобладали среднесрочные тренды с периодами высокой волатильности. Из этого следует, что для интервала проверки должны быть выделены два года с различной динамикой. Например, если система настраивается сейчас, то для интервала проверки можно выделить 2007 и 2008 год. Поскольку два года интервала проверки – это 30% от интервала настройки, то минимальный интервал настройки составляет шесть лет!

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

Настройку нашей системы будем проводить на дневных данных. Для интервала настройки возьмем данные за период [2000-2007]. Интервалом проверки будут данные за период [2008-2009].

Чтобы результат работы системы на дневных барах был адекватный, включим использование 10-минутного интервала для проверки срабатывания ордеров внутри дневного бара. Ведь нам надо точно знать, какой ордер будет исполнен первым: стоп или лимит. Только в этом случае результат работы системы будет соответствовать реальным событиям.



Учет издержек.

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

Чтобы учесть потерю спрэда и средний отрицательный своп, необходимо указать их сумму в параметрах системы в качестве комиссии. Для этого в ProSuite надо установить значение поля Comission/Amount, в окне свойств стратегии, в папке Costs.

Средний отрицательный своп вычисляется следующим образом:

Средний отрицательный своп = ([отрицательный своп] - положительный своп) * (время системы в рынке / среднее число сделок в год)

Рассмотрим пример для GBPUSD.

Отрицательный своп: -0.6 пункта.
Положительный своп: +0.1 пункта.
Система находится в рынке: 30% времени – это 365 * 0.3 = 110 дней.
Среднее число сделок в год: 40.
Средний отрицательный своп = (0.6 – 0.1) * (110 / 40) = 0.5 * 2.75 = 1.375

Если спрэд для GBPUSD равен 5 пунктов, то в параметрах этой системы в качестве комиссии необходимо указать 5 + 1.375 = 6.375. Только в этом случае будет произведен правильный расчет прибыли.

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

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

В нашей системе, для учета спреда и среднего отрицательного ролловера, зададим в параметрах комиссию для каждой сделки 5 пунктов. После определения того, как именно будет работать система, этот параметр можно будет скорректировать. Если сделки будут удерживаться только внутри дня, зададим размер спреда брокера. Если сделки будут удерживаться несколько дней, пересчитаем комиссию с учетом среднего отрицательного ролловера.




Методика управления капиталом.

Одна из ошибок начинающих трейдеров – отдельная настройка группы параметров системы, отвечающих за управление капиталом. Как правило, сначала настраиваются параметры системы, которые отвечают за логику принятия торговых решений. Затем оптимизируются параметры, отвечающие за управление капиталом. Такой подход является в корне неправильным, так как прибыльность системы зависит от объема капитала, участвующего в сделке. А параметры, влияющие на процесс принятия торгового решения, в свою очередь, зависят от итога совершаемой операции, который напрямую связан с объемом сделки.

Для примера, рассмотрим вариант настройки системы с и без методов управления капиталом. Во время настройки параметров стопа без методики управления капиталом, оптимальный размер стопа для системы был равен 87 пунктов. Повторная настройка системы с использованием метода управления капиталом, показала оптимальный размер стопа 45 пунктов. При этом общее число сделок увеличилось. Так же увеличился процент убыточных сделок. Однако прибыльность системы в итоге возросла в два раза. Что интереснее получить – 70% в год или 140% при одинаковом уровне риска?

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

В качестве метода управления капиталом для нашей тестовой системы мы воспользуемся алгоритмом риска оптимальной долей депозита (Optimal F). Метод управления капиталом будет использоваться как на этапе поиска закономерностей, так и на этапе оптимизации параметров. Очень важно всегда применять методику управления капиталом, так как она напрямую влияет на результат поиска закономерностей. То, что может казаться слабой идей при беглом просмотре распечаток с графиками, может принести приличный доход при правильном управлении капиталом.


Настройка параметров торговой системы.

Целью настройки и оптимизации параметров торговой системы является получение стабильной максимальной прибыли. Далее я позволю себе сделать небольшое отступление на тему максимизации прибыли.

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

Любая система, даже самая хорошая, с 90% прибыльных сделок и просадкой в 5%, в реальной торговле может показать просадку в 100% рискового капитала, вместо ожидаемой прибыли в 50% годовых. А система с 20% прибыльных сделок и просадкой в 50% от депозита может принести 300% прибыли. Так какую же систему выберете вы? Первую или вторую? Наверное, вы решите, что первая система имеет больше шансов на успех и выберете ее. И ошибетесь. Обе системы имеют равное число шансов на успех. Каждая из них может потерять весь рисковый капитал. Мы ведь помним, что гарантии успеха вообще нет. Рынок может измениться таким образом, что система станет 100% убыточной. Если бы гарантия успеха была, то можно было бы просто работать по первой системе с максимальным плечом и вместо 50% в год, иметь 50000%.

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

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


В 2003 году была получена максимальная прибыль. На интервале проверки [2008-2009] система убыточна. Совсем не интересно ждать еще 10 лет, чтобы терять деньги из года в год в надежде получить однажды сверхприбыль.

Если мы будем настраивать систему с целью найти значения параметров, которые обеспечивают максимальный процент прибыльных сделок, то такие значения будут найдены. Однако опять же произойдет подгонка под тот или иной год, который даст искомый результат. Но стабильную и максимальную прибыль мы не получим. Так же будет обстоять дело и с другими стандартными целями оптимизации. Что же делать? Ведь нас интересует стабильная прибыль из года в год. Желательно максимальная.

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

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

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

Для рассматриваемой системы мы будем оптимизировать следующие параметры:

BarLeft 1..10 с шагом 1 – число баров слева от экстремума
BarRight 1.10 с шагом 1 – число баров справа от экстремума
Stop 30..160 с шагом 2 – размер стопа в пунктах
Profit 40..400 с шагом 2 – размер профита в пунктах
MM 5..50 с шагом 1 - процент от текущего остатка, которым рискуем в каждой сделке

Отступ от экстремума установим в 2 пункта. Впоследствии можно использовать и один пункт. На данных Forexite большинство систем хорошо работает с отступом в 1 пункт.

После оптимизации на истории [2000-2007] были найдены оптимальными следующие параметры:

BarLeft = 7
BarRight = 2
Stop = 66
Profit = 92
MM = 12

Результат работы системы с этими параметрами на интервале настройки [2000-2007] и интервале проверки [2008-2009]:


Кривая доходности достаточно гладкая. Относительно большие красные выбросы обусловлены тем, что объем открываемых позиций по мере получения прибыли увеличивается. Поэтому размер убыточных сделок, оставаясь фиксированным в пунктах, увеличивается в объеме.


Максимальная просадка для рассматриваемой системы 30%. Для системы, торгующей оптимальной долей (Optimal F), значение просадки имеет второстепенное значение. По-моему мнению, даже просадка в 80% не имеет никакого значения, если система способна при этом приносить стабильный доход из года в год.


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


Доходность системы достаточно стабильна. Потенциал у системы хороший. Прибыль за 2009 год больше среднего, но год еще не закончился. Число сделок не очень большое, но достаточное, так как система работает на долгосрочных уровнях поддержки/сопротивления.

Максимальное число убыточных сделок подряд – 4 (параметр ConsecLoss). Если система во время реальной торговли заключит 12 убыточных сделок подряд, ее работоспособность будет поставлена под сомнение и торговля по ней, скорее всего, будет остановлена.
Теперь проанализируем сделки системы:






Анализ сделок показывает, что система зарабатывает на импульсах цены, которые возникают из-за срабатывания ордеров в момент пробития уровней поддержки/сопротивления. Размеры импульсов небольшие, но достаточные для получения стабильной прибыли. Кардинально изменить доходность системы можно, поставив своей целью захват больших трендов. Однако для этого надо изменить парадигму системы, добавив более эффективный метод закрытия позиций. Пока же мы продолжим рассмотрение оригинальной системы.

После настройки параметров на интервале настройки [2000-2007] и проверки полученных результатов на интервале проверки [2008-2009], мы убедились в том, что потенциал системы достаточный. Менять ее логику мы не будем. Поэтому нам не надо менять код системы и выполнять повторную настройку. Сейчас мы произведем тюнинг параметров системы, используя всю имеющуюся историю.

Тюнингом параметров я называю такую оптимизацию, которая не меняет кардинально логику принятия решений, но позволяет учитывать наиболее свежие ценовые данные, которые по логике должны иметь больший вес. Для тюнинга рассматриваемой системы мы будем использовать историю [2000-2009].

Оптимизировать будем следующие параметры:

Stop 30..160 с шагом 2 – размер стопа в пунктах
Profit 40..400 с шагом 2 – размер профита в пунктах
MM 5..50 с шагом 1 - процент от текущего остатка, которым рискуем в каждой сделке

После оптимизации все сделки остались на своих местах. Оптимальные размеры стопа и лимита остались прежними. Если бы значения стопа и лимита изменились значительно, из-за влияния новой истории, необходимо было бы проверить, насколько сильно изменилась доходность за все предыдущие годы. Изменение доходности больше 10% в сторону уменьшения, для отдельного года, свидетельствовала бы о подгонке параметров под интервал проверки. В этом случае надо выполнить проверку всех сделок. И, скорее всего, игнорировать новые значения оптимальных параметров.

В ходе тюнинга параметров системы оптимальным параметром MM стало значение 18. Большой вклад в пользу такого изменения внес 2009 год, который еще не закончился. Поэтому это изменение мы игнорируем.

Для некоторых системы, в результате настройки, оптимальным параметром MM может быть значение больше 20. В таких случаях я придерживаюсь следующего правила. В первый год реальной торговле по новой системе оптимальное значение MM делится на 3. Например, если для системы оптимальная доля 30%, то в первый год риск в одной сделке будет 10%. Во второй год значение MM делится на 2, при условии сохранения системой стабильных показателей доходности. На третий год берется оптимальное значение MM.

Для рассматриваемой системы риск в 12% приемлем. Полученные ранее значения параметров системы остаются прежними. Эти значения можно будет использовать при реальной торговле в 2010 году.

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

Исходный код системы:

Inputs: LeCC1(20), LeCC2(10), HH(100), LL(-100),fma(5),sma(34),ff(2),ss(5);
vars:cc(0),ccAv(0),fast(0),slow(0),trend(0);

cc = CCI(LeCC1);
ccAv = Average(cc, LeCC2);

fast = $$_ZX (fma, sma, ff);
slow = $$_ZX (fma, sma, ss);
{-------------------------------------------------------------------------------------}
if ccAv[1] >= HH and ccAv < ccAv[1] then trend = -1 ;
if ccAv[1] <= LL and ccAv > ccAv[1] then trend = 1 ;

if trend = 1 then begin
if fast > slow and fast[1] < slow[1] and fast > fast[1] then buy at market ;
end;

if trend = -1 then begin
if fast < slow and fast[1] > slow[1] and fast < fast[1] then sell at market ;
end;
{--------------------------------------------------------------------------------------}
vars:mp(0);
mp = marketposition;

if mp = 1 then begin
if fast < slow and fast[1] > slow[1] and fast < fast[1] then exitlong at market ;
end ;

if mp = -1 then begin
if fast > slow and fast[1] < slow[1] and fast > fast[1] then exitshort at market ;
end ;

Начальные параметры системы:


Пример графика со сделками:


Показатели работы системы на всей истории:


Кривая доходности для всей истории:


Настраиваем систему для получения максимальной доходности на интервале [2001-2007]. Такая настройка позволит оценить потенциал системы и провести исследование ее наиболее сильных сторон. В параметрах системы указываем комиссию в размере 5 пунктов, так как кроме спреда надо учесть еще и средний отрицательный ролловер. После настройки проверяем показатели системы на интервале истории [2008-2009]:


Результат работы системы:


Кривая доходности свидетельствует о наличии стабильной прибыли.


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


Средняя убыточная сделка 168 пунктов. Среднестатистический откат для GBPUSD равен 162 пункта. Использование фиксированного стопа было бы для этой системы оправдано. Максимальный убыток в 568 пунктов свидетельствует о неадекватно большом потенциальном риске.


Поскольку система работает без стопов, объем потери в каждой сделке никак не ограничен. На истории максимальная потеря составляет 568 пунктов. Будем использовать это значение как базу для оценки потенциальной доходности. Для оценки доходности придется использовать метод фиксированной доли. Весь торговый депозит разделим на равное число долей. Каждая доля – максимальный убыток, который можно позволить потерять в одной сделки. Поскольку стопа как такового нет, использовать максимальную потерю на истории для оценки потенциальной доходности, конечно же, не правильно. Но поскольку других вариантов для оценки нет, возьмем объем максимального убытка (568 пунктов).

Сколько убыточных сделок мы можем совершить, прежде чем система потеряет все средства и торговля остановится? На истории мы видим, что максимальная серия убыточных сделок подряд – три. Я использую следующую формулу для вычисления объема требуемого депозита:

Максимальный убыток в одной сделке * Максимальную серию убыточных сделок * 3 + 1

Таким образом, депозит для этой системы должен выдержать серию из 10 убыточных сделок подряд. Размер депозита получается (3 * 3 + 1) * 568 = 5680$ (в отчете работы системы 1 пункт = 1$). Потенциальную доходность системы мы видим в столбце FixFrac.

Рассмотрим все сделки системы и попробуем найти рациональное зерно.



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


Тестовая торговля на платформе брокера.

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

У каждого форекс брокера торговля имеет свои нюансы, которые лучше и ЗНАЧИТЕЛЬНО ДЕШЕВЛЕ выявлять во время виртуальной торговли или реальной торговли с малым депозитом. Многие форекс брокеры пишут, что демо-трейдинг ничем не отличается от реальной торговли. Может быть, для какой-то компании дела так и обстоят. Однако за десять лет мне не встретился ни один форекс брокер, торговля с которым не имела бы свои уникальные нюансы, выяснившиеся только после начала виртуальной или реальной торговли по конкретной системе.


Резюме.

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

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

Удачной торговли!


Редакция 2.
Обновлено 23.11.2009 10:31
 

Комментарии  

 
+1 #1 Андрей 19.11.2009 20:15
Просто супер статья, давно таких не читал. Сам торгую по методике пробоя, правда отлавливаю движения подлиннее.
Цитировать
 
 
0 #2 Ольга 22.11.2009 21:00
Здравствуйте, Павел!
Прочла тут интересную статью по ММ. автор попытался оптимизировать прибыль посредством различных способов управления капиталом. Хотелось бы услышать ваше мнение на этот счет. Если не сложно.
articles.mql4.com/ru/601

спасибо!
Цитировать
 
 
+5 #3 Gelium 23.11.2009 07:47
Как писал Эрик Бернс, если что-то должно быть доказано, оно будет доказано.

Статья articles.mql4.com/ru/601 бесполезная по следующим причинам:

1. При тестировании системы с использованием Optimal F, доходность по годам должна разделяться. В начале каждого года начальный капитал должен инициализироват ься заново. Об этом писал в статье выше. Автор же берет общую доходность за 8 лет, как будто инвестиции делаются только на такие периоды и динамика рынка должна повторяться из года в год. Оптимальный процент риска напрямую зависит от доходности системы в течение года, а динамика различных лет разная. И брать один оптимальный процент, который получается в результате реинвестировани я всех денег для всей истории, не правильно.

2. Эта формула не правильная:

RF (Recovery Factor) = Total Net Profit / Maximal Drawdown

Правильная формула:

RF (Recovery Factor) = Year Net Profit / Maximal Drawdown Percent

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

3. Далее автор делает изящный финт ушами. Оптимизирует систему, используя торговлю фиксированной долей (0.1 лота), применяет к полученным параметрам управление капиталом оптимальным процентом (Optimal F) и пишет, что Optimal F работает плохо. Конечно же, результат будет плохой, так как настройка делается для одной методики управления капиталом, а оценивается в итоге другая методика.

4. Корень из депозита – это тот же Optimal F, только коэффициент значительно меньше. Если автор этого не понимает и считает это отдельной методикой управления капиталом, то о чем это говорит?

5. Если автор ставит своей целью получать минимальную просадку, то торговать надо 0.01 лота и депозит брать побольше. Если же цель стоит в получении максимальной стабильной прибыли, то лично мне безразлично какая будет просадка. Главное – доход в конце года. При правильной настройке системы даже просадка в 80% не страшна. А портфель торговых систем и инструментов будет компенсировать волатильность баланса.

6. Автор замечает просадку в 30% при применении Optimal F. Даже ролик прилагает. Однако он не замечает, что доходность системы возрастает с 9911$ до 1989938$.

Готовы вы перетерпеть просадку в 30% ради увеличения доходности в 200 раз?

Достаточно интересны комментарии к статье на сайте MQL. Читатели статьи не думают и просто принимают на веру результат чужого мнения. Был только один комментарий, который свидетельствова л о наличии мышления.

Если вы хотите использовать риск оптимальной долей (Optimal F), то стоит почитать хотя бы начало у Винса. Рядом с книжкой лежит файл для расчета Optimal F.
Цитировать
 
 
+2 #4 Gelium 23.11.2009 08:15
Следующая статья articles.mql4.com/ru/617 повеселила изрядно.

На 12 листах автор делает примерно следующее:

Возьмем систему, сделки которой не связаны между собой, и поищем между ними связь. Проводим кучу вычислений и... О Господи! Связи между отдельными сделками действительно нет! Результат каждой новой сделки случаен по отношению к предыдущей!

Ну что на это можно сказать? Если человек не понимает, что результат его вычислений предопределен самой постановкой задачи, то он либо слишком заумен, либо идиот. В данном случае скорее первое, чем второе.

Интересно, среди комментариев к статье так же есть только один комментарий, думающего человека, который обращает внимание автора на бесполезность его усилий. Остальные все принимают на веру.
Цитировать
 
 
0 #5 Ольга 23.11.2009 16:24
Ой, е-мое! только дошло до меня....Автор замечает
Так это ж грааль, в чистом виде!

Вы писали, что автор не замечает, что при просадке в 30% доходность системы вырастает до................... атас!
Цитировать
 
 
0 #6 bondar 16.12.2009 04:02
Уважаемый Гелиум, не мог бы ты выложить уже готовый файл или код вот этой системы, а то я как новичок старался делать методом копирования и EasyLanguage выдавал ошибки, я ж не могу на лету понять в коде где и что нужно объявлять, например что нужно вписать в INPUT а что в VAR . Хотелось бы видеть то что читаю и у себя на графике. Если её нет на сайте то вышле мне по почте
Цитировать
 
 
0 #7 Ольга 21.12.2009 09:13
Здравствуйте, Павел!
Хочу попросить Вас выложить историю операций по первой протестированно й стратегии в данной статье. Т.е. конкретно, к примеру, 01.01.01 buy по такой-то цене, стоп такой-то результат такой-то (как обычно при тестировании стратегии получается отчет). А то я никак не могу понять, где закралась ошибка в советнике, который написали по вашей тс для МТ4.
Да и еще у меня к Вам вопрос: сделок после оптимизации стратегии осталось очень немного, как на Ваш взгляд, можно данную стратегию использовать на других валютных парах ?
Заранее спасибо!
Цитировать
 
 
0 #8 Gelium 21.12.2009 11:26
Отчет работы системы: download.gelium.net/.../...
Цитировать
 
 
0 #9 Gan 12.01.2010 20:21
Хорошая статья, и в определенное время я приходил к тем же выводам - имею в виду распечатки графиков и всех сделок.
Павел, позвольте отвлеченный от темы вопрос. Можно ли в настоящее время реализовать торговый автомат на связке Омега + Квот рум - Трайд рум ?
Рано или поздно возникает такой вопрос... на тему создания торговых систем. )) Может это появится в следующей редакции статьи ?
Цитировать
 
 
0 #10 Gelium 13.01.2010 08:56
Цитирую Gan:
Павел, позвольте отвлеченный от темы вопрос. Можно ли в настоящее время реализовать торговый автомат на связке Омега + Квот рум - Трайд рум ?


Насколько мне известно, в ближайшее время API к TradeRoom Forexite выпускать не планирует. Можно подумать на тему самостоятельног о автоматизирован ия процесса с помощью сторонних утилит. Например, Automate или iMacros для FireFox. Но мне кажется, что для систем, использующих частую установку ордеров или торговлю по маркету, проще просто найти готовое решение. Через тот же MT4.
Цитировать
 

www.gelium.net

Комментарии к статьям:

    Gelium:
    Подправил: download.gelium.net/.../... (http://www.download.gelium.net/Indicators/GP_MOUNT_2010.03.11.ELS)
    Подробнее...

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

    Oleg:
    Да нет... не в этом дело. В оригинале расширение другое, я представил исправленное. Ошибка обнаружилась после попытки прочтения полученного файла... Кстати, а что имеется ввиду под переменной "откат" ...
    Подробнее...

    Sergej:
    Заработало! Большое спасибо! Из корня C: вообще удалил rasmon и ddefact, затем как в инструкции, если rasmon там остается, то установка подвисает на 95% Еще раз спасибо!
    Подробнее...

    Gelium:
    Скопируйте ddefact.bin и rasmon.bin в корень диска C. Далее переустановите ProSuite. Переустанавлива ть Winows не надо, должно и так заработать.
    Подробнее...