Д.Катс.Д.Маккормик.Энциклопедия торговых стратегий. Донна л. Маккормик
Скачать 5.96 Mb.
|
ГЛАВА 7 Входы на основе осцилляторов Осцилляторы популярны у трейдеров, использующих технические сис- темы, в течение многих лет. Статьи, посвященные осцилляторам, неред- ко появляются в таких журналах, как Technical Analysis of Stocks and Commodities и Futures. Описанию осцилляторов посвящено множество книг по техническому анализу. Наиболее широко применяются в классическом виде и различных ва- риантах осциллятор Аппеля (1990) — осциллятор схождения-расхожде- ния скользящих средних (так называемый MACD) и гистограмма MACD (MACD-H). Кроме того, популярны стохастический осциллятор Лэйна и индекс относительной силы Вильямса (RSI). В литературе упоминается множество их вариантов. Также следует упомянуть индекс товарных ка- налов Ламберта (CCI), индекс случайного блуждания, который тоже мож- но считать осциллятором, и осциллятор Геда,а на основе регрессионных каналов (1997). В этой главе будут рассмотрены в первую очередь три са- мых известных осциллятора — MACD, стохастический и RSI. ЧТО ТАКОЕ ОСЦИЛЛЯТОР? Осциллятор — это индикатор, обычно основанный на ценах и имеющий тенденцию колебаться или «осциллировать» в некоторых фиксированных или достаточно жестко ограниченных пределах. Осцилляторы характе- ризуются нормализацией диапазона и удалением долговременных трен- дов уровня цен — информация извлекается осцилляторами из таких эфе- мерных показателей, как импульс и перенапряжение. Импульс — это со- стояние, когда цены мощно 'двигаются в данном направлении. Перена- пряжение — это состояние избыточно высоких или низких цен («пере- купленность» и «перепроданность»), когда цены готовы резко вернуться на более разумный уровень. ВИДЫ ОСЦИЛЛЯТОРОВ Существуют два главных вида осцилляторов. Один из них — линейные полосовые фильтры, анализирующие частоту колебаний. К этому классу 158 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК относятся MACD и MACD-H. Другой класс приводит к некоторой норма- лизованной шкале какой-либо аспект поведения цен (к этому классу от- носятся RSI, стохастический осциллятор и CCI); в отличие от первой кате- гории эти осцилляторы не являются, по сути, линейными фильтрами с оп- ределенным фазовым и частотным алгоритмом. Оба вида осцилляторов реагируют на импульс цен и циклические движения, при этом снижая роль трендов и игнорируя долговременные сдвиги; в общем, построенные ими графики имеют ломаный, колеблющийся вид. Осциллятор MACD (осциллятор схождения/расхождения скользящих средних) и его гистограмма MACD-H работают как грубые полосовые фильтры, удаляя тренды и сдвиги, а также высокочастотный шум. При этом анализируются волны или циклы с частотой, близкой к середине полосы пропускания. MACD сглаживает данные, подобно скользящему среднему, в некоторой степени удаляет тренды, выделяет циклы и иногда не запаздывает по отношению к рынку. Хорошим источником по этому осциллятору можно считать работу Элерса (Ehlers,1989). MACD рассчитывается путем вычитания скользящего среднего с длин- ным периодом из скользящего среднего с более коротким периодом. В принципе можно использовать любые виды средних или фильтров низ- ких частот (в классическом MACD использованы экспоненциальные скользящие средние). Ряд вариантов MACD построен на более сложных средних, например VIDYA (рассмотрено в главе о скользящих средних), а также на треугольных средних. Помимо собственно MACD используется гистограмма — разность MACD и его скользящего среднего. Во многих случаях скользящее среднее MACD называется сигнальной линией. Стохастический осциллятор часто еще называют индикатором пе- рекупленности/перепроданности. Согласно Лупо (Lupo, 1994), «стохас- тичёский-осциллятор определяет положение последнего рыночного дей- ствия по отношению к минимальной и максимальной цене за последние n дней». В этом отношении стохастический осциллятор измеряет импульс цены, он показывает, стремится ли рынок к новому максимуму или мини- муму или находится где-то посередине. К стохастическим относится ряд родственных индикаторов: Быстрый %К, Медленный %К (также называемый Быстрым %D) и Медленный %D. Быстрый %К измеряет в процентах расположение последней цены зак- рытия относительно максимального максимума и минимального мини- мума за последние n дней, где n — длина заданного периода индикатора. Медленный %К, он же Быстрый %D, рассчитывается аналогично Быст- рому %К, за тем исключением, что числитель и знаменатель формулы для Быстрого %К предварительно усредняются за последние 3 дня. Мед- ленный % D — просто скользящее среднее Медленного %К с периодом 3 дня. Его иногда используют как сигнальную линию, подобно тому, как скользящее среднее MACD используют как сигнальную линию для MACD. ГЛАВА 7 Входы НА ОСНОВЕ ОСЦИЛЛЯТОРОВ 159 A(i) = Максимум из H ( i ) , H(i - 1 ) , ... Н(1 - n + 1) B(i) = Минимум из L ( i ) , L(i - 1), ... L(1 - n + 1) D(i) = [A(i) + A(i - 1) + A(i - 2)]/3 E(i) = [B(i) + B(i - 1) + B(i - 2)]/3 F(i) = [ C ( i ) + C ( i - 1) + C(i-2)]/3 Быстрый %К для i-го дня = 100 X [C(i) - B(i)]/[A(i) - B(i)] Медленный %K = Быстрый %D = 100 X [F(i) - E(i)]/[D(i) - E(i)] Медленный %D = простое скользящее среднее Медленного %К с периодом 3 дня U(i) = Максимум из 0, C(i) - C(i - 1) D(i) = Максимум из 0, C(i - 1) - C(i) АU(i) = [(n - 1) X АU(i - 1) + U(i)]/n AD(i) = [(n - 1) X AD(i - 1) + D(i)]/n RSI(i) = 100 X AU(i)/AU(i) + AD(i)] В этих уравнениях i означает номер торгового дня, H(i) — максимум дня i, L(i) — минимум дня i, C(i) — цену закрытия дня i. Все остальные переменные — производные серии данных, необходимые для расчета различных стохастических осцилляторов. Как видно из уравнений, сто- хастические осцилляторы выделяют относительное положение цены за- крытия в пределах, установленных недавними максимумами и миниму- мами: высокие значения (до 100) возникают, когда цена закрытия близка к высшим значениям недавних цен, низкие (до 0) — когда цена закрытия близка к низшим. Индекс относительной силы (RSI) — еще один популярный осцилля- тор, который оценивает по процентной шкале относительное движение вверх или вниз. Классический RSI использует экспоненциальные сколь- зящие средние, отдельно рассчитанные для движения вверх и вниз. Их сумма и дает процент общего движения. Один из вариантов использует для вычисления простые скользящие средние. Формула классического RSI приведена ниже: Известно много вариантов стохастического осциллятора; например, Блау (Blau) в 1993 г. описывал вариант с двойным сглаживанием. Уравне- ния для классического стохастического осциллятора Лэйна опубликова- ны в статье Мейбаха (Meibahr, 1992). Ниже приведена одна из версий этих уравнений: Период индикатора обозначен как n, движение вверх — U, движение вниз — D, среднее движение вверх — AU, среднее движение вниз — AD. Номер торгового дня обозначен буквой i. Обычно рассчитывается RSI с периодом 14 дней (n = 14). У Стара (Star, 1993) можно найти подробное обсуждение этого индикатора. 160 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК Кроме того, существует индекс товарных каналов, или CCI, рассмот- ренный в работе Девиса (Davies, 1993). Этот осциллятор подобен стохас- тическому с усиленным акцентом на статистику: вместо оценки послед- ней цены закрытия в рамках недавних максимумов и минимумов он оце- нивает ее относительно границ, определяемых медианой и средним от- клонением цены за последнее время. Хотя далее этот осциллятор не бу- дет рассматриваться, для заинтересованных читателей мы приводим его определение: Х(i) = H(i) + L(i) + C(i) A(i) = Простое скользящее среднее от X(i) с периодом n дней D(i) = Среднее от [Х(i - k) - A(i)] для k от 0 до n - 1 CCI(v) = [Х(i) - A(i)]/[0,015 X D(i)] В уравнениях индекса товарных каналов X — так называемая меди- анная цена, А — скользящее среднее X, D — среднее абсолютное откло- нение, n — период индикатора, i — номер торгового дня. На рис.7-1 изображен график S&P 500, к которому приложены гра- фики трех наиболее популярных осцилляторов с прилагающимися к ним сигнальными линиями, медленными версиями и т.п. На графике стохас- тического осциллятора также изображены фиксированные пороги на уровнях 80 и 20, для RSI эти пороги традиционно помещают на уровнях 70 и 30. Рисунок показывает графики осцилляторов и их реакцию на изме- нения цен, а также иллюстрирует метод расхождения, о котором речь пой- дет ниже. ПОЛУЧЕНИЕ СИГНАЛОВ ВХОДА ПРИ ПОМОЩИ ОСЦИЛЛЯТОРОВ Существуют различные способы применения осцилляторов для получе- ния торговых сигналов. В этой главе будут рассмотрены три из них. Один метод состоит в том, чтобы использовать осциллятор как инди- катор перекупленности/перепроданности. Покупка происходит, если зна- чение осциллятора опускается ниже некоторого порога в зону перепро- данности и затем возвращается обратно. Продажа происходит, если ос- циллятор поднимается выше порога перекупленности и затем опускается обратно. Существуют традиционные пороги, используемые с разными осцилляторами. Также осциллятор (вернее, его скользящее среднее) может служить сигнальной линией, и, если осциллятор пересекает свое среднее вверх или вниз, подаются соответствующие сигналы. Эти сигналы могут использо- ваться одновременно для входа и выхода, а также только для входа со стан- дартным выходом. ГЛАВА 7 Входы НА ОСНОВЕ ОСЦИЛЛЯТОРОВ 161 Медленный стохастический осциллятор Рисунок 7-1. Осцилляторы и расхождение графиков цены и осцилляторов. Еще один известный метод — поиск расхождений осциллятора и цены, описанный МакХортером (McWhorter, 1994). Расхождение получается тогда, когда цены образуют новый минимум (ниже предыдущих миниму- мов) , а осциллятор — более высокий минимум (выше предыдущих мини- мумов). Такое расхождение дает сигнал к покупке. В противоположной ситуации, когда цены образуют новый максимум, а осциллятору не уда- ется достичь предыдущего максимума, что является признаком потери ценового импульса, генерируется сигнал к продаже. Расхождение иногда легко увидать глазами, но для программы с простыми правилами найти его почти всегда затруднительно. Механическая генерация сигналов на основе расхождения требует алгоритма распознавания образов, что ус- ложняет систему и, следовательно, затрудняет ее тестирование. Впрочем, получать такие сигналы можно, хорошим примером служит программа Divergengine от Ruggiero Associates. Пример расхождения можно увидеть на рис. 7-1. В использовании осцилляторов для получения сигналов существует ряд принципиальных моментов, например сглаживание данных и своевремен- 162 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК ность входов. Например, MACD иногда обеспечивает сглаживание дан- ных в реальном времени, что позволяет получать лучшие результаты, чем при использовании моделей, основанных на скользящих средних, где пики и провалы на графике значительно запаздывают по сравнению с ценами, а поздние входы снижают эффективность. MACD, со своей стороны, при совпадении собственного периода с циклической активностью рынка обеспечивает примерное совпадение пиков и провалов и сглаживание графика, что также позволяет избежать характерных для скользящих средних многочисленных сделок, вызванных шумом, и повысить прибыль за счет своевременности сделок. Помимо MACD, другие осцилляторы также, как правило, не отстают или даже опережают цены. По рассмотренным ниже причинам обгоня- ющие или одновременные индикаторы вовсе не обязательно дают боль- шие прибыли, чем запаздывающие скользящие средние — своевремен- ность сигналов не обязательно означает их прибыльность. Проблема в том, что даже при наличии некоторых абсолютно точных сигналов, ос- цилляторы будут генерировать множество ложных. В условиях сильно- го тренда многие из ожидаемых разворотов никогда не происходят, и система входит в рынок в неверном направлении. Таким образом, за счет точности теряется надежность. Что важнее — поздний, но надежный вход или ранний, но менее надежный — вопрос отдельного эмпиричес- кого исследования. В принципе эта проблема возникает при использо- вании любого прогностического метода — чем больше задержка, тем точнее (и бесполезнее) прогноз и, чем больше опережение, тем он по- лезнее (и ошибочнее). Эта логика напоминает принцип неопределенно- сти Гейзенберга. В качестве примера получения сигналов входа рассмотрим стохасти- ческий осциллятор: простая модель производит покупку, если значение осциллятора падает ниже традиционного порога перепроданности на уровне 20 и затем поднимается. Продажа производится, когда значение осциллятора поднимается выше традиционного порога перекупленности на уровне 80 и затем снова опускается. Поскольку при таких торговых правилах сигнал на закрытие текущей позиции вряд ли появится скоро, требуется вводить независимый критерий выхода. Трейдеры также ищут модель, называемую «стохастический крюк»: осциллятор достигает ми- нимума, немного поднимается, а затем образует еще один минимум на более высоком уровне. Как только определяется второй минимум, пода- ется сигнал на покупку. Когда эта же модель встречается в перевернутом виде, производится продажа. Как и в случае с пробоями и скользящим средними, для осуществле- ния входов могут быть использованы различные приказы, а именно ры- ночный приказ по цене открытия, лимитный приказ и стоп-приказ. Пре- имущества и недостатки этих входов уже обсуждались в двух предыду- щих главах. ГЛАВА 7 Входы НА ОСНОВЕ ОСЦИЛЛЯТОРОВ 163 ХАРАКТЕРИСТИКИ ВХОДОВ НА ОСНОВЕ ОСЦИЛЛЯТОРОВ Основанные на осцилляторах входы обладают преимуществами опере- жения или совпадения по времени с поведением цены, следовательно, они пригодны для входов, направленных против тренда, и теоретически мо- гут обеспечивать высокий процент выгодных сделок. Осцилляторы обыч- но работают наилучшим образом на циклических или не подверженных трендам рынках. На этих рынках осцилляторы указывают на максимум или минимум еще до начала движения цен. Таким образом, проскальзы- вание минимально или даже отрицательно, и переоценка позиции стано- вится положительной уже при очень малом движении цены. В таких слу- чаях легко получить солидную прибыль даже при неоптимальной страте- гии выхода. Считается, что на рынках тренды присутствуют всего около 30% времени; по нашим данным, на многих рынках — еще реже. При ис- пользовании соответствующих фильтров для избежания осцилляторных входов во время сильного тренда, видимо, можно создать замечательную модель входа. Такое фильтрование — прямая противоположность тому, которое используют при тестировании систем, основанных на пробоях, когда необходимым условием было наличие трендов, а не их отсутствие. Основная слабость простых осцилляторных входов в том, что они ма- лоэффективны при длительных трендах и часто выдают множество лож- ных сигналов разворота. Некоторые осцилляторы легко застревают на крайних значениях, например стохастический нередко имеет значение 100 очень долго, если на рынке происходит сильное направленное движе- ние. Кроме того, большинство осцилляторных моделей не регистрирует тренды, в отличие от систем на скользящих средних и пробоях, которые не пропустят практически ни одного значимого тренда. Многие трейде- ры говорят, что «тренд — твой друг», что большая часть доходов возника- ет после «большой волны» и что прибыль от такого крупного успеха по- крывает частые и мелкие убытки, свойственные для следующих за трен- дом систем. Поскольку осцилляторные входы направлены против тренда, настроены на мелкие движения рынка, особое значение имеет хорошая стратегия выходов для снижения урона, который возникнет при движе- нии тренда против сделок. МЕТОДИКА ТЕСТИРОВАНИЯ Все приведенные ниже тесты были осуществлены с помощью осцилля- торных моделей на портфеле разнообразных ценных бумаг. Можно ли получать прибыльные сделки с осцилляторными моделями? Как они ра- ботают во времени — ухудшается или улучшается их функционирова- ние за последние годы? Целью нашего тестирования был ответ на эти вопросы. 164 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК Во всех тестах использовался стандартный выход, описанный в пре- дыдущих главах. Правила входов будут рассмотрены параллельно с ко- дом модели и отдельными тестами. Сделки закрывались при поступлении приказа на вход в обратном направлении или при исполнении стандарт- ного выхода. Платформа тестирования тоже была стандартной. За последние годы мы закодировали на языке C++ ряд осциллято- ров, описанных в Technical Analysis of Stocks and Commodities и в ряде других источников. В этой главе мы сравниваем работу версий C++ ос- цилляторов MACD, RSI и стохастического с их версиями в TradeStation. В большинстве случаев результаты идеально совпадали, но в одном слу- чае, а именно для Медленного %К, результат разительно отличался. Раз- бор кода показал, что TradeStation рассчитывает Медленный %К как экс- поненциальное скользящее среднее от Быстрого %К. В нашем же коде отдельно рассчитываются простые скользящие средние с периодом 3 дня для числителя и знаменателя формулы Быстрого %К. Согласно уравне- ниям, приведенным Мейбахом (Meibahr, 1992) и другими источниками, правильной является наша версия на C++. Если читатели захотят повто- рить наши расчеты в TradeStation и обнаружат расхождения, мы насто- ятельно рекомендуем проверить функции индикаторов TradeStation. Кроме того, при попытке закодировать правильную версию Медленно- го %К для TradeStation на EasyLanguage мы неожиданно обнаружили, что TradeStation без предупреждения может выдать неверные результа- ты, если одна пользовательская функция вызывает другую. Когда мы из- менили код так, чтобы рассчитывалась промежуточная переменная (что- бы избежать совместных вызовов), были получены правильные резуль- таты. В этих тестах использовалась версия TradeStation 4.02 от 29 июля 1996 г. Нижеследующий код включает большинство использованных в тес- тах моделей входов на основе осцилляторов. Реальный расчет осциллято- ров достигается путем вызова внешних функций. static void Model (float *parms, float *dt, float *opn, float *hi, float *lo, float *cls, float *vol, float *oi, float *dlrv, int nb, TRDSIM &ts, float *eqcls) ( // Выполнение тестирования моделей на осцилляторах // File = xllmodOl.c // parms - набор [1.. MAXPRM] параметров // dt - набор [l..nb] дат в формате ГГММДД // орn - набор [l..nb] цен открытия // hi — набор [l..nb] максимальных цен // 1о - набор [1..пЬ] минимальных цен // cls — набор [l..nb] цен закрытия // vol - набор [l..nb] значений обьема // oi — набор [l..nb] значений открытого интереса // dlrv — набор [l..nb] средних долларовой волатильности // nb — количество дней в наборе данных // ts — ссылка на класс торгового симулятора // eqcls — набор [l..nb] уровней капитала при закрытых позициях |