4. Создание теста системы в Метасток (Creating a System Test Metastock)

Каждая торговая система содержит четыре правила торговли. Правила торговли определяют, когда должны быть длинные/короткие позиции открыты/закрыты. Торговая система также может иметь  оптимизационные переменные и стопы.

Чтобы создать новую систему, щелкните по клавише “New” в  диалоге “System Tester”. МетаСток может запомнить до 1000 систем.  После того как Вы выберите указанную выше кнопку появится диалог “System Editor”.

4.1 Диалог «Редактор системы» (The System Editor Dialog)

Диалог  “System Editor” предлагает вам ввести имя системы, ее краткое описание и  определить четыре торговых правила. В торговых правилах используется синтаксис формул  подобный синтаксису для разработки пользовательских индикаторов (см. Creating Your Own Indicators). Этот синтаксис очень похож на синтаксис, используемый для ввода формул  в (развернутые страницы - spreadsheets). Если Вы недостаточно знакомы с разработкой пользовательских индикаторов, Вам необходимо прочитать раздел  справочник формул (Formula Tutorial).

Помните, что торговые система может находиться только в одном из трех состояний: длинной или короткой позиции или с закрытыми позициями.

 

После выхода из «редактора»  Вы можете специфицировать опции касающиеся управления деньгами (какие позиции открывать, комиссионные и т.п.)  в диалоге «System Testing Options» (см. System Testing Options).

Вы используете четыре радио-кнопки, чтобы выбрать правило, а затем его отредактировать.

Enter Long. (Вход в длинную позицию) Это правило указывает, когда система должна открыть длинную позицию.  Длинную позицию можно открыть только, если система находится в короткой позиции или без открытых позиций. Если система находится в длинной позиции, это правило игнорируется.

Close  Long. (Выход из длинной позиции) Это правило указывает, когда система должна закрыть длинную позицию.  Если система находится в короткой позиции или «вне рынка»,  это правило игнорируется.

Enter Short. (Вход в короткую позицию) Это правило указывает, когда система должна открыть короткую позицию.  Короткую позицию можно открыть только, если система находится в длинной позиции или без открытых позиций. Если система находится в короткой позиции, это правило игнорируется.

Close Short. (Выход из короткой позиции) Это правило указывает, когда система должна закрыть короткую позицию.  Если система находится в длинной позиции или «вне рынка»,  это правило игнорируется.

4.2 Синтаксис торговых правил (Trading Rule Syntax)

Торговые правила вводятся с использованием синтаксиса подобного таковому у пользовательских индикаторов (см. Formula Tutorial). Этот синтаксис очень похож на синтаксис используемый для ввода формул в (spreadsheets?).

Торговые правила всегда возвращают значение «истинна» или «ложь». Если правило возвращает значение «истинна»,  то соответствующая торговая операция выполняется (покупка, продажа и т.п.). Если возвращается  «ложь», никаких действий не производится.

Следующий пример иллюстрирует торговое правило:

Enter Long: cross(CLOSE, mov(CLOSE,12,Simple))

Согласно этому правилу система должна открыть длинную позицию когда цена закрытия пересечет снизу вверх 12-дневную скользящую среднюю этой цены.

Подобно этому можно написать другое правило:  открыть длинную позицию, если MACD больше 0. ("macd()" - является функцией, см. MACD).

Enter Long:       macd() > 0

Все пользовательские функции для индикаторов (подобно macd()) могут использоваться в качестве торговых правил. Специфические пользовательские индикаторы могут делать ссылки на формулы типа fml() (см. Formula Call) как показано ниже:

Enter Short:       fml("My Formula") > 0

Вы можете комбинировать несколько функций  в торговом правиле используя операторы AND и OR как показано ниже. См. (Using "And" and "Or" Operators).

Enter Long:       macd() > 0 AND CLOSE > mov(CLOSE,12,S)

Приведенное выше правило требует, чтобы MACD было больше 0, и чтобы цена закрытия была больше ее 12-дневной скользящей средней.

Следующее правило использует оператор  «OR», чтобы генерировать торговую операцию, к когда MACD падает ниже 0, или когда цена закрытия падает ниже ее скользящей средней.

Close Long:       macd() < 0 OR CLOSE < mov(CLOSE,12,S)

В торговом правиле может присутствовать несколько операторов AND, OR.

Наилучший путь для контроля поведения нескольких операторов AND и OR в торговых правилах - использование скобок, как показано ниже:

Enter Long:       (macd() > 0 AND C > 100) OR H-L>5

Это торговое правило генерирует торговую операцию, если выполняются следующие условия:

MACD больше 0 и цена закрытия больше100 (т.е. выполнены оба условия) или когда, разница максимальной и минимальной цен больше 5.

Вы можете щелкнуть по клавише «Functions» (см. Pasting Functions Into Formulas),  когда редактируете торговые правила (эта кнопка активна, когда редактируется правило, но не имя, или описание).  Появится  диалог «Paste Functions» , содержащий список  имеющихся функций. Двойной щелчок по имени функции вставит ее в торговое правило на место текущей позиции курсора.

Торговое правило может оставаться пустым. Однако, пустое торговое правило никогда не генерирует торговых операций. Торговые правила имеют доступ только к ценам ценных бумаг (максимальная, минимальная, закрытия и т.д.) и пользовательским «индикаторным» функциям (см. Functions). Торговые правила не могут ссылаться сами на себя (например, на число дней от последней торговой операции). Однако, различные стопы (см. Entering Stops) выполняют эти функции.

Специальная переменная, называемая переменной «Р» может быть использована для ссылок на необходимые цены или индикаторы. (См. "P" Data Array Identifier для более подробной информации. См. Using the Alert() Function

4.2.1 Функция Alert  (Using the Alert() Function)

Функция Alert используется в соединении с другими функциями, чтобы возвратить значение «истинна»  для определенного числа периодов. Функция возвращает значение «истинна» за определенное число периодов, даже если была генерирована другая торговая операция.

Следующий пример иллюстрирует использование функции Alert.

Enter Long:   RSI(14) < 30 AND alert(VOLUME > 500,3)

При вводе предыдущей формулы, как  правила для входа в длинную позицию система должна открыть таковую, если RSI меньше 30 и объем был больше 500 в какой либо из трех предыдущих торговых дней. Условие "VOLUME > 500"  возвращает значение «истинна» за все  три временных периода, даже если в какой либо из этих трех дней было снижение объема ниже 500.

4.3 Использование стопов (Entering Stops)

В дополнении к торговым правилам каждая торговая система может иметь до пяти стопов. Стопы используются для того, чтобы закрыть длинную и/или короткую позицию на основании данных о прибыли/убытках во время данной торговой операции. Например, стоп максимального убытка “Maximum Loss” закроет позицию, если  убытки будут больше специфицированной величины.

Когда вызывается стоп, позиция закрывается независимо от текущего статуса вашего торгового правила.

Вы можете специфицировать параметры, при которых вызываются стопы, а также позиции, которые они могут закрыть (длинная и/или короткая).

Стопы автоматически учитывают комиссионные за открытие и закрытие позиции. Например, стоп Максимального убытка (Maximum Loss) знает величину Ваших  комиссионных за закрытие позиции и следит за тем, чтобы при ее закрытии не была превышена величина максимально возможного  убытка даже после уплаты комиссионных.

Установка стопов производится после щелчка по кнопке “Stops” в диалоге “System Editor dialog”.

4.3.1 Рентабельный стоп (Breakeven)

Этот стоп закрывает открытую позицию, как только возникает угроза убытков по отношению к денежному балансу существовавшему на момент открытия позиции.

Стоп располагается на цене, где позиция может быть закрыта с сохранением  текущего денежного баланса (т.е. баланса равного сумме денег при открытии позиции)

Чтобы избежать активации этого стопа каждый раз при открытии позиции (т.к. величина денежного баланса из-за комиссионных при открытие позиции уменьшается), возможность активации этого стопа «включается»  только когда повышается цена акций и позиция становиться прибыльной или же величина прибыли повышается выше уровня (floor level) специфицированного пользователем.

Совет: Если «floor level»  установить на 0, то рентабельный стоп  может активироваться после точки, где позиция может быть закрыта без потерь.

4.3.2 Инактивация (Inactivity)

Данный стоп закрывает открытую позицию, если на рынке не происходит минимального положительного изменения цены в течении определенного времени. (Положительное изменение цены это ее движение вверх при длинной позиции, и ее движение вниз при короткой позиции).

Напечатайте Минимальное изменение цены (Minimum Change) и длительность периода (Periods). Метод (Method), при помощи которого рассчитывается Минимальное изменение цены, может быть специфицирован как процентный (Percentage) или в абсолютных единицах (Points).

Например, если Вы определили 1% как минимальное изменение цены в течении 20 торговых дней, МетаСток автоматически закроет Вашу длинную (короткую) позицию, если цена акций не вырастет (снизится) как минимум на 1% в течении 20-дневного «окна».

Этот стоп анализирует, только изменение цены, но не прибыли, и игнорирует комиссионные.

4.3.3 Максимальный убыток  (Maximum loss)

Этот стоп закрывает длинную позицию, если величина убытков превышает Максимально установленное значение. (Maximum Loss)

Например, если Вы установили «Maximum Loss» - 5%, позиция будет закрыта, если  убыток превысит 5% от Вашей текущей прибыли (включая комиссионные).

Внимание! Если Вы установите значение «Maximum Loss», которое будет меньше или равно величине комиссионных за вход в позицию, то каждая торговая операция будет прерываться немедленно после открытия позиции, т.к. все операции будут убыточными уже в момент входа в позицию.

4.3.4 Плановая прибыль (Profit target)

Этот стоп закрывает  позицию, если достигнут уровень запланированной прибыли.

Например: если Вы запланировали 10% прибыли, то открытые позиции будут закрыты при ее 10-процентном увеличении с учетом комиссионных.

4.3.5 Подтягивание (Trailing)

Этот стоп закрывает позицию, когда происходит потеря определенного количества (специфицированного ранее Риска прибыли - Profit Risk) от  текущей прибыли. Т.е. каждый раз, когда позиционная прибыль достигает нового максимума, то этот стоп подтягивается на уровень, определенный в Profit Risk относительно этого нового максимума.  Величина возможной потери специфицируется в поле «Profit Risk»  при помощи процентного метода или абсолютных значений.

МетаСток предоставляет Вам возможность определить число периодов в течении которых стоп будет игнорироваться. Например, если Вы специфицируете «4», то этот стоп будет иметь временной лаг в 4 периода. Это означает, что четыре последних дня (прибыльных или убыточных) будут игнорироваться для расчета текущего уровня стопа. Это фильтрует колебания цены (вверх или вниз), которые появляются в  последние четыре дня.

Предназначение этого стопа служит в фиксации прибыли, но не ограничении потерь. Т.к. он только уменьшает величину прибыли, которая может быть потеряна. Убытки лимитирует стоп максимальной потери (Maximum loss stop).

Поскольку подтягивающийся стоп определяется уровнем прибыли, а не уровнем цены, то ненужно и специального рассмотрения этого стопа для коротких позиций. Например, если 5% специфицированно для Риска прибыли с периодом 0, а Ваша текущая позиция имеет прибыль $100.00. Тогда стоп будет располагаться на цене, при которой Ваша прибыль могла бы снизится до $95.00 или меньше.

5. Копирование и удаление тестов систем (Copying and Deleting System Tests)

Копию выбранного теста системы  можно сделать при помощи кнопки  «Copy»  диалога  «System Tester dialog». Это полезно в тех случаях, когда синтаксис планируемого нового теста системы похож на синтаксис уже созданного  теста.

Например, если система «А»  похожа на запланированную новую систему «В», необходимо в диалоге «System Tester dialog» выделить имя системы «А» и щелкнуть по кнопке «Copy» , затем в появившемся окне «System Editor dialog» отредактировать имя системы, внести необходимые изменения в формулу и нажать клавишу  <OK>.

Удаление тестов систем производиться при помощи кнопки «Delete» в диалоге «System Tester dialog».

Укажите, будете ли Вы удалять тест (тесты) системы в целом или только отчеты по тесту системы. Если Вы выбираете первое, то отчеты  все равно удаляются вместе с тестом.

6. Печать тестов систем (Printing System Tests)

Вы можете напечатать названия тестов систем и/или  их формулы при помощи диалога «Print dialog». Чтобы вывести этот диалог, щелкните по кнопке «Print» в диалоге «System Tester dialog».

Print What.  (Что печатать) Отметьте, будете ли Вы печатать только имена тестов или имена и формулы вместе для отмеченных заранее тестов.

Copies. (Копии) Введите количество необходимых копий.

Print Range. (Диапазон печати) Отметьте, будете ли Вы печатать только выбранные тесты или все тесты в целом.

 

"Фондовый навигатор" - про фондовый рынок, интернет-трейдинг, фундаментальный и технический анализ, торговые системы

 

Добавить комментарий


Защитный код
Обновить

Комментарии