Логотип Парус Инвестора
Парусник
Цена деления цифровой шкалы
Системы и стратегии

Учебник по языку программирования Easy Language
Использование Переменных

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

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

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

Например, в переменной X Вы может хранить значение максимальной цены бара плюс 33 % среднего истинного диапазона. Как только это значение рассчитано и назначено на переменную, нет необходимости писать формулу снова; Вы можете использовать X для того, чтобы обратиться к этому значению.

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

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

Например, следующие команды сохраняют счетчик количества баров, начиная с последнего ключевого разворота тренда:

Variable: Counter(-1);

If Counter <> -1 Then

Counter = Counter + 1;

If Low < Low[1] AND Close > High[1] Then

Counter = 0;

Переменная Counter (Счетчик) начинается со значения -1 (которое назначается в инструкции Variable Declaration (Объявление Переменной)), и увеличивается на единицу на каждом баре, начиная со значения -1.

Этот индикатор изменяет переменную (Counter) от -1 до 0 в первый раз, когда обнаружен ключевой разворот, и впоследствии сбрасывает счетчик к 0 каждый раз, когда находит новый ключевой разворот. Обратите внимание, как команда Counter=Counter+1 назначенная на переменную, заменяет ее текущее значение, и прибавляет единицу. Это не было бы возможно, если переменные не переносили свои значения от бара к бару.

Ссылка на переменные позволяет избежать ошибок печати и делает вашу процедуру более четкой. Например, рассмотрим следующую инструкцию:

If Close > High[1] + Average(Range,10) * 0.5 Then

Buy Next Bar at High[1] + Average(Range,10) * 0.5 Stop;

Используя переменную (в нашем примере переменная - Value1), мы можем упростить инструкцию:

Value1 = High[1] + Average(Range, 10) * 0.5;

If Close > Value1 Then

Buy Next Bar at Value1 Stop;

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

Обратите внимание: Если Вы используете выражение очень часто и более чем в одном торговом сигнале или методике анализа, Вы можете создать функцию. Переменные могут использоваться только в процедуре, где они объявлены и не доступны (не передаются) между торговыми сигналами и методами анализа, тогда как на функции можно сослаться в других торговых сигналах и методах анализа, и даже других функциях. Функции подробно рассматриваются далее в этой главе, в Разделе "Понимание Пользовательских Функций" на странице 50.

При работе с переменными, Вы объявляете их, назначаете им значения, и далее ссылаетесь на их значения. Как это делается, подробно обсуждается далее.


Объявление Переменных

Прежде, чем Вы сможете использовать какое-либо имя (название) как переменную, Вы должны "сказать" EasyLanguage, что данное имя должно использоваться как переменная; это известно как объявление переменной(ых). Чтобы объявить переменную, Вы используете инструкцию Variable Declaration. Когда Вы объявляете переменную, Вы также определяете ее тип и начальное значение.

Синтаксис:

Variable: Name(Value);

Имя - это наименование переменной. Имя должно начинаться с символа, и может содержать максимум 20 символов. Имя может содержать символы, числа, черточки, или периоды. Значение - любое числовое, истинное/ложное (true/false), или текстовое строковое значение; это - начальное значение переменной.

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

Variables: Number(0), Condition(False), TextSt("Text");

Нет никакого ограничения для количества переменных, которые Вы можете объявить в одной инструкции, хотя, если Вам так удобно, то Вы можете использовать несколько инструкций для объявления переменных. Также нет ограничений для количества инструкций Variable Declaration, которые Вы можете использовать.

Такие зарезервированные слова как Var, Vars и Variables - синонимы к Variable и могут использоваться взаимозаменяемо. Например, Вы можете переписать инструкцию выше как:

Vars: Number(0), Condition(False);

Var: TextStr("Text");

Значения в круглых скобках имеют два предназначения. Во-первых, они указывают тип переменной, которая может быть: числовой, истинной/ложной или текстовой строкой. Если Вы используете числовое выражение, переменная - числовая переменная; если Вы используете выражение true/false, то это - истинная/ложная переменная; и аналогично, если Вы используете, текстовое строковое выражение, переменная - текстовая строковая переменная.

Во-вторых, значение в круглых скобках назначает начальное значение переменной. Как объяснено ранее в этой книге, все команды в EasyLanguage читаются сверху вниз, и они интерпретируются для каждого бара на диаграмме слева направо. Переменная берет значение в круглых скобках как свое начальное значение.

