Избранное трейдера vovak_85

по

"Грааль" без подарочной упаковки

Сразу к сути. Берем обыкновенные акции Сбербанка (дневные значения). Кроме стандартных OHLC нам понадобится VWAP каждого дня. По VWAP предыдущих трех дней методом наименьших квадратов строим линейную регрессию, по которой делаем прогноз VWAP текущего дня. Далее в зависимости от того, выше или ниже прогнозного VWAP открылись торги в текущем дне, входим в лонг или в шорт. Сделку закрываем в конце дня. В идеале (если успеваем войти по Open и выйти по Close) почти на «ровном месте» получаем следующую кривую доходности со средней сделкой 0.2% и профит-фактором 1.3:
"Грааль" без подарочной упаковки























Вопросы на засыпку:
Есть ли здесь подгонка?
Стоит ли торговать такую систему?
Какими способами можно поднять профит-фактор и среднюю сделку?

Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#

Вступление

     Никогда не увлекался скоростным трейдингом. Всегда хватало терминала. Изучать этот протокол меня побудил набор вакансий. Надо отметить, что я неспешно перебираю хорошие вакансии на рынке. Частному трейдеру очень сложно развиваться в одиночку — психологически, эмоционально, физически. Создавать и развиваться постоянно хочется, поэтому принял решение вливаться в коллектив. За несколько месяцев, мне удалось провести несколько собеседований. На втором этапе я проваливался именно из за не знаний протокола.  Предметную область я примерно представлял. Ну что там сложного? Соединился с биржей по сокетам и начинай обмен сообщениями. Надо отметить, что в этой области есть уже готовые разработки в виде quickfix или готового API от StockSharp (правда платные). Но я принял решение разбираться с нуля, чтобы вникнуть в детали.

Технические аспекты протокола


     Итак. Любой протокол, какой бы он сложный не был, работает примерно одинаково. Мы создаем у себя соединение с сервером, устанавливаем некий туннель между нами и сервером, посредством которого будем обмениваться сообщениями. Протокол — это как раз и есть набор правил, по которым строятся сообщения нужного формата. Если говорить технически, то мы должны создать сокет соединение с сервером на указанный порт.
Сообщение в FIX, как и в любом другом протоколе, состоит из нескольких блоков:
  • <Заголовок сообщения>
  • <Сообщение>
  • <Концовка сообщения>
     Наша задача, правильно заполнить эти блоки и отправить на сервер. Заголовок сообщения в свою очередь состоит из следующих данных:
  • <Начало сообщения, версия протокола>
  • <Длина (размер) сообщения>
  • <Тип сообщения>
  • <Идентификатор отправителя>
  • <Идентификатор получателя>
  • <Номер сообщения>
  • <Время отправки>
     Обращу ваше внимание, что я перечисляю обязательные поля. Есть еще и дополнительные. Концовка сообщения должна выглядеть так:
  • <Контрольная сумма сообщения>
     Сами данные заполняются достаточно легко. В виде: <тип поля> = <значение>. Например, <длина сообщения> = 78, то есть мы серверу говорим, что размер передаваемого нами сообщения составляет 78 байт. Стоит обратить внимание, что в протоколе FIX, типы полей кодируются в виде числовых значений. Например,  <длина сообщения> в протоколе передается как цифра 9. Исходя из выше сказанного, наш заголовок сообщения, выглядел бы следующим образом:
  • 8=FIX.4.4 _____ начало сообщения, протокол версии 4.4
  • 9=78 _____ размер сообщения 78 байт
  • 35=A _____ тип сообщения А, что означает попытка на соединение с сервером
  • 49=<ваш идентификатор выдается биржей>
  • 56=FG _____ идентификатор получателя, раздел Forts на бирже
  • 34=1 _____ первое сообщение
  • 52=20160212-11:42:51.812 _____ время отправки сообщения

