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

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

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


Работа с Комментарием

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

Обратите внимание: В случае табличных приложений, подобных окну OptionStation Position Analysis, комментарий будет всегда основан на самом последнем баре, так как нет никакого способа выбрать исторический бар в табличном приложении.

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

Зарезервированные слова для работы с комментарием описаны ниже.


Commentary

Это зарезервированное слово посылает выражение (или список выражений) к окну Expert Commentary для любого бара, выбранного на ценовой диаграмме (или последний бар в случае табличного приложения).

Вы можете использовать это зарезервированное слово несколько раз.


Синтаксис:

Commentary(MyExpression);

MyExpression - числовая, текстовая строка, или выражение true/false, которое нужно послать в окно Expert Commentary. Вы можете послать несколько выражений; они должны быть отделены запятыми.

Чтобы включить перевод каретки в ваш Комментарий, используйте зарезервированное слово NewLine как выражение Commentary, где необходимо. Вместо этого Вы можете также использовать зарезервированное слово CommentaryCL (обсуждается ниже).

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

    Commentary("The 10-bar avg of the close", NewLine);

    Commentary("is:", Average (Close, 10));

Также, Вы можете создать связи в вашем тексте Commentary с Windows Media Player (чтобы запустить аудио клип) и к определениям Интерактивное Пользовательское Руководство. Связи - это слова в вашем Комментарии, которые появляются в отличном (от других) цвете и если произвести клик, то запускается аудио клип или появится указанное определение Интерактивного Пользовательского Руководства. Эти слова упоминаются как слова перехода.

Чтобы создать слово перехода, которое запускает музыкальный (.WAV) файл, включают полное имя и путь к звуковому файлу, используя следующий синтаксис:

    \wb\we

Например, чтобы связать ваш комментарий с файлом c: \windows\ding.wav, Вы могли записать следующую инструкцию:

    Commentary ("This links to a file: \wbc:\ding.wav\we");

Чтобы создать слово перехода, которое открывает существующее определение Интерактивного Пользовательского Руководства, включают слово, используя следующий синтаксис:

    \pb\pe 

или

    \hb\he

Окно Expert Commentary использует HELP_KEY WinHelp вызов API и отыскивает указанную тему Технологий TradeStation Интерактивного Пользовательского Руководства. Текстовая строка между \pb и \pe используется как ключевое слово, и "определение" добавляется в конец текстовой строки. Например, следующий синтаксис восстанавливает тему Bottom, определенную в Интерактивном Пользовательском Руководстве.

    \pbBottom\pe

Текстовая строка между \hb и \he используется как ключевое слово, и "(Индикатор)" добавляется в конец текстовой строки. Например, следующий синтаксис восстанавливает тему ADX (Indicator) из Интерактивного Пользовательского Руководства.

    \hbADX\he

Перед созданием слова перехода, удостоверьтесь, что определение существует в Интерактивном Пользовательском Руководстве. Определить, что слово существует, можно используя поиск Интерактивного Пользовательского Руководства. Вы можете создать слова перехода для любого элемента указателя, который имеет суффикс ", defined "или" (Indicator) ".


CommentaryCL

Это зарезервированное слово посылает выражение (или список выражений) в окно Expert Commentary для любого бара выбранного указателем Expert Commentary (или для последнего бара в случае табличного приложения).

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


Синтаксис:

CommentaryCL(MyExpression);

MyExpression - это отдельное выражение или отделенный запятыми список числовых выражений, текстовых строк, или выражений true/false, которые посылаются в окно Expert Commentary.

Например, следующие инструкции инициируют комментарий, показанный на Рисунке 2-13.

CommentaryCL ("The close of today is:", Close);

CommentaryCL ("The 10-day average of the close is:");

Average (Close,10));

Вы можете также создать связи в вашем тексте Commentary с Windows Media Player (чтобы запустить видео или аудио клип) используя зарезервированное слово CommentaryCL. Обратитесь к обсуждению слов перехода в описании зарезервированного слова Commentary.


AtCommentaryBar

Это зарезервированное слово возвращает значение "True" на баре, нажатом пользователем указателем Expert Commentary. Оно возвратит значение "False" для всех других баров. Это позволяет Вам оптимизировать ваши сигналы торговли, методы анализа, и функции для скорости, поскольку это позволит EasyLanguage пропускать все связанные с комментарием вычисления для всех баров, если они не требуют комментария.


Синтаксис:

AtCommentaryBar

Различие между AtCommentaryBar и CommentaryEnabled (обсуждается ниже) - то, что CommentaryEnabled возвращает значение "True" для ВСЕХ баров, когда окно Expert Commentary является открытым, в то время как AtCommentaryBar возвращает значение "True" только для бара, нажатого указателем Expert Commentary.

Например, следующие инструкции отображают с 50-барное среднее объема в окне Expert Commentary, но избегают вычисления этого среднего для любого другого бара диаграммы:

    If AtCommentaryBar Then

        Commentary ("The 50-bar vol avg:  ", Average (Volume, 50));

Обратите внимание: Хотя инструкции, которые следуют за этим зарезервированным словом, иногда игнорируются, сигнал торговли, методика анализа, или функция все еще принимает во внимание инструкции, когда это определяется количеством баров, необходимых для индикатора или изучения, чтобы исполнить его вычисления (MaxBarsBack), а также для расчета любых функций ряда в пределах инструкций. См. раздел "Использование Директив Компилятора Комментария " для информации относительно дополнительных зарезервированных слов, которые Вы можете использовать, чтобы иметь инструкции, которые оба игнорировали полностью.


CommentaryEnabled

Это зарезервированное слово возвращает значение "TRUE" только, когда окно Expert Commentary является открытым, и Комментарий требовали. Это позволяет Вам оптимизировать ваши сигналы торговли, методы анализа, и функции для скорости, поскольку это позволяет EasyLanguage исполнять связанные с комментарием вычисления только когда окно Expert Commentary является открытым.


Синтаксис:

CommentaryEnabled

Различие между CommentaryEnabled и AtCommentaryBar - то, что CommentaryEnabled возвращает значение "TRUE" для ВСЕХ баров, когда окно Expert Commentary является открытым, в то время как AtCommentaryBar возвращает значение "TRUE" только для бара, нажатого с указателем Expert Commentary.

Например, следующие инструкции вычисляют совокупный объем и активизируют строку, которая будет отображена в окне Expert Commentary:

    If CommentaryEnabled Then Begin

If Close > Close[1] Then

Value1 = Value1 + Volume

Else

Value1 = Value1 - Volume;

Commentary ("The value of the A/D line is: ", Value1);

    End;

Обратите внимание: Хотя инструкции, которые следуют за этим зарезервированным словом, иногда игнорируются, сигнал торговли, методика анализа, или функция все еще принимает во внимание инструкции, когда это определяет номер баров, необходимых для индикатора или изучения, чтобы исполнить его вычисления (MaxBarsBack), также любые функции ряда в пределах инструкций рассчитаны. См. раздел "Использование Директив Компилятора Комментария " для информации относительно дополнительных зарезервированных слов, которые Вы можете использовать, чтобы иметь инструкции, которые полностью игнорируют все условия.


Использование Директив Компилятора Комментария

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


#BeginCmtry

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


Синтаксис:

#BeginCmtry;

{EasyLanguage instruction(s)};

#End;

Например, индикатор, который вычисляет с 10-барный импульс цен закрытия, нуждается в десяти барах, чтобы запустить вычисление графика. Однако если комментарий добавляется к этому индикатору, и комментарий использует 50-барное среднее объема, то установка MaxBarsBack увеличивается до пятидесяти. Однако, 50-барное среднее используется только для комментария, так что нет никакой потребности иметь индикатор, ждущий пятьдесят баров перед предоставлением результатов, если Комментарий не требуется.

Чтобы иметь график индикатора после 10 баров и игнорировать требование о 50 барах, индикатор может быть написан следующим образом:

Plot1( Close - Close[10], "Momentum");

#BeginCmtry;

If Plot1 > 0 Then

Commentary ("Momentum is positive, ")

Else

Commentary ("Momentum is negative, ");

If Volume > Average(Volume, 50) Then

Commentary (" and volume is greater than average.")

Else

Commentary (" and volume is lower than average.");

#End;

Этот индикатор составляет график импульса и состояния комментария, вне зависимости от того, что импульс положителен или отрицателен, и если объем меньше среднего за 50 баров. Когда индикатор применен без использования комментарий, - единственное требование для запуска вычислений - наличие 10-и законченных баров. Когда комментарий требуется, то индикатор повторно рассчитывается, инструкции в пределах директив компилятора оцениваются, и новое минимальное количество требуемых баров - 50. Любые функции ряда в пределах этих зарезервированных слов также игнорируются.


#BeginCmtryOrAlert

Когда комментарий и alert инструкции переплетены, и комментарий, и alert инструкции не необходимы для нормального вычисления сигнала торговли, методики анализа, или функции, используют зарезервированное слово #BeginCmtryOrAlert. Инструкции между этой директивой компилятора и зарезервированным словом #End оцениваются только тогда, когда или комментарий требуются, или alert включен. Инструкции не рассматривают при определении установки MaxBarsBack, и любые функции ряда в пределах этих зарезервированных слов игнорируются. Вы должны использовать зарезервированное слово #End с этим зарезервированным словом.


Синтаксис:

#BeginCmtryOrAlert;

{EasyLanguage instruction(s)};

#End;

Например, использование того же самого индикатора, что описан в предыдущем зарезервированном слове, но alert вызывается, когда текущий объем вдвое превышает 50-барное среднее:

Plot1( Close - Close[10], "Momentum");

#BeginCmtryOrAlert;

If Plot1 > 0 Then

Commentary ("Momentum is positive, ")

Else

Commentary ("Momentum is negative, ");

If Volume > Average (Volume, 50) Then Begin

Commentary (" and volume is greater than average.");

            If Volume > 2 * Average(Volume, 50) Then

    Alert;

End

Else

Commentary (" and volume is lower than average.");

#End;

Использование Окна Файла регистрации Сообщения

Вы можете послать любой тип информации в окно Message Log от торгового сигнала, методами анализа, или функции. Окно Message Log - активный документ, который постоянно находится в ProSuite Рабочем столе в пределах рабочего пространства точно так же как любое другое окно ProSuite. Оно имеет обширный интерфейс прикладной программы (API), который позволяет другим приложениям связывать с помощью интерфейса с ним, и записывать запросы к нему.

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

Обратите внимание: До Service Pack 3 of Version 2000i, окно Message Log не устанавливается автоматически (если Вы не апгрейдите предыдущую версию). Если Вы не апгрейдите, и Вы хотите использовать окно, Вы должны выбрать инсталляцию окна из меню Custom инсталляции. Этот раздел предполагает, что оно установлено.


MessageLog

Это зарезервированное слово посылает выражение или отделенный запятыми список выражений в окно Message Log.


Синтаксис:

MessageLog(Expression);

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

Как упомянуто выше, окончательное выражение посылается в окно Message Log и отображается в реальном времени в окне. Файл регистрации Сообщения имеет ограничение в 255 символов.

Например, следующие инструкции посылают дату и время, последнюю торговую цену, максимальную и минимальную цены текущего года, объем и средний объем для последнего бара диаграммы в Файл регистрации Сообщения:

If LastBarOnChart Then Begin
MessageLog ("Average Volume:", Average (Volume, 50));
MessageLog ("Volume:  ", Volume);
MessageLog ("Highest High:  ", HighY(0), "Lowest Low: ", LowY(0));
MessageLog ("Last:  ", Close);
MessageLog ("Date:  ", ELDateToString (Date), "Time:  ",Time);
End;

Файл регистрации Сообщения обновляется снизу вверх, самая последняя строка, отосланная в Файл регистрации Сообщения, отображается вверху окна.

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

MessageLog (Value1:N:M);

Value1 - любое числовое выражение, N - минимальное количество десятичных знаков, и М - количество десятичных знаков после запятой.

Если числовое выражение, посылаемое Файлу регистрации Сообщения, имеет больше десятичных чисел, чем определено N, то зарезервированное слово MessageLog будет использовать необходимое количество цифр. Десятичные значения будут округлены к самому близкому значению.

Например, предположим, что Value1 равно 3.14159, и мы написали следующее:

MessageLog (Value1:0:4);

Числовое выражение, отображенное в Файле регистрации Сообщения, было бы равно 3.1416.

Посылка Информации в Окно Отладки, Файл, на Принтер

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

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

Обратите внимание: окно Debug заменило Файл регистрации Печати, который был доступен в предыдущих версиях TradeStation.


Print

Это зарезервированное слово посылает информацию Окну Отладки EasyLanguage, файлу, или заданному по умолчанию принтеру Windows. Независимо от того, откуда Вы посылаете информацию, зарезервированное слово Print всегда добавляет перевод каретки в конце выражения, так что каждая новая инструкция помещается в новую строку.


Синтаксис:

Print([Printer,| File(""),] Expression );

FileName - полный путь и имя файла, которому инструкция Print должна послать выражение(я), а Expression - любое выражение, или отделенный запятыми список выражений. Выражения могут быть числовыми, true/false, или текстовая строка (или любая комбинация).

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

Print (Date, Time, Close);

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

Print (Value1:N:M);

Значение 1 - любое числовое выражение, N - минимальное количество десятичных знаков, и М - количество десятичных знаков после запятой. Если числовое выражение, посылаемое окну Debug, имеет больше десятичных знаков, чем определено N, то инструкция Print использует необходимое количество цифр по мере необходимости, производя округление к самому близкому значению.

Например, предположим, что Value1 равно 3.14159, и мы написали следующую инструкцию:

Print (Value1:0:4);

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

Print (ELDateToString (Date), Time, Close:0:4);

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

Print (Printer, Date, Time, Close);

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

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

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

    Print (File("c:\tradestation\MyText.txt"), Date, Time, Close);

Важно: Каждый раз, когда сигнал торговли, методика анализа, или функция повторно рассчитаны, или удалены и повторно обращались к диаграмме, конечный файл записывается поверху. Также, Вы не можете использовать текстовое строковое выражение как имя файла, это должен быть фактический путь и имя файла. Обратитесь к обсуждению зарезервированного слова FileAppend (ниже) для информации относительно добавления в конец файл вместо того, чтобы записать поверх него. При посылке информации на принтер или в файл, мы рекомендуем Вам использовать зарезервированное слово FileAppend вместо Print.


FileAppend

Это зарезервированное слово создает и добавляет в конец текстовые строковые выражения в указанном файле. При посылке информации на принтер или в файл, мы рекомендуем Вам использовать это зарезервированное слово вместо Print.


Синтаксис:

FileAppend("", Text);

FileName - текстовое строковое выражение, представляющее полный путь и имя файла, а Text - текстовое строковое выражение, которое добавляется в конец к файлу.

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

Это факт позволяет использовать текстовое строковое выражение как имя файла, что дает возможность пользователям определить имя файла, которое будет записано через переменную и/или inputs. Например, следующие инструкции используют имя символа как имя файла:

Variable: Txt(" ");

Txt = "c:\My Documents\” + GetSymbolName + ".txt";

FileAppend (Txt, "This will be sent to a file");

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

Обратите внимание: Вы можете использовать зарезервированное слово FileDelete, чтобы удалить файл и имитировать поведение инструкции Print.

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

FileAppend ("c:\My Documents\text.txt", "This text will be sent to a file" + NewLine);

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

FileAppend ("c:\My Documents\text.txt",

    ELDateToString (Date) + NumToStr (Close, 2));

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




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




На правах рекламы:
юридическое сопровождение деятельности .Сопровождение Вашего бизнеса +7 495 956 - 03 - 70! ; банк через интернет