Обратите внимание: Для вашего удобства, EasyLanguage обеспечивает множество предобъявленных числовых и истинных/ложных переменных. Вы можете использовать эти переменные в ваших торговых сигналах, методах анализа и функциях, не объявляя их и не устанавливая их начальное значение. Числовые переменные, доступные для Вашего использования - от Value0 до Value99, и их начальное значение - ноль (0). Учтите, что в большинстве наших примеров мы используем Значение 1. Истинные/ложные переменные, доступные для Вашего использования - от Condition0 до Condition99, и их начальное значение является False (Ложным). Нет никаких предобъявленных текстовых строковых переменных. Единственное преимущество для использования предобъявленных переменных состоит в том, что Вы не должны объявлять их. Недостаток - то, что название(я) менее интуитивно понятны, и Вы не можете установить их начальные значения самостоятельно.


Назначение Значений Переменным

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

Синтаксис:

Name = Expression;

Имя - наименование переменной, и Expression (Выражение) является или числовым, истинным/ложным, или текстовым строковым выражением. Тип выражения должен соответствовать типу переменной. Если инструкция объявляет значение как числовую переменную, выражение должно быть числовым выражением.

Например, следующая инструкция назначает средний истинный диапазон последних 10 баров как переменную Value1:

Value1 = Average(TrueRange, 10);

Следующие инструкции объявляют истинную/ложную переменную по имени KeyReversal, и затем назначают результат сравнения этой переменной:

Variable: KeyReversal(False);

KeyReversal = Low < Low[1] AND Close > High[1];

Ссылка на Значение Переменной

Как только Вы объявили переменную, и ей было назначено значение, Вы можете ссылаться не это значение, используя имя переменной вместо выражения. Например, следующие инструкции вычисляют цену вход на покупку, объявляют ее как числовую переменную по имени EntryPrc, и затем ссылаются на значение переменной в заказе на покупку:

Variable: EntryPrc(0);

EntryPrc = Highest(High, 10);

If MarketPosition <> 1 Then

Buy Next Bar at EntryPrc Stop;

В следующем примере инструкции вычисляют самый высокий максимум последних 10 баров, сравнивают это с текущим максимумом высоко, и объявляют результат как истинную/ложную переменную по имени Condition1. В этом случае мы используем инструкцию IF-THEN, чтобы определить, истинно ли Condition1, и если так, то затем генерируется сигнал (alert):

Condition1 = High > Highest(High, 10)[1];

If Condition1 Then

Alert("New 10-bar high");

Обратите внимание, что мы не обязаны использовать сравнение Condition1=Истина. Однако если Вы хотите генерировать такой же сигнал, но при этом выражение является ложным, то Вы должны написать сравнение следующим образом:

Condition1 = High < Highest(High, 10)[1] AND Low > Lowest(Low,10)[1];

If Condition1 = False Then

Alert("New high or low");

Обычно записывают выражение так, чтобы проверялась истинность выражения; однако, Вам решать каким образом записать выражение или инструкцию.

Также возможно обратиться к значению переменной на предыдущем баре; чтобы сделать это, включите после имени переменной в квадратных скобках число. Например, следующие инструкции обращаются к значению переменной по имени EntryPrc пять баров назад:

Variable: EntryPrc(0);

EntryPrc = Highest(High, 10);

If EntryPrc > EntryPrc[5] Then

Buy Next Bar at Entryprc Stop;

Совет: "Работая с Series Variables" EasyLanguage автоматически определяет, происходит ли обращение к предыдущему значению переменной в каком-либо пункте в торговом сигнале, методике анализа или функции и, если необходимо, хранит исторические значения переменной, (и так много, как определено установкой MaxBarsBack). Например, рассмотрим следующий индикатор:

Value1 = Close * 1.05;

Value2 = Close - Close[10];

Value3 = Value1[5] + Value2;

Plot1(Value3);

На историческое значение Value1 ссылаются в третьей строке (значение пять баров назад); установка MaxBarsBack для индикатора - 10 (так как есть ссылка на закрытие 10 баров назад, и это значение - максимально требуемая история). Поэтому, индикатор будет хранить значения для Value1 для последних 10 баров. Переменные Value2 и Value3 не требуют, чтобы их история сохранялась, и, таким образом, исторические значения этих переменных не сохраняются.

Переменная может быть простой или рядом (серией). Когда она представляет серию значений, история сохраняется; когда переменная простая - история не сохраняется. Это свойство переменных становится важным при доступе к значениям переменных от сторонних языков через DLLs, потому что там может и не быть исторических данных, сохраненных для переменной, или храниться не столько данных, сколько желательно сторонним разработчикам. В этом случае Вы можете принудительно объявить переменную как переменную ряда, ссылаясь на предыдущее значение переменной в торговом сигнале, методике анализа или функции (то есть, используя 'фиктивную' инструкцию). Или, Вы можете хотеть рассмотреть работу с функциями; Вы можете вынудить функцию быть функцией ряда.

Использование Констант

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

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

Например, 1-строчный Индикатор Скользящего среднего написан с константой по имени Length, которая является числом баров, которые надо включить в среднее. Этой константе назначено значение по умолчанию 9, но Вы можете заменить это значение на любое число в тот момент, когда Вы применяете индикатор к диаграмме или таблице, имея, таким образом, торговый сигнал, методику анализа или функцию, которые вычисляют скользящее среднее, используя любое количество баров.

Константы придают максимальные гибкость и управляемость стратегией торговли или методикой анализа, без необходимости обращаться к EasyLanguage PowerEditor или TradeStation StrategyBuilder. Кроме того, Вы можете использовать одну и ту же процедуру EasyLanguage в окне диаграммы или табличном сетки (или в различных окнах диаграммы или табличных приложениях), используя различные значения констант в каждом из них.

Например, Вы можете применить 1-строчный Индикатор Скользящего среднего к диаграмме Microsoft, чтобы вычислить 10-барное среднее, и Вы можете применить тот же самый индикатор к диаграмме IBM , чтобы вычислить 18-барное среднее. Константы позволяют одному и тому же индикатору осуществлять эти различные вычисления; Вы не должны создавать новый индикатор или даже изменять его в EasyLanguage PowerEditor.

Другое важное преимущество состоит в том, что, когда Вы используете inputs в ваших торговых сигналах, Вы можете тогда использовать особенности оптимизации TradeStation в вашей торговой стратегии. Для получения информации относительно оптимизации ваших торговых стратегий, обращайтесь к Мастеру Ответов Интерактивного Пользовательского Руководства в раздел "Понятие Оптимизации".


Типы Констант

Константы могут быть трех типов: числовая, истинная/ложная или текстовая строка. Числовая константа представляет собой числовые значения, истинная/ложная константа представляет собой выражение, которое вычисляется как Истина или Ложь, и текстовые строковые выражения содержат текстовые строки.

Константы могут быть буквальными выражениями типа определенного числа или текстовой строки, или они могут быть выражениями, значения которых изменятся от бара к бару; например, константа может быть установлена как значение закрытия бара, и тогда значение константы изменяется с каждым баром. Или, это может быть установлено на диапазон бара, используя функцию Range. Значение константы не может измениться в пределах бара.

Чтобы использовать Константы, Вы сначала должны объявить их; как только Вы объявите их, Вы можете ссылаться на них в вашем торговом сигнале или методике анализа. Нет никакого Оператора присваивания для Констант (так как их значение не может быть изменено в пределах процедуры).


Объявление Констант

Перед использованием любого имени как константы, необходимо указать EasyLanguage, что это имя будет использоваться как константа, или объявить inputs, которую Вы будете использовать. Чтобы сделать так, используйте инструкцию Input Declaration.
Синтаксис:

Input: Name(value);

Name (Имя) - название константы. Имя должно начинаться с символа и может содержать максимум 20 символов. Имя может содержать символы, числа, черточки, или периоды. Value (Значение) - любое числовое, True/False или текстовое строковое значение, которое будет использоваться как значение по умолчанию для константы.

Вы можете объявить более чем одну константу, используя ту же самую инструкцию, отделяя inputs запятыми. Например, следующая инструкция Input Declaration объявляет три различных inputs:

Inputs: MyNumber(0), MyCondition(False), MyText("Text");

Нет никаких ограничений для количества inputs, которые Вы можете объявить в одной инструкцией; однако, Вы можете также использовать такое количество инструкций Input Declaration, как Вам удобно.

Обратите внимание: зарезервированное слово Inputs - синоним для Input; они могут использоваться взаимозаменяемо.

Значение в круглых скобках обслуживает две цели: во-первых, оно определяет тип константы. Если используется числовое выражение, то это - числовая константа; если используется выражение true/false, это - истинная/ложная константа; и, если используется текстовое строковое выражение, константа - текстовая строковая константа.

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


Ссылка на Значение Константы

Как только Вы объявили константу, Вы можете сослаться на его значение, просто используя имя константы вместо числового, истинного/ложного или текстового строкового выражения. Например, следующие инструкции вычисляют цену входа в сделку с использованием константы в качестве коэффициента:

Input: Mult(1.3);

Variable: EntryPrc(0);

EntryPrc = Highest(High,10) * Mult;

If MarketPosition <> 1 Then

Buy Next Bar at EntryPrc Stop;

Сначала мы объявляем константу (Mult). Затем мы объявляем переменную, которой мы назначаем самую высокую из максимальных цен последних 10 баров, умноженную на константу (чье значение установлено как 1.3). Как только мы вычислили цену входа (EntryPrc), мы размещаем заказ. Если мы в настоящее время не находимся в длинной позиции, мы размещаем стоп-заявку на покупку на следующем баре по цене, которую мы вычислили ранее, или выше. Обратите внимание, что мы ссылаемся на значение константы, просто используя константу вместо значения.

В EasyLanguage используются выражения true/false в инструкциях типа IF-THEN, и в While loops (Циклах с условием) (они описаны в разделе "Управляющие структуры EasyLanguage" на странице 33). Эти инструкции начинают работать, когда выражение true/false вычисляется как Истина. Следующие команды показывают пример ссылки на значение true/false константы:

Input: DrawLine(False);

Plot1(Momentum(Close, 10), "Momentum");

If DrawLine Then

Plot2(0, "Zero");

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

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

Inputs: Price(Close), Length(5);

Value1 = Price - Price[Length]

Plot1( Value1, "Momentum");

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

Совет: "Назначение Серий Значений на Константу"

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

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

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

Print(Random(1));

Print(Random(1));

Когда мы записываем этот индикатор, используя константу, который мы назначаем значение Random(1), и затем выводи значение константы, то дважды получаем одинаковый результат

Input: Val (Random(1));

Print(Val);

Print(Val);



Содержание (Contents)
ГЛАВА 1: Введение
Что такое EasyLanguage?
Что Вы можете Создать?
Дополнительные Ресурсы
ГЛАВА 2: Основные Элементы EasyLanguage
Как работает EasyLanguage
О Языке
Ссылка на Ценовые Данные
Выражения и Операторы
Ссылка на Предыдущие Значения
Управление Датами и Временем
Использование Переменных
Использование Констант
Управляющие структуры EasyLanguage
Запись Предупреждений
Понятие Массивов
Понятие Функций Пользователя
Методы Вывода
Текстовый Объект на Ценовых Диаграммах
Trendlines на Ценовых Диаграммах
Понятие Полей Данных
Мультимедиа и EasyLanguage
ГЛАВА 3: EasyLanguage для TradeStation
Запись Торговых Сигналов
Механизм Тестирования Торговой Стратегии
Торговые Приказы
Понятие Встроенных Стопов
Запись Индикаторов и Изучений
Запись ShowMe и PaintBar
Запись ProbabilityMap
Запись ActivityBar
ГЛАВА 4: EasyLanguage для RadarScreen
Запись Индикаторов RadarScreen
Запись Индикаторов для Супердиаграмм SE
Определение Доступности Индикаторов
ГЛАВА 5: EasyLanguage для OptionStation
Анализ данных OptionStation
Чтение Данных OptionStation
Запись Индикаторов OptionStation
Запись Индикаторов для Супердиаграмм SE
Запись Поиска Стратегий
Запись Моделей OptionStation
Глобальные переменные OptionStation
ГЛАВА 6: EasyLanguage и Другие Языки
Определение Функции DLL
Использование Функций DLLs
Дополнительно О EasyLanguage DLL Extension Kit
ПРИЛОЖЕНИЕ 1. Синтаксические ошибки EasyLanguage
61 - 223
224 - 307
308 - 569
ПРИЛОЖЕНИЕ 2. Цвета, Размеры и Коды EasyLanguage




На правах рекламы:
натяжные потолки спб для Вас ; упаковка мясных полуфабрикатов на сайте