Организационные вопросы

  1. Наша биржа дает тестовый контур для отработки своих алгоритмов по данному протоколу. Надо всего лишь написать запрос на доступ. Надо признать, тех служба работает отменно. Очень все быстро было организовано. Подробности http://moex.com/s442
  2. Обязательно понадобится описание протокола для нашей биржи ftp://ftp.moex.com/pub/FIX/Spectra/test/docs/spectra_fixgate_ru.pdf
  3. Чтобы вникнуть в тонкости передачи, мне очень помогла эта программа от биржи (позже я покажу как помогла) ftp://ftp.moex.com/pub/FIX/Spectra/Utils/fix_client.zip
  4. Описание самого протокола от создателей (на английском). Мне помог сильно wiki. http://fixwiki.org/fixwiki/FIXwiki
  5. Чтобы найти свои ошибки, мне приходилось перехватывать сообщения рабочего клиента биржи и сверять со своими. Для этого мне понадобился tcp/ip сниффер — программа перехвата сетевого трафика.
  6. Разработку я веду на c#.

К бою. Немного теоретической практики

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

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

8=FIX.4.4
;9=78;35=A;49=FG;56=tgFhcfx901U05;34=1;52=20160212-11:42:51.812
;98=0;108=3000;141=Y;10=047;

Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#

     Если быть внимательным, то мы увидим, что кол-во символов в строке у нас 100, а в заголовке сообщения мы передаем, что 78 (9 = 78). По правилам протокола FIX, длину сообщения нужно считать без учета концовки и первых двух полей заголовка. А именно:

Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#     С длиной сообщения разобрались. Теперь про разделитель. Пока в моем скрине это ";". В документациях западных написано что это символ SOH. Чтобы однозначно ответить на этот вопрос, я запустил прилагаемого клиента биржи и сниффером стал перехватывать сообщения между клиентом и биржей. Кстати, программа ведет логи, и их общение выглядит так (зеленое — передача запроса на биржу, красное — ответ от биржи):
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#
     Зачеркнул свой идентификатор, прошу понять правильно. Ну а перехват сообщения выглядит так:
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#     Зеленым я отметил именно разделители. Как вы уже видите, это просто в шестнадцатеричном виде код 01. То есть, в нашу строку в виде разделителей, нужно вставлять код 01. Также я отметил для себя последовательность полей в сообщении. Почему то в другом порядке у меня вызывало ошибки (возможно тут я не прав)
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#     Ну и контрольная сумма. Контрольная сумма считается над всем сообщением, за исключением концовки. То есть в расчет берется только заголовок и само сообщение. Для этого, мы переводим каждый символ в его Ascii код и вычисляем их сумму. Полученную сумму делим по модулю 256. Это и будет контрольной суммой сообщения. При этом, значение должно быть трехзначным. Если мы получаем 2 знака, то подставляем 0 слева (например, если контрольная сумма = 68, то должны передать значении 068).

К бою. Начало программирования

     В законченном виде, разработка будет составлять готовый класс, для работы с протоколом. Теперь начинаю строить его по кирпичикам. Для начала, я создал несколько классов:
  • класс для работы с заголовками
  • класс для работы с сообщением подключения к серверу (onLogon)
  • класс для работы с концовкой
    Каждый класс включает в себя поля, которые передаются и некоторые методы для их обработки.
    Класс для работы с заголовками. Пока просто выглядит так: 
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#

Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#     Как видим, первый метод строит нужную строку из полей. Обратите внимание, там присутствует наш разделитель в виде спец символа \u0001. Второй метод вычисляет размер заголовка (чтобы потом высчитывать размер сообщения). Надо обратить внимание, что при передачи времени, миллисекунды должны указываться в трехзначном формате (даже если миллисекунды = 52, то передаем 052). Следующие классы строятся по аналогии.
Класс создания сообщения на подключение (инициализация сессии)
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#
Класс создания концовки сообщения
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#

Попробую привести код консольной программы для теста в виде цитаты. Картинки вставляются плохого качества. Подробно комментирую.

//Получаем ip сервера
IPAddress ipAddr = IPAddress.Parse(server);
IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, port);
//Создаем заголовк
HeaderMessage msHeader = new HeaderMessage
{
BeginString = «FIX.4.4»,
MsgType = «A», //Тип сообщения на установку сессии
SenderCompID = "",
TargetCompID = «FG»,
MsgSeqNum = 1
};
//Создаем сообщение на подключение onLogon
LogonMessage msLogon = new LogonMessage
{
EncryptMethod = 0,
HeartBtInt = 3000,
ResetSeqNumFlag = true
};

