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

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

ГЛАВА 2. Основные Элементы EasyLanguage

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

В этой главе обсуждается, как EasyLanguage исполняет вычисления, и дает Вам фундамент для начала работы в приложениях TradeStation - TradeStation, OptionStation или RadarScreen.

Как работает EasyLanguage

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


EasyLanguage и Ценовые Диаграммы

Ценовая диаграмма обычно состоит из множества баров, сформированных из ценовых данных, связанных с указанным торговым инструментом. Каждый бар суммирует цены за интервал торговли - обычно период времени типа пяти минут или один день - и включает значения типа open (цена открытия), high (максимум), low (минимум) and closing (цена закрытия) в течение этого периода. Другие данные бара, такие как дата и время закрытия бара, объем и открытый интерес также доступны для каждого бара.

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

Давайте рассмотрим простой торговый сигнал:

If the Close > High of 1 Bar Ago Then Buy at Market;

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

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

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

Допустим, что на диаграмме один бар и нет никаких предыдущих баров, так что вычисление в примере выше не может быть выполнено. Таким образом, торговая стратегия должна была бы ждать до второго бара диаграммы, чтобы корректно исполнить вычисление. Это называют "максимальным количеством баров, необходимых для вычислений" или MaxBarsBack. Это понятие подробно обсуждено на странице 18.

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

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

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


EasyLanguage и Таблицы

Вы можете также применить индикаторы к табличным окнам, таким как RadarScreen и Окнам Анализа Позиции OptionStation.

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

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

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

Остановимся на этом сложном понятии. Когда индикатор применяется к таблице, EasyLanguage определяет максимальное количество баров, ссылаясь на которые должен вычисляться индикатор, и передает это количество в приложение (то есть, RadarScreen или OptionStation). Приложение тогда получает по мере необходимости такое количество данных, чтобы корректно исполнить вычисления индикатора EasyLanguage. Но опять же, важно помнить, что приложение только получит данные в количестве, достаточном, чтобы вычислить результат индикатора, для самого последнего бара торгового инструмента.

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

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

Простой пример, который иллюстрирует этот пункт - индикатор, который выводит общее количество объема. Если Вы применяете этот индикатор к ценовой диаграмме c годовыми барами, Вы закончите ежегодным объемом торговли, тогда как, если Вы применяете этот индикатор к таблице с дневными данными, Вы закончите ежедневным объемом торговли. (?)

В связи с этим есть установка в диалоговом окне Format для всех индикаторов, применяемых к таблицам, которая позволяет Вам определять, сколько дополнительных баров необходимо использовать при вычислении каждого специфического индикатора. Эта установка находится на вкладке General в окне форматирования индикатора, и называется Загрузкой дополнительных данных для кумулятивных вычислений (Load additional data for accumulative calculations)



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

Другой, более сложный, пример того, где эта установка необходима - Индикатор Распределения Накопления (Accumulation Distribution Indicator). Инструкции EasyLanguage для этого индикатора читаются следующим образом:

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

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

Для того чтобы вычислить значение индикатора, как это было бы с теми же самыми данными на ценовой диаграмме, желательное количество баров для расчетов должно быть определено в установке Загрузка дополнительных данных для накапливаемых вычислений (Load additional data for accumulative calculations).

О Языке

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


Инструкции

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

Buy 100 Shares on the Next Bar at 100 Stop;


Зарезервированные слова

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

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


Операторы

Операторы - символы, которые представляют операцию. Например, знак "плюс" - оператор, представляющий суммирование двух значений. Есть много различных видов операторов, доступных для использования в EasyLanguage: математических, относительных, строковых и логических.


Знаки препинания

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

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


Символ Название Описание
; Точка с запятой Заканчивает инструкцию.
() Круглые скобки Группируют значения, заставляют вычислять их в первую очередь; выделяют набор параметров или вводимых данных, требуемых зарезервированным словом
, Запятая Отделяет каждый параметр или константу в наборе, требуемом зарезервированным словом; отделяет список объявленных констант или переменных.
: Двоеточие Используется в инструкциях объявлений, чтобы начать список констант или переменных; используется с инструкциями Print, чтобы форматировать числовые выражения.
“ “ Кавычки Определяют текстовую строку.
[ ] Квадратные скобки Используются как модификатор при ссылке к значениям предыдущих баров; определяют элементы в переменной типа массив.
{ } Фигурные скобки Окружают текст, который должен игнорироваться EasyLanguage. Дает Вам возможность включить комментарии.

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

Ссылка на Ценовые Данные

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

Эти зарезервированные слова соответствуют обычным формулировкам, используемым в каждодневной торговле (например, Open, High, Low, Close, Volume). Следующая таблица перечисляет зарезервированные слова, которые обыкновенно относятся к ценам и другим данным бара, наряду с сокращениями, которые Вы можете использовать вместо слов:


Зарезервированное слово Сокращение Описание
Close C Последняя торговая цена бара
Date D Дата закрытия бара
Time T Время закрытия бара
Open O Первая торговая цена бара
High H Наивысшая (максимальная) торговая цена бара
Low L Наименьшая (минимальная) торговая цена бара
Volume V Объем, количество акций или контрактов, торговавшихся на баре
OpenInt OI Открытый интерес, количество выполненных контрактов при закрытии бара (доступно только с фьючерсами)
Ticks - Общее количество торговых операций на баре
UpTicks - Число операций с ценой выше, чем цена предыдущей операции, или неизменной после роста
DownTicks - Число операций с ценой ниже, чем цена предыдущей операции, или неизменной после падения

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

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


Опускаемые (Пропускаемые) Слова

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

a   an  at  based  by  does  from
 
is  of  on  place  than  the  was



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




На правах рекламы:
Проведение семинаров в Москве