true – отображать графики выходных величин в той же области, где отображается входная величина (для универсального индикатора) или инструмент (для индикатора по инструменту); false – отображать графики выходных величин в отдельной области. Область добавляется в окно графиков автоматически при добавлении пользователем индикатора.

Пример

PriceStudy = true;        

Замечания

Для универсального индикатора задавайте значение «true», только если все выходные величины имеют ту же размерность, что и входная величина, и их значения близки к значениям входной величины. Аналогично, для индикатора по инструменту задавайте значение «true», только если все выходные величины выражаются в тех же единицах измерения, что и цены инструмента, и их значения близки к ценам инструмента.

AddSeries – определить выходную величину индикатора

Процедура, определяющая выходную величину индикатора (т. е. числовой ряд, рассчитываемый индикатором).

Синтаксис

AddSeries("ИмяВеличины", DrawAs. СпособОтображения, ЦветПоУмолчанию, Отображение );

ИмяВеличины – имя выходной величины. Используется в основном блоке для передачи полученного значения на отображение на графике. Должно соответствовать требованиям к именам объектов в сценарном языке Альфа-Директ. Когда индикатор добавлен на график, это имя отображается пользователю в перечне доступных величин при добавлении какого-либо универсального индикатора. Если пользователь выбирает данную величину для универсального индикатора, то это имя будет отображаться в обозначении универсального индикатора в верху его области.

НЕ нашли? Не то? Что вы ищете?

СпособОтображения – способ отображения графика. Допустимые значения:

    Line – отображать в виде линии; Histogram – отображать в виде гистограммы.

ЦветПоУмолчанию – константное выражение возвращающее цвет линии или гистограммы по умолчанию. Устанавливается на панели с настройками индикатора при его добавлении пользователем на график. Выражение имеет тип Color, определённый в. NET Framework.

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

Пример

AddSeries( "СреднееГеометрическое", DrawAs. Line, Color. Blue );

Секция инициализации стратегии

StrategyName – имя индикатора

Строковая глобальная переменная, определяющая имя стратегии.

Синтаксис

IndicatorName = "имя_индикатора";

Пример

IndicatorName = "WMA_Иванов";        

AddInput – Задать свойства источника данных

Процедура, задающая имя, и параметры по умолчанию источника данных.

Синтаксис

AddInput("ИмяИсточникаДанных", ТипВходногоРяда );

ИмяВходногоРяда должно соответствовать требованиям к именам объектов в сценарном языке Альфа-Директ.

ТипВходногоРяда. Допускаются следующие значения:

    Inputs. Price – индикатор является универсальным, при добавлении индикатора запросить у пользователя числовой ряд, который затем передавать в алгоритм вычисления индикатора. Inputs. Candle – индикатор является индикатором по инструменту, при добавлении индикатора запросить у пользователя инструмент, финансовый ряд которого передавать в алгоритм вычисления индикатора;

Пример

AddInput("Input", Inputs. Price);

AddParameter – определить параметр индикатора

Процедура, определяющая параметр алгоритма расчёта индикатора.

Синтаксис

AddParameter("ИмяПараметра", ВыражениеЗначенияПоУмолчанию, Длина );

ИмяПараметра – имя параметра, отображаемое пользователю при добавлении индикатора. По этому имени в основном блоке происходит получение значения, заданного пользователем. Должно соответствовать требованиям к именам объектов в сценарном языке Альфа-Директ.

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

Длина – Необходимая глубина истории в таймфреймах.

Пример

AddParameter("ДлинаПодпериода", 3., 3);

AddGlobalVariable – определить глобальную переменную

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

Синтаксис

AddVariable("ИмяПеременной", Types. Тип, ВыражениеНачальногоЗначения );

ИмяПеременной должно соответствовать требованиям к именам объектов в сценарном языке Альфа-Директ.

Тип задаёт тип переменной, одно из значений перечисления Types.

ВыражениеНачальногоЗначения задаёт начальное значение.

Пример

AddVariable("MyAverage", Types. Double, 0.0 );

Замечания

При повторном выполнении блока инициализации глобальной переменной используется уже выделенная область в памяти, при этом в неё заносится значение, полученное при вычислении ВыраженияНачальногоЗначения.

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

Секция вычисления

Доступ к системным данным

CurrentIndex – номер обрабатываемого таймфрейма

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

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

Назначение этой переменной – определение начальной точки расчета и проверка выхода за границы массива при обращении к выходным рядам:

  if( CurrentIndex >= i )

               Аккумулятор = Аккумулятор + Input[-i];

Другое назначение – вычислять длительность в барах между какими-либо событиями:

ДлительностьОжидания = CurrentIndexПредыдущегоСобытия - CurrentIndex;

Получение значения из входного числового ряда

Данная языковая конструкция доступна только в блоке вычисления стратегии

Синтаксис

Получить значение на текущем баре

ИмяВходногоЧисловогоРяда

Получить значение на предыдущем баре

ИмяВходногоЧисловогоРяда[смещение]

ИмяВходногоЧисловогоРяда – имя, указанное в процедуре AddInput инициализационного блока

смещение – смещение в барах. Выражение, возвращающее неположительное целое число. Если смещение равно 0, то будет получено значение с текущего бара.

Получение значения из входного финансового ряда в неуниверсальном индикаторе

Синтаксис

Получить значение на текущем баре

ИмяВходногоФинансовогоРяда. ВеличинаФинансовогоРяда

Получить значение на предыдущем баре

ИмяВходногоФинансовогоРяда. ВеличинаФинансовогоРяда[смещение]

ИмяВходногоЧисловогоРяда – имя, указанное в процедуре AddInput инициализационного блока

