Замечание по поводу предыдущих выступлений:
На конференции неоднократно прозвучала мысль, что лучше TradeStation ничего не может быть, пока на горизонте ничего лучшего не видно и т.д.
Несколько лет назад, когда я начал заниматься системным трейдингом, я посмотрел некоторые программы в том числе MetaStock и TradeStation. TradeStation оказалось сложно инсталировать, многим знакома эта проблема, эту программу я знаю только по ее описанию. Все программные инструментарии которые я просмотрел меня не устроили. И не устраивали именно тем, что на меня накладывают сильные ограничения в том, с какими данными и как я могу работать. Многие программы либо сильно ограничивают возможность манипулирования данными, либо предлагают для этого довольно сложные для реализации идей сценарные языки, при этом все равно ограничивая так или иначе возможности. Я решил избавить себя и, возможно, других людей от этой проблемы.
Под свободным манипулированием данными я подразумеваю ситуацию когда у вас нет ограничений на то какие, данные, из каких источников и в какие временные отсчеты вам доступны.
Например мы говорим об общепринятых биржевых данных биржевые сделки скомпрессированы за какой-то определенный период «дневки», «часовки», «пятиминутки». Обычно, при работе с такими данными, вы знаете параметры бара только на тот момент, когда этот бар был закрыт. Однако, в реальном времени, когда вы работаете, вы видите формирующийся бар, вот уже возникает противоречие: вы реально работаете (принимаете торговые решения) в абсолютном, в текущем времени, а когда вы исследуете историю, вы видите данные только в определенные моменты времени (временные отсчеты).
Система, которую я представляю, позволяет стирать грань между историческими данными и данными в реальном времени. Вы задаете таймстемп (временной отсчет), который вас интересует, и получаете те данные, а также те вычисленные агрегаты на выбранный момент времени, как если бы вы делали свои вычисления в реальном времени в тот самый исторический момент. При этом «Модель Данных В Абсолютном Времени» гарантирует вам непротиворечивость вычислений.
Оперируя в абсолютном времени мы можем строить агрегаты включающие в себя различные инструменты с различных торговых площадок, с различными периодами дискретизации и вычислять непротиворечивым образом любые агрегаты в том числе в любой исторический момент, что позволит исследовать и, как следствие использовать более тонко, поведение торговой системы в реальном времени, а не в отдельные избранные моменты
Чем хорош такой подход?
Можно смешивать данные из разных источников (бирж с разными сессиями, разных инструментов и вычисляемых агрегатов), с различными параметрами в той или иной мере определяющих периодизацию данных.
Я не знаю точно, что позволяет EasyLanguage TradeStation, но как мне кажется, в этом плане она (программа) достаточно зажата в возможностях, я не знаю, как с ее помощью смешать разные данные с разных бирж, торгующих в разное время. Может, мне кто-то подскажет из зала, как это сделать? Или, к примеру, если у вас есть индикатор на часовке и индикатор на пятиминутке. И вы хотите одновременно по ним вычислять третий агрегат.
Реплика из зала: Все это можно легко осуществить!
Не знаю, как это модно сделать, потому что когда я читал описание Easy Language, я не увидел даже намека на это дело. Может быть, вы мне потом расскажете, как это сделать. Хорошо, эта проблема снимается.
Итак, у вас есть поток данных или история сделок и вы вычисляете любые данные, которые вам нужны и производите с ними операции. Я имею ввиду математические операции. Это не просто сложить, умножить, а округление, суммирование и т.п.
Нет разницы между историческими данными и реалтаймом. Что это значит? Это значит, что если вы, например, решили протестировать вашу торговую систему на дневках. В реальном времени зачастую возникает такая ситуация: Рынок близок к какому-то значению и сигнал, явно, будет. Может, не ждать конца формирования дневного бара, ведь цена может быть хуже текущей? Может, лучше сейчас сделать сделку? Так говорим мы себе. Но многие себе отвечают: нет, нет, я убедился, лучше по торговой системе дождаться закрытия дня. И на следующий день на открытии будете делать все, что запланировано. Но можно протестировать как обычно, на ценовой истории: можно лит принять решение раньше закрытия бара? Ведь можно опередить события. Если вам это нужно, то можно запустить тестирование более детальное, - систему, разработанную по дням (на дневных барах), протестировать по часам или по пятиминуткам. Вычисляя ваши сигналы именно такими, какими они были в промежуточных значениях времени. Рассмотрим иллюстрацию .Например 1998 год,. Есть Ваша МТС. Блок тестирования задает время (например 1998-10-3-18:15), модель данных рассчитывает вам состояние вашей торговой системы, транзакции, сигналы и т.п. которые возвращаются в блок тестирования и т.д.
При необходимости можно учитывать невозможность одномоментных событий. Например, информация с биржевого терминала попала в вашу систему анализа только через несколько секунд, далее вы выставили ордер еще через несколько секунд, таким образом можно вводить не очень негибкий параметр тестирования МТС как «проскальзывание» а задержку во времени выставления ордера, что более реально. Например на 10 секунд. Вы уходите от проблемы совершения сделок на закрытиях/открытиях, которые всегда сомнительны.
Вместо проскальзывания можно вводить более правдоподобный параметр задержку по времени выставления ордера (определяемую задержками каналов связи, терминалом и т.п.)
Далее. У вас может быть такая ситуация, как противоречивые сигналы. У вас есть какие-то параметры вашей торговой системы и при некоторых параметрах ( например небольших стоп-лоссах и тек-профитах) МТС делает на одном баре много сигналов, в том числе противоречивых (на открытие и закрытие позиций). Как следствие приходится увеличивать параметры, выходить из интересующего вас диапазона параметров.
Можно не расширять, можно просто прогнать дневки и подсчитать, какой сигнал в какой момент времени был.
Может, вы захотите разрабатывать систему на дневках, а играть внутри дня. Конечно, можно перейти на часовки или пятиминутки, но это для вас отдельная задача. Основная же идея моей программы у разработчика системы не должно быть никаких технических проблем при работе с данными.
Можно использовать параметры торговой системы, которые приводят к противоречивым сигналам исполнения. Например, сигнал на покупку и на продажу на одном «классическом» баре, при этом можно будет посчитать все случаи сигналов, а не констатировать тот факт, что они были.
Система позволять решать и одну из проблем психологических. Когда есть желание пораньше принять решение, вы к этому склоняетесь, но сами себя дергаете. Тестирование в системе позволит знать, что будет на этот раз при принятии вами решения сейчас, при данных параметрах.
Естественность взаимодействияЖелание принять торговое решение раньше периода закрытия очередного бара можно оттестировать такого рода «оптимизацию».
На сегодняшний день уже реализована полнофункциональная модель данных, т.е. нет ограничений не просто на период, а можно задать и работать с любым периодом, какой только вам придет в голову. На сегодняшний день уже реализация такой Модели Данных в Абсолютном Времени:
Реализация МД “B+.Analysis”
Все, что нужно, это источник тиковых данных и один из способов передачи информации. Например по DDE. Эта возможность реализована первой, потому что большинство программ умеют работать с ДДЕ. Может быть легко реализован какой-то другой механизм передачи данных API-интерфейс, ODBS.
Настоящая Модель Данных реализована на объектном языке SmallTalk. Производительность труда при написании программ на объектном языке как правило выше, чем на процедурном, поэтому я предлагаю этот язык всем пользователям Модели Данных. Людям далеким от программирования освоить скриптовый объектный язык значительно проще, чем Delphi или Си++.
Модель Данных предлагает эффективные вычисления. Если вы исследовали МТС на дневках, то данных было не много, так как дневок примерно 250 рабочих дней в году. А если вы хотите посмотреть историю с 1998 года на 5-минутных данных, то это будет значительный объем информации, но в нашей Модели Данных это будет достаточно просто, вы будете получать интересующие вас данные как в реалтайме в тот момент, когда они вам нужны. Кроме того, вы можете проводить какие-то вычисления - складывать, умножать, интегрировать, производить объемные вычисления и все это не вызовет каких-либо сложностей или проблем. Все это очень эффективно реализовано, потому что все промежуточные вычисления кэшируются в памяти и каждое вычисление индексируется уникальным ключом, поэтому, если когда-то возникали аналогичные вычисления в другом блоке, то они уже будет подсчитаны и сохранены. Например, если у вас идет оптимизация системы, и меняются лишь некоторые параметры, то вычисления для стабильных параметров не будут каждый раз пересчитываться, т.к. они сохранены в памяти. Будут пересчитываться значения только зависящие от меняющихся параметров.
Схема использования Модели Данных
Одной из особенностей системы является то, что в базе данных вы можете хранить не только биржевую информацию, но и свою собственную, например, информацию по бумагам в вашем портфеле блок «Небольшие Базы данных в формате XML». И вы можете проводить какие-то расчетные операции не только между этими данными, но и с биржевыми данными. Ваши собственные данные работают в этой же моделе. Реализован единый подход к данным. Вы можете пользоваться биржевыми данными из внешнего источника, а свои данные хранить у себя на диске, например для поддержания приватности ваших данных. Модель Данных представляет все данные и ваши и внешние в едином виде, в единой форме.
Любые приложения, которым нужна информация из вашей Модели Данных получают ее непосредственно, по запросу.
Пример работы моей программы на РАО ЕЭС - «часовка».
К вопросу о возможных любых периодах. Пример двухдневного периода для РАО ЕЭС.
Здесь же можно вычислить веса, коэффициенты, задать любые периоды.
Пример Индикатора Пользователя показывает, как легко и просто можно задать формулу индикатора, базовый актив и период и сразу же вы получаете данные в виде графика.
Формула написана на предлагаемом скриптовом языке и вполне прозрачна для понимания даже без комментариев: определяются два параметра base- базовый актив и per целочисленный параметр.
«(base high highest:per) roundTo: 0.1». - base в данном случае часовки РАО ЕЭС, per равно 5 (см. на графике )
данный индикатор округляет наивысшее за 5 баров значения high до 0.1 (10 копеек).
Сейчас накопление данных происходит из Quik. Вся информация по фондовой секции ММВБ. Исторические данные с 1998 года скачивались отдельно. Тиковые данные хранятся на SQL-сервере.
На данный момент система есть, модель данных работает, индикаторы есть, интерфейс есть. Далее я собираюсь сделать некую обвязку для тестирования торговых систем. По сути, она у меня уже есть, первая реализация была еще 1996 году, которая позволяла эмулировать торговлю с возможностью оптимизации до 20 параметров.
В настоящее время мы исследуем варианты применения и дальнейшего развития системы
Вопрос:
Все-таки, чем отличается Модель Данных от обычной SQL-базы? В чем отличие Ваших данных от обычной тиковой базы данных?
Ответ:
От тиковых баз данных отличий нет.
Вы бары пришиваете к абсолютному времени или к фиксированному, т.е. «часовки» привязаны у вас к 14:00, 15:00 и т.д. или «часовки» привязаны к хвосту данных?
Обратимся к скрину из программы. Здесь стоит дата 26.09.2003 17:11:16. В это время была вот такая цена, вот такой бар. Так же, как и в любой другой торговой системе. Вы можете задать историю на любой момент времени с точностью до секунд и получите ситуацию именно такую, какой она была в тот момент.
Т.е. Вы привязываетесь к абсолютному времени?
Да.
Как сказал смешной и великий Ремарк, - думаю, эти слова помогут нам быстрее понять друг друга, - «Надо смотреть в обратную сторону». Начало координат временной оси было последний момент времени. И дальше рождается идея, очень простая, - время идет влево и Вы начинаете выстраивать бар от этого момента времени и у Вас не бывает ситуаций, когда бар не закрыт, он все время закрыт.
А зачем? Но если Вам будет нужно, я Вам это сделаю.
Я понимаю.
Почему Вас тогда не устраивает TradeStation?
Как я уже говорил, не устраивает именно тем, что на меня накладывают сильные ограничения по тому, с какими данными и как я могу работать. Может быть, конечно, кому-то моя система и напоминает TradeStation.
И все-таки, в чем же основное отличие Вашей Модели Данных от TradeStation и ей подобных?
Самое главное отличие это то, что моей системой может воспользоваться не только профессиональный программист, а любой желающий, с какой-то степенью владения английским языком. Он САМ может составить все запросы, произвести все вычисления легко и просто. При этом ему не нужно ждать помощи, не нужно звать более квалифицированного пользователя, не нужно никого просить, а все созданные им запросы будут ему понятны, т.е. его никто нигде не обманет, пусть даже ненароком. Задача Модели Данных избавить пользователя от ошибок. Здесь все просто и понятно. Пользователю просто нужно знать, что он хочет, а реализовать это задача Модели Данных. В любой момент времени он может изменить параметры и характеристики. Причем, для всех данных, будь то данные из Quik или его собственные, накопленные, скажем, в Excel, все эти данные можно представить в ЕДИНОМ виде, произвести операции в единОМ стандарте, смешать данные с разных площадок, с разным временем.
Модель Данных помогает избавиться от такой проблемы, как проскальзывание, т.к. здесь реализована функция задержки по времени.