Звоните с 10 до 20: +7 (499) 403-12-06

Разработка собственных индикаторов

Разработка собственных индикаторов

1.  Что такое “Построитель индикаторов”? (What is the Indicator Builder?)

При наличии стольких встроенных индикаторов которые предлагает МетаСток, Вы можете быть удивлены почему необходимо создавать свои собственные индикаторы. Увы, технический анализ постоянно развивается. Новый хорошо работающий сегодня индикатор может быть вскоре оттеснен другим индикатором. По этим причинам, МетаСток снабжен мощным инструментом называемым Indicator Builder, который позволяет Вам создавать индикаторы.
Прочитав о новом индикаторе в специальном журнале или новой книге Вы имеете шанс воспроизвести этот индикатор при помощи Indicator Builder.
Indicator Builder - мощный инструмент, однако это не является основной особенностью программы. Чтобы эффективно его использовать необходимо разбираться в основных математических концепциях и логических выражениях.
Индикаторы разработанные при помощи Indicator Builder используются точно также как и встроенные индикаторы. Они могут быть “перетащены” с панели Indicator QuickList или же вызваны из диалога Indicators. Если Вы хорошо владеете написанием формул в программах для  электронных таблиц, то Вы легко освоитесь с формулами здесь и можете начинать разрабатывать Ваши индикаторы немедленно. Если же Вы с этим не знакомы, не огорчайтесь, Учебник по формулам (см. Formula Tutorial) поможет вам быстро во всем разобраться.

2. Учебник по формулам (Formula Tutorial)

Формула - математическое выражение того, что Вы хотите определить. Они используются, чтобы определять пользовательские индикаторы, тесты систем (торговых систем), и исследований. Наряду с предопределенными встроенными в Indicator QuickList индикаторами (см. Using the Indicator QuickList), Метасток предлагает мощную коллекцию инструментов, которую Вы можете использовать при разработке Ваших индикаторов. В этой главе объясняется как создать и отобразить эти “пользовательские индикаторы”.
Вы можете разработать свыше 1000 различных “пользовательских” индикаторов. Индикаторы автоматически сохраняются Метастоком и поэтом нет необходимости каждый вводить их заново, когда Вы хотите отобразить индикатор. Формулы создаваемые при помощи меню из Indicator Builder и формулы используемые для расчетов во встроенных индикаторах совершенно независимы друг от друга. Изменения сделанные в формулах пользовательских индикаторов никак не отразятся на встроенных индикаторах.

2.1  Начало работы (Getting Started)

Выведи на экран какой либо график, выберите опцию “Indicator Builder” из меню Tools. На экране появится “Indicator Builder”-диалог.
• Щелкни по клавише New.  Напечатай  имя формулы "Tutorial"
• Щелкни по окошку “Display in QuickList” - наличие галочки в этом окне указывает на то, что данный индикатор можно будет выбрать из меню “Indicator QuickList” на главной панели инструментов.
• Щелкни по окну “Formula edit box” в котором Вы можете начать печатать необходимую формулу.

2.2  Идентификаторы массива цен (Price Array Identifiers)

Идентификаторы массива цен  специфицируют поля цен. Идентификаторами массива цен являются цены открытия (open), максимальная (high),  минимальная (low), закрытия (close), а также объем сделок (volume), количество открытых позиций (open interest) и индикатор.
Например, напечатайте слово “HIGH" and щелкните по клавише OK.  Этим Вы создаете формулу, график которой будет выводить максимальную дневную цену.
Вместо полного имени Идентификаторов массива цен могут использоваться аббревиатуры как показано ниже.
Полное имя Аббревиатура
Open O
High H
Low L
Close  C
Volume V
Interest  OI
Indicator P

2.3  Построение графика пользовательского индикатора (Plotting a Custom Indicator)

• Щелкни по клавише “Indicator QuickList” (см.”Using the Indicator QuickList”), чтобы показать все имеющиеся в наличии встроенные и пользовательские индикаторы.
• Перетащи индикатор с именем "Tutorial" из списка “QuickList” и сбрось его на головную часть графика. Откроется новое внутреннее окно в котором будет отображен график максимальных дневных цен.
• Вы можете отличить “пользовательский” индикатор от  других в списке “QuickList “ по уникальной “иконке”,  расположенной слева от  имени индикатора. 
• Сейчас выберите опцию “Indicator Builder” из меню “Tools” или щелкните по аналогичной кнопке на главной панели инструментов.

2.4  Математические операторы (Mathematical Operators)

Формулы могут содержать следующие математические операторы. (Они также могут содержать  и другие операторы, например, квадратный корень, о которых будет сказано позже)    
+ Сложение
- Вычитание  
* Умножение
/ Деление 
• Выбери формулу с именем  “Tutorial” and щелкните по кнопке “Edit”. 
• Напечатайте в окне “Formula edit box” формулу показанную ниже.
      ( H + L ) / 2
В этой формуле суммируются  максимальная и минимальная дневные цены, а затем это значение делится на 2. Нарисованный ранее график “пользовательского” индикатора будет автоматически обновлен в соответствии с внесенными в формулу изменениями как только Вы покинете Indicator Builder.

2.5  Приоритет операторов (Operator Precedence)

Скобки в предыдущей формуле были использованы для того, чтобы контролировать прецеденс (порядок математических операций). Метасток  всегда в первую очередь выполняет операции внутри скобок. Если скобок нет прецеденс следующий:

- Отрицательные значения
* Умножение
/ Деление
+ Сложение
- Вычитание
< Меньше чем
> Больше чем
<= Меньше чем или равно
>= Больше чем или равно
= Равно
<> Не равно
And Логическое “И”
Or Логическое “ИЛИ”

Выражение “H+L/2” (без скобок) будет калькулироваться Метастоком как “L/2” плюс “Н”, поскольку деление имеет более высокий приоритет (прецеденс). Этот результат будет отличен от значения получаемого в случае "(H + L) / 2."  Для простоты контроля прецеденса (приоритета) мы рекомендуем использовать скобки.

2.6  Формула “Функции” (Formula "Functions")

Наряду с четырьмя  арифметическими операторами, Метасток имеет более 160 “функ-ций”, которые выполняют математические операции. Например, функция “sqrt()” рассчитывает квадратный корень числа.
Напечатай и выведи график формулы  sqrt( CLOSE ). Эта формула  выводит график  квадратных корней цен закрытия.
Как Вы вероятно заметили, этот синтаксис очень похож на синтаксис языка используе-мого в формулах электронных таблиц.
В конце имени каждой функции должны стоять две круглые скобки. Если первым сим-волом после имени функции не является “(“, то будет выдано сообщение об ошибке.

2.7  Параметры функций (Function Parameters)

Функция sqrt() требует одного параметра, находящегося внутри скобок (например, “CLOSE” как в предыдущей формуле). Другие функции, такие как macd(), вообще не требуют никаких параметров.Следующая формула суммирует квадратный корень максимальной цены со значением индикатора MACD.
sqrt( HIGH ) + macd()
Некоторые функции требуют нескольких параметров внутри скобок. Например, для функции “Price Oscillator” {Ценовой осциллятор} (см. ниже) необходимо 4 параметра.
oscp( 10, 20, EXPONENTIAL, % )
В приведенной выше формуле Метасток рассчитывает 10-20 экспоненциальный Цено-вой осциллятор при процентном методе калькуляции.
Если Вы забыли вставить необходимый параметр, Метасток выдаст окно с напоминани-ем о требуемом параметре.

2.8  Контроль ошибок в формулах (Locating Errors in Formulas)

Метасток отлично выполняет работу по отслеживанию ошибок в формулах. Фактически невозможно ввести неправильную формулу. Это не означает, что Ваши формулы всегда будут работать как Вы предполагали, потому что Метасток не знает, что Вы пытаетесь создать. Однако, это означает, что синтаксис формул (а именно, функций, имен, параметров, операторов, скобок и т.д.) всегда будет правильным.
Когда Вы вводите формулу Метасток проверяет ее синтаксис. Если он обнаруживает ошибку, формула будет отображена заново, курсор будет позиционирован в области ошибки  и появился сообщение объясняющее суть ошибки.
Предположим, что Вы хотите отобразить график формулы содержащей 10-дневную экспоненциальную скользящую среднюю цены закрытия. Вы возможно помните, что именем функции скользящей средней является "mov" (см. Inserting Functions, если Вы не помните).
Введите то, что Вам известно
mov
и щелкните по клавише ОК.
Курсор будет позиционирован после имени “mov” и появится сообщение  “символ “(“  должен  стоять непосредственно за именем функции”.
Добавьте  “(“
mov(
и щелкните по клавише ОК.
В результате , курсор будет позиционирован после  “(”, появится сообщение  “Цена или функция предполагается”.
Введите ценовой идентификатор “CLOSE”
mov(CLOSE
и щелкните ОК..
Если Вы продолжите этот процесс  (т.е. частичный ввод формулы и действия в соответ-ствии с сообщением об ошибке), Метасток будет подсказывать Вам  до тех пор пока синтаксис формулы не будет правильным (см. ниже).
mov(CLOSE, 10, EXPONENTIAL)
Это полезный метод! В любое время, когда Вы сомневаетесь в правильности синтаксиса формулы или функции, щелкните по клавише ОК.

2.9  Вставка функций (Inserting Functions)

В предыдущем разделе объяснялось как Метасток помогает корректировать синтаксические ошибки в формулах. В этом разделе  рассказывается как Метасток помогает помнить (и вставлять) 160 функций.
Щелчком по клавише “Functions” в режиме редактирования формулы вызывается диалог. В этом диалоге в левой половине окна Вы обнаружите  список имеющихся в наличии категорий, в правой половине представлены имена функций входящие в выбранную категорию.
Щелчком по клавише “ОК” в окне диалога  “Paste Functions” Вы вставляете соответствующую функцию (функцию на имени которой в данный момент находится “засветка” курсора) в Вашу формулу. Функция может быть вставлена в формулу с описанием необходимых аргументов. Для этого необходимо, чтобы в окошке “Paste Arguments” находился флажок. См. “Pasting Functions Into Formulas”.
Изучение диалога  “Paste Functions” отличный путь для того, чтобы побольше узнать о формулах.

2.10  Написание комментариев (Writing Comments)

Комментарии в формулах заключаются в фигурные скобки  "{" и "}". Следующая формула содержит два комментария.
macd() {the MACD times} * ((H+L+C) / 3) {средняя цена}
При разумном использовании комментарии сильно облегчают понимание сложных формул.

2.11  Подстановка функций ?функция в качестве аргумента другой функ-ции? (Nesting Functions)

Предыдущие примеры используют ценовые идентификаторы (см. Price Array Identifiers) в качестве параметров. Вы также в качестве параметров можете использовать и другие функции, как это показано в следующих трех примерах.
stdev( stoch(5,3) 10 )
mov( rsi(15), 10, SIMPLE)
mov( mov( rsi(15), 20, W), 10, SIMPLE)
В первом примере рассчитывается значение стохастического осциллятора, а затем калькулируется стандартное отклонение значений этого осциллятора за 10-дневный период.
Во втором примере рассчитывается 10-дневная простая скользящая средняя  15-дневного Индекса относительной силы (RSI).
Третий пример показывает расчет 20-дневной взвешенной скользящей средней 15-дневного RSI, а затем рассчитывает 10-дневную простую скользящую среднюю первой скользящей средней.
Этот метод (вставка функции в другую функцию) называется "nesting of functions"

2.12  Функция if() (The if() function)

Функция if() используется для создания общепринятой конструкции (если ... то). Функция включает пять параметров как показано в следующем примере. Эта формула рисует “положительный Объем “ если цена закрытия больше чем средняя цена. В противном случае рисуется “негативный Объем”.
if( CLOSE > (HIGH+LOW)/2, +V, -V )
Хороший пример использования этой функции можно найти в примерах по индикатору On Balance Volume(см. “On Balance Volume”).

2.13  Использование операторов (Using "And" and "Or" Operators)

Если формула требует нескольких условий Вы можете комбинировать эти условия при помощи операторов "and" и "or". Например Вы хотите, чтобы Метасток генерировал +1, если MACD больше 0 и RSI больше 70.
Формула будет выглядеть следующим образом.
If( macd() > 0 AND rsi(14) > 70, +1, 0 )
Вы можете использовать столько условий в формуле сколько позволяет размер. Например:
If(macd() > 0 AND rsi(14) > 70 AND CCI(14) > 100 AND close > mov(close, 10, e), +1, 0)
Вы также можете сочетать AND и OR операторы внутри одной формулы. Например:
If((macd() > 0 OR close > mov(close, 10, e)) AND rsi(14) > 70, +1, 0)
Формула представленная выше возвращает “+1”, если MACD больше 0 или если цена закрытия больше ее скользящей средней и при этом RSI больше 70.
Заметим, что вокруг условия OR были поставлены круглые скобки, это связано с тем, что оператор AND имеет более высокий приоритет и связанное с ним условие в противном слу-чае  было бы  выполнено первым (см. Operator Precedence), что не соответствует нашей задумке.
Операторы  AND и OR почти всегда используются только в функции If( ).

2.14  Ссылка на другие Пользовательские Индикаторы (Referencing Other Custom Indicators)

Пользовательские индикаторы могут ссылаться на другие пользовательские индикаторы при помощи функции fml(). Например, функция "fml( "My MACD")"  возвращает значение формулы которая имеет имя "My MACD". Полного имени не требуется, достаточно той части, которая делает имя уникальным.
Следующая формула отображает значение формулы с именем "Down Day", если цена закрытия меньше или равна 10-дневной скользящей средней цены закрытия. В противном случае, отображается значение формулы "Up Day".
if( close <= mov(close, 10, E), fml("Down Day"), fml("Up Day") )
Этот метод (ссылка на формулу из другой формулы) подобен методу "nesting of formulas".
Ссылка на формулы путь позволяющий упростить разработку и восприятие сложных формул. Формула включенная в другую формулу в качестве параметра ,также может включать в качестве параметра другую  формулу и т.д. Циркулярные ссылки (т.е. например, когда форму-ла "My MACD" вызывает формулу "My RSI", а последняя в свою очередь опять вызывает формулу "My MACD") приводят к ошибке, о которой появляется сообщение при попытке отображения графика формулы.

2.15  Р-идентификатор массива данных (The "P" Data Array Identifier)

Специальный ценовой идентификатор (переменная “Р”) используется, чтобы ссылаться на какой либо график индикатора или цены. При применении Р-переменной в пользовательских индикаторах ей присваиваются значения индикатора на график которого «сбрасывается»  пользовательский индикатор. При ее применении в тестах систем и исследованиях. Это может быть использовано если Вы хотите рассчитать индикатор, тест системы или исследование для данных которые не относятся к основным ценовым данным (chart's base security). Если Вы «сбрасываете»  пользовательский индикатор содержащий Р-переменную на штриховой график (high/low/close price bars),  то значениями для Р-переменной служит цена закрытия (CLOSE).
Например, следующий «пользовательский» индикатор отображает график типа MACD
mov( P, 12, E) - mov( P, 26, E)
Если Вы предварительно нарисуете индикатор Аккумуляции/Дистрибуции а затем «сбросите»  на него приведенный выше индикатор (захватив его в КвикЛисте), то в результате Вы получите MACD Конвергенции/Дистрибуции.
Конечно, Вы можете написать предыдущую формулу  без использования «Р»-переменной как показано ниже, однако Вы будете вынуждены ее модифицировать каждый раз, если захотите вместо Аккумуляции/Дистрибуции использовать какой либо другой индикатор. При использовании Р-переменных формула становиться более гибкой.
mov( ad(), 12, E) - mov( ad(), 26, E)
В пользовательских индикаторах значения HIGH, LOW, CLOSE, VOLUME, OPEN и OPEN INTEREST всегда берутся из базового массива данных по ЦБ. Например, если Вы «сбросите» индикатор с формулой "HIGH - LOW / P" на ценовой график, который не является графиком базовых  данных , то HIGH и LOW будут однако взяты из массива базовых данных. Значение Р-переменной будет представлено ценой закрытия (CLOSE) той ЦБ на график которой произошел сброс.
Также, заметим, что только значения (но не даты) запоминаются Р-идентификатором. Поэтому необходимо, чтобы данные присваиваемые Р-переменной совпадали по времени с другими данными представленными в Вашей формуле.
Чтобы отобразить пользовательский индикатор с Р-переменной, необходимо
• Написать формулу пользовательского индикатора, вставив Р-переменную на место идентификатора массива данных. (например, mov(P, 10, E), sum(P,25), stdev(P,12), etc.).
• Захватить этот индикатор из КвикЛиста и сбросить на  нужный Вам график.
Чтобы запустить тест системы или исследование которые содержат Р-переменную, надо:
• Написать формулы теста системы или исследования, вставив Р-переменные на место идентификаторов массива данных. Например, mov(P,10,E), sum(P,25), stdev(P,12), и т.д.
• Выбрать график (индикатора или ценовой график) для использования Р-переменной при помощи щелчка непосредственно на графике. График считается выбранным, ко-гда на нем появится небольшой квадратик «рукоятка» .
• Запустить тест системы или исследование.

2.16  Советы по работе с формулами (Formula Tips)

Общие сведения.

Два наиболее важных момента работы с формулами уже упоминались: (1) использование “Paste Formula dialog” и (2) щелчок по клавише “ОК”, при вводе формулы для проверки ее синтаксиса.

Дублирующие линии.

Если Вы пишете длинную формулу, то можете попытаться использовать представление формулы на нескольких строках для облегчения ее чтения. Вы можете отобразить формулу на строках нажав на клавиши CTRL+TAB. Например, формула
cum(if(close > ref(close, -1),+V, if(close < ref(close,  -1),-V,0)))
намного легче читается, если ее расположить на нескольких строках, как:
cum(
if(close > ref(close, -1),
if(close < ref(close, -1),
)
)

Заглавные символы в сравнении с прописными.

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

Комментарии.

Благоразумное использование комментариев облегчает чтение формулы. (Помните, текст комментариев должен находиться в фигурных скобках {} ).
Вы можете вставлять комментарии по ходу написания формулы как бы разделяя ее на части. Например, вторая половина следующей формулы представлена в виде комментария, что-бы проверить сначала ее первую половину.  После тестирования Вы можете убрать скобки и проверить всю формулу.
( mov(fml("MA1"),10,S) / fml("MA2") ) { * stoch(5,3) }

Пространство (пробелы).

Наличие пробелов внутри формулы необязательно. Однако, разумное их использование облегчает чтение формулы.
 
Клавиатурные команды.

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

Копирование выделенного текста - CTRL+C
Перемещение - CTRL+X
Вставка из буфера - CTRL+V

Размер файла.

Размер файла пользовательского индикатора (MS50FORM.DTA) зависит от числа этих индикаторов. Его размер  увеличивается приблизительно на 3К на каждый новый индикатор. (Размер файла никогда не уменьшается, даже если Вы удаляете индикатор его размер остается неизменным.) Размер этого файла может быть ограничен установкой на максимальное количество присутствующих пользовательских индикаторов. Например, если используется только 30 первых позиций, файл может вырасти приблизительно только до 90К.

3. Диалог  “Построитель Индикаторов” (Indicator Builder Dialog)

“Indicator Builder”-диалог появляется после выбора опции «Indicator Builder» из меню Tools или аналогичной кнопки главной панели инструментов.
New.  Выбор этой кнопки приводит к вызову диалога «Indicator Editor dialog», во время которого Вы можете  присвоить имя и написать формулу нового индикатора.  См. «Indicator Editor Dialog»
Edit.  При выборе этой кнопки появляется диалог «Indicator Editor dialog», где Вы можете отредактировать предварительно выбранный пользовательский индикатор.   См. «Indicator Editor Dialog»
Copy.   При выборе этой кнопки делается копия выбранного индикатора в диалог «Indicator Editor dialog».  После внесения изменений, нажмите кнопку OK, чтобы сохранить копию пользовательского индикатора. См. «Copying and Deleting Custom Indicators».
Delete.  При помощи этой кнопки удаляется выбранный пользовательский индикатор. См. « Copying and Deleting Custom Indicators».
Print.  Выбор этой кнопки распечатывает выбранный индикатор. См. «Printing Custom Indicators»

4.   Диалог “Редактор Индикаторов” (Indicator Editor Dialog)

Диалог “Indicator Editor dialog” используется для создания новых и редактирования существующих пользовательских индикаторов.

Name.  Вы можете ввести имя индикатора длинной до 50 символов. Это имя будет появляться в заголовке внутреннего окна в котором отображается график индикатора при его вызове.  Спи-сок индикаторов в «Indicator Builder dialog» сортируется по имени.

Display in QuickList.  Выберите  это «окошко» (появляется флажок), если Вы хотите, чтобы имя Вашего индикатора было включено в «QuickList».  Наличие индикатора в  «QuickList» по-зволяет использовать метод «захвати и сбрось»  аналогично тому как используются другие (встроенные) индикаторы. См. «Using the Indicator QuickList».

Formula.  Здесь вводится формула пользовательского индикатора. Формула может содержать до 1 024 символов на нескольких строках. Нажимайте «ENTER» для перехода к другой строке. См. «Formula Tips»  для получения информации по использованию нескольких строк. См. «Formula Tutorial».

Functions.  Выбор этой кнопки вызывает «Paste Functions dialog»,  где Вы можете выбрать из необходимую функцию из списка и вставить ее в формулу.  Эта кнопка неактивна , пока Ваш курсор находится за пределами окна редактирования формулы «Formula edit box».  См. «Pasting Functions Into Formulas». Вы можете использовать стандартные клавиатурные команды во время редактирования формулы(См. «Formula Tips»).

4.1.1  Сохранение изменений

Если Вы во время редактирования пользовательского индикатора, теста системы или исследования щелкните по кнопке «Cancel» появится окно с запросом «желаете ли Вы сохранить изменения». Выбор «Yes» сохраняет изменения,  выбор «No» не сохраняет изменений.

5.  Копирование и Удаление Пользовательских индикаторов  (Copying and Deleting Custom Indicators)

Вы можете сделать копию выбранного пользовательского индикатора в “Indicator Builder dialog” при помощи кнопки “Copy”.  Это полезно, когда Вы хотите разработать новый индикатор похожий на уже существующий.
Например, ели пользовательский индикатор “А” очень похож на вновь создаваемый, Вы должны используя кнопку “Copy” в диалоге “Indicator Builder dialog” сделать его копию. Затем Вы можете внести необходимые изменения и присвоить индикатору новое имя.
При помощи клавиши “Delete” Вы можете удалить пользовательский индикатор из списка диалога  “Indicator Builder dialog”.  Выбор этой кнопки приводит к появлению диалога “Delete Custom Indicator dialog”.

6.  Печать Пользовательских Индикаторов (Printing Custom Indicators)

Используя диалог «Print dialog» Вы можете распечатать имена или формулы пользовательских индикаторов на принтер определенный по умолчанию.  Этот диалог можно вызвать щелкнув по кнопке «Print» в диалоге «Indicator Builder dialog».
Print What.  Выберите, что Вы хотите печатать, только Имя  (Names Only) или вместе Имя и Формулу (Names and Formulas) для выбранных пользовательских индикаторов.
Copies. Введи количество копий.
Print Range.  Выберите, хотите ли Вы печатать только выбранный индикатор или все пользовательские индикаторы.
Printer.  Показывает диалог, где можно выбрать необходимый принтер, установить ориентацию и размер бумаги.

7.  Вставка функций в формулы (Pasting Functions Into Formulas)

Используя кнопку «Functions»  диалога «Indicator Editor dialog», Вы можете вставлять функции непосредственно в формулу, которую в данный момент редактируете. Эта возможность не только экономит время, но также освобождает Вас от необходимости запоминать синтаксис функций (или вводить их вручную) и их параметров.
Диалог «Рaste Functions dialog»  подразделяет функции на 11 категорий.  Категории собраны в список категорий («Function Category list») расположенный в левой стороне  окна диалога.  Функции входящие в выбранную категорию располагаются в правой стороне окна в виде списка их Английских имен или других имен функций в зависимости от того имеется ли флажок в окошке «Show English Names checkbox». 
Во время скроллирования списка функций в нижней части окна диалога отображается строка описывающая синтаксис выбранной функции. Если Вы хотите вставить в функцию аргументы, выберите окошко «Paste Arguments checkbox».
Щелчок по клавише «ОК» или двойной щелчок по имени функции вставляет ее в формулу в позицию курсора.
Чтобы вставить функцию надо:
• В сеансе редактирования формулы щелкнуть по кнопке «Functions».
• Щелкнуть по необходимой категории в списке «Functions Category list». 
• Выполнить двойной щелчок по имени функции.

8.  Примеры Пользовательских Индикаторов (Sample Custom Indicators)

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

8.1  Аккумуляция/Дистрибуция (Accumulation/Distribution)

В эта формуле («Accumulation/Distribution») используется функция cum() (см. «Cumulate»), которая накапливает изменчивые показатели дневных значений.
cum( (((C-L) - (H-C)) / (H-L)) * V)

8.2  Полосы Боллинжера (Bollinger Bands)

Здесь используется функция stdev() (см. «Standard Deviation»), чтобы рассчитать верх-нюю и нижнюю границы полос.
Верхняя полоса рассчитывается, как:
mov( C, 20, S ) + ( 2 * stdev( C, 20 ))
Нижняя полоса рассчитывается, как:
mov( C, 20, S ) - ( 2 * stdev( C, 20 ))

8.3  Осциллятор A/D Чайкина (Chaikin A/D Oscillator)

mov( ad(), 3, E) - mov( ad(), 10, E)
Этот индикатор может ссылаться на встроенный индикатор «Accumulation/Distribution indicator»  используя функцию ad(), как показано выше,  или же можно использовать формулу «Accumulation/Distribution formula» как показано ниже.
mov(cum((((C-L)-(H-C))/(H-L)) * V),3,E)-mov(cum((((C-L)-(H-C))/(H-L)) * V),10,E)

8.4  Средняя цена (Median Price)

(high + low) / 2

8.5  Момент (Momentum)

Формула момента использует функцию ref() (см. Reference), чтобы сослаться на цену закрытия 12 периодов назад.
(close / ref( close, -12 )) * 100

8.6  Скользящая средняя MACD (Moving Average MACD)

Большинство аналитиков (включая аналитиков EQUIS International's) утверждают, что MACD-индикатор представляет собой «разницу между 12- и 26 дневными экспоненциальными скользящими средними». Однако, реально это разница между 0.15 и 0.075 экспоненциальными скользящими средними. (более точно  0.153846 и 0.076923).
См. «Moving Average Calculation Methods»  для более подробной информации по методам калькуляции MACD.
Учитывая эти небольшие отличия в экспоненциальных значениях, заметим, что следующая формула будет слегка отличаться от встроенного MACD-индикатора. Помните, что истинный MACD-индикатор Вы сможете нарисовать, только используя встроенную функцию macd()  (см. MACD).
mov( close, 12, E) - mov( close, 26, E)
MACD-триггер (9-дневная экспоненциальная скользящая средняя MACD) может быть рассчитан, как показано ниже:
mov( macd(), 9, E)

8.7  Индекс негативного объема (Negative Volume Index)

Встроенному индексу негативного объема соответствует функция nvi(). Однако, для пользовательского индикатора можно использовать следующую формулу:
cum( if( V < ref(V,-1), roc(C,1,%), 0 ))

8.8  Баланс Объема (On Balance Volume)

Следующая формула рассчитывает индикатор баланс объема («On Balance Volume»):
cum( if( C > ref(C,-1),+V, if( C < ref(C,-1),-V, 0) ))
Далее объясняется каждый компонент приведенной выше формулы:
cum(  Расчет куммуляты, следующих величин
if(  если,
C  цена закрытия сегодня
>  больше, чем
ref(C,-1), цена закрытия предыдущего дня
+V,  тогда прибавь сегодняшний объем
if(  в противном случае, если
C  цена закрытия сегодня
<  меньше, чем
ref(C,-1), цена закрытия предыдущего дня
-V,  вычесть объем
)) в противном случае,  ничего не делать.

8.9  Индекс положительного Объема (Positive Volume Index)

Встроенному индексу положительного объема соответствует функция pvi(). Однако, для пользовательского индикатора можно использовать следующую формулу:
cum( if( V > ref(V,-1), roc(C,1,%), 0 ))

8.10  Ценовой осциллятор (Price Oscillator)

Следующая формула рассчитывает 10/20 - дневный Прайс-осциллятор выраженный  в абсолютных значениях:
mov( close, 10, E) - mov( close, 20, E)
Приведенная ниже формула рассчитывает 10/20 - дневный Прайс-осциллятор выражен-ный  в процентах:
(( mov(C, 10, E) - mov(C, 20, E) )/mov(C, 20, E)) * 100

8.11  Коэффициент изменения цены (Price Rate-Of-Change)

Следующая формула рассчитывает 12-дневную степень изменения цены (“Price Rate-Of-Change”):
(( C - ref(C,-12)) / ref(C,-12)) * 100
Можно также использовать функцию roc():
roc( close, 12, % )
Чтобы выразить показатели индикатора в абсолютных значениях можно использовать следующую формулу:
close - ref(close, -12)

8.12  Объемно-ценовой тренд (Price Volume Trend)

Следующая формула использует функцию cum() для расчета объемно-ценового тренда
cum( ((C - ref(C,-1)) / ref(C,-1)) * V)
Эту формулу также можно написать при помощи функции roc(), как показано ниже:
cum( roc(close, 1, %) * volume )

8.13  Стандартное отклонение (Standard Deviation)

4-дневное стандартное отклонение может быть рассчитано при помощи двух формул. Первая формула это просто 4-дневная простая скользящая средняя. Формулу, показанную ниже, будем именовать “4-period ma”
mov( close, 4, S )
Вторая формула суммирует квадрат разницы между скользящей средней и ценой закры-тия каждого из четырех предшествующих дней, а затем извлекает квадратный корень из этой суммы.:
sqrt(( power(fml("4-period ma") - C, 2) +
power(fml("4-period ma") - ref(C,-1), 2) +
power(fml("4-period ma") - ref(C,-2), 2) +
power(fml("4-period ma") - ref(C,-3), 2) ) / 4 )
Более легкий способ- это извлечь квадратный корень из вариации  цены закрытия за 4-дневный период (функция var( close, 4 )):
sqrt( var( close, 4 ) )
Конечно, на самом деле Вы можете использовать встроенную функцию стандартного отклонения  stdev() (см. Standard Deviation).

8.14  Стохастический осциллятор (Stochastic Oscillator)

Следующая формула рассчитывает 5-дневный %K Стохастический Осциллятор с 3-дневным замедлением:
(sum( C - llv(L,5), 3 ) / sum(hhv(H,5) - llv(L,5), 3) ) * 100
Приведенная ниже формула калькулирует 3-дневный %D от %K в предыдущей формуле.
mov( stoch(5,3), 3, E )

8.15  Волатильность, Чайкин (Volatility, Chaikin)

Формула волатильности показанная ниже использует 10-дневную скользящую среднюю и 12-дневный rate-of-change:
roc( mov( high-low, 10, E), 12, %)

8.16  Объемный Осциллятор (Volume Oscillator)

Следующая формула рассчитывает 10/20 - дневный Volume-осциллятор выраженный  в абсолютных значениях:
mov( volume, 10, E) - mov( volume, 20, E)
Приведенная ниже формула рассчитывает 10/20 - дневный Volume -осциллятор выра
женный  в процентах:
(( mov(V, 10, E) - mov(V, 20, E) )/mov(V, 20, E)) * 100

8.17  Коэффициент изменения объема (Volume Rate-Of-Change)

 (( V - ref(V,-12)) / ref(V,-12)) * 100
Также может быть использована функция roc(), показанная ниже:
roc( volume, 12, % )

8.18  Взвешенная цена закрытия (Weighted Close)

Для расчета взвешенной цены закрытия цену закрытия умножают на 2, добавляют зна-чения максимальной и минимальной цен, и полученное значение делят на 4.
((close * 2) + high + low ) / 4

8.19  Аккумуляция/Дистрибуция Вилльямса (Williams' Accumula-tion/Distribution)

Чтобы упростить объяснение этой формулы, мы разобьем ее на 3 формулы. Первая формула возвращает “истинное значение” максимальной цены ("True Range High")
max( ref(close, -1), high )
Аналогичным образом, вторая формула возвращает “истинное значение” минимальной цены ("True Range Low").
 min( ref(close, -1), low )
Третья формула (предполагается, что приведенные выше формулы были поименованны как "True Range High" и "True Range Low"), рассчитывает значения индикатора.
cum(if(C  > ref(C,-1),C - fml("True Range Low"), if(C < ref(C,-1),C - fml("True Range High"),0)))
  %R Вилльямса (Williams' %R)
Эта формула рассчитывает 14-дневный %R Вильямса. Заметим, что формула была инвертированна умножением ее на 100

((hhv(H,14) - C)/(hhv(H,14) - llv(L,14))) * -100

9.  Бинарные Волны Эчлиса (Achelis Binary Waves)

Этот раздел объясняет как пользовательские индикаторы могут быть использованы для разработки индикаторов “дойной волны”, которые показывают рейтинг технической позиции ЦБ. Стивен Эчлис, президент EQUIS International, разработал концепцию Двойных волн.
Концепция  “Двойной волны” до определенной степени сложна. Вы должны хорошо разбираться в пользовательских индикаторах прежде, чем будете читать данный раздел.

9.1  Бинарная волна (The Binary Wave)

Бинарная волна возвращает значение +1 или -1 в зависимости от того как интерпретируется показания индикатора : бычьи или медвежьи. (Термин “Бинарная волна” основывается на этой ?1 концепции.). Реальная сила бинарных волн проявляется, когда несколько бинарных волн комбинируются в композитные бинарные волны.
Бинарные волны противопоставляются торговым системам основанным на принципе “черного ящика” (несмотря на то, что и то и другое рассматриваются как экспертные системы). Так, Вы не знаете правил или индикаторов, которые используются при анализе ЦБ в “черном ящике”, и напротив, Вы сами специфицируете правила и индикаторы в бинарной волне.

9.2  Пример Бинарных Волн (Example Binary Waves)

Следующая таблица показывает правила используемые в четырех индикаторах бинарных волн. Пытаясь сохранить примеры достаточно понятными, мы использовали только 4 волны и при этом довольно простые критерии. Однако, Вы вероятно можете модифицировать эти критерии на основе вашей экспертизы.

Индикатор Бычий сигнал Медвежий сигнал

MACD  > сигнальной ли-нии <= сигнальной линии
Moving Average Сlose > Moving Avg. Close <= Moving Avg.
Rate-Of-Change Rate-Of-Change > 0 Rate-Of-Change <= 0
Stochastic  > 50  <= 50

Как показано в таблице,  мы предполагаем бычью ситуацию, когда линия MACD выше ее сигнальной линии и медвежью, когда она равна или ниже сигнальной линии. Таким образом, Бинарная Волна будет возвращать ±1 в зависимости от того, выше или ниже сигнальной линии находится линия MACD. Такой же подход реализуется в отношении 3-х оставшихся индикаторов. Затем, мы можем комбинировать 4 Бинарных Волны в композитную Бинарную волну. Если, все 4 Бинарных волны являются бычьими, то значение композитной волны будет +4. Наоборот,  если все 4 Бинарных волны медвежьи, то это значение будет равно -4.  Когда две волны бычьи, а две волны медвежьи, то значение композитной волны будет равно 0.

9.3  Ввод примера (Entering the Example)

Каждая из приведенных выше волн может быть введена как отдельный пользователь-ский индикатор, а затем вмонтирована в одну композитную волну. Это дает вам возможность проверить валидность индивидуальных волн и  легко их модифицировать. Такой подход значи-тельно облегчает понимание композитной бинарной волны.
Первая формула ("MACD Wave") возвращает +1, если линия MACD выше ее 9-дневной сигнальной линии. В противном случае, возвращается -1.
if(macd() > mov(macd(),9,E), +1, -1)
Вторая формула ("Mov Wave") возвращает +1, если цена закрытия  выше ее 20-дневной экспоненциальной скользящей средней. В противном случае, возвращается -1.
if(C > mov(C, 20, E), +1, -1)
Третья формула ("ROC Wave")  возвращает +1, если 12-дневная процентная степень из-менения цены закрытия больше 0. В противном случае, возвращается -1.
if(roc(C,12,%) > 0, +1, -1)
Четвертая формула ("Stoch Wave") возвращает +1, если значение Стохастического ос-циллятора больше 50. В противном случае, возвращается -1.
if(stoch(5,3) > 50, +1, -1)
Пятая формула ("Total Wave") комбинирует предыдущие 4 формулы в композитную Би-нарную волну.
fml("MACD Wave") + fml("Mov Wave") + fml("ROC Wave") + fml("Stoch Wave")
Когда Вы создаете композитную волну, важно, вначале протестировать индивидуальные бинарные волны (от формулы  "MACD Wave" до формулы "Stoch Wave"), чтобы проверить их валидность. Хорошая композитная бинарная волна будет приносить результаты, которые пре-восходят результаты генерируемые индивидуальными бинарными волнами входящими в ее со-став.

9.4  Интерпретация Бинарной Волны (Interpreting a Binary Wave)

Интерпретация бинарной волны довольно очевидна: высокие значения говорят о бычьей тенденции, а низкие о медвежьей. (Вспомните, что индивидуальные бинарные волны возвра-щают значения +1 или -1; величина значений композитной бинарной волны зависит от количества индивидуальных бинарных волн в нее включенных.)
Тест системы "Total Wave" (показанный ниже) открывает длинную позицию, когда индикатор выше 0, и открывает короткую позицию, когда индикатор ниже нуля. См. “Creating a System Test”.

Name Total Wave

Enter Long when(fml("Total Wave") < 0)

Close Long when(fml("Total Wave") > 0)

Enter Short  when(fml("Total Wave") > 0)

Close Short  when(fml("Total Wave") < 0)


Вы также можете создать формулу из семейства MACD для отображения разности между двумя скользящими средними композитной Бинарной волны. Такая формула может быть написана следующим образом (имя - "Smooth Total Wave"):
mov(fml("Total Wave"), 12, E) - mov(fml("Total Wave"), 26, E)
Идею заложенную в эту формулу можно реализовать использовав ее в тесте системы в виде правила для открытия длинной позиции (см. ниже).
Enter Long :  when(fml("Smooth Total Wave"), >,0)

9.5  Новые возможности (Enhancements)

Много улучшений можно сделать при помощи формул бинарных волн. Некоторые из них обсуждаются ниже. Пример бинарной волны представленный на предыдущих страницах комбинирует 4 индивидуальных волны. Однако, Вы можете выбрать значительно больше индивидуальных волн, для создания вашей экспертной системы.
Вместо того, чтобы возвращать значения  ±1, вы можете “взвесить” показатели бинарных волн в зависимости от качества их  прогностической способности. Например, один компонент композитной бинарной волны может возвращать значение  ±5, в то время как другой ±0.75.
Вы можете включить в композитную бинарную волну долгосрочную компоненту. Например, в ранее описанную композитную волну  "Total Wave" вы можете добавить следующую компоненту:
 if(CLOSE > mov(CLOSE, 200, EXPONENTIAL),+10, -10)
Эта формула принимает значения ±10, в зависимости от того, находится ли цена закрытия выше или ниже ее 200-дневной скользящей средней. Таким образом, композитная бинарная волна может находиться в диапазоне +14 ? +6, если эта долгосрочная компонента бычья и наоборот  в диапазоне -14 ? -6, если она имеет медвежью направленность. При этом правила торговой системы будут выглядеть следующим образом: вход в длинную позицию если композитная бинарная волна больше +10, закрытие этой позиции если значение волны меньше +10, вход в короткую позицию, если значение композитной волны меньше -10 и выход если соответствующее значение больше -10.
Вы можете сделать так, чтобы в композитную формулу возвращались значения индивидуальных волн  различные значения (отличные от ±1). Следующая формула возвращает -2, если стохастический осциллятор меньше 20,  -1, если его значение находится между 20 и 40, +1, если между 60 и 80, и +2, когда это значение лежит в диапазоне больше 80.
if( stoch(5,3) < 20, {then} -2,
  {else} if( stoch(5,3) < 40, {then} -1,
    {else} if( stoch(5,3) < 60, {then} 0,
      {else} if( stoch(5,3) < 80, {then} +1,
        {else} +2)))) 

Вы можете сгладить бинарную волну, используя формулу похожую на "Smooth Total Wave" и затем для получения сигнала использовать сигнальную линию скользящей средней. Тест системы должен содержать формулу отлеживающую пересечения линии индикатора и ее сигнальной линии.
Композитная бинарная волна предлагает метод ранжирования “технической ситуации” на рынке акций основанного на ваших критериях. Например Вы можете расценивать ситуацию как умеренно бычью, если значение композитной волны находится между 0 и +2.
Вы можете отобразить график степени изменения композитной волны используя формулу показанную ниже:
roc( fml("Total Wave"), 1, $)
Если этот индикатор больше 0, то это свидетельствует о том, что хотя бы один из индивидуальных бинарных волн стал бычьим. Аналогично, если значение меньше 0, то это указывает на медвежий разворот.

9.6  Заключение (Summary)

Бинарные волны отражают эволюцию индикатора  в концепции ±1-индикатор. Композитные бинарные волны комбинируют несколько индикаторов  индивидуальных бинарных волн, чтобы проиллюстрировать Ваш анализ ЦБ основанный на поведении нескольких индикаторов.

10.  Глоссарий (Glossary)

Глоссарий определяет термины, которые используются в пользовательских индикаторах Метастока. Знание (или запоминание) этих терминов для работы с “Indicator Builder” не требуется. Однако, пополнение этими терминами вашего словарного запаса облегчит общение с другими аналитиками использующими Метасток.

КОММЕНТАРИЙ (COMMENT):  Текст записанный внутри формулы, но не являющийся ее частью. Комментарий должен быть заключен в фигурные скобки {комментарий}.

КОНСТАНТА (CONSTANT):  Специфический тип параметра, который требует функция.  Константы можно подразделить на следующие группы:


КОНСТАНТА МЕТОДОВ КАЛЬКУЛЯЦИИ (CALCULATION METHOD CONSTANT):  Используются, чтобы определить способ калькуляции. Имеются процентный и абсолютный способы (PERCENT и POINTS их аббревиатуры, соответственно,  % и $)

СРАВНИТЕЛЬНЫЕ КОНСТАНТЫ (COMPARISON CONSTANT):  используются с функцией if(), для определения операции сравнения. К ним относятся: >, >=, <, <=, <>, =.

ФОРМУЛЬНАЯ КОНСТАНТА (FORMULA CONSTANT) : используется с функцией fml() для ссылки на другую формулу. Формульная константа специфицируется как имя другой формулы заключенное в двойные кавычки (например, fml( "My Formula" ) ).

КОНСТАНТЫ СКОЛЬЗЯЩИХ СРЕДНИХ (MOVING AVERAGE TYPE CONSTANT):  Используются для определения метода расчета скользящей средней. Имеются следующие методы : ЭКСПОНЕНЦИАЛЬНЫЙ (EXPONENTIAL), ПРОСТОЙ (SIMPLE),  ВРЕМЕННОЙ (TIME SERIES),  ТРИАНГУЛЯРНЫЙ (TRIANGULAR) ,  ПЕРЕМЕННЫЙ (VARIABLE), или ВЗВЕШЕННЫЙ (WEIGHTED).  Могут использоваться аббревиатуры, соответственно  E, S, T, TRI, VAR, или W.

ЧИСЛОВЫЕ КОНСТАНТЫ (NUMERIC CONSTANT):  Одиночное числовое значение. Функции требующие числовую константу не могут воспринимать массивы данных, так как массивы данных скорее всего содержат множественные, а не одиночные числовые значения.  Например "10" является числовой константой в формуле "mov(C, 10, E)."

МАССИВ ДАННЫХ (DATA ARRAY): массив данных определяет специфическим образом организованную информацию (данные), которые используются в формуле. Массивы данных могут быть подразделены на:

МАССИВ ЗНАЧЕНИЙ ФУНКЦИЙ (FUNCTION RESULT ARRAY): массивы, которые создаются в результате выполнения функции.

ЛИТЕРАЛЬНЫЙ МАССИВ (LITERAL ARRAY):  массив данных определяющий использование одиночных числовых констант.

МАССИВ ЦЕН (PRICE ARRAY) : Массив содержащий информацию о  максимальных  (high), минимальных (low) ценах , ценах закрытия (сlose) и т.д.

ФОРМУЛА (FORMULA):  комбинация комментариев, констант, функций, математических операторов и/или идентификаторов массива цен.

ФУНКЦИЯ (FUNCTION):  предопределенные математические операции, в которые могут подставляться параметры, в результате которых создается необходимый массив данных.

МАТЕМАТИЧЕСКИЙ ОПЕРАТОР (OPERATOR, MATHEMATICAL) : “+”, “-” , “*”,  “/”.

ПАРАМЕТР (PARAMETER):  идентификатор значений подставляемых в функцию, если функция имеет несколько параметров, они отделяются запятой.

ПРЕЦЕДЕНС/ПРИОРИТЕТ (PRECEDENCE):  порядок в котором  выполняются операции в формуле (см. “Operator Precedence”).

ИДЕНТИФИКАТОРЫ МАССИВА ЦЕН (PRICE ARRAY IDENTIFIERS) :  символы или слова используемые для ссылки на массив цен (Open, High, Low, Close, Volume, Open Interest, и выбранный график “Plot”).

11.  Математические ошибки в Пользовательских индикаторах (Custom Indicator Math Errors)

Если Вы попытаетесь нарисовать пользовательский индикатор, содержащий математические ошибки, то прежде появления графика, появиться   следующий диалог. Диалог показывает номер местонахождения каждой ошибки.

Деление на ноль (Division by zero). В формулу какое либо значение делиться на ноль. Например, в формуле "(ref(close, -1)-open)/(high - low)"  деление на ноль может возникнуть, если  “high” будет равно “low”.

Ошибочная экспонента (Invalid exponentiation).  Ошибка возникает при неправильном использовании экспонент.

Неправильный логарифм (Invalid log).   Возникает при попытке рассчитать десятичный логарифм 0 или отрицательного числа. Например, формула "log(high - low)" генерирует ошибку, если “high” и “low” будут равны.

Неправильная степень (Invalid power).  Возникает при попытке возвести в степень отрицательное число, если значение степени меньше 1.

Modulus by zero.  Возникает, если второй параметр в функции mod() ?определение остатка от деления? равен 0.  Например, формула "mod(close, high - low)" будет генерировать ошибку, если “high” равно “low”.

Отрицательный квадратный корень (Negative square root).  Возникает при попытке извлечь квадратный корень из отрицательного числа. Например, формула "sqrt(open - close)" возвратит ошибку, если “close” больше, чем “open”.

12.  Сообщения об ошибках (Error Messages)

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

A reference to a formula name is no longer valid. (Ссылка на имя формулы непригодна)
Эта ошибка появляется, когда пытаются вывести график формулы, содержащей ссылку(т.е., "fml()")  на несуществующую формулу.

Does not contain an executable formula. (Не содержит исполнимой формулы)
Попытка выполнить пользовательский индикатор в котором нет “валидных” формул.

Formula too complex. (Формула слишком сложная)Эта ошибка появляется в случае слишком глубокого вложения функций (не формул) или, когда сложное математическое выражение использующее множество математических операторов, не сгруппировано при помощи круглых скобок.
Группирование операторов при помощи круглых скобок может устранить эту проблему. Однако,  лучшее решение - это расчленение слишком сложной формулы, на несколько небольших формул, а затем  “монтирование” их в “главную” формулу при помощи функции fml() (см. Formula Call).

Insufficient memory to continue formula execution.(Недостаточно памяти для продолжения выполнения формулы)

MetaStock ran out of memory to store temporary values. (МетаСток выгрузился из памяти, чтобы сохранить временные значения)
Это может помочь “смягчить” редуцирование текущих загруженных  данных или редуцирования ссылок на встроенные формулы.

Overflow in function. (Переполнение в функции)
Результат калькуляции в формуле слишком большой для запоминания.
Формулу в этом случае нужно модифицировать, чтобы результат стал меньше. Например, разделить определенные массивы данных или результаты функций на 100.

Too many numeric constants defined in formula.(Слишком много числовых констант определено в формуле)
Максимум 20 различных числовых констант может быть использовано в каждой формуле. Эта ошибка может быть устранена расщеплением формулы на несколько небольших формул и затем соединение их при помощи функции fml(). (См. Formula Call).

Value out of valid range in function.(Значение выходит за диапазон)
Имеется ошибочный параметр в функции. 
Например следующие формулы будут генерировать эту ошибку:
Формула mov(C, -5, E), потому что “-5” является некорректным значением для временного периода скользящей средней.
Формула mov(C, 200, E), если  загруженных данных меньше чем 200 периодов.
Формула"mov(macd(), 74, E), если было загружено данных меньше, чем 100 периодов. Это обусловленно тем, что MACD выводится на экран, начиная с 26 дня (периода) и естественно. что скользящая средняяя MACD с периодом 74, начнет выводится на экран начиная с 100 дня (периода). Вы будете вынуждены отредактироать формулу или загрузить больше данных.

13. Функции (Functions)

Приведенные ниже функции можно  использовать для создания собственных индикаторов., исследований и тестов систем.
См. “Разработка собственных индикаторов” (“Creating Your Own Indicators”),  “Ранжи-рование и просеивание акций” (“Ranking and Screening Securities”), “Тестирование Ваших идей торговли” ( “Testing Your Trading Ideas”).
Функции подсвечников описаны в одноименном разделе (“Candlestick Functions”).

13.1  Absolute Value (Абсолютное значение)

СИНТАКСИС abs( DATA ARRAY )
ФУНКЦИЯ  Расчитывает абсолютное значение числа (DATA ARRAY).
ПРИМЕР  Формула "abs( -10 )" возвратит +10; формула "abs( 10 )", также возвратит +10.

13.2  Accumulation/Distribution (Аккумуляция/дистрибуция)

СИНТАКСИС ad()
ФУНКЦИЯ Калькулирует встроенный индикатор “Accumulation/ Distribution”.

13.3  Accumulation Swing Index (Аккумуляционный индекс Свинга)

СИНТАКСИС aswing(LIMIT MOVE)
ФУНКЦИЯ  Рассчитывает встроенный “Accumulation Swing Index”. Для расчета этого индекса требуются цены открытия.
ПРИМЕР  aswing(3.0)
СМ. ТАКЖЕ  Функцию swing() (см. “Swing Index”).

13.4  Addition (Сложение)

СИНТАКСИС add(DATA ARRAY, DATA ARRAY)
ФУНКЦИЯ  Складывает два параметра.
ПРИМЕР  Формула "add(H, 10.7)" суммирует число 10.7 и максимальную цену (это также можно выразить, как "H + 10.7").
СМ. ТАКЖЕ Функцию sub(). (см. “Subtraction”).

13.5  Arc Tangent (Арктангенс)

СИНТАКСИС atan( Y DATA ARRAY, X DATA ARRAY )
ФУНКЦИЯ 
Возвращает арктангенс Y/X. Это значение лежит в диапазоне 0 ? 359.9 граду-сов.

ПРИМЕР  Формула"atan( 10, 0 )" возвращает 90.
СМ. ТАКЖЕ  Функии cos(); sin()  (см.. “Cosine”, “Sine”)

13.6  Average Directional Movement (Усредненный Дирекционный Момент)

СИНТАКСИС adx( PERIODS )
ФУНКЦИЯ  Рассчитывает встроенный  “Average Directional Movement indicator”
ПРИМЕР  adx( 14 )
СМ. ТАКЖЕ. Функции adxr(), csi(), dx(), mdi(), pdi()  (см. “Average Directional Movement Rating”, “Commodity Selection Index”, “Directional Movement Index”, “Minus Directional Movement”, “Plus Directional Movement”)

13.7  Average Directional Movement Rating (Рейтинг усредненного дирекционального момента)

СИНТАКСИС adxr( PERIODS )
ФУНКЦИЯ  Рассчитывает встроенный  "Average Directional Movement Rating indica-tor"
ПРИМЕР  adxr( 14 )
СМ. ТАКЖЕ  Функции adx(), csi(), dx(), mdi(), pdi(),  (см. "Average Directional Movement Rating", "Commodity Selection Index", "Directional Movement Index", "Minus Directional Movement", "Plus Direc-tional Movement") .

13.8  Average True Range (Усредненый истинный диапазон)

СИНТАКСИС atr( PERIODS )
ФУНКЦИЯ  Рассчитывает встроенный  "Average True Range indicator".
ПРИМЕР  atr( 20 )

13.9  Bars Since (Число баров с ...)

СИНТАКСИС barssince( DATA ARRAY )
ФУНКЦИЯ  Рассчитывает число временных периодов от момента, когда массив данных имел значение "истинно".
ПРИМЕР  barssince( macd() < 0 )

13.10  Bollinger Band Bottom

СИНТАКСИС bbandbot( DATA ARRAY, PERIODS, METHOD, DEVIATIONS )
ФУНКЦИЯ  Рассчитывает  “дно” (минимальное значение) полосы Боллинджера массива данных  (DATA ARRAY), за определенный период (PERIODS ), используя  метод калькуляции (METHOD),  и сдвиг вниз (DEVIATION) стандартного отклонения. Методы калькуляции: SIMPLE, EXPONENTIAL, WEIGHTED, TIMESERIES, TRIANGULAR, и VARIABLE.  (сокращенно S, E, W, T, TRI, и VAR).
ПРИМЕР  bbandbot( close, 10, S, 2 )

13.11  Bollinger Band Top

СИНТАКСИС bbandtop( DATA ARRAY, PERIODS, METHOD, DEVIATIONS )
ФУНКЦИЯ  Рассчитывает “верхушку” (максимальное значение) полосы Боллинжера, массива данных (DATA ARRAY), используя метод калькуляции (METHOD), и сдвиг вверх  (DEVIATION) стандартного отклонения. Методы калькуляции: SIMPLE, EXPO-NENTIAL, WEIGHTED, TIMESERIES, TRIANGULAR, и VARIABLE (сокращенно S, E, W, T, TRI, и VAR).
ПРИМЕР  bbandtop( close, 10, S, 2 )

13.12  Buying Pressure (Напряжение покупки)

СИНТАКСИС buyp()
ФУНКЦИЯ  Рассчитывает  компонент давления-покупки индекса "Demand" (см. "Demand Index").  Давление-покупки - величина объема связанного с покупкой.

13.13 Ceiling (Целое число)

СИНТАКСИС ceiling( DATA ARRAY )
ФУНКЦИЯ  Рассчитывает наименьшее целое число, которое больше, чем  DATA ARRAY.
ПРИМЕР Формула "ceiling( 13.9 )" возвращает 14. Формула "ceiling( -13.9 )" возвращает -13.
СМ. ТАКЖЕ  Функции floor(), int() (см. “Floor”, “Integer”)

13.14  Chaikin Oscillator (Осциллятор Чайкина)

СИНТАКСИС co()
ФУНКЦИЯ Расчитывает  значение осциллятора Чайкина

13.15  Commodity Channel Index (EQUIS) /Индекс торгового канала

СИНТАКСИС ccie(PERIODS)
ФУНКЦИЯ  Рассчитывает встроенный  "Commodity Channel Index" (EQUIS).
ПРИМЕР  14 ccie()

13.16  Commodity Channel Index ?Standard?  ( Индекс товарного канала)

СИНТАКСИС cci(PERIODS)
ФУНКЦИЯ  Рассчитывает "Channel Index" (Standard).
ПРИМЕР  cci(14)

13.17  Commodity Selection Index (Индекс товарной селекции)

СИНТАКСИС csi( PERIODS, VALUE, MARGIN, COMMISSION )
ФУНКЦИЯ  Рассчитывает встроенный  "Commodity Selection Index."
ПРИМЕР  csi(14, 25, 50, 2500)
СМ. ТАКЖЕ  Функции adx(), adxr(), dx(), mdi(), pdi() (см. "Average Directional Movement Rat-ing", "Directional Movement Rating", "Directional Movement Index", "Minus Directional Movement", "Plus Directional Movement")

13.18  Correlation Analysis (Корреляционный анализ)

СИНТАКСИС correl( INDEPENDENT,DEPENDENT,PERIODS,SHIFT )
ФУНКЦИЯ  Рассчитывает встроенный "Correlation indicator". Проводит корреляционный анализ  между независимой  (INDEPENDENT)  и зависимой  (DEPENDENT) переменными за определенный временной период (PERIODS), со сдвигом зависимой переменной (DEPEND-ENT) вправо на определенное количество (SHIFT) периодов
ПРИМЕР  Формула "correl( macd(), CLOSE, 5, 10 )" сравнивает  индикатор MACD и цену закрытия сдвинутую на 10 периодов вперед, с окном обработки в 5 предыдущих периодов.
СМ. ТАКЖЕ  Функции  tsf(), stdev()  (см. "Time Series Forecast",  "Standard Deviation").

13.19 Cosine (Косинус)

СИНТАКСИС cos( DATA ARRAY )
ФУНКЦИЯ  Возвращает косинусe DATA ARRAY. Предполагается, что значения DATA ARRAY  выражены в градусах.
ПРИМЕР  cos( C )
СМ. ТАКЖЕ  Функции atan(), sin() (см. "Arc Tangent", "Sine").

13.20  Cross (Пересечение)

СИНТАКСИС cross( DATA ARRAY 1, DATA ARRAY 2 )
ФУНКЦИЯ  Возвращает "+1" в тот момент, когда график DATA ARRAY 1 пересекает снизу вверх график DATA ARRAY 2.  В противном случает, возвращается "0". Если Вы хотите, чтобы было известно, когда график DATA ARRAY 1 пересекает график DATA AR-RAY 2 сверху вниз, используйте формулу "cross( DATA ARRAY 2, DATA ARRAY 1)
ПРИМЕР  cross( close, mov(close,9,e) )

13.21  Cumulate (Кумуляция)

СИНТАКСИС cum( DATA ARRAY )
ФУНКЦИЯ  Рассчитывает aкумулятивную сумму DATA ARRAY.
ПРИМЕР  Формула "cum( 1 )" рассчитывает индикатор который увеличивает свое значение на единицу каждый день; формула "cum( C )" рассчитывает куммулятивную сумму всех цен закрытия.
СМ. ТАКЖЕ  Функцию sum()  (см. "Summation").

13.22  Day Of Month  (День месяца)

СИНТАКСИС dayofmonth()
ФУНКЦИЯ Возвращает  текущее число месяца. Если сегодня 15 июля, "15" будет отображено.

13.23  Day Of Week  (День недели)

СИНТАКСИС dayofweek()
ФУНКЦИЯ Возвращает текущий день недели: 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday, 7=Sunday.

13.24  Delta (Дельта)

СИНТАКСИС delta( TYPE, DATE, PRICE, INTEREST, DIVIDEND )
ФУНКЦИЯ  Рассчитывает встроенный "Delta indicator".  См. функцию option() ("Put/Call Price"), где описаны параметры заключенные в скобки этой функции.
ПРИМЕР  delta( EC, 941220, 125, 7.50, 4.75 )
СМ. ТАКЖЕ  Функции gamma(),  (life(), option(), theta(), vega(), volo() (см. "Gamma", "Option Life",  "Put/Call Price", "Theta", "Vega", "Volatility", "Option").

13.25  Demand Index (Индекс потребности)

СИНТАКСИС di()
ФУНКЦИЯ Рассчитывает встроенный "Demand Index"

13.26  Detrended Price Oscillator (Регрессивный ценовой осциллятор)

СИНТАКСИС dpo( PERIODS )
ФУНКЦИЯ  Рассчитывает встроенный "Detrended Price Oscillator".
ПРИМЕР  dpo( 25 )

13.27  Directional Movement Index (Индекс Дирекционного момента)

СИНТАКСИС dx( PERIODS )
ФУНКЦИЯ  Рассчитывает встроенный "Directional Movement Index".
ПРИМЕР  dx( 14 )
СМ. ТАКЖЕ  Функции adx(), adxr(), csi(), mdi(), pdi() (см. "Average Directional Movement Rating",  "Directional Movement Rating",  "Commodity Selection Index", "Minus Directional Movement", "Plus Directional Movement".)

13.28  Directional Movement Rating (Рейтинг Дирекционного момента)

СИНТАКСИС adxr( PERIODS )
ФУНКЦИЯ  Рассчитывает встроенный "Directional Movement Rating".
ПРИМЕР  adxr( 14 )
СМ. ТАКЖЕ  Функции adx(), adxr(), csi(), mdi(), pdi() (см. "Average Directional Movement Rating",  "Directional Movement Rating",  "Commodity Selection Index", "Minus Directional Movement", "Plus Directional Movement".)

13.29  Division (Деление)

СИНТАКСИС div( DATA ARRAY, DATA ARRAY )
ФУНКЦИЯ  Делит первый параметр на второй.
ПРИМЕР  Формула "div( 10 , 2 )" возвращает 5 (также можно использовать, как "10 / 2").
СМ. ТАКЖЕ  Функцию mul() (см. "Multiplication").

13.30  Ease of Movement (Ослабление момента)

СИНТАКСИС emv(PERIODS, METHOD)
ФУНКЦИЯ  Рассчитывает скользящую среднюю индикатора "Movement" с периодом (PERIODS) и методом (METHOD). Методы расчета: SIMPLE, EXPONENTIAL, WEIGHTED, TIMESERIES, TRIANGULAR, и VARIABLE.  (Сокращенно: S, E, W, T, TRI, и VAR.)
ПРИМЕР  Формула"emv(14,S)" возвращает значение "Ease of Movement indicator" сглаженное   14-дневной простой скользящей средней.

13.31  Exponent (Экспонента)

СИНТАКСИС exp(DATA ARRAY)
ФУНКЦИЯ  Рассчитывает экспоненту DATA ARRAY.
СМ. ТАКЖЕ Функцию log() (см. "Logarithm").

13.32 Fast Fourier Transform (Быстрое преобразоввание Фурье)

СИНТАКСИС fft( DATA ARRAY, PERIODS, LENGTH, DETREND ??? MEAN, AMPLITUDE or POWER )
ФУНКЦИЯ  Рассчитывает  преобразование Фурье с периодом  (PERIODS)  на основе массива данных (DATA ARRAY), с длинной образца (LENGTH), использяя  методы (DETREND или MEAN) и отображая амплитуду (AMPLITUDE) или спектральную мощность (POWER).
ПРИМЕР  Формула"fft( CLOSE, 100, 1, DETREND, POWER )" возвращает значение "Fast Fourier indicator" по умолчанию.

13.33  Floor (Целое число)

СИНТАКСИС floor( DATA ARRAY )
ФУНКЦИЯ  Рассчитывает наибольшее целое число, которое меньше DATA ARRAY.
ПРИМЕР  Формула "floor( 13.9 )" возвращает 13. Формула "floor( -13.9 )" возвращает -14.
СМ. ТАКЖЕ  Функции ceiling(), int() (см. "Ceiling", "Integer").

13.34 Formula Call (Вызов формулы)

СИНТАКСИС fml(FORMULA_NAME )
ФУНКЦИЯ  Рассчитывает значение другой пользовательской формулы. Для ссылки на другую формулу используется ее имя (FORMULA_NAME). Имя  вызываемой  формулы  должно быть заключено в  кавычки  (например,  fml( "Secret A").Можно ввести только часть имени, однако эта часть должна быть уникальна. Например, если имеются формулы с именами "Best Formula" и "My Best Formula", то ссылка fml( "Best Formula" ) приведет к ошибке, т.к. Метасток не сможет определить на какую из двух формул Вы ссылаетесь. В ссылке fml( "My" ) идентификация произойдет успешно. Если Вы изменили имя фор-мулы, Вы также должны изменить это имя в формулах,  со  ссылками на имя измененной формулы.
ПРИМЕР  Формула "fml("Secret A") * fml("MyMACD")" рассчитывает  значение формулы с именем "Secret A" и умножает его на значение формулы "MyMACD."
СМ. ТАКЖЕ  "Учебник по формулам", "Сылка на пользовательские индикаторы"

13.34  Fraction (Фракционирование)

СИНТАКСИС frac( DATA ARRAY )
ФУНКЦИЯ  Выделяет целую часть DATA ARRAY и возвращает оставшуюся часть.
ПРИМЕР  Формула "frac( 10.7 )" возвращает 0.7; формула "frac(-19.8 )" возвращает -0.8.
СМ. ТАКЖЕ  Функцию int() (см. "Integer").

13.35  Gamma  (Гамма)

СИНТАКСИС gamma( TYPE, DATE, PRICE, INTEREST, DIVIDEND )
ФУНКЦИЯ  Рассчитывает встроенный  индикатор "Gamma". См. функцию option(), а также "Put/Call Price", где описаны параметры используемые этой функцией.
ПРИМЕР  gamma( EC, 941220, 125, 7.50, 4.75 )
СМ. ТАКЖЕ  Функции delta(), life(), option(), theta(), vega(), volo() (см. "Delta", "Option Life", "Put/Call Price", "Theta", "Vega", "Volatility", "Option").

13.36  Gap Down  (Нижний разрыв)

СИНТАКСИС gapdown()
ФУНКЦИЯ Возвращает "+1" в этот день, если имеется нижний разрыв в ценах. В противном случае, возвращается "0".Нижний разрыв появляется , если вчерашняя минимальная цена, больше сегодняшней максимальной цены.

13.37  Gap Up (Верхний разрыв)

СИНТАКСИС gapup()
ФУНКЦИЯ Возвращает "+1" в этот день, если имеется верхний разрыв в ценах. В противном случае, возвращается "0". Верхний разрыв появляется , если вчерашняя максимальная цена, меньше сегодняшней минимальной цены.

13.38  Herrick Payoff Index (Индекс ... Геррика)

СИНТАКСИС hpi( CENTS, MULTIPLYING FACTOR )
ФУНКЦИЯ  Рассчитывает встроенный "Herrick Payoff Index".
ПРИМЕР  hpi(100, 10)

13.39  Highest (Наибольшее значение)

СИНТАКСИС highest( DATA ARRAY )
ФУНКЦИЯ  Рассчитывает наибольшее значение DATA ARRAY с первого дня загруженного в график (ПЕРИОД включает текущий день).
ПРИМЕР  Формула "highest( rsi(14) )" возвращает наибольшее значение "Relative Strength Index"с первой даты, загруженной в график; формула "highest (close )" возвращает наибольшую цену закрытия аналогичного периода..
СМ. ТАКЖЕ  Функции hhv(), llv(), lowest()  (см. "Highest High Value", "Lowest Low Value", "Lowest Low Value").

13.40  Highest High Value (Наиболее высокое значение)

СИНТАКСИС hhv( DATA ARRAY, PERIODS )
ФУНКЦИЯ  Возвращает наиболее высокое значение DATA ARRAY за предыдущий период  (PERIODS) (PERIODS включает текущую дату).
ПРИМЕР  Формула "hhv( CLOSE, 5 )" возвращает наибольшую цену закрытия за послед-ние пять дней; "hhv(H,7)" возвращает наибольшую максимальную цену за по-следние семь дней.
СМ. ТАКЖЕ  “Stochastic Oscillator example” (??. “Stochastic Oscillator”); ??????? llv() (??. “Lowest Low Value”).

13.41  IF() (Логическое если)

СИНТАКСИС if( DATA ARRAY  > >= < <= <> =  DATA ARRAY, THEN DATA ARRAY, ELSE DATA ARRAY )
ФУНКЦИЯ  Возвращает значение четвертого параметра (THEN), если выражение определенное первыми тремя параметрами истинно. В противном случае (ELSE), возвращается пятый параметр.
ПРИМЕР  Формула"if(1<2,3,4)" всегда возвращает значение3.
СМ. ТАКЖЕ  Примеры "On Balance Volume"; Учебник по формулам (см. if())

13.42  Inside (Инсайд)

СИНТАКСИС inside()
ФУНКЦИЯ  Возвращает "+1", если имеется инсайдерский день. Инсайдерский день - это,  когда сегодняшняшний максимум меньше вчерашнего максимума, а сегодняшний минимум больше, чем вчерашний минимум.  Диапазон определяется первым Инсайдерским днем и прерывается только Rally (оживление), Reaction, или Outside day.

13.43  Integer (Целое число)

СИНТАКСИС int( DATA ARRAY )
ФУНКЦИЯ  Возвращает целую часть числа (DATA ARRAY).
ПРИМЕР  Формула"int( 10.7 )" возвращает 10; формула"int(-19.8 )" возвращает -19.
СМ. ТАКЖЕ  Функции ceiling(); function (see Ceiling); the floor() function (see Floor); the frac() function (see Fraction).

13.44  Klinger Volume Oscillator

СИНТАКСИС kvo()
ФУНКЦИЯ  Рассчитывает встроенный Klinger Volume Oscillator.
ПРИМЕР  Формула"kvo()" возвращает the value of the Klinger Volume Oscillator (i.e., the solid line).  Формула"mov(kvo(),13,E)" возвращает the value of the KVO's trigger line (i.e., the dotted line).

13.45  Logarithm  (Логарифм)

СИНТАКСИС log( DATA ARRAY )
ФУНКЦИЯ  Рассчитывает значения натурального логарифма массива (DATA ARRAY).
СМ. ТАКЖЕ  Функцию exp().

13.46  Lowest  (Минимальное значение)

СИНТАКСИС lowest( DATA ARRAY )
ФУНКЦИЯ  Возвращает наименьшее значение массива данных (DATA ARRAY) с первой даты данных загруженных в график, включая текущую дату.
ПРИМЕР  Формула "lowest( rsi(14) )" возвращает наименьшее значение индекса «Relative Strength Index» , начиная с первой даты загруженной в график; "lowest (close )" возвращает наименьшее значение цены закрытия.
СМ. ТАКЖЕ  Функции hhv()  (Highest High Value); llv()  (Lowest Low Value); highest() ( Highest).

13.47  Lowest Low Value (Значение минимального донышка)

СИНТАКСИС llv( DATA ARRAY, PERIODS )
ФУНКЦИЯ  Рассчитывает наименьшее значение массива данных (DATA ARRAY) за определенный предшествующий период (PERIODS), включая текущую дату.
ПРИМЕР  Формула"llv( CLOSE, 14 )" возвращает the lowest closing price over the preced-ing 14 periods.
СМ. ТАКЖЕ  Примеры «Stochastic Oscillator»; ??????? hhv() (Highest High Value).

13.48  MACD (Скользящая средняя конвергенции-дивергенции)

СИНТАКСИС macd()
ФУНКЦИЯ  Рассчитывает встроенный MACD indicator.
ПРИМЕР  Формула macd() возвращает значение индикатора MACDмонотонная линия).  Формула mov(macd(),9,E) возвращает значение сигнальной линиии MACD  (iпрерывистая линия).

13.49   Mass Index (Индекс Массы)

СИНТАКСИС mass( PERIODS )
ФУНКЦИЯ  Рассчитывает «Mass Index».
ПРИМЕР  mass( 25 )

13.50   Maximum (Максимум)

СИНТАКСИС max( DATA ARRAY, DATA ARRAY )
ФУНКЦИЯ  Возвращает наибольшее значение из двух параметров.
ПРИМЕР  Формула"max( CLOSE, 10 )" возвращает цену закрытия в том случае, если она больше 10, в противном случае возвращается «10».  Формула max(-14, 13)  все-гда возвращает 13.

13.51   Median Price (Средняя цена)

СИНТАКСИС mp()
ФУНКЦИЯ  Рассчитывает встроенный «Median Price indicator».
СМ. ТАКЖЕ  Функцию typ() (Typical Price).

13.52   Midpoint (Средняя цена -Мидпоинт)

СИНТАКСИС mid( DATA ARRAY, PERIODS )
ФУНКЦИЯ  Возвращает мидпоинт массива данных (DATA ARRAY) за определенный период (PERIOD).  Мидпоинт =  полусумме максимального  и минимального значения  за  определенный период.
ПРИМЕР  Формула mid( CLOSE, 7 ) эквивалентна llv(C,7) + ((hhv(C,7)  llv(C,7)) / 2).
СМ. ТАКЖЕ  Функции hhv() (Highest High Value); the llv() (Lowest Low Value).

13.53   Minimum (Минимум)

СИНТАКСИС min( DATA ARRAY, DATA ARRAY )
ФУНКЦИЯ  Возвращает наименьшее значение из двух параметров.
ПРИМЕР  Формула min( CLOSE, 10 ) возвращает цену закрытия, если она меньше 10,  в противном случае возвращается «10».  Формула min(-14, 13) всегда возвращает «-14».
СМ. ТАКЖЕ  Функцию max()  (Mass Index).

13.54  Minus Directional Movement (Отрицательный Дирекционный момент)

СИНТАКСИС mdi( PERIODS )
ФУНКЦИЯ  Рассчитывает встроенный "Minus Directional Movement indicator".
ПРИМЕР  mdi( 14 )
СМ. ТАКЖЕ  Функции adx(), adxr(), csi(), mdi(), pdi() (Average Directional Movement Rating,  Directional Movement Rating,  Commodity Selection Index, Minus Directional Movement, Plus Directional Movement).

13.55   Modulus (Остаток от деления)

СИНТАКСИС mod( DATA ARRAY, DATA ARRAY )
ФУНКЦИЯ  Рассчитывает остаток от деления первого параметра на второй. Если первый параметр равен 0, функция возвращает 0.
ПРИМЕР  Формула"mod( 10, 3 )" возвращает 1.0; формула"mod( -10.7, 3 )" возвращает -1.7.  Эквивалентная формула   -10.7 - (int(-10.7 / 3) * 3).

13.56   Momentum (Момент)

СИНТАКСИС mo( PERIODS )
ФУНКЦИЯ  Рассчитывает встроенный "Momentum indicator".
ПРИМЕР  mo( 12 )

13.57   Money Flow Index (Индекс Денежного потока)

СИНТАКСИС mfi( PERIODS )
ФУНКЦИЯ  Рассчитывает встроенный "Money Flow Index".
ПРИМЕР  mfi( 14 )
СМ. ТАКЖЕ  Функцию rsi() (Relative Strength Index(RSI)).

13.58   Month (Месяц)

СИНТАКСИС month()
ФУНКЦИЯ Выводит месяцы на графике цены.  Если ось содержала формат 10/15/94, "10" должно быть нарисованно.

13.59  Moving Average (Скользящая средняя)

СИНТАКСИС mov( DATA ARRAY, PERIODS, METHOD)
ФУНКЦИЯ  Рассчитывает скользящую среднюю для массива данных (DATA ARRAY) с периодом усреднения (PERIODS), используя метод калькуляции (METHOD).  Возможны методы:  экспоненциальный (EXPONENTIAL), простой (SIMPLE), временных серий (TIMESERIES),  триангулярный (TRIANGULAR), взвешевания (WEIGHTED),  переменной (VARIABLE),  и объемо-зависимый  (VOLU-MEADJUSTED)  (Сокращения соответственно E, S, T, TRI, W, VAR,  VOL). При необходимости использования  в качестве массива данных средней (Median Price) или типичной цен (Typical Price) используйте функции mp() и typical().
ПРИМЕР  Формула mov( CLOSE, 25, EXPONENTIAL ) возвращает значения 25-дневной экспоненциальной скользящей средней цены закрытия.

13.60  Multiplication (Произведение)

СИНТАКСИС mul( DATA ARRAY, DATA ARRAY )
ФУНКЦИЯ  Рассчитывает произведение двух параметров.
ПРИМЕР  Функция "mul( CLOSE, 2) возвращает результат умножения цены закрытия на два.  (Также можно написать  C * 2 ).
СМ. ТАКЖЕ  Функцию div() (Division).

13.61  Negative (Отрицательное число)

СИНТАКСИС neg( DATA ARRAY )
ФУНКЦИЯ  Возвращает противоположное значение числа (DATA ARRAY).
ПРИМЕР  Формула"neg( 10 )" возвращает -10; формула"neg( -12 )" возвращает +12. Эта формула также может быть написана как -(-12).

13.62  Negative Volume Index (Индекс негативного объема)

СИНТАКСИС nvi()
ФУНКЦИЯ  Рассчитывает встроенный "Negative Volume Index".
СМ. ТАКЖЕ  Функцию pvi() (Positive Volume Index).

13.63  On Balance Volume

СИНТАКСИС obv()
ФУНКЦИЯ  Рассчитывает встроенный On Balance Volume indicator.
СМ. ТАКЖЕ  Примеры в разделе «On Balance Volume».

13.64  Option Life (Жизнь опциона)

СИНТАКСИС life( EXPIRATION DATE  )
ФУНКЦИЯ  Рассчитывает встроенный «Option Life indicator».
ПРИМЕР  Функция life( 950121 ) возвращает число дней до 21 Января 1995.
СМ. ТАКЖЕ  Функции delta(),  gamma(), option(), theta(), vega(), volo()  ( Delta, Gamma, Put/Call Price, Theta, Vega, Volatility, Option).

13.65  Outside (Аутсайд)

СИНТАКСИС outside()
ФУНКЦИЯ  Возвращает "+1", если индицируется «Аутсайд».  Признаки «Аутсайда»:  текущий максимум больше вчерашнего максимума и текущий минимум меньше, чем вчерашний минимум.  Диапазон определяется первым «Аутсайдом» и прерывается только «Ралли»,  «Реакцией» или «Аутсайдом».

13.66  Parabolic SAR (Параболическая система)

СИНТАКСИС sar( STEP, MAXIMUM )
ФУНКЦИЯ  Рассчитывает встроенный "Parabolic SAR indicator".
ПРИМЕР  sar( 0.02, 0.20 )

13.67 Peak Value (Пиковое значение)

СИНТАКСИС peak( Nth, DATA ARRAY, % MINIMUM CHANGE )
ФУНКЦИЯ  Возвращяет значение N-го (Nth) по счету  назад гребня (пика) массива данных  (DATA ARRAY). Это используется  в функции "Zig Zag" (см.) для идентификации "гребней". При  N=1 возвращается значение самого ближайшего гребня, при N=2 значение второго из близлежащих гребней и т.д.
ПРИМЕР  peak(1,close,5)

13.68  Peak Bars Ago (Число баров до гребня)

СИНТАКСИС peakbars( Nth, DATA ARRAY, % MINIMUM CHANGE)
ФУНКЦИЯ  Возвращает число баров (дней , недель и т.д)  до  N-го "Nth" гребня (пика). Это используется в функции "Zig Zag" (см.). При  Nth=1 возвращается число баров прошедших с момента индикации последнего близлежащего гребня. При Nth=2 возвращается число баров прошедших с момента индикации предпоследнего близлежащего гребня и т.д.
ПРИМЕР  peakbars(1,close,5)

13.69  Performance

СИНТАКСИС per()
ФУНКЦИЯ Рассчитывает встроенный "Performance indicator".

13.70  Plus Directional Movement (Положительный дирекционный момент)

СИНТАКСИС pdi( PERIODS )
ФУНКЦИЯ  Рассчитывает встроенный  «Plus Directional Movement indicator».
ПРИМЕР  pdi( 14 )
СМ. ТАКЖЕ  Функции adx(), adxr(), csi(), dx(), mdi()  (Average Directional Movement, Average Directional Movement Rating, Commodity Selection Index, Directional Movement Index, Minus Directional Movement).

13.71  Positive Volume Index (Индекс положительного объема)

СИНТАКСИС pvi()
ФУНКЦИЯ  Рассчитывает встроенный «Positive Volume Index».
СМ. ТАКЖЕ  Функцию  nvi() (Negative Volume Index).

13.72   Power (Возведение в степень)

СИНТАКСИС power( DATA ARRAY, POWER )
ФУНКЦИЯ  Возводит значения массива (DATA ARRAY) в степень (POWER). При возведении в степень, не являющуюся целом числом,  отрицательного значения  выдается сообщение об ошибке.
ПРИМЕР  Формула"power( 10, 3 )" возвращает 1,000.

13.73 Precision (Точность вычислений)

СИНТАКСИС prec( DATA ARRAY, PRECISION )
ФУНКЦИЯ  Округляет значения массива данных (DATA ARRAY)  до определенной цифры после десятичной  точки (PRECISION) .
ПРИМЕР  Формула prec( 10.12981, 2 )  возвращает 10.120.  Формула prec( 10.12981, 4 ) возвращает 10.12980.  Небольшие ошибки компьютера при двоичном округлении могут привести к незначительным погрешностям в  дробной части некоторых чисел.

13.74  Price Oscillator (Ценовой осциллятор)

СИНТАКСИС oscp( PERIODS, PERIODS, MA_METHOD, DIFF_METHOD )
ФУНКЦИЯ  Рассчитывает встроенный «Price Oscillator» с периодами «PERIODS, PERIODS» с использованием  метода усреднения скользящей средней  (MA_METHOD) и метода расчета отношений между ценами «DIFF_ME-THOD».  Можно использовать (MA_METHOD): простой (SIMPLE), экспонен-циальный (EXPONENTIAL), взвешевания (WEIGHTED),  временных серий (TIMESERIES),  триангулярный (TRIANGULAR) и переменной (VARIABLE)  (Сокращенно соответственно E, S, T, TRI, W, VAR, VOL).    Можно использовать (DIFF_METHOD): процент (PERCENT) и абсолютное значение (POINTS)  (сокращенно %, $).
ПРИМЕР  Формула"oscp(1, 25, E, $)" возвращает  значения 1/25 - дневного экспоненци-ального  «Price oscillator» выраженного в абсолютных величинах.
СМ. ТАКЖЕ  Функцию oscv()  (Volume Oscillator).

13.75   Price Volume Trend (Объемно-ценовой тренд)

СИНТАКСИС pvt()
ФУНКЦИЯ  Рассчитывает встроенный «Price Volume Trend indicator».

13.76   Put/Call Price (Цена Пут/Колл)

СИНТАКСИС option( TYPE, DATE, PRICE, INTEREST, DIVIDEND )
ФУНКЦИЯ  Рассчитывает встроенный Put/Call Price indicator.
ПРИМЕР  Формула option( EC, 951231, 125, 8.5, 6.31 ) рассчитывает the fair market value of an equity call that matures on December 31, 1995, at a strike price of $125. The current market interest rates are 8.5% and the security paid an annual dividend of $6.31. TYPE specifies whether the security is an Equity or a Future (i.e., E or F) and if a Put or Call price (i.e, P or C) should be calculated.  Valid TYPEs are EC, EP, FC, and FP.  (These types also can be spelled out as CALL, PUT, FUTURECALL, and FU-TUREPUT.) The DATE is the date that the option expires.  The DATE must be en-tered as a number in the YYMMDD format.  For example, December 31, 1995, should be entered as 951231.  This date format is used regardless of the date format specified in the Configuration section.The PRICE parameter specifies the option's strike price.The INTEREST parameter specifies a "risk free" market interest rate (e.g., 8.75).The DIVIDEND parameter specifies the total dividends received over the last 12 mont
СМ. ТАКЖЕ  Функции delta(), gamma(), life(), theta(), vega(), volo()  (Delta, Gamma, Option, Life, Theta, Vega, Volatility, Option).

13.77 Rally (Оживление на бирже)

СИНТАКСИС rally()
ФУНКЦИЯ Возвращает "+1", если индицируется «Ралли». В противном случае возвращается "0". Признаки «Ралли»:  текущий максимум больше, чем  максимум предыдущего «Ралли»;  текущий минимум больше или равен минимуму пре-дыдущего «Ралли».

13.78   Rally With Volume (Оживление с объемом)

СИНТАКСИС rallywithvol()
ФУНКЦИЯ Возвращает "+1", если индицируется  «Ралли-объем». В противном слу-чае возвращается "0". Признаки «Ралли-объем»:  текущий максимум  больше максимума предыдушего «Ралли», ? текущий  минимум больше или равен мини-муму предыдущего «Ралли». Текущий объем должен быть больше, чем объем предыдущего «Ралли-объем».

13.79  Rate of Change (Степень изменения)

СИНТАКСИС roc( DATA ARRAY, PERIODS, DIFF_METHOD)
ФУНКЦИЯ  Возвращает значения «Rate-of-change»  массива данных (DATA ARRAY ) с периодом (PERIODS) выраженных в относительных или абсолютных величинах (DIFF_METHOD). Можно использовать (DIFF_METHOD): проценты (PERCENT) или абсолютные значения (POINTS) (сокращенно %,  $).
ПРИМЕР  Формула roc( CLOSE, 12, PERCENT ) возвращает степень изменения цен за-крытия выраженную в процентах с 12-дневным периодом.

13.80  Reaction (Реакция)

СИНТАКСИС reaction()
ФУНКЦИЯ Возвращает "+1", если индицируется «Реакция». В противном случае, возвращается "0". Признаки «Реакции»: текущий максимум меньше или равен максимуму предыдущей «Реакции» и текущий минимум меньше, чем минимум предыдущей «Реакции».

13.81  Reaction With Volume (Реакция с объемом)

СИНТАКСИС reactionwithvol()
ФУНКЦИЯ Возвращает "+1", если индицируется «Реакция». В противном случае, возвра-щается "0". Признаки «Реакции»: текущий максимум меньше или равен максимуму предыдущей «Реакции» и текущий минимум меньше, чем минимум предыдущей «Реакции».  Текущий объем должен быть больше, чем объем предыдущей «Реакции».

13.82  Reference (Ссылка)

СИНТАКСИС ref( DATA ARRAY, PERIODS )
ФУНКЦИЯ  Ссылается на предыдущий или последующий элемент массива данных (DA-TA ARRAY).  При положительном значении параметра PERIOD возвращается зна-чение элемента отстоящего на "n" периодов вперед; при отрицательном значении на "n" периодов назад.
ПРИМЕР  Формула "ref( CLOSE, -12 )" возвращает цену закрытия 12 дней назад.  Таким способом можно рассчитать 12-дневное изменение цены закрытия, выраженное в абсолютных величинах: "C  - ref( C, -12 )."  Формула"ref( C, +12 )" возвращает цену закрытия на 12 дней вперед.

13.83   Relative Strength Index (RSI) (Индекс относительной силы)

СИНТАКСИС rsi( PERIODS )
ФУНКЦИЯ  Рассчитывает встроенный «RSI indicator».
ПРИМЕР  rsi( 14 )

13.84   Round (Округление)

СИНТАКСИС round( DATA ARRAY )
ФУНКЦИЯ  Округляет значение массива (DATA ARRAY) до ближайшего целого числа.
ПРИМЕР  Формула"round( +10.5 )" возвращает +11.  Формула"round( -10.4 )" возвращает -10.
СМ. ТАКЖЕ  Функции ceiling(),  the floor(), the int() .

13.85   Selling Pressure (Напряжение прожажи)

СИНТАКСИС sellp()
ФУНКЦИЯ Рассчитывает компонент давления продажи индекса Потребности (Demand Index).  Напряжение продажи измеряетт величину объема, связанного с продажей.

13.86   Sine (Синус)

СИНТАКСИС sin( DATA ARRAY )
ФУНКЦИЯ  Возвращает значение синуса числа (DATA ARRAY).  Эта функция требует, чтобы параметр был выражен в градусах.
ПРИМЕР  Вы можете отобразить синусоиду при помощи формулы sin(cum(5)).  Увеличение значения параметра в этой формуле т.е. числа 5, приведет к увеличению частоты синусоиды.
СМ. ТАКЖЕ  Функции атаn(), cos(),

13.87   Square Root (Квадратный корень)

СИНТАКСИС sqrt( DATA ARRAY )
ФУНКЦИЯ  Возвращает квадратный корень данных массива (DATA ARRAY). Если значе-ние массива отрицательное число, возвращается 0.
ПРИМЕР  Формула sqrt( 16 )  возвращает 4.
СМ. ТАКЖЕ  Примеры по Стандартной девиации (Standard Deviation).

13.88 Standard Deviation (Стандартное отклонение)

СИНТАКСИС stdev( DATA ARRAY, PERIODS )
ФУНКЦИЯ  Рассчитывает встроенный Standard Deviation indicator.
ПРИМЕР  stdev( CLOSE, 21 )

13.89   Stochastic Oscillator (Стохастический осциллятор)

СИНТАКСИС stoch( %K PERIODS, %K SLOWING )
ФУНКЦИЯ  Рассчитывает встроенный «Stochastic Oscillator».
ПРИМЕР  Формула"stoch( 5, 3 )" возвращает значение индикатора с 5-дневным %K  и замедлением на 3 дня.
СМ. ТАКЖЕ  Примеры по данному осциллятору (Stochastic Oscillator).

13.90 Subtraction (Вычитание)

СИНТАКСИС sub( DATA ARRAY, DATA ARRAY )
ФУНКЦИЯ  Рассчитывает  разницу между первым и вторым параметрами.
ПРИМЕР  Формула sub( 10, 2 ) возвращает восемь. Иначе эта разница формула может быть выражена как "10 - 2."
СМ. ТАКЖЕ  Функцию add().

13.91   Summation (Кумулятивная сумма)

СИНТАКСИС sum( DATA ARRAY, PERIODS )
ФУНКЦИЯ  Рассчитывает кумулятивную сумму значений массива (DATA ARRAY) за оп-ределенный период (PERIOD), включая текущий день.
ПРИМЕР  Формула sum( CLOSE, 12 ) возвращает сумму цен закрытия за12 предшест-вующих торговых дней. Простая скользящая средняя с периодом 12 может быть выражена как sum(C,12)/12.
СМ. ТАКЖЕ  Функцию cum().

13.92  Swing Index (Индекс размаха)

СИНТАКСИС swing( LIMIT MOVE )
ФУНКЦИЯ  Рассчитывает встроенный  "Swing Index". Для расчета индекса необходимо иметь цены открытия.
ПРИМЕР  swing( 3.0 )
СМ. ТАКЖЕ  функцию aswing() (Accumulation Swing Index).

13.93  Theta (Тета)

СИНТАКСИС theta( TYPE, DATE, PRICE, INTEREST, DIVIDEND )
ФУНКЦИЯ  Рассчитывает встроенный  индикатор "Theta". См. функцию option() (Put/Call Price) где описываются параметры, используемые в функции theta().
ПРИМЕР  theta( EC, 941220, 125, 7.50, 4.75 )
СМ. ТАКЖЕ  Функции delta(), gamma(), life(), option(), vega(), volo()  (Delta, Gamma, Option Life, Put/Call Price, Vega, Volatility, Option).

13.94 Time Series Forecast (Временно-серийный прогноз)

СИНТАКСИС tsf( DATA ARRAY, PERIODS )
ФУНКЦИЯ  Рассчитывает встроенный  индикатор "Time Series Forecast"  с периодом "PERIODS" массива данных (DATA ARRAY).
ПРИМЕР  Формула tsf( CLOSE, 10 )  возвращает значения индикатора "Time Series Forecast" с для цен закрытия с периодом  10.
СМ. ТАКЖЕ  The correl() function (see Correlation Analysis).

13.95  Trade Volume Index (Индекс торгового объема)

СИНТАКСИС tvi( MINIMUM TICK )
ФУНКЦИЯ  Рассчитывает встроенный  "Trade Volume Index".
ПРИМЕР  tvi( 0.125 )
СМ. ТАКЖЕ  Функцию obv() (On Balance Volume) .

13.96  TRIX (Трикс)

СИНТАКСИС trix( PERIODS )
ФУНКЦИЯ  Рассчитывает встроенный  индикатор "TRIX".
ПРИМЕР  trix( 12 )

13.97  Trough (Донышко)

СИНТАКСИС trough( Nth, DATA ARRAY, % MINIMUM CHANGE )
ФУНКЦИЯ  Возвращает значение массива данных (DATA ARRAY) для  "донышка" от-стоящего на определенное  "Nth" число донышек назад. Это используется  в функции "Zig Zag" (см.) для идентификации "донышек". При  N=1 возвращает-ся значение самого ближайшего донышка, при N=2 значение второго из близлежащих донышек и т.д
ПРИМЕР  trough( 1,close,5 )

13.98  Trough Bars Ago (Число баров до Донышка)

СИНТАКСИС troughbars( Nth, DATA ARRAY, % MINIMUM CHANGE)
ФУНКЦИЯ  Возвращает число баров (дней , недель и т.д)  до  N-го "Nth" донышка. Это ис-пользу-ется в функции "Zig Zag" (см.). При  Nth=1 возвращается число баров прошедших с момента индикации последнего близлежащего донышка. При Nth=2 возвращается число баров прошедших с момента индикации предпоследнего близлежащего донышка и т.
ПРИМЕР  troughbars(1,close,5)

13.99  Typical Price (Типичная цена)

СИНТАКСИС typical()
ФУНКЦИЯ  Рассчитывает встроенный индикатор "Typical Price".

13.100 Ultimate Oscillator (Осциллятор предела)

СИНТАКСИС ult( CYCLE1, CYCLE2, CYCLE3 )
ФУНКЦИЯ  Рассчитывает встроенный  индикатор "Ultimate Oscillator". В качестве параметров используются циклы (CYCLE) различной продолжительности. (Соответственно короткий, средний  и длинный). Заметим, что значение каждого последующего цикла должно быть больше предыдущего, в противном случае появляется сообщение об ошибке. (Например, функция ult( 5, 5, 5)  некорректна).
ПРИМЕР  Формула ult( 7, 14, 21 ) возвращает значение "Ultimate Oscillator"по умолчанию.

13.101  Variance (Вариация)

СИНТАКСИС var( DATA ARRAY, PERIODS )
ФУНКЦИЯ  Рассчитывает значение статистической вариации данных массива (DATA ARRAY),    за специфицированный период (PERIOD).
СМ. ТАКЖЕ  Функцию stdev(), (Standard Deviation) и примеры по "Standard Deviation".

13.102  Vega (Вега)

СИНТАКСИС vega( TYPE, DATE, PRICE, INTEREST, DIVIDEND )
ФУНКЦИЯ  Рассчитывает встроенный  индикатор "Vega". См. функцию option(), (Put/Call Pri-ce), где описываются  параметры, используемые в функции vega().
ПРИМЕР  vega( EC, 941220, 125, 7.50, 4.75 )
СМ. ТАКЖЕ  Функции  delta(), gamma(), life(), option(), theta(), volo(). См. Delta, Gamma, Op-tion Life, Put/Call Price, Theta, Volatility, Option.

13.103  Vertical Horizontal Filter (Вертикальный и горизонтальный филтер)

СИНТАКСИС vhf( DATA ARRAY, PERIODS )
ФУНКЦИЯ  Рассчитывает встроенный  вертикальный и горизонтальный фильтр (Vertical Horizontal Filter) для данных массива (DATA ARRAY) за специфицированный период (PERIOD).

13.104  Volatility, Chaikin's (Волатильность Чайкина)

СИНТАКСИС vol( MA PERIODS, ROC PERIODS )
ФУНКЦИЯ  Рассчитывает встроенный  "Chaikin's Volatility indicator".
ПРИМЕР  vol( 10, 10 )

13.105   Volatility, Option (Волатильность, Опцион)

СИНТАКСИС volo()
ФУНКЦИЯ  Рассчитывает встроенный индикатор "Option, Volatility".
ПРИМЕР  volo()
СМ. ТАКЖЕ  Функции delta(), gamma(), life(), option(), theta(), vega(). См. Delta, Gamma, Option Life,  Put/Call Price, Theta, Vega.

13.106  Volume Oscillator (Осциллятор Объема)

СИНТАКСИС oscv( PERIODS, PERIODS, MA_METHOD, DIFF_METHOD)
ФУНКЦИЯ  Рассчитывает the PERIODS/PERIODS predefined Volume Oscillator indicator cal-culated using the MA_METHOD moving average method expressed in DIFF_METHOD.  Valid MA_METHODs are SIMPLE, EXPONENTIAL, WEIGHTED, TIMESERIES, TRIANGULAR, and VARIABLE  (these can be abbreviated as S, E, W, T, TRI, and VAR).  Valid DIFF_METHODs are PERCENT and POINTS (these can be abbreviated as % and $
ПРИМЕР  oscv( 1, 25, SIMPLE, $ )
СМ. ТАКЖЕ  Функцию oscp(). См. "Price Oscillator".

13.107   Weighted Close (Взвешенная цена закрытия)

СИНТАКСИС wc()
ФУНКЦИЯ Рассчитывает встроенный  индикатор "Weighted Close".

13.108   Williams' A/D (Аккумуляция/Дистрибуция Уилльямса)

СИНТАКСИС willa()
ФУНКЦИЯ Рассчитывает встроенный "Williams A/D indicator".

13.109  Williams' %R (Процентное отношение Уилльямса)

СИНТАКСИС willr( %R PERIODS )
ФУНКЦИЯ  Рассчитывает встроенный  "Williams' %R indicator".
ПРИМЕР  willr( 14 )

13.110  Year (Год)

СИНТАКСИС year()
ФУНКЦИЯ Возвращает год. Если на панели было выведено 10/15/94, функция вернет "94."

13.111 Zig Zag (Зигзаг)

СИНТАКСИС zig( DATA ARRAY, MINIMUM CHANGE, DIFF_METHOD )
ФУНКЦИЯ  Рассчитывает значения индикатора "Zig Zag" для массива данных (DATA ARRAY) со значением минимальных изменений (MINIMUM CHANGE) методом (DIFF_METHOD). Существуют методы (DIFF_METHOD): процентный (PERCENT) и абсо-лютных значений (POINTS). Сокращенно % и $.
ПРИМЕР  zig( CLOSE, 5, PERCENT )

 

========================

Системный отчет

 

 Показатель
 Description
 Описание
Общая чистая прибыль
Total Net Profit
Общая прибыль/убыток полученные в результате работы теста. Сюда также включается прибыль/убыток от “принудительного” закрытия открытой позиции (если такая существовала) в конце теста.
Процент прибыли или потерь
Percent Gain or Loss
Прибыль или убыток в процентах относительно начальных инвестиций.
Начальные инвестиции
Initial Investment
Количество денежных средств инвестированных в начале тестирования.
Цена открытой позиции
Open Position Value
Значение (цена) последней открытой позиции (если таковая была), которую в конце теста программа закрывает принудительно по цене последнего загруженного в тест периода. 
Общая чистая прибыль выраженная в процентах годовых
Annual Percent Gain/Loss
Формула расчета: Annual Gain/Loss  = _________________365_________________ *  Total Gain/Loss
                                                               Число календарных дней загруженных в тест
Прибыль полученная в тот момент, когда торговая  система не имела открытых позиций.
Interest Earned
Т.е. деньги были свободны и их можно было вложить в ликвидный “безрисковый” финансовый инструмент.
Текущая позиция
Current Position
Длинная (long), короткая (short), нет открытых позиций (out).
Дата открытия позиции
Date Position Entered
Дата открытия текущей позиции.
Прибыль которую можно было бы получить при стратегии “купить и держать”
Buy/Hold Profit
Эта стратегия подразумевает, что Вы совершаете покупку в первый день загруженных данных и держите эту позицию. Прибыль рассчитывается исходя из цен первого и последнего дня загруженных данных. Учитываются комиссионные за вход в позицию. Заметим, если “Buy/Hold Profit” имеет отрицательное значение, это означает, что прибыль принесла стратегия “продать и держать” (short and hold) в тех же размерах.
 
Buy/Hold Percent Gain/Loss
Прибыль при стратегии “Buy/Hold Profit” в процентном выражении относительно начальных инвестиций.
 
Days in Test 
Общее число календарных дней загруженных в тест
 
Annual Buy/Hold Percent Gain/Loss
Прибыль при стратегии “Buy/Hold Profit” в процентах годовых относительно начальных инвестиций.  См. “Annual Percent Gain/Loss”.
 
Total Closed Trades
Общее количество завершенных торговых операций. (Если при окончании тестирования остается открытая позиция, то она не включается в это количество.)
 
Average Profit Per Trade
Средняя прибыль на торговую операцию.(исключается незакрытая на конец теста позиция).
 
Total Long Trades
Количество завершенных (закрытых) длинных позиций.
 
Winning Long Trades
Количество завершенных (закрытых) с прибылью длинных позиций.
 
Commissions Paid
Сумма всех выплаченных комиссионных за время теста. (В эту сумму не включаются предполагаемые комиссионные за  закрытие открытых к окончанию теста позиций.)
 
Average Win/Average Loss Ratio
Отношение средней прибыли выигрышных операций  (Averages Win) к среднему убытку проигрышных операций (Average Loss).  “Averages Win” - сумма прибыли по всем выигрышным торговым операциям деленная на количество таких операций. “Average Loss” рассчитывается аналогично.
 
Total Short Trades
Количество завершенных (закрытых) коротких  позиций.
 
Winning Short Trades
Количество завершенных (закрытых) с прибылью коротких позиций.
Всего выигрышных операций
Total Winning Trades
Количество завершенных (закрытых) с прибылью длинных и коротких позиций.
 
Amount of Winning Trades
Общая прибыль от всех (коротких и длинных) выигрышных торговых операций.  Эта величина не включает прибыль от открытой на конец тестирования позиции, если таковая существует. Следовательно сумма  "Amount of Win Trades" и "Amount of Lose Trades" (см. ниже) может не совпадать с величиной общей чистой прибыли (Total Net Profit).
 
Average Win
Средняя прибыль рассчитанная  от всех  торговых  операций завершившихся с прибылью.
 
Largest Win
Наибольшая прибыль от торговой операции
 
Average Length of Win
Средняя продолжительность (в барах) выигрышных торговых операций.
 
Longest Winning Trade
Наибольшая продолжительность (в барах) выигрышной торговой операции.
 
Most Consecutive Wins
Наибольшее количество выигрышных торговых операций, следовавших одна за другой.
Всего проигрышных операций
Total Losing Trades
Количество завершенных (закрытых) с убытком длинных и коротких позиций.
 
Amount of Losing Trades
Общий  убыток от всех (коротких и длинных) проигрышных торговых операций.  Эта величина не включает убыток от открытой на конец тестирования позиции, если таковая существует. Следовательно сумма  "Amount of Lose Trades" может не совпадать с величиной общей чистой прибыли (Total Net Profit).
 
Average Loss
Средний убыток рассчитанный  от всех  торговых  операций завершившихся с убытком.
 
Largest Loss
Наибольший убыток от торговой операции.
 
Average Length of Loss
Средняя продолжительность (в барах) проигрышных торговых операций.
 
Longest Losing Trade
Наибольшая продолжительность  (в барах) проигрышной торговой операции.
 
Most Consecutive Losses
Наибольшее количество проигрышных торговых операций, следовавших одна за другой.
 
Total Bars Out
Суммарная продолжительность (в барах) нахождения системы без открытых позиций. (т.е. нет не короткой, не длинной позиции).
 
Longest Out Period
Наибольшая продолжительность  (в барах) нахождения системы без открытых позиций. (т.е. нет не короткой, не длинной позиции)
 
Average Length Out
Средняя продолжительность (в барах) нахождения системы без открытых позиций. 
 
System Close Drawdown
Значение наибольшего снижения линии денежного баланса (относительно начальных инвестиций) рассчитанного по фактически закрытым позициям.  Таким образом. это максимальное расстояние от линии начальных инвестиций до линии фактического денежного баланса при условии, что фактический денежный баланс ниже уровня начальных инвестиций.
 
System Open Drawdown
Значение наибольшего снижения линии денежного баланса (относительно начальных инвестиций) рассчитанного по открытым позициям.  Таким образом. это максимальное расстояние от линии начальных инвестиций до линии  денежного баланса  рассчитанного при открытой позиции (по текущим ценам) при условии, что такой баланс ниже уровня начальных инвестиций.
 
Max Open Trade Drawdown 
Значение наибольшего снижения  денежного баланса за одну торговую операцию (относительно цены входа в позицию) рассчитанного по открытым позициям.
“A trade's Open Position Drawdown” показывается в детализированном отчете по торговым операциям (Trade Detail Report).
 
Profit/Loss Index
Индекс сравнивает суммарную прибыль выигрышных (Amount of  Winning Trades) и  суммарные убытки проигрышных (Amount of Losing Trades) операций, приводя их к одному числу, которое может изменяться в пределах от -100 (наихудшее значение) до +100 (наилучшее значение).
Отрицательное значение индекса говорит о том, что торговая система генерирует только убытки. Положительное значение -система дает больше прибыли “Amount of Profitable Trades “ по сравнению с убытками “Amount of Losing Trades”.
 Index Profit/Loss
+100 Высокая прибыль/Нет убытков
+50 Прибыль > Убытков
0 Прибыль = Убыткам
-50 Прибыль < Убытков
-100 Нет прибыли/Большие убытки 
 
Reward/Risk Index
Этот индекс вознаграждение (Reward) и риск связанный с его получением. Риск в этом индексе определяется как “System Open Drawdown” (т.е., как самая низкая точка линии денежного баланса под линией начальных инвестиций). Вознаграждение определяется как общая чистая прибыль (Total Net Profits) (т.е., конечная точка на линии баланса).
Этот индекс комбинирует  вознаграждение и риск в один  показатель, который может изменяться от -100 (очень рискованный) до +100 (очень надежный).  Значение индекса “Reward/Risk” равное 0, подразумевает, что вознаграждение и риск уравновешивают друг друга.
Index Вознаграждение Риск
+100 Высокое Нет
+50 Среднее Средний
0 Нет Нет
-50 Низкое Средний
-100 Очень низкое Высокий 
 
Buy/Hold Index
Этот индекс показывает процентное отношение прибыльности работы торговой системы по сравнению  с прибыльностью  стратегии  “купи и держи”.  Значение "-50" говорит о том, что торговая система дала прибыль на половину меньше, чем  (т.е., 50%) стратегия “купи и держи”. Значение "25" - о том, что торговая система принесла прибыли на 25% больше. Значение  "0" - прибыльность одинакова..
Идеально, если Ваша система генерирует прибыльность выше, чем стратегия “купи и держи” (т.е., Buy/Hold Index > 0).