смещение – смещение в барах. Выражение, возвращающее неположительное целое число. Если смещение равно 0, то будет получено значение с текущего бара.

ВеличинаФинансовогоРяда – имя величины, содержащейся в финансовом ряду. Доступны следующие имена:

    Open – цена закрытия; Close – цена закрытия; Low – цена закрытия; High – цена закрытия; Volume – объём сделок; VolumeAsk – объём сделок покупки; VolumeBid – объём сделок продажи; OpenInterest – открытый интерес (доступно только для фьючерсов и опционов).

Примеры

Сравнение текущей цены открытия с константой в условном операторе:

if ( Инстр. Open < 143.23 )

{

               . . .

Объявление переменной и присвоение ей среднего объёма сделок продаж за 3 последние таймфрейма, включая текущий, с весовыми коэффициентами 0.1, 0.2 и 0.7:

double СрВз_ОбъёмПрод = 0.1*Инстр. VolumeAsk[-2] + 0.2*Инстр. VolumeAsk[-1] + 0.7*Инстр. VolumeAsk[0];

Функции, возвращающие текущие показатели работы робота

Данные функции доступны только в блоке вычисления стратегии. Данные функции не имеют параметров вызова. Доступны следующие функции:


Имя функции

Возвращаемая величина

CurrentPosition

Размер открытой роботом позиции в штуках инструмента. Если позиция шорт, то возвращается отрицательное число.

Если в момент вызова функции не имеется открытой позиции, то возвращает 0.

AverPrice

Учётная цена открытой роботом позиции.

Если в момент вызова функции не имеется открытой позиции, то возвращает 0.

MaxLongAllowed

Максимальное количество инструмента в штуках в позиции лонг. Этот параметр задаётся пользователем при запуске робота и не изменяется при его работе.

MaxShortAllowed

Максимальное количество инструмента в штуках в позиции шорт. Этот параметр задаётся пользователем при запуске робота и не изменяется при его работе.

CurrentPL

Текущий доход по открытой позиции в валюте инструмента. Вычисляется с учётом последней цены закрытия инструмента.

Если в момент вызова функции не имеется открытой позиции, то возвращает 0.

CurrentPLper

Изменение цены закрытия в процентах относительно учётной цены по открытой позиции.

RealizedPL

Текущий реализованный доход без учёта текущей открытой позиции.


Примеры

Сравнение учётной цены с константой в условном операторе:

if( AverPrice() < 143.23 )

Объявление переменной и присвоение ей текущего реализованного дохода:

double УчЦена = RealizedPL();

Процедуры торговых операций

Торговые действия доступны в основном блоке кода стратегии. Все торговые действия робот совершает только по инструменту, заданному в торговом источнике данных. При этом обеспечивается, что размер позиции не будет превышать размер, заданный пользователем.

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

EnterLong – Открыть позицию лонг

Закрывает шорт, отрытый роботом (если он имеется), и открывает позицию лонг по инструменту, указанному в торговом источнике данных

Синтаксис

Открыть позицию на количество, вычисляемое в алгоритме стратегии

EnterLong(Количество);

Количество – количество инструмента в штуках, которое указывается в заявке.

Открыть позицию на всё количество, заданное при запуске робота

EnterLong();

CloseLong – Закрыть позицию лонг

Закрывает лонг, отрытый роботом (если он имеется).

Синтаксис

Закрыть позицию на количество, вычисляемое в алгоритме стратегии

CloseLong(Количество);

Количество – количество инструмента в штуках, которое указывается в заявке.

Закрыть позицию на количество, заданное при запуске робота

CloseLong();

EnterShort – Открыть позицию шорт

Закрывает лонг, отрытый роботом (если он имеется), и открывает позицию шорт по инструменту, указанному в торговом источнике данных

Синтаксис

Открыть позицию на количество, вычисляемое в алгоритме стратегии

EnterShort(Количество);

Количество – Количество инструмента в штуках, которое указывается в заявке.

Открыть позицию на количество, заданное при запуске робота

EnterShort();

CloseShort – Закрыть позицию шорт

Закрывает шорт, отрытый роботом (если он имеется).

Синтаксис

Закрыть позицию на количество, вычисляемое в алгоритме стратегии

CloseShort(Количество);

Количество – Количество инструмента в штуках, которое указывается в заявке.

Закрыть позицию на количество, заданное при запуске робота

CloseShort();

Stop – Отозвать невыполненные заявки и завершить выполнение стратегии

Синтаксис

Stop();

Замечания

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

Процедуры неторговых действий

SendMessage – Направить текстовое сообщение пользователю

Выдаёт текстовое сообщение. Данное сообщение добавляется в окно Сообщения на закладку Системные сообщения, и отображается на экране в виде исчезающей панели (если установлены настройки отображать сообщения в виде исчезающей панелей).

Синтаксис

ShowMessage(”Текст”);

Текст – выражение, выдающее текстовою строку.

PlaySound – Выдать звуковой сигнал

Выдаёт звуковой сигнал из звуковой схемы Windows, соответствующий заданному программному событию.

Синтаксис

PlaySound(InnerSystemSounds. ПрограммноеСобытие);

ПрогораммноеСобытие – программное событие в звуковой схеме Windows, звук которого нужно выдать:

    Exclamation – Восклицание Asterisk – Звездочка Beep – Стандартный звук Hand – Критическая ошибка Question – Вопрос

(Наименования программных событий звуковой схемы приведены для Windows 7)

Пример

Проиграть звуковой файл, назначенный в звуковой схеме Windows событию «Критическая ошибка»:

PlaySound(InnerSystemSounds. Hand);


Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9