EasyLanguage - Использование констант

: Function ereg() is deprecated in /home/marketprofit/msnet/html/sites/all/modules/paging/paging.module on line 193.


Другие темы: Omega ProSuite |
Константы - особые метки, которые содержат значение; Вы можете определить значение константы один раз в начале процедуры и затем ссылаться на это значение везде по торговому сигналу или методике анализа, используя имя константы. Значение константы не может быть изменено в пределах процедуры 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);