Кроме того, поддерживаются вызовы встроенных процедур и обращения к элементам встроенных перечислений. Конструкции с такими выражениями описаны ниже.
Обращение к элементу массива:
ИмяМассива[индекс]
ИмяМассива – имя массива, определённого ранее.
Индекс – выражение, выдающее целочисленное значение, используемое как индекс.
Перечисление – это набор именованных констант, которые могут быть переданы в качестве определённого параметра во встроенную процедуру. Попытка передать в параметр процедуры константу, не включённую в перечисление, может привести к ошибке.
Обращение к элементу встроенного перечисления:
ИмяПеречисления. ИмяЭлемента
ИмяПеречисления – имя встроенного перечисления.
ИмяЭлемента – имя элемента перечисления.
Все случаи использования перечислений приведены в настоящем документе.
Оператор присваивания
Синтаксис
ИмяПеременной = выражение;
ИмяПеременной – имя переменной или выходной величины, определённой пользователем.
выражение – выражение, вычисленное значение которого следует сохранить в переменной.
Секции скриптов стратегий и пользовательских индикаторов
Синтаксис
function ИмяСекции()
{
последовательность_операторов
}
ИмяСекции – имя секции. Допустимые имена секций:
- Initialize – секция инициализации индикатора и стратегии; Evaluate – секция вычисления скрипта пользовательского индикатора; OnUpdate – секция вычисления скрипта стратегии.
Последовательность_операторов – тело секции. Последовательность операторов, реализующая алгоритм секции. Операторы разделяются символом «;».
Замечания
Скрипт стратегии или пользовательского индикатора должен состоять из последовательности двух секций: секции инициализации и секции вычисления. Вне тела секции не допускаются какие-либо элементы языка Альфа-Директ.
Определение переменных
Синтаксис
Определение скалярной переменной с присваиванием:var имяПеременной = инициализирующее_выражение;
Определение скалярной переменной без присваивания:тип имяПеременной;
Определение скалярной переменной без присваивания, тип переменной выводится автоматически:var имяПеременной = инициализирующее_выражение;
Определение массива:тип[] имяМассива = new тип[количество];
имя – имя определяемой переменной (удовлетворяющее требованиям к именам переменных)
инициализирующее_выражение – выражение, значение которого будет вычислено при выполнении данного оператора, и записано в переменную.
тип – тип значений, которые могут храниться в переменной. В 1-м варианте тип переменной будет выведен при компиляции при вычислении инициализирующего выражения.
количество – количество элементов в массиве.
Замечания
В тексте программы обращению к переменной должно предшествовать её определение.
Переменная доступна только внутри той секции, где она определена. Кроме того, если переменная определена внутри блока операторов, то она доступна только внутри данного блока.
Если не указано инициализирующее_выражение, то перед первым обращением в переменную должно быть записано какое-либо значение. При определении массива в его элементы записывается значение по умолчанию, соответствующее типу элементов, например, массив целых чисел инициализируется нулевыми значениями.
Вышеприведённый синтаксис не позволяет передавать через переменную данные между выполнениями секции, т. е. значение, вычисленное при обработке одного таймфрейма, и сохранённое в переменную, будет утеряно до обработки следующего таймфрейма.
Блок операторов
Один или несколько операторов, выполняемых последовательно.
Синтаксис
Блок из одного оператора:Оператор;
Блок из нескольких операторов:
{
ПоследовательностьОператоров;
}
Оператор – оператор языка
ПоследовательностьОператоров – последовательность операторов, разделённых символом «;»
Условный оператор if
Синтаксис
if( условноеВыражение )
БлокОператоров
else
АльтернативныйБлокОператоров
условноеВыражение – выражение, выдающее логическое значение.
БлокОператоров – блок операторов, выполняющийся, если условное выражение выдало значение «истина».
АльтернативныйБлокОператоров – блок операторов, выполняющийся, если условное выражение выдало значение «ложь».
Оператор цикла for
Синтаксис
for( Инициализация; Проверка; ОператорОкончанияТелаЦикла )
БлокОператоров
Инициализация – оператор, выполняющийся единожды перед выполнением циклов. Может представлять собой определение переменной.
Проверка – выражение, выдающее логическое значение. Вычисляется перед каждым выполнением БлокаОператоров. Если выражение выдало значение «истина», то выполняется БлокОператоров. В противном случае оператор цикла for считается выполненным, и выполняется оператор, следующий за этим оператором цикла.
БлокОператоров – тело цикла. Блок операторов, выполняющийся, если условное выражение выдало значение «истина».
ОператорОкончанияТелаЦикла – оператор, выполняющийся после каждого выполнения тела цикла. После его выполнения всегда вычисляется Проверка.
Пример
Подготовка массива весовых коэффициентов из 100 элементов, образующих геометрическую прогрессию:
int Arraylength = 100;
int SumW = (double) Arraylength * ( (double) Arraylength + 1.0 ) / 2.0;
double[] ar = new double[Arraylength];
for( int i = 0; i < Arraylength; i++ )
ar[i] = (double) i / SumW;
Встроенные объекты сценарного языка Альфа-Директ
Перечисления
Types
Тип данных глобальной переменных
Значения:
- Double Int Color String Boolean
Inputs
Тип входного ряда
Значения:
- Price – Входной ряд является обычным числовым рядом Candle – Входной ряд является финансовым рядом
DrawAs
Способ представления графика.
Значения:
- Line – график величины представляется в виде ломанной линии Histogram – график величины представляется в виде гистограммы
InnerSystemSounds
Событие в звуковой схеме Windows.
Поля приведены на стр. 47.
Классы. Net Framework
В каждой из секций скрипта доступны следующие классы. Net Framework версии 4.0:
- DateTime Color Type Int32 Double String Math
Документация по данным классам и синтаксису для их использования размещена на сайте MSDN фирмы-разработчика. Net Framework и языка C#.
Ниже приведён перечень поддерживаемых языковых конструкций для работы с классами:
- Создание экземпляра Вызов статичного метода Вызов метода экземпляра Получение значения свойства
Секция инициализации пользовательского индикатора
IndicatorName – имя индикатора
Строковая глобальная переменная, определяющая имя индикатора.
Синтаксис
IndicatorName = "имя_индикатора";
Пример
IndicatorName = "WMA_Иванов";
AddInput – Задать свойства входных данных
Процедура, задающая имя и свойства потока числового или финансового ряда входных данных. Определяет, является ли индикатор универсальным.
Синтаксис
Определить числовой входной ряд для универсального индикатораAddInput( "ИмяВходногоЧисловогоРяда", Inputs. Price );
Определить финансовый входной рядAddInput( "ИмяВходногоФинансовогоРяда", Inputs. Candle );
ИмяВходногоЧисловогоРяда и ИмяВходногоФинансовогоРяда должны соответствовать требованиям к именам объектов в сценарном языке Альфа-Директ. Эти строки используются в основном блоке в качестве идентификатора входного ряда для доступа к нему.
Пример
AddInput("Input", Inputs. Price);
Замечания
Для пользовательского индикатора можно определить только один входной ряд.
AddParameter – определить параметр индикатора
Процедура, определяющая внешний параметр алгоритма расчёта индикатора.
Синтаксис
AddParameter("ИмяПараметра", ВыражениеЗначенияПоУмолчанию, Длина );
ИмяПараметра – имя параметра, отображаемое пользователю при добавлении индикатора. По этому имени в основном блоке происходит получение значения, заданного пользователем. Должно соответствовать требованиям к именам объектов в сценарном языке Альфа-Директ.
ВыражениеЗначенияПоУмолчанию – значение, которое устанавливается на панели с настройками индикатора при его добавлении пользователем на график.
Длина – множитель значения параметра для вычисления необходимой глубина истории.
Пример
Задать параметр с названием «Period» с начальным значением 3 и множителем требуемой длины 3, который обеспечивает 9 баров истории при значении параметра 3.
AddParameter("Period", 3, 3);
AddGlobalVariable – определить глобальную переменную
Процедура, создающая в памяти глобальную переменную - область в памяти компьютера, служащая для хранения и передачи числового значения между выполнениями основного блока.
Синтаксис
AddVariable("ИмяПеременной", Types. Тип, ВыражениеНачальногоЗначения );
ИмяПеременной должно соответствовать требованиям к именам объектов в сценарном языке Альфа-Директ.
Тип задаёт тип переменной, одно из значений перечисления Types.
ВыражениеНачальногоЗначения задаёт начальное значение.
Пример
AddVariable("MyAverage", Types. Double, 0.0 );
Замечания
При повторном выполнении блока инициализации глобальной переменной используется уже выделенная область в памяти, при этом в неё заносится значение, полученное при вычислении ВыраженияНачальногоЗначения.
Глобальная переменная не предназначена для передачи данных в другие индикаторы. Она доступна только в коде того индикатора, где она определяется. Если пользователь добавит на график несколько технических индикаторов, где определены глобальные переменные с одним и тем же именем, то эти индикаторы не будут друг на друга влиять через глобальные переменные.
PriceStudy – задать область отображения индикатора
Логическая переменная, задающая местоположение графиков выходных величин индикатора
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 |


