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

Учебник по языку программирования Easy Language
Ссылка на Предыдущие Значения

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

of N bars ago

[N]

N - количество баров назад. Например, рассмотрим следующее выражение EasyLanguage:

Low of 1 bar ago

Это выражение ссылается на минимальную цену предыдущего бара. Ссылка делается относительно текущего бара (бар, вычисляемый в текущий момент времени). Например, если ваш торговый сигнал, методика анализа или функция вычисляются для 12-ого бара диаграммы, следующее выражение обращается к торговому объему 9-ого бара, или 3 бара назад от текущего бара:

Volume of 3 bars ago

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

Open[2]

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

Например, индикатор 10-барного среднего вычислит 10-дневное среднее при применении к ежедневной диаграмме, или 10-минутное среднее, если применить индикатор к 1-минутной диаграмме, или 10-тиковое среднее на 1-тиковой диаграмме.

Ссылка на Максимальное Количество Баров для Изучения, или MaxBarsBack

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

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



Для табличных приложений, установка MaxBarsBack - количество баров, указываемое для каждого символа, необходимых для выполнения вычисления индикатора и отображения его текущего значения. Например, предположим, что Вы вставляете Индикатор Импульса (Движущей силы) в окно RadarScreen. Этот индикатор сравнивает текущий бар с баром 10 баров назад. Поэтому, установка MaxBarsBack для индикатора - 10, и 10 баров данных будут загружены для каждого символа в окне RadarScreen.

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

Совет: "Понимание Циклического Автоматического детектирования"

Когда Вы применяете стратегию торговли или методику анализа к ценовой диаграмме и используете установку Автоматическое Детектирование (Auto-Detect) MaxBarsBack, приложение ищет наибольшее смещение данных (временное), используемое в соответствии с торговой стратегией или методикой анализа, и использует это число для установки MaxBarsBack. Однако если торговая стратегия или методика анализа используют смещение переменной (например, Close [Value1]), то возможно, что значения, первоначально выбранного приложением, не будет достаточно, чтобы применить торговую стратегию или методику анализа ко всем данным на диаграмме.

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

Неправильное определение MaxBarsBack может заставить инструкции Print и другие средства отладки, такие как запросы DLL, быть выполненными неоднократно (циклично) для первых баров диаграммы после применения к диаграмме торговой стратегии или методики анализа. Чтобы избежать такого явления, Вы будете должны изменить MaxBarsBack в установках, Определяемых пользователем (User-defined).

Управление Датами и Временем

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


Работа с Датами

Даты в EasyLanguage представлены как числовое выражение в форме YYYMMDD, где YYY - годы с 1900, ММ - месяц из 2 цифр, а DD соответствует дню месяца. Например, дата EasyLanguage представляющая 17 декабря 1999 - 991217, тогда как 13 января 2000 записывается как 1000113.

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

Второй способ представлять даты в EasyLanguage - Юлианские Даты. Юлианская система Дат назначает дату с номером n, и следующий календарный день имеет Юлианскую дату n+1 (все календарные дни, а не только торговые дни). Юлианская система Дат начинается на 1 января 1900, которому назначен номер 2. 2 января 1900 соответствует номер 3, 31 декабря 1999 - 36 525, и 1 января 2000 - 36 526, и т.д.

Это позволяет нам выполнять математические вычисления с датами - типа прибавления и вычитания, не имея причин волноваться о 'переворачивании' месяцев и лет. Например, если мы имеем в EasyLanguage дату 991013 (13 октября 1999), и мы хотим найти дату 20-ю днями ранее, мы может (неправильно) попробовать вычесть 20 из даты:

991013 - 20

Однако мы получили бы 990993, что - недопустимая дата EasyLanguage. Вместо этого, мы можем вычесть 20 из Юлианского эквивалента даты:

36,446 - 20

В результате получается 36 426, что является правильным, потому что это - Юлианская Дата, которая соответствует 23 сентября 1999.

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


Date
Это зарезервированное слово возвращает числовое выражение, представляющее дату EasyLanguage цены закрытия анализируемого бара. Дата - это дата EasyLanguage, то есть - это числовое выражение формы YYYMMDD, где YYY - годы с 1900, ММ - месяц, DD - день месяца.

ELDate(YYYY, MM, DD)
Это зарезервированное слово возвращает числовое выражение, представляющее дату EasyLanguage (YYYMMDD) как эквивалент стандартной форме представления даты (YYYY, ММ, DD).
Синтаксис:
ELDate(YYYY, MM, DD)
Параметры:
YYYY - числовое выражение с 4 цифрами, представляющее год, ММ - выражение с 2 цифрами, представляющее месяц, и DD - числовое выражение с 2 цифрами, представляющее день месяца.
Примечания:
Мы строго рекомендуем, чтобы Вы использовали зарезервированные слова Date или ELDate при обращении к дате. Это будет гарантировать совместимость независимо от любых будущих изменений в формате даты.
Пример:
Чтобы проверить, что дата текущего бара является 17 декабря 1999, Вы можете использовать следующую инструкцию IF-THEN:
If Date = ELDate(1999, 12, 17) Then {EasyLanguage instruction};

DateToJulian(eDate)
Это зарезервированное слово возвращает числовое выражение, представляющее Юлианскую дату, как эквивалент указанной дате EasyLanguage.
Синтаксис:
DateToJulian(eDate)
Параметры:
eDate - дата EasyLanguage (формат YYYMMDD), которая конвертируется в Юлианскую дату.
Пример:
Вы можете использовать следующую инструкцию, чтобы получить эквивалент Юлианской даты дате EasyLanguage для текущего бара и представить ее как переменную (в нашем случае Value1):
Value1 = DateToJulian(Date);

JulianToDate(jDate)
Это зарезервированное слово возвращает числовое выражение, представляющее EasyLanguage дату, как эквивалент указанной Юлианской дате.
Синтаксис:
JulianToDate(jDate)
Параметры:
jDate - числовое выражение, представляющее Юлианскую дату, которая конвертируется в дату EasyLanguage (формат YYYMMDD).
Пример:
Следующая инструкция получает Юлианскую дату дня за 20 календарных дней перед датой текущего бара, и конвертирует результат в дату EasyLanguage:
Value1 = JulianToDate(DateToJulian(Date) + 20);
Сначала вычисляется выражение в круглых скобках (зарезервированное слово DateToJulian). То есть, сначала преобразовывается дата текущего бара в Юлианскую дату. Затем, число 20 добавляется к полученной Юлианской Дате. Эта Юлианская дата - параметр для зарезервированного слова JulianToDate, которое конвертирует Юлианскую дату в дату EasyLanguage, в формате YYYMMDD. Эта дата EasyLanguage сохраняется в переменной Value1.

CurrentDate
Это зарезервированное слово возвращает числовое значение, представляющее дату EasyLanguage (формат YYYMMDD) равную дате и времени вашего компьютера (или времени передачи данных (datafeed), если Вы связаны с datafeed).
Синтаксис:
CurrentDate
Параметры:
Нет.
Пример:
Чтобы торговый сигнал, методика анализа, или функция выполняли вычисления только до 1 января 2000 (или любой другой даты), Вы можете записать:
If CurrentDate < ELDate(2000,01,01) Then Begin
{EasyLanguage instruction(s)}
End;


Работа со Временем

В EasyLanguage, временя представлено как числовое выражение в форме HHMM, где HH - час, и MM - минуты. Часы представляются в так называемом 24-часовом или военном форматом, так что 1:30pm представляется как 1330, а 10:05am - как 1005.

Кроме того, когда Вы работаете со временем, упростить математические операции типа сложения и вычитания, Вы можете отсчитывать время как минуты, начиная с полуночи. Например, 1:00am - 60 (60 минут после полночи), и 10:30am - 630 (630 минут после полуночи).

Однако, если текущее время - 10:30am (или 1030), и Вы хотите добавить 60 минут к текущему времени, не думайте, что Вы просто добавляете 60 к 1030:

1030 + 60

Делая так и получая в итоге 1090, Вы получите недопустимое значение время. Поэтому, чтобы добавить 60 минут ко времени, используйте минуты после полуночи. Тогда Вы запишете так:

630 + 60

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

Зарезервированные слова, использующие и управляющие временем, перечислены ниже.


Time
Это зарезервированное слово возвращает числовое выражение, представляющее EasyLanguage время (формат HHMM) цены закрытия текущего бара.
Синтаксис:
Time
Параметры:
Нет.
Пример:
Например, Вы можете записать ваш торговый сигнал, методику анализа или функцию таким образом, чтобы они вычислялись только тогда, когда торговое время меньше чем 11:00am:
If Time < 1100 Then
{EasyLanguage instruction};

TimeToMinutes(eTime)
Это зарезервированное слово возвращает числовое значение, представляющее количество минут, прошедших с полуночи в течение указанного EasyLanguage времени (формат HHMM) .
Синтаксис:
TimeToMinutes(eTime)
Параметры:
eTime - числовое выражение, представляющее EasyLanguage время, которое будет конвертировано в количество минут после полуночи.
Пример:
Следующая инструкция конвертирует время текущего бара в количество минут после полуночи, и представляет полученное числовое значение как переменную (в нашем случае Value1):
Value1 = TimeToMinutes(Time) ;

MinutesToTime(mTime)
Это зарезервированное слово возвращает числовое выражение, представляющее EasyLanguage время (формат HHMM) как эквивалент определенному количеству минут с полуночи.
Синтаксис:
MinutesToTime(mTime)
Параметры:
mTime - числовое выражение, представляющее количество минут после полуночи, которое будет конвертировано в эквивалент EasyLanguage время.
Пример:
Следующая инструкция конвертирует текущее время в минуты, прошедшие после полуночи, добавляет 20 к полученному значению, и затем конвертирует конечную величину в EasyLanguage время:
Value1 = MinutesToTime(TimeToMinutes(Time) + 20);
Сначала вычисляется выражение в пределах круглых скобок (зарезервированное слово TimeToMinutes), т.е. конвертируется время текущего бара в минуты после полночи. Затем 20 добавляется к минутам, прошедшим после полуночи, и полученное значение используется как параметр для зарезервированного слова MinutesToTime, которое конвертирует число в EasyLanguage время (формат HHMM).

CurrentTime
Это зарезервированное слово возвращает числовое значение, представляющее EasyLanguage время (формат HHMM), соответствующее времени вашего компьютера (или времени получения данных (datafeed), если Вы связаны с datafeed).
Синтаксис:
CurrentTime
Параметры:
Нет.
Пример:
Чтобы торговый сигнал, методика анализа или функция исполнялись только до 2:00pm, Вы должны записать:
If CurrentTime < 1400 Then Begin
{EasyLanguage instruction(s)}
End;



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




На правах рекламы:
ребрендинг компании подробнее тут