Sergey Kosinsky Personal web site

Дополнительные функции для Метастока 7.0-11.0

Введение.

Как известно, встроенный язык Метастока недостаточно развит для написания сложных формул. Но существует возможность реализовать практически любой алгоритм с помощью т.н. внешних дополнительных функций в виде динамически подключаемых модулей. Ограничения на передачу параметров во внешнюю функцию таковы, что можно передавать массив чисел с плавающей точкой, число в формате с плавающей точкой, произвольную строку символов и перечисление (одно символьное значение из конечного набора символов) - всего суммарно до девяти переменных. В качестве  массива можно передавать числовой параметр. Также в DLL всегда неявно передается DTOHLCVOI массивы значений базовой бумаги, даже если эта бумага не отображается на графике.

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


При создании индикатора Метасток позволяет использовать помощника Paste Functions для выбора какой либо функции из списка, где в окошке Format создает подсказку по ее применению.

Метасток не накладывает никаких требований на название аргументов и/или обозначение типов аргументов, но в описании формата вызова функции я придерживаюсь следующих правил:
- для обозначения массива к имени параметра будут добавляться квадратные скобки [];
- имя числового параметра никак не будет выделяться;
- имя параметра для строки символов будет заключено в кавычки;
- набор символических имен элементов перечисления обрамлен в квадратные скобки [] и содержит все допустимые имена, разделенные символом "|".

Имена параметров по возможности будут отражать физический смысл переменной. Для удобства любой элемент перечисления может иметь более одного символического имени, например Long и L для длинных позиций, Short и S для коротких, Both и B для реверсивных позиций. Регистр букв Метасток не проверяет.

Состав.

Текущая версия MSX_KSR.DLL (см. примечание) содержит набор из следующих функций:

 

Название Описание
CER Centered Extremum Range ( основан на коде $CER )
JMA Jurik Moving Average
JTPO Jurik Turning Point Oscillator
NRTR Nick Rypock Trailing Reverse (основан на коде $NRTR_DT)
NRTR_WATR North Russian Trailing Reverse Function based on Weighted Average True Range with Multiplier (основан на коде $NRTR_WATR)
Renko_WATR Ренко с адаптивностью взвешенной средней торгового диапазона (основан на Renko-Adaptive indicator based on ATR)
ReadData Чтение данных из файла
WriteData Запись данных в файл
WriteDataEx Запись данных в файл с расширенными возможностями
TradeFile Запись сигналов МТС в файл для анализа в Xpress Analizator
TradeQuik Формирование приказов на совершение сделок

 

Алгоритмы некоторых из этих функций были описаны в журнале "Современный трейдинг", #4, 2001 г в статье "Трендовый индикатор прорыва динамического ценового канала", а последние варианты ELA кодов этих функций или индикаторов опубликованы на страницах сайта Константина Копыркина (aka konkop)

Функции WriteData, WriteDataEx и ReadData появились в результате попытки адаптации для  Метастока некоторых индикаторов, работающих с разными таймфреймами.

Установка.

Для установки необходимо взять msx_ksr.dll (только для использования на территории России, интернациональная версия здесь msx_ksr.zip ) и положить в каталог:
"C:\Program Files\Equis\MetaStock\External Function DLLs", а после перезагрузки Метастока создать новые индикаторы, содержащие вызовы внешних функций. Наименование индикатора может совпадать или не совпадать с наименованием функции.

 

Примечание. Отличия в текущей версии DLL от предыдущих версий:

v1.8.0.11 от 23.12.2006
Востановлены JMA и JTPO.

v1.8.0.7 от 31.01.2006
Исправлена ошибка деления на ноль в функции RENKO_WATR, если в котировках были вырожденные бары у которых Open=High=Low=Close.

v1.8.0.4 от 15.09.2005
По предложению Михаила Королюка значительно расширена функциональность функции WriteData. Новая функция получила названеи WriteDataEx().
Исправлена ошибка в функции TradeQuik() - игнорировались значения Account, Client_Code переданные в функцию как параметры.

v1.7.0.5 от 11.10.2004 
Изменена функция CER(). Добавлена возможность работы функций не только по цене закрытия, но и по произвольному ряду данных. Для сохранения совместимости с предыдущей версией необходимо в качестве произвольного ряда данных DataArray[] передавать во внешнюю формулу значение цены закрытия Close.

v1.7.0.4 от 21.08.2004 
Исправлена ошибка чтения в функции ReadData() если бар имел время 00:00.000. В функции ReadData() WriteData() добавлены макроподстановки позволяющие формировать имя файла исходя из названия  и периодичности базовой бумаги.

v1.7.0.Аналоги функций JMA и JTPO.

v1.6.1.Автоматический вывод заявок в файл для Квика.  Расширена функция "RENKO_WATR"  - кроме значений Up и Down можно использовать следующие  Auto - рисует линию, совпадающую с линией Up на восходящем участке тренда и с линией Down на нисходящем, а также Long, Short или Both -   возвращает торговые сигналы.

v1.5.2.Устранена ошибка, вызывавшая невозможность добавления новых внешних MSX dll с помощью Formula Organizer Wizard при установленной MSX_KSR.dll.

v1.5.Добавлены новые функции WriteFile и ReadFile. Версия ограниченного распространения.

v1.4.1.По предложению SwingTrader в функции TradeFile оставшаяся открытая позиция может быть принудительно закрыта на последнем баре. 

v1.4.Добавлена новая функция "TradeFile". Каталог вывода и ник автора должны быть заданы в файле конфигурации.

v1.3.1.По предложению Михаила Королюка в функцию RENKO_WATR добавлена возможность работы с произвольным рядом данных (см. выше примечания к версии v1.1).

v1.3.Добавлена новая функция "RENKO_WATR". Вызывать ее необходимо дважды - отдельно для рисования нижней линии с параметром Dn и отдельно для верхней с параметром Up.

v1.2.Добавлена новая функция "CER". Еще раз изменена функция NRTR - теперь в качестве второго аргумента Koefficient[] может быть задана как константа Ko так и произвольный ряд данных, например ExtFml("msx_ksr.CER", Len). Метасток сам преобразует константу в массив констант.

v1.1.Добавлена возможность работы функций не только по цене закрытия, но и по произвольному ряду данных. Для сохранения совместимости с оригинальной ELA версией необходимо в качестве произвольного ряда данных DataArray[] передавать во внешнюю формулу значение цены закрытия Close. Для чего это нужно спрашивайте у Михаила Королюка.

Замечания и предложения можно оставить на странице обратной связи.

FAQ по MSX_KSR.dll
/ksr
Сергей Р. Косинский,
Санкт-Петербург, Россия.
Создано: 18 ноября 2001

Обновлено: February 21, 2011

www.000webhost.com