2.2. Пример торговой системы.
Пусть у нас возникла идея создать торговую систему на\r\nоснове хорошо известного индикатора RSI. Это первый этап
64
создания системы. Систему будем создавать в том же порядке, в\r\nкаком эта процедура рассматривалась в первой главе. Для удобства\r\nбудем нумеровать те условия, которые мы используем для создания\r\nторговой системы.
1. Будем создавать систему для работы с швейцарским франком.
2. Данные фундаментального анализа мы учитывать не\r\nбудем.
3. Мы будем создавать систему для работы внутри дня, на\r\nчасовых свечках.
4. В качестве индикатора будем использовать RSI. RSI(n)\r\nозначает, что для вычисления RSI используется n свечей.
Предположим, что система будет работать по тренду. Если\r\nона даст хорошие результаты для работы по тренду, можно будет\r\nпопробовать модернизировать ее для работы в канале.
Для определения направления тренда воспользуемся\r\nиндикатором RAVI. Он может быть вычислен в MetaStock по следующей формуле:
(MOV(c,7,s) - MOV(c,65,s))/ MOV(c,65,s),
где MOV(c,n,s) означает простую среднюю цену закрытия,\r\nвычисленную за период в n свечей. Для дальнейшего использования\r\nсоздадим заказной индикатор и обозначим его RIVA. Будем\r\nсчитать, что тренд направлен вверх, если RIVA возрастает, и\r\nнаправлен вниз, если RIVA убывает. В MetaStock условие\r\nвозрастания RIVA можно записать так:
REF(fml(“RIVA”),-1) < fml(“RlVA”)
а условие убывания записывается так:
REF(fml(“RIVA”),-1) > fml(“RlVA”)
Формула RFF(A,-N) означает значение величины A\r\nвычисленное N периодов назад.
Например, REF(c,-3) означает цену\r\nзакрытия 3 часа назад, если работаем с часовыми свечами или\r\nцену закрытия три дня назад, если работаем с дневными свечами.65
Фигуры технического анализа при построении системы\r\nиспользовать не будем.
Комбинации свечей при построении системы использовать\r\nне будем.
Правила открытия и закрытия позиций с учетом сказанного\r\nвыше мы определим следующим образом. Длинную позицию надо\r\nоткрывать, если RSI пересекает снизу вверх нижний уровень и\r\nтренд при этом направлен вверх (RIVA возрастает). Эти же условия\r\nиспользуем для закрытия короткой позиции. Короткую позицию надо открывать, если RSI пересекает сверху вниз верхний уровень и\r\nтренд при этом направлен вниз (RIVA убывает). Эти же условия\r\nиспользуем для закрытия длинной позиции. Однако мы пока не\r\nопределили значения трех параметров: количества свечек для\r\nвычисления RSI, величину нижнего уровня и величину верхнего\r\nуровня. А ведь от значений этих параметров сильно зависит\r\nэффективность торговой системы. В MetaStock есть возможность\r\nподобрать значения этих параметров таким образом, чтобы на\r\nтех данных, на которых мы будем тестировать систему, эти\r\nзначения параметров давали максимальную прибыль. Для этого
те параметры, значения которых мы будем подбирать, обозначим\r\nкак ОРТ1, ОРТ2 и OPT3. Для каждого параметра в программе\r\nмы должны задать минимальное значение, максимальное значение\r\nи шаг, с которым программа будет изменять параметры от\r\nминимального значения до максимального. В нашем примере\r\nОРT1 (число свечек для расчета RSI) будет меняться от 6 до 20 с\r\nшагом 2, ОРТ2 (нижний уровень) будет меняться от 15 до 45 с\r\nшагом 5, OPT3 (верхний уровень) будет меняться от 55 до 85 с\r\nшагом 5. С учетом всего сказанного, торговую систему можно\r\nзаписать в следующем виде:
Enter Long:
Cross(RSI(OPT1),OPT2) and REF(fmI(“RIVA”),-1) <
fml(“RIVA”)
66
Close Long:
Cross(OPT3,RSl(OPT1)) and REF(fml(“RIVA”),-1) >\r\nfml(“RlVA”),
Enter Short:
Cross(OPT3,RSI(OPT1)) and REF(fml(“RIVA”),-1 >\r\nfml(“RIVA”),
Close Short:
Cross(RSI(OPT1),OPT2) and REF(fml(“RlVA”),-1) <\r\nfml(“RIVA”).
Функция Cross(x,y) принимает значение 1 ("Истина")тогда,\r\nкогда для текущей свечки у<х, а для предыдущей свечки y>х.
10. В качестве критерия выхода из позиции выберем условие\r\nпотери не более 50% полученной прибыли.
11. Мы не будем использовать ордера для открытия позиции.
12. Определение оптимальной величины стоп-лосса является\r\nсложной задачей. Не вдаваясь в обоснование, определим величину\r\nстоп-лосса в 50 пунктов.
Теперь мы можем тестировать торговую систему. Для этого\r\nнам надо иметь массив данных по котировкам швейцарского франка\r\nза достаточно большой период времени. Если эти котировки\r\nпредставлены в виде часовых свечек, то можно сразу приступить\r\nк тестированию. Если же котировки представлены в другом виде,\r\nто их надо преобразовать в часовые свечки. Максимальная\r\nприбыль, которую нам покажут результаты тестирования, а также\r\nвсе остальные статистические характеристики, полученные в\r\nрезультате тестирования, зависят от того, на каком временном\r\nинтервале мы проводили тестирование. Но в любом случае мы\r\nсможем оценить эту систему и решить, можно ли ее использовать\r\nдля работы, или надо ее улучшить. Рассмотрим тестирование этой\r\nторговой системы с использованием пакета Met Stock.
67
\r\n