//Вычисляем длину сообщения
msHeader.BodyLength = msHeader.GetHeaderSize() + msLogon.GetMessageSize();
//Создаем концовку сообщения
TrailerMessage msTrailer = new TrailerMessage(msHeader.ToString() + msLogon.ToString());

//Формируем полное готовое сообщение
string fullMessage = msHeader.ToString() + msLogon.ToString() + msTrailer.ToString();
Console.WriteLine(«Сообщение для отправки {0}»,fullMessage);

//Создаем сокет для подключения
sSender = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
//Подключаемся
sSender.Connect(ipEndPoint);
Console.WriteLine(«Сокет соединился с {0} », sSender.RemoteEndPoint.ToString());


byte[] msg = Encoding.UTF8.GetBytes(fullMessage);
//Отправляем сообщение
int bytesSent = sSender.Send(msg);
Console.WriteLine(«Отправил {0} байт», bytesSent.ToString());


//Получаем ответ от сервера
byte[] bytes = new byte[1024];
int bytesRec = 0;
bytesRec = sSender.Receive(bytes);
Console.WriteLine(«Ответ от сервера: {0}», Encoding.UTF8.GetString(bytes, 0, bytesRec));


Все таки приложу и в виде картинок. Так наглядней. Кликабельно.
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#
В результате мы запросили у сервера подключение с нашим логином. И получили от него ответ.
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#
По мере развития, буду продолжать с теоретической частью. Если модераторы перенесут в раздел «Алго», я не против.

Продолжение Изучаю FIX протокол с нуля. Рисуем и программируем дальше.

Варианты прямого доступа к Московской Бирже

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

На колокации в зоне  биржи доступны:

1.Валютный рынок и Рынок Акции/Облигации
   FAST — протокол мультикаст раздачи  рыночных данных.
   FIX  -  протокол для  постановки заявок.
   ASTS Bridge  он же  Teap  -  забудьте  о его существовании.
   Волшебные  буквы ASTS подразумевают подключение любым  из вариантов  -)))

2. Рынок  FORTS
   CGate — уникальная утилитка в  виде черного окошка.(Здесь следует добавить заклинание  Plaza II ).  Позволяет получать два  вида биржевых данных.  
   Без ордер лога — урезаный режим в  котором поступают данные по стаканам.
   Полный ордер лог  -  режим  в  котором  приходит лог всех заявок (поставленных снятых исполненных и  т.д.)

( Читать дальше )

итоги 2015г роботорговля... запил... боковик...

    • 31 декабря 2015, 10:40
    • |
    • ves2010
  • Еще

непруха или 7мь месяцев боковика 

            Пошел 10ый год активной торговли. Лично сделал с 40к 14.4мио за 6лет ботами. Год в плане алготорговли был крайне неоднозначен. С начала года боты быстро напилили с 9.5мио 14.5мио. Потом в июне случился писец. 7 месяцев неоконченного боковика от 13 до 14.4мио. (на прошлой неделе видел в третий раз 14.4мио… а через неделю распилился на -12% от хаев словив стресс). Дальше будет про торговлю много букв можно не читать.

1 Боты были спроектированы под счет в районе 3-4мио.

2 Ликвидность на фортсе и мамбе упала. Это я сразу почувствовал. Та же ФСК вместо обычных 250мио оборота в день скатилась унылое говнище с оборотом 70мио. Если раньше я мог легко торговать счет в 3мио широкой диверсификацией в 15-20 бумаг, то теперь из-за разросшегося счета + падения объема торгов на мамбе пришлось уйти в самые ликвидные бумаги.

3 Поэтому  нагрузка на самые ликвидные бумаги возросла. Так например, зачастую делаю  во фьючах лук, рося, втб более 5-10% от дневного оборота. Сейчас мне надо купить с рынка в 10 раз больше бумаг чем раньше (в три раза больший счет и в три раза меньшее число бумаг).  Увеличились проскальзывания. Если на счете в 2-3 мио и диверсификации по 20ти бумагам проскальзывание было практически равно нулю, то сейчас при обороте в 30-40мио в день проскальзывание составляет 0.03%. Удовольствие поторговать стоит мне в месяц 200-250к. Это -1.7% от капитала в месяц.  Т.е. Издержки на торговлю выросли с 5-7% до 20% в год.



( Читать дальше )

Слайды Грефа. Когда встает солнце, вам надо бежать!

Слайды Грефа. Когда встает солнце, вам надо бежать!

Сегодня Герман Греф выступил на «Часе эксперта» в Совете Федерации. Очень интересное выступление. Советую, кто не смотрел посмотреть.

Видео выступления на сайте Совета Федерации

Интересно будет, как всем гражданам России, так и акционерам Сбербанка. Молодец, Греф. Готов к развитию, инновациям, свободный ум, и Сбербанк хорошо развивает, понимает вызовы, которые перед ним стоят.

Кстати, помощи у государства Сбербанк не попросил, смотрит на Гугл, Амазон, ...

Скопировал слайды себе для истории. Я бы хотел видеть Германа Грефа в кресле премьер-министра нового Правительства Развития!

( Читать дальше )

Как США выходили из Великой депрессии.

Рыночные условия.Как США выходили из Великой депрессии

Великая депрессия остается классическим примером финансового кризиса рыночной экономики. Изучение методов выхода из неё, которые были применены разными странами, может оказаться полезным для проверки моделей кризиса на соответствие реальности. Модель финансового кризиса в виде роста денежного пузыря должна быть проверена на основе анализа имеющихся исторических материалов, показывающих, как развивались предыдущие кризисы и какие меры оказались успешными в их преодолении. Наиболее интересным является опыт ведущих экономик мира. В данной статье речь пойдет о США.

ГУВЕР
Распространённая легенда, будто администрация Гувера в условиях кризиса бездействовала, весьма далека от реальности. Президент Гувер не стал уповать на саморегулирование экономики и решил смягчить удары кризиса с помощью активного государственного вмешательства. Он развил бурную деятельность". Уже в ноябре 1929 года был обнародован президентский план «Направить мощь государства на спасение экономики». Предполагалась активная государственная поддержка банковской системы, промышленности и сельского хозяйства. Только Сельскохозяйственной сбытовой ассоциации, созданной в 1929-м, было выделено 600 миллионов долларов кредитов. Правительство Г. Гувера пыталось ослабить действие кризиса путем оказания финансовой помощи банкирам и промышленникам, чтобы спасти их от банкротства. Была создана «Реконструктивная финансовая корпорация», которая, кредитуя кампании, истратила миллиарды долларов, спасая от неминуемого банкротства неплатежеспособные банки, предприятия, железные дороги и фермерские хозяйства. Скачок государственных расходов при Гувере был самым большим за всю американскую историю в мирное время.
9 марта 1931 г. был принят чрезвычайный закон о банках, главным положение которого было предоставление Федерально-резервной системой США (аналог Центрального банка) займов частным банкам. Одновременно были предприняты меры по предотвращению массового изъятия вкладов из банков. Установлен запрет на экспорт золота. Проведены банковские каникулы, т.е. почти все банки были закрыты для проведения финансовой проверки (не путайте эти каникулы с банковскими каникулами Рузвельта, см. ниже). После нее к концу марта 80% банков было открыто, а 20% ликвидировано. Но это помогло мало. В последний год своего президентства Гувер отчаянно пытался реализовать другие планы по оздоровлению банковской системы. Однако не получилось, так как для принятия решения в Конгрессе было необходимо заручиться поддержкой демократического большинства.
Вторым пунктом была справедливая социальная политика. Осенью 1929 года президент провел ряд встреч с крупными промышленниками и заставил их торжественно пообещать не снижать заработную плату своим работникам. Обещание честно выполнялось до лета 1931-го. В 1930-м было предпринято снижение налогов: налоги семейного американца с доходом в 4000 долларов упали на 2/3. Всячески поощрялась гуманитарная деятельность муниципальных структур и частная благотворительность.
Наконец, были организованы масштабные общественные работы по строительству инфраструктурных объектов. Уже весной 1930-го на общественные работы было выделено 750 миллионов долларов — баснословная сумма. Повсеместно возводились новые административные здания. За четыре года президентства Гувера в США затеяли больше крупных строек, чем за предыдущие 30 лет. Именно при Гувере началось строительство моста «Золотые ворота» в Сан-Франциско и гигантской плотины на реке Колорадо. А теперь сравните с планом Обамы. Очень похоже. Не правда ли?
Тщетно пыталось изъять с рынка излишки сельскохозяйственной продукции образованное правительством «Федеральное фермерское бюро», оказавшее практически помощь лишь крупным фермерам.
Следующим элементом плана была защита национального производителя. В 1930 году был принят закон Смута-Холи о таможенных тарифах, внесенный однопартийцами президента сенаторами Смутом и Хоули и вводивший высокие таможенные пошлины на импортные товары. Новые таможенные пошлины, одобренные Гувером, были рекордно высокими, а круг охватываемых товаров — рекордно широким. В итоге объем импорта сократился в несколько раз. Между тем, сейчас этот закон, считают одним из факторов, подстегнувших наступление Великой депрессии.
Высокий таможенный тариф способствовал резкому сокращению ввоза в США товаров из-за границы. Это в свою очередь снизило и без того неважную покупательную способность населения, а также вынудило другие страны применить контрмеры, навредившие американским экспортерам – иностранцы в ответ ввели тарифы против США. Все это привело к сокращению международной торговли. В результате все экономики проиграли и ещё больше усугубили кризис. Потом, как обычно, все свои внутренние беды в массовом сознании американцы свалили на происки иностранцев. Именно поэтому главным решением двадцатки в ноябре 2008 года был мораторий на протекционистские меры в течение года.
По мере развития Великой депрессии в наиболее пострадавших странах стали принимать меры по недопущению Великой депрессии в будущем, поняли опасность зависимости от США. Поэтому там установили контроль за иностранным капиталом, возник государственный сектор экономики и кое-где было ограничено господство латифундистов, особенно в Бразилии, Чили, Мексике… В Мексике реформы были настолько глубоки, что были национализированы железные дороги, нефтяная промышленность.
Лишь в середине 30-х годов после вступления в силу Закона о соглашениях о взаимной торговле, существенно снизившем таможенные пошлины, международная торговля начала восстанавливаться, оказывая позитивное влияние на мировую экономику.



( Читать дальше )

Очень подробно разжёвано для чайников по LUA часть1!

    • 19 ноября 2015, 06:38
    • |
    • aura
  • Еще

Скрипты на языке Lua

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

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

a = 1; b = 2

a = 1 b = 2

a = 1;

b = 2;

a = 1

b = 2

Работа с переменными в Lua

Переменные используются для хранения значений в процессе выполнения скрипта.

Имена переменных в Lua

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



( Читать дальше )

_ПРЕДЕЛ РИСКА (про алгоритмы)



 _ПРЕДЕЛ РИСКА (про алгоритмы)

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

_ПРЕДЕЛ РИСКА (про алгоритмы)



( Читать дальше )

Индикатор Брента в рублях для Квик (Quick Lua Indicators) вер. 2.0

    • 10 ноября 2015, 15:25
    • |
    • ztaz
  • Еще
Доработал немного. С синхронизацией жопа, но если график бакса навесить на брент, то квик синхронизирует их по времени.
в вер. 2.0 теперь если нет курса бакса, то берет предыдущий.
не совсем «корректно», но зато читабельно если нет данных.
+ в пред. версии небольшой косяк был — курс на одину свечку отставал

brent.lua:
Settings =
{
    Name = «Brent»,
    USDRUB = «USDRUB_KURS»,
    line =
    {
        {
        Name = «rubrent»,
        Color = RGB (0, 255, 0),
        Type = TYPE_LINE,
        Width = 1
        }
    }
}

function Init()


( Читать дальше )

....все тэги
UPDONW
Новый дизайн