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