EasyLanguage - Ценовые диаграммы и таблицы

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


Другие темы: Omega ProSuite |
EasyLanguage - язык промышленного стандарта, используемый для описания торговых идей, и также это - один из самых мощных и универсальных инструментов, используемый торговцами по всему миру. Как же он работает? Эта глава отвечает на этот вопрос, и знакомит Вас с синтаксисом, грамматикой, управляющими структурами и общими понятиями (концепциями), которые являются основой EasyLanguage. В этой главе обсуждается, как EasyLanguage исполняет вычисления, и дает Вам фундамент для начала работы в приложениях TradeStation - TradeStation, OptionStation или RadarScreen. Независимо от стиля торговли или технического инструмента анализа, которые Вы пишете - индикатор, торговый сигнал, поиск стратегии, и т.д. - на первом этапе необходимо понять, как 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 обработаны для текущего бара, читаются ценовые данные следующего бара, и все команды выполняются на основании новых цен. Это происходит вдоль диаграммы слева направо, пока все бары диаграммы не просчитаны и проанализированы.
Рисунок 2-1. Оценка баров от первого к последнему слева направо

Даже притом, что команды EasyLanguage пока что вам не понятны, важно отчетливо понять и помнить, что каждая команда выполняется, от первой строчки до последней, для каждого бара диаграммы в отдельности по одному. EasyLanguage и Таблицы Вы можете также применить индикаторы к табличным окнам, таким как RadarScreen и Окнам Анализа Позиции OptionStation. При размышлении о методах анализа на ценовых диаграммах, мы думаем в терминах анализа прошлых данных, чтобы отобразить информацию о текущем рынке; применение индикаторов к таблицам не имеет никаких отличий. Таблица позволяет нам анализировать и рассматривать результаты множества торговых инструментов одновременно. Как и с ценовыми диаграммами, прошлые значения доступны для анализа. Например, 10-барное скользящее среднее будет готово к закрытию последних 10 баров в любом окне таблицы. Поскольку цель табличных приложений состоит в том, чтобы анализировать одновременно множество торговых инструментов, они оптимизированы так, чтобы по необходимости использовать небольшие объемы данных (для экономии памяти и увеличения скорости вычислений). Остановимся на этом сложном понятии. Когда индикатор применяется к таблице, EasyLanguage определяет максимальное количество баров, ссылаясь на которые должен вычисляться индикатор, и передает это количество в приложение (то есть, RadarScreen или OptionStation). Приложение тогда получает по мере необходимости такое количество данных, чтобы корректно исполнить вычисления индикатора EasyLanguage. Но опять же, важно помнить, что приложение только получит данные в количестве, достаточном, чтобы вычислить результат индикатора, для самого последнего бара торгового инструмента. Так, если индикатор 10-барного скользящего среднего применен к RadarScreen, RadarScreen загрузит ценовые данные 10 баров для каждого символа на странице, и вычислит 10-барное среднее для каждого символа только для последнего бара. Этот метод работает очень хорошо для большинства индикаторов, но подразумевается, что, если Вы вычисляете совокупный или рекурсивный индикатор (т.е. тот, который использует для вычисления текущего значения предыдущие значения индикатора), Вы не будете получать те же самые результаты в таблице, которые были бы на ценовой диаграмме. Простой пример, который иллюстрирует этот пункт - индикатор, который выводит общее количество объема. Если Вы применяете этот индикатор к ценовой диаграмме c годовыми барами, Вы закончите ежегодным объемом торговли, тогда как, если Вы применяете этот индикатор к таблице с дневными данными, Вы закончите ежедневным объемом торговли. В связи с этим есть установка в диалоговом окне Format для всех индикаторов, применяемых к таблицам, которая позволяет Вам определять, сколько дополнительных баров необходимо использовать при вычислении каждого специфического индикатора. Эта установка находится на вкладке General в окне форматирования индикатора, и называется Загрузкой дополнительных данных для кумулятивных вычислений (Load additional data for accumulative calculations) (Рисунок 2-2).
Рисунок 2-2. Загрузка дополнительных данных для накапливаемых вычислений

Когда определенное для этой установки количество отлично от нуля, в таблицу при необходимости загрузится такое количество баров, чтобы вычислить индикатор, плюс количество баров, указанное этой установкой. Тогда индикатор будет вычислен для каждого из этих баров, начиная с самого старого бара и двигаясь к текущему бару, и отобразит самое последнее значение индикатора. Другой, более сложный, пример того, где эта установка необходима - Индикатор Распределения Накопления (Accumulation Distribution Indicator). Инструкции EasyLanguage для этого индикатора читаются следующим образом: Если закрытие текущего бара больше чем закрытие предыдущего бара, то добавить объем к имеющемуся общему объему. В противном случае вычесть объем из имеющегося общего объема. Отобразить результат на каждом баре. Для этого индикатора, чтобы вычислить и вернуть значение, требуются данные текущего бара и данные один бар назад (чтобы выяснить положение текущего бара относительно предыдущего); то есть, требуются данные двух баров. Когда этот индикатор применен к таблице без загрузки дополнительных данных, то загружается два бара данных и сравнивается текущее закрытие с закрытием один бар назад, и отображается объем текущего бара как положительное или отрицательное число. Для того чтобы вычислить значение индикатора, как это было бы с теми же самыми данными на ценовой диаграмме, желательное количество баров для расчетов должно быть определено в установке Загрузка дополнительных данных для накапливаемых вычислений (Load additional data for accumulative calculations), иллюстрированной на Рисунке 2-2.