сравние работы версий C ++ осцилляторов MACD , RSI и стохастического с их версиями в TradeStation
За последние годы мы
закодировали на языке 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 г.
Нижеследующий код включает
большинство использованных в тестах моделей входов на основе осцилляторов.
Реальный расчет осцилляторов достигается путем вызова внешних функций.
Логика кода весьма напоминает программу, использованную для
тестирования скользящих средних. Сначала копируется ряд параметров в местные
переменные для простоты ссылок и считывания дальнейшим кодом. Затем проверяется
наличие непригодных сочетаний параметров, например для MACD (osctype = 4)
длина короткого скользящего среднего должна быть меньше, чем длинного, иначе
тест будет пропущен. В следующем крупном блоке osctype выбирает вид
рассчитываемого осциллятора (1 — быстрый стохастический, 2 — медленный
стохастический, 3 — классический RSI , 4 — классический MACD ) . Осциллятор oscline
затем рассчитывается в виде ряда данных или вектора, генерируются дополнительные
кривые, связанные с ним, например сигнальная линия sigline или медленная
версия осциллятора. Верхний (upperband ) и нижний (lowerband ) пороги
либо рассчитываются, либо задаются. Для стохастического осциллятора используются
стандартные пороги 80 и 20, для RSI — пороги на уровне 70 и 30. Хотя MACD как
таковой не имеет порогов, пороги для него устанавливаются на уровне плюс-минус
полтора стандартных отклонения от нуля. Затем начинается процесс перебора
данных, день за днем.
В цикле перебора данных
представляют интерес два главных блока — первый генерирует сигналы покупки и
продажи, а также цены для лимитного и стоп-приказов, используемых выбранной
моделью. Параметр mode /type выбирает модель: 1 — модель перекупленности/перепроданно-сти,
2 — модель сигнальной линии, 3 — модель на расхождении. При этом используется
один из вышеперечисленных осцилляторов, выбранный параметром osctype . Последний
блок производит вход в рынок согласно выбранному значению параметра ordertype
: 1 — для входа по цене открытия, 2 — по лимитному приказу, 3 — по
стоп-приказу. Затем симулятор использует стандартную модель выхода для закрытия
сделок.
Точные логические основания для
входа будут обсуждаться ниже в контексте индивидуальных тестов, что не требует
от читателя понимания или обращения к коду.
Результаты тестов
Проводилось тестирование трех
осцилляторных моделей входа: на основе понятия перекупленности/перепроданности
(осцилляторы RSI и стохастический), на основе взаимодействия осциллятора с
сигнальной линией (стохастический осциллятор и MACD ) и на основе расхождения
(статистический осциллятор, RSI и MACD ). Все индивидуальные комбинации были
исследованы с входами по цене открытия, по лимитному приказу и по стоп-приказу.
Сравнение результатов всех трех видов входов приведено ниже в данной главе.
Табл. 7-1 и 7-2 содержат
результаты каждого из 21 тестов. Данные распределены по торгуемым финансовым
инструментам, по моделям, показавшим прибыль и убыток в пределах выборки
(табл. 7-1) и вне пределов выборки (табл. 7-2). Первый столбец (SYM ) — это
символ рассматриваемого рынка, первая строка — номер теста. Степень
прибыльности и убыточности рынков для каждой модели указана следующим образом:
один минус (—) означает убыток в $2000 — 4000, два минуса (- -) — убыток более
$4000; один плюс ( + ) означает прибыль $1000 — 2000, два плюса ( + + ) —
прибыль более $2000; пустая ячейка означает прибыль до $ 1 0 0 0 или убыток до
$1999 со сделки.
Статья размещена в рубрике: Виды торговых систем
|