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

Учебник по языку программирования Easy Language
Выражения и Операторы

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

  • Numeric (числовое)
  • true/false истинное/ложное (также называемое логическим или булевым)
  • text string текстовой строкой

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

    Числовые выражения могут быть буквальными; другими словами - числами. Или, они могут быть зарезервированным словом, которое возвращает числовое значение; например, Close. Далее - примеры числовых выражений

    15

    Volume

    (High + Low) / 2

    Выражения типа True/false могут принимать значения True или False. Выражения True/false неизменно включаются в сравнения. Следующее выражение - выражение типа true/false; его значение вычисляется как True или False:

    Close > Open

    Выражение Текстовая строка - любые символы, заключенные в кавычки. Далее - пример Текстовой строки:

    "This is some text"


    Операторы

    EasyLanguage обеспечивает разнообразие операторов, которые дают возможность Вам управлять зарезервированными словами и значениями для создания более сложных числовых, true/false и/или текстовых выражений. Четыре различных типа операторов, доступных в EasyLanguage являются строковыми, математическими, относительными и логическими. Каждый из них описан ниже.


    Строковый Оператор

    Есть только один доступный оператор, чтобы управлять текстовыми строковыми выражениями, и его цель состоит в том, чтобы связать два текстовых строковых выражения. Используемый символ - знак "плюс" (+) и используется он следующим образом:

    "This is expression 1" + "and this is expression 2"

    Результатом будет одно текстовое строковое выражение со значением, "This is expression 1 and this is expression 2".


    Математические Операторы

    Эти операторы используются для выполнения математических операций. Пять математических операторов:


    Математический Оператор Значение
    + Сложение
    - Вычитание
    * Умножение
    / Деление
    () Круглые скобки

    Эти операторы всегда выполняются в определенном порядке. Сначала выполняется деление и умножение, затем сложение и вычитание. Если есть более чем один оператор деления и/или умножения (или сложения и/или вычитание), то они выполняются слева направо.

    Например, числовое выражение:

    High + 2 * Range / 2

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

    High + Low / 2

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

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

    (High + Low) / 2

    Это выражение вычислит сумму максимума и минимума, и полученное значение затем разделит на два.

    Совет: "Деление на ноль"

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

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

    Например, при вычислении середины бара, Вы можете записать:

    (High + Low) / 2

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

    (High + Low) * 0.5


    Операторы отношения

    Операторы отношения допускают следующие стандартные сравнения: больше чем, меньше чем, равняются, больше чем или равняются, меньше чем или равняются, не равняются. EasyLanguage также предлагает два специфических оператора, пересекает снизу (crosses over) и пересекается сверху (crosses under), которые дают возможность Вам идентифицировать бар, на котором два числовых выражения пересекаются.

    Операторы отношения, доступные в EasyLanguage:


    Оператор отношения Значение
    < Меньше чем
    > Больше чем
    <= Меньше чем или равный
    >= Больше чем или равный
    = Равный
    <> Не равный
    crosses over Одна величина становится больше другой на текущем баре, притом, что на предыдущем баре первая величина была меньше или равна второй; Вы можете также использовать crosses above.
    crosses under Одна величина становится меньше другой на текущем баре, притом, что на предыдущем баре первая величина была больше или равна второй; Вы можете также использовать crosses below.

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

    Close > High of 1 bar ago

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

    Рассмотрим следующее выражение:

    "abcd" < "zyxw"

    Первый символ первого текстового строкового выражения сравнивается с первым символом второго выражения. Символ "a" имеет меньшее значение ASCII, чем "z", и т.д., так что это выражение возвращает значение "ИСТИННО".


    Логические операторы

    Логические операторы используются, чтобы объединить два выражения типа true/false в одно. Есть два логических оператора:

    AND    И
    OR   ИЛИ

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


    Выражение 1 Выражение 2 Выражение 1 AND Выражение 2
    True True True
    True False False
    False True False
    False False False
    Выражение 1 Выражение 2 Выражение 1 OR Выражение 2
    True True True
    True False True
    False True True
    False False False

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

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


    Low < Low of 1 bar ago AND Close > High of 1 bar ago

    Учитывая, что мы используем AND, это выражение истинно только тогда, когда оба условных выражения истинны, т.е. минимум текущего бара ниже, чем минимум предыдущего бара, И закрытие текущего бара больше чем максимум один бар назад.

    Вот другой пример - Вы можете использовать следующее выражения, чтобы искать акции с ценой равной или большей чем 50$ ИЛИ имеют торговый объем более чем два миллиона акций:


    Close >= 50 OR Volume > 2000000

    Учитывая, что мы использовали ИЛИ, вышеупомянутое выражение будет истинно, когда или цена закрытия больше чем 50, ИЛИ объем больше чем два миллиона. Оно будет ложным, если цена закрытия менее 50, И объем менее двух миллионов.

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

    Например, предположим, что Вы пишите индикатор и хотите найти: ИЛИ ключевой бар разворота с объемом больше чем объем предыдущего бара, ИЛИ бар с рангом больше предыдущего. Вы можете записать все это одним выражением, используя AND, OR и круглые скобки.

    Часть, подсвеченная в полутоне, находит ключевой разворот с объемом больше чем на предыдущем баре, а вторая часть выражения находит внешний бар. Обратите внимание на размещение круглых скобок:


    (Low < Low[1] AND Close > High[1] AND Volume > Volume[1]) OR (High > High[1] AND Low < Low[1])

    Обратите внимание, что вместо того, чтобы выписывать "один бар назад ", мы использовали стенографию [1]. См. следующий раздел, "Ссылка на Предыдущие Значения" для получения дополнительной информации.

    Совет: "Запись Условных Выражений"

    EasyLanguage оптимизирован для скорости, и одна оптимизация касается вычисления выражений типа true/false, которые включают в себя логические операторы. Когда выражение вычисляется, и по результатам вычисления первой части (в независимости от результата вычисления второй части) определено ясно, что полное выражение является ложным (или истинным), остаток от выражения не вычисляется. Например, в следующем выражении:


    5 < 4 AND Close > Open

    Поскольку выражение 5<4 является ложным, и мы используем оператор AND, EasyLanguage не будет вычислять вторую половину выражения, потому что независимо от результата этой второй части, результат полного выражения FALSE.

    Точно так же, если мы имеем выражение:


    5 > 4 OR Close > Open

    Вторая половина выражения не будет вычислена, потому что выражение 5>4 всегда истинно, и мы используем оператор OR. Поэтому, независимо от результата второй половины операции, результат полного выражения TRUE.

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




  • Содержание (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




    На правах рекламы:
    Качественная видеосъемка от известной столичной студии съемки. ; Группа компаний ОПОРА