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

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

ГЛАВА 3. EasyLanguage для TradeStation

Эта глава охватывает вопросы использования EasyLanguage с TradeStation

Эта глава также описывает зарезервированные слова, используемые с индикаторами и изучениями (ShowMe, PaintBar, ActivityBar и ProbabilityMap) при работе с TradeStation.

Запись Торговых Сигналов

EasyLanguage дает возможность Вам выразить ваши торговые идеи, используя TradeStation Торговые Сигналы. Пример инструкции в пределах Торгового Сигнала:

Buy 100 Shares Next Bar at Market;

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

Есть четыре зарезервированных слова, которые Вы можете использовать, чтобы выразить ваши торговые идеи при записи Торговых Сигналов. Обращаем Ваше внимание на эти слова как торговля приказы, и они:


Торговый Приказ Описание
Buy (Купить) Закрывает все короткие позиции и инициализирует длинную позицию
Sell (Продать) Закрывает все длинные позиции, и инициализируют короткую позицию
ExitLong Закрывает длинную позицию
ExitShort Закрывает короткую позицию

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

Когда ордер размещен this bar on close (т.е., в момент закрытия текущего бара), то приказ выполняется немедленно, как только бар закрыт. Если приказ определен как next bar at market, то он выполняется в момент открытия (по цене открытия) следующего бара. Стоповые и лимитированные ордера остаются невыполненными, но активными заявками на всех последующих барах, пока цена, указанная в ордере, не будет выполнена или бар закроется.

В зависимости от используемого торгового приказа, стоповые и лимитированные ордера трактуются как по цене выше или ниже, чем указанная цена. Инструкция Buy next bar at 100 limit открывает длинную позицию в течение следующего бара по первой цене, меньшей или равной 100. Точно так же инструкция ExitShort next bar at 50 stop закрывает короткую позицию в течение следующего бара по первой зарегистрированной цене, большей или равной 50. В случае стоп и лимитных ордеров, которые не будут выполнены (т.е., цена, указанная в приказе не достигнута) - ордер отменяется в момент закрытия бара.


Trading Verb Stop Limit
Buy or Higher or Lower
Sell or Lower or Higher
ExitLong or Lower or Higher
ExitShort or Higher or Lower

Каждый компонент торгового ордера обсуждается в разделе "Торговые Приказы".

Механизм Тестирования Торговой Стратегии

Для проверки результата использования Торговой Стратегии на прошлых данных используется Механизм Тестирования Торговой Стратегии. Этот механизм собирает все ордера, сгенерированные в соответствии с Торговой Стратегией, примененной к диаграмме, и создает TradeStation Отчет об исполнении Стратегии.

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

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


Краткий обзор

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

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

Как только Механизм тестирования торговой стратегии оценил ордера, которые были активны на втором баре, TradeStation возвращается к командам EasyLanguage, которые составляют Торговую стратегию и генерирует необходимые ордера теперь относительно закрытия второго бара и размещает их на третьем бара. Этот процесс, названный обратным тестированием, повторяется на каждом баре, пока не достигнут последний бар на диаграмме (самый недавний бар). Результаты каждой торговой операции сохраняются и в дальнейшем представляются разнообразными способами в TradeStation Отчете об исполнении Стратегии, который упоминается обычно как Сообщение Стратегии.

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

Автоматизация и обратное тестирование подробно обсуждены ниже.


Автоматизация

Автоматизация - процесс контроля новых данных, которые получает GlobalServer для символа, к которому применена Торговая стратегия. Правила, по которым работает Механизм тестирования торговой стратегии для оценки ордеров Торговой стратегии, описаны далее.


Цена, по Которой Ордера Размещаются и Выполняются

Первое, что делает TradeStation, получая любой ордер от Торговой стратегии - проверяет, чтобы ордер имел правильную (допустимую) цену для торгового инструмента, к которому применена торговая стратегия.

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

Если ценовой масштаб данного символа - 1/100, а минимальное движение - 10, то этот символ торгуется только по 10 пунктов; поэтому, 100.1, 950.5 и 10 000.7 - правильные (допустимые) цены, тогда как 95.125 - недопустимая цена.

Если обрабатываемый ордер - or higher order, цена округляется вверх к самой близкой правильной (допустимой) цене торговой сделки. Если это - or lower order, то цена округляется вниз к самой близкой цене. Рисунок 3-3 показывает, как ордера интерпретируются в соответствии с Механизмом тестирования Торговой Стратегии.

Чтобы продолжить вышеупомянутый пример, в котором ценовой масштаб является 1/100 и минимальное движение - 10, если размещен ордер Buy at 100.125 limit, то этот ордер будет помещен в TradeStation как ордер Buy at 100.1 or anything lower (купить по 100.1 или ниже). Если размещен ордер Buy at 100.125 stop, то этот ордер будет помещен как Buy at 100.2 or higher (купить по 100.2 или выше).

Эти округления необходимы, потому что, если получен ордер buy at 100.125 or higher, то это означает, что Вы не хотите покупать по 100.124 или по 100.120 или еще ниже, потому что в ордере заявлено '100.125 or higher'; поэтому, единственная альтернатива - необходимо округлить цену к самой близкой правильной (допустимой) цене сделки. По той же самой причине верно обратное для or lower ордеров.


Определение Ордеров к Выполнению

Торговая стратегия может разместить более чем один ордер одного типа (buy, sell, or exit) на некоторых барах и когда это происходит, Механизм тестирования торговой стратегии определяет, который ордер выполнять, по следующим двум правилам:


Правило 1: Ордера на Закрытии и на Следующем Баре по Рынку

Ордера, которые размещены, чтобы быть выполненными на текущем баре в момент закрытия, имеют самый высокий приоритет; только когда все такие ордера были выполнены, оцениваются ордера next bar at market. Если есть больше чем один ордер одного типа (например, три ордера на покупку на текущем баре на закрытии), то ордер, который был размещен первым, имеет приоритет и выполняется первым. Это важно помнить при проектировании Торговой стратегии, которая содержит множество ордеров на вход, которые могут выполняться по рыночной цене на одном и том же баре.

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

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



Подобным же образом, Торговый сигнал может иметь множество ордеров. Если дело обстоит именно так, то сначала будет выполнен ордер, который первым задокументирован в PowerEditor Торговом сигнале, и если есть множество сигналов в Торговой стратегии, которые размещают один и тот же тип ордера, то ордеру от сигнала, который перечислен ранее во вкладке Signal TradeStation StrategyBuilder, дают приоритет (Рисунок 3-4). Вы можете перестроить Торговые сигналы, используя кнопки Move Up и Move Down во вкладке Signals.

Другой пример, когда Торговая стратегия включает два Торговых сигнала, открывающих длинную позицию, Signal A и Signal B. Каждый открывает позицию с различным размером позиции. Предположим, что Signal A открывает позицию с 100 акциями, а Signal B откроет позицию с 500 акциями. Если оба сигнала инициализируют ордер на покупку на одном и том же бар, то какой бы сигнал не был первым в TradeStation StrategyBuilder, второй ордер игнорируется.

Заметьте: возможно применение пирамидинга для Торговой стратегии, когда используются множественные входы в одном и том же направлении. Правила использования ордеров в Торговых стратегиях в случае пирамидинга объясняются на странице 124.

Итоговое правило: первыми оцениваются ордера this bar on close, и лишь затем ордера next bar at market. Если есть несколько ордеров одного типа, то ордера, инициируемые сигналом, который расположен выше в TradeStation StrategyBuilder, имеют более высокий приоритет. Кроме того, если есть более чем один ордер одного типа в Торговом Сигнале, то ордера, задокументированные первыми в PowerEditor - оцениваются первыми, а остальные игнорируются (если не позволен пирамидинг).

Как показано на Рисунке, если Signal A стоит выше в TradeStation StrategyBuilder, то тогда Ордер А1 будет выполнен, а остальные игнорируются; тогда как, если Signal B перечислен первым в TradeStation StrategyBuilder, то будет выполнен Ордер В1.




Правило 2: Стоповые и Лимитированные приказы

Как только все рыночные приказы оценены, Механизм тестирования торговой стратегии анализирует Стоповые и Лимитированные приказы. Если есть несколько Стоповых или Лимитированных приказов, то Механизм тестирования торговой стратегии дает более высокий приоритет ордеру, который наиболее близок к рынку (наиболее близкий к текущей цене).

Это сделано, чтобы моделировать, как стоп и лимит приказы фактически выполняются. Если символ торгует по 950 и есть два лимитных приказа покупать - один по 949 и второй по 948 - при падении рынка сначала будет исполнен ордер на покупку по 949, и во вторую очередь ордер по 948. Поэтому, TradeStation Механизм Стратегии выполняет эти ордера способом, приводящим к максимально реалистичным результатам.

В качестве другого примера предположим, что есть три (или больше) различных ордера на покупку по лимитированной цене (например, buy 100 shares at 101 limit, buy 300 shares at 98 limit, и buy 500 shares at 95 limit). В том случае, когда возведение пирамиды запрещено, TradeStation отобразит только ордер to buy 100 shares at 101 limit, как наиболее близкий к рынку. Если же допускается возведение пирамиды, то все три ордера будут показаны, и первым будет выполнен ордер, который наиболее близок к рынку.

Итоговое правило: если Стоповые или Лимитированные ордера с условием "или выше" ордер, то при выполнении ордеров TradeStation дает более высокий приоритет ордеру с самым низким ценовым ориентиром. Если Стоповые или Лимитированные ордера с условием "или ниже", то при выполнении ордеров TradeStation дает более высокий приоритет ордеру с самым высоким ценовым ориентиром.

Хотя многие брокеры не принимают стоповые ордера на покупку и лимитированные ордера на продажу ниже рынка, и лимитированные ордера на покупку и стоповые ордера на продажу выше рынка, TradeStation примет эти заказы и выполнит их на следующем баре по первой доступной цене, которой обычно будет цена открытия бара. Например, если рынок торгуется по 950, а Торговая стратегия размещает ордер buy at 1,000 limit, то TradeStation выполнит этот ордер в течение следующего по первой цене под 1 000, которой вероятно будет открытие следующего бара.


Определение Количества Акций при Открытии Позиций


При форматировании Торговых Стратегий на вкладке Costs (Рисунок 3-6) есть опция для определения заданного по умолчанию количества акций (или контрактов), которое Торговая стратегия будет использовать при открытии позиции. Это количество используется, если в спецификации ордера не определено количество акций для покупки или продажи. Когда в ордере определено количество акций/контрактов - это отменяет установку, указанную во вкладке Costs.

Как только определено количество акций/контрактов, Механизм тестирования торговой стратегии смотрит на установку на вкладке Properties, отмеченную как Entry Settings: Maximum Number of contracts/shares per position (Параметры настройки Входа: Максимальный Количество акций/контрактов в позиции (показано на Рисунке 3-7). В случае необходимости, количество акций/контрактов из всех ордеров корректируется так, чтобы общее количество акций/контрактов в открытой позиции не превышало количество, указанное в этой опции.

Если нет никакой открытой позиции, и Торговая стратегия размещает ордер на покупку 5 500 акций, и количество, введенное на вкладке Properties - 5 000, то Механизм тестирования торговой стратегии уменьшит количество акций до 5 000.

Тот же самый максимальный предел Торговая стратегия учитывает при возведении пирамиды, и если есть 1 000 акций в открытой позиции и Торговая стратегия размещает ордер на покупку 5 500 акций, то Механизм тестирования торговой стратегии изменит ордер на 4 000 акций.

Резюме: чтобы определить, сколько акций/контрактов будет включать ордер, мы должны найти наименьшее из этих двух чисел:

Максимальное количество контрактов/акций в позиции (минус текущее количество акций/контрактов), как определено во вкладке Properties Количество акций/контрактов на позицию.

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


Ограничение Количества Открытых Входов в Позицию

Когда Вы разрешаете построение пирамиды, что возможно для Торговой стратегии, настроенной на покупку (или продажу) несколько раз подряд (увеличивающийся размер позиции), Вы можете определить максимальное число раз, которое Торговая стратегия может покупать (или продавать), не закрывая при этом ни один из открытых входов. Вы можете отрегулировать это значение в разделе Entry Settings (Параметры настройки Входа) диалогового окна Format Strategy.

Опция Maximum open entries per position (Максимум открытых входов в позиции) дают Вам возможность вынудить Торговую стратегию игнорировать любые новые распоряжения добавить к текущей позиции, как только Торговая стратегия уже купила (или продала) указанное количество последовательных раз в единственной позиции.




Резервные Ордера

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

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

Теперь, предположим, что впоследствии на следующем баре размещен ордер на покупку. В течение следующего бара (бар вторника) ордер на вход исполнен (и теперь вы в длинной позиции). В этой точке статус ордера на выход из позиции изменяется на активный (указан во вкладке Active Orders окна Tracking Center). Условия изменились таким образом, что ордер становится активным. Однако, если бы длинная позиция не была установлена в течение бара вторника, то ордер на выход был бы аннулирован (снят).

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

Общие Сценарии:

  • Если Торговая стратегия не находится в длинной позиции, то все ордера на выход из длинных позиций размещаются как резервные.
  • Если ордер на выход из длинной позиции привязан к определенному входу, но текущая длинная позиция не была инициализирована входом, к которому привязан выход, то ордер на выход размещается как резервный.
  • Если Торговая стратегия не находится в короткой позиции, то все ордера выхода из коротких позиций размещаются как резервные.
  • Если ордер на выход из короткой позиции привязан к определенному входу, но текущая короткая позиция не была инициализирована входом, к которому привязан выход, то ордер на выход размещается как резервный.
  • Если есть несколько или более высокие ордера на выход, то Торговая стратегия обходит (обсчитывает) все ордера, начиная с ордера с самой низкой ценой, и добавляет количество акций/контрактов из каждого ордера на выход. Все ордера, расположенные выше и вне заданного количества акций/контрактов размещаются как резервные.
  • Если есть несколько или более низкие ордера на выход, то Торговая стратегия обходит (обсчитывает) все ордера, начиная с ордера с самой высокой ценой, и добавляет количество акций/контрактов из каждого ордера на выход. Все ордера, расположенные ниже и вне заданного количества акций/контрактов размещаются как резервные.(?)
При отсутствии Пирамидинга:
  • Все случаи, описанные в Общих Сценариях.
  • Если Торговая стратегия уже находится в длинной позиции, то любой дополнительный стоповый или лимитированный приказ на покупку размещается как резервный.
  • Если Торговая стратегия находится в короткой позиции, то любой дополнительный стоп или лимит приказ на продажу размещается как резервный.
  • Если Торговая стратегия находится в длинной или короткой позиции и есть более чем один или более высокий ордер на выход, то все приказы на выход, кроме того, который с самым низким ценовым ориентиром, размещаются как резервные.
  • Если Торговая стратегия находится в длинной или короткой позиции и есть более чем один или более низкий ордер на выход, то все приказы на выход, кроме того, который с самой высокой базовой ценой, размещаются как резервные.
  • Если есть несколько или более высокие или более низкие приказы на вход, в то время как Торговая стратегия не находится ни в длинной, ни в короткой позиции, то все приказы кроме ордера, который наиболее близок к рынку, будут размещены как резервные.
Пирамидинг - Позволяет Множественные Ордера в Одном и том же Направлении и Различные Ордера на Вход:
  • Все случаи, описанные в Общих Сценариях.
  • Если Торговая стратегия имеет более чем один или более высокие приказы на вход, то сначала будут рассмотрены и сочтены самые низкие ордера и если в сумме эти ордера достигнут числа максимального количества акций/контрактов, позволенных Торговой стратегией, то все дополнительные более высокие приказы на вход будут размещены как резервные.
  • Если Торговая стратегия имеет более чем один или более низкие приказы на вход, то сначала будут рассмотрены и сочтены самые высокие ордера и если в сумме эти ордера достигнут числа максимального количества акций/контрактов, позволенных Торговой стратегией, то все дополнительные более высокие приказы на вход будут размещены как резервные.(?)
Пирамидинг - Позволяет Множественные Ордера в Одном и том же Направлении в соответствии с Различными Ордерами на Вход:
  • Все случаи, описанные в Общих Сценариях.
  • Если Стратегия Торговли находится в длинной или короткой позиции и новый приказ сгенерирован тем же самым сигналом входа, который открыл позицию ранее, то тогда ордер размещается как резервный.

Отмена Ордеров

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

Заметьте, что мы используем слово бар вместо слова день. Это подразумевает, что если Вы применяете торговую стратегию к 30-минутному бару и торговая стратегия размещает лимитированный приказ на покупку в 10:00, то ордер активен от 10:0 до 10:30 (или в продолжение бара) и отменяется, если ордер не выполнен к моменту закрытия бара.

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

Например, давайте предположим, что торговая стратегия на дневной диаграмме размещает ордер buy 100 shares at 50 limit on Monday. Этот ордер остается активным в течение вторника и отменяется в конце торговой сессии во вторник, если торговая стратегия не размещает другой ордер buy 100 shares at 50 limit в течение бара вторника. Если изменяется любой элемент ордера, типа количества акций, цены, и т.п., то ордер отменяется и размещается новый активный ордер.

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

Стоповые и лимитные приказы отменяются в момент закрытия бара когда:

  • Ордер не был размещен на этом баре торговой стратегией
  • Ордер был размещен, но или количество акций или базовая цена изменились на последнем баре
  • Отличный (другой) торговый сигнал генерировал ордер на текущем баре
  • Отличный (другой) торговый сигнал с базовой ценой выше/ниже был размещен по цене, которая ближе к рынку (тогда ордер размещается как резервный)

Обратное тестирование

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

Проверка Разрешающей способности Данных Стратегии

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

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

При форматировании Торговой стратегии, вкладка Properties включает раздел, отмеченный как Backtesting Settings (Параметры настройки Обратного тестирования), который содержит опцию Strategy testing resolution (проверка разрешающей способности стратегии). Эта опция дает возможность Вам определить разрешающую способность данных, используемых при обратном тестировании вашей Торговой Стратегии. Если Вы не определяете эту опцию, то используется разрешающая способность данных графика движения цен, к которому Торговая стратегия применена.



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

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

Также, исходя из соображений возможностей обработки (память и скорость), что не всегда может быть удобно или даже возможно для обратного тестирования на тиковых данных, можно использовать обратное тестирование при какой-то оптимальной разрешающей способности. Например, если тестирование выполняется на 5 000 дневных барах, то Торговая стратегия может рассматривать 10-минутные бары, чтобы найти заполняющие цены (цены исполнения ордеров) вместо того, чтобы рассматривать каждый тик, так как 5 000 дней тиковых данных - огромное количество данных для загрузки и использования их на графике движения цен. В этом случае TradeStation обратится к 10-минутным барам для поиска цен, заполняющих стоповые и/или лимитированные приказы, размещенные Торговой стратегией. Это значительно улучшает точность результатов (по сравнению с использованием дневных данных при обратном тестировании) и значительно уменьшает требования к ресурсам по сравнению с испытанием Торговой стратегии на тиковых данных.

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

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


Допущения для Бара

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

После обширного исследования было установлено несколько правил, чтобы описать «нормальное» поведение баров. Механизм тестирования торговой стратегии следует за этими правилами в попытке моделировать рыночную деятельность, когда недостаточно доступных данных. Однако - рыночные допущения, разработанные, чтобы улучшить точность испытания в случае недостаточности данных, дают расхождения между результатами, полученными на исторических данных и данных в реальном масштабе времени. Вот эти Допущения:

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

2. если цена открытия ближе к минимуму, чем к максимуму (т.е., открытие находится в основании нижней половины бара), то движение внутри бара принято по схеме: Открытие-> Минимум-> Максимум-> Закрытие (см. Рисунок 3-9).

3. если цена открытия находится в верхней половине бара (т.е., ближе к максимуму, чем к минимуму), то движение внутри бара принято по схеме Открытие-> Максимум-> Минимум-> Закрытие (см. Рисунок 3-9).

Первое предположение подразумевает, что заполняющиеся цены стоповых и лимитированных приказов в течение обратного тестирования не могут быть точно такими же, как при торговле в реальном времени. Стоповые и лимитированные приказы интерпретируются как первая доступная цена или некоторый уровень; если Вы размещаете стоп-приказ на покупку на 100, а рынок торгуется по 99.875 и затем сразу переходит к цене 100.5, то ордер в реальном масштабе времени выполнится по 100.5, но если выполнятся обратное тестирование и тиковые данные недоступны Торговой Стратегии, то TradeStation не будет иметь никакой возможности узнать, что рынок единовременно (рывком) перешел к следующей цене, так что ордер будет заполнен по 100.



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

Например, если рынок упал, достиг минимума, а затем оживился и достиг максимума, то если первым выполнится stop loss - трейдер потеряет деньги. Однако, если вначале будет достигнут максимум, то profit target сделает торговлю прибыльной. Без доступа к тиковым данным нет никакого способа определить, как рынок двигался внутри бара. Допущения могут быть правильными или неверными.

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


Срыв Тиков

Рынки не двигаются по прямой линии, они имеют свойство колебаться даже, когда находятся в сильной тенденции. Фактически, рынок будет редко, если такое вообще возможно, двигаться по прямой линии, как это принято вторым и третьим допущениями, объявленными в предыдущем разделе. Даже в пределах бара рынок будет обычно колебаться, достигая цен предыдущих рекордных минимумов и максимумов, и его движение будет вообще более напоминать иллюстрацию на Рисунке 3-10, чем прямую линию.

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



Метод, которым Механизм тестирования Стратегии моделирует это рыночное явление - срывая принятую цену на некоторый процент от диапазона бара (10 % по умолчанию) в противоположном направлении любого заполненного стопового или лимитированного приказа.

Например, если диапазон бара - 10 пунктов, и стоп-приказ на покупку заполнен, то TradeStation осматривает бар в направлении вниз на 1 пункт под ценой стоп-приказа на вход в позицию, и ищет приказы для заполнения в соответствие с допущениями для бара (Рисунок 3-11). Если заполненный стоповый или лимитированный приказ читаются как "'или более высокий" ордер, то Механизм тестирования торговой стратегии срывает tick вниз, если ордер читается как "или более низкий ордер", - срывает тик вверх.



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

Давайте рассмотрим пример того, как срыв тиков может затронуть результаты вашей Торговой стратегии.

Предположим, что есть три ордера, активных для некоторого бара: стоп-приказ на покупку по 100, стоп-приказ на продажу по 99.125 и лимитированный приказ ExitLong по 103. Рынок открывается по 99.5, доходит до 105, падает к 90 и, наконец, закрывается по 92. Какие сделки имели место и какая у Вас позиция на рынке в момент закрытия бара?

При выключенном срыве тика (установленном на 0 %), сначала выполняется стоп-приказ на покупку, сопровождается он соответственно ExitLong лимитированным приказом, приводя к получению прибыли, и затем выполняется ордер на продажу, оставляя Вас в короткой позиции в момент закрытия бара.

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



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

Очень важно помнить, что эта методика разработана, чтобы моделировать рыночную деятельность, но это - только моделирование. Фактическое движение рынка может значительно отличаться от этого моделирования и приводить к отличиям в результатах Отчета об исполнении Стратегии TradeStation.




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




На правах рекламы:
Осуществляем производство керамзитных блоков в Мск ; рефинансирование автокредита здесь