Алиса извлекла циклический торговый сигнал из кривой цен с помощью полосового фильтра. Это, очевидно, работает, когда кривая имеет соответствующий цикл, но не так хорошо, когда цены ведут себя по-другому. Логично было бы снова использовать MMI в качестве фильтра, но с обратным знаком — не торговать в трендовых ситуациях и торговать, когда рынок не показывает тренда. К сожалению, это не сработает. Это связано с тем, что циклическое поведение, которое хочет использовать Алиса, не связано с наличием или отсутствием долгосрочной тенденции.
Очевидно, что правила контртренда немного сложнее, чем простая низкочастотная система предыдущей стратегии. Алиса хочет посмотреть на отдельные кривые данных, чтобы убедиться, что все работает так, как нужно. Для этого она вставляет еще несколько строк в конце сценария:
Боб: «На прошлой неделе я случайно встретил Уоррена Баффета. Я, конечно, спросил его, как лучше торговать. Он сказал так: „Будь жадным там, где другие боятся“».
Алиса: «Интересно. И что это значит?»
Боб: «Разве он не сказал, что должен уйти. Но я думаю, он хотел, чтобы я торговал против тренда».
Чтобы ответить на этот вопрос, Zorro дополнительно анализирует стратегию с помощью метода Монте-Карло. По сравнению с обычным моделированием, метод Монте-Карло дает более точные и менее случайные результаты.
В анализе Монте-Карло кривая доходности, полученная в результате моделирования, разбивается на множество отдельных сегментов, которые меняются местами в случайном порядке.
Некоторые из значений, отображаемых в окне Zorro, получаются непосредственно в результате моделирования, другие — такие как коэффициент Шарпа, кратко затронутый выше, — требуют более или менее сложных расчетов. Все эти значения на самом деле служат лишь для ответа на два вопроса: насколько прибыльной является стратегия? И насколько вероятно получить тот же результат при реальной торговле? Оба аспекта в совокупности дают эффективность — результативность стратегии. На первый вопрос ответить легко, но на второй и более важный вопрос, к сожалению, ответить сложно.
set(LOGFILE);
LOGFILE — это флаг — что-то вроде «переключателя», который можно включить или выключить. Такие флаги «устанавливаются», т.е. включаются, с помощью функции set. Если установлен флаг LOGFILE, сохраняется журнал всех событий во время теста. Вставьте строку, нажмите на [Test], затем откройте файл Alice1a_EURUSDtest.log в папке log редактором SED или любым другим текстовым редактором. Файл представляет собой длинный список записей, похожих на эту:
Запустите Zorro. Выберите скрипт Alice1a и актив EUR/USD (все скрипты и стратегии, описанные в книге, можно скачать с сайта financial-hacker.com/). Убедитесь, что ползунок Период установлен на 60 минут. Затем нажмите [Test]:
Продолжите выполнение сценария. Следующая строка устанавливает стоп-лосс:
Stop = 4*ATR(100);
Stop — это предопределенная переменная. Zorro уже «знает» его, поэтому его не нужно определять с помощью var. Он определяет стоп-лосс, т.е. максимально допустимый убыток. Позиция автоматически продается, если она теряет больше указанной суммы. Здесь этот предел задан 4*ATR(100). Функция ATR является традиционным индикатором — Average True Range.
function run() { vars Price = series(price()); vars Trend = series(LowPass(Price,500)); Stop = 4*ATR(100); if(valley(Trend)) enterLong(); else if(peak(Trend)) enterShort(); }
Это уже целая система. Мы видим, что главная функция теперь называется «run» вместо «main».
Боб занимается валютной торговлей с 1995 г. В некоторые годы его прибыль достигала шестизначных цифр, и единственным предметом его беспокойства была налоговая декларация. Но в последнее время дела идут не очень хорошо. Фактически, в течение последних трех лет он приносил только убытки. Резервы тают. Что-то должно измениться. Но что? Боб уже посетил все существующие семинары по трейдингу. Он уже прочитал все книги по трейдингу. Остается только один вариант. Именно поэтому Бобу сегодня назначена встреча с Алисой.