Избранное трейдера Александр Дорош

по

Заработай на МИНИ

Заработай на МИНИ

Заработай на МИНИ!

Срочный рынок Московской Биржи объявляет конкурс: сделай прогноз по мини — фьючерсу на Индекс ММВБ, сделай оборот в 100 контрактов и если прогноз будет самым точным на исполнение 17 марта 2016 года — получи MINI Cooper

mini.moex.com

Обзор. Риск-менеджер, автостоп, алгоритмическая торговля (МТС).

    • 15 февраля 2016, 15:06
    • |
    • comrade
  • Еще

Обзор от пользователя.

       Вышла новая версии риск-менеджера Acceleration 3.0 для QUIK [скачать демо] разработана на LUA,   добавлен модуль алгоритмической торговли (МТС), в базовой версии 10 индикаторов подключены к более 20 вариантам  выбора стратегий с открытым кодом, при небольших навыках знаний в LUA  можно редактировать, изменять стратегии на основе имеющихся, создавать свои стратегии МТС с интерфейсом настроек, инструкция прилагается. Невысока стоимость программы, позволит, не затрачивая больших средств,  поэкспериментировать в разработке стратегий  алгоритмической торговли.

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



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

Изучаю 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 протокол с нуля. Рисуем и программируем дальше.

Журнал сделок теперь бесплатный

Возрадуйтесь, комрады! Журнал сделок теперь бесплатный!
С 29 ноября 2015 годя MaxProfit стал бесплатным!!! (плачьте конкуренты marketstat, piratetrade :-)

Автор выложил генератор ключей. mxprofit.ru/Downloads/Key_generator.zip — просто нужно ввести любое одинаковое имя пользователя.
Скачать журнал http://mxprofit.ru/index.php?module=Downloads

Возможности
-Импорт из МТ4 и Quik
• Импорт исторических данных из MS Excel, NinjaTrader, МТ4 и МТ5 в 2 клика
• Сохранение скриншотов, аудио и видео файлы к каждой сделке
• Добавлять комментарий и ордера к каждой сделке
• Выставлять оценку за открытие и закрытие позиции
• Автоматически рассчитывать результат сделки
• Найдти нужную(ые) сделку(и) в Журнале сделок одним кликом
• Группировать и сортировать сделки по любым колонкам в Журнале сделок
• Посмотреть значения по 62 показателям, таким как профит фактор, фактор восстановления, Матожидание, MIDD и т.д.
• Построить 16 линейных графиков и более 65 диаграмм (зависит от количества используемых Вами характеристик)
• Узнать какие инструменты, торговые системы, время работы и т.д. приносят Вам наибольшую прибыль или убыток
• Строить графики и диаграммы по сделкам, дням, неделям, месяцам и годам
• Узнать какой убыток принесли Вам Ваши ошибки
• Воспользоваться формой для расчета лота перед входом в рынок (калькулятор трейдера).
• Записывать все мысли в свой личный дневник трейдера. Дневник трейдера очень удобен и прост в использовании.
• Автоматически загружать информацию о предстоящих экономических событиях и устанавливать для них напоминания


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

Это важно. Интервью с налоговым консультантом: налог на валютном рынке ММВБ


ML: Как вам видится правовое регулирование операций с валютой на Московской бирже?

А.А.: Легкий и большой заработок. Безграничная свобода и пьянящие перспективы. Жизнь в стиле героя фильма «Волк с Уолл Стрит».

Именно такие ассоциации вызывает у обывателей словосочетание «торговля на бирже». Мало кто задумывается, что перечисленные ассоциации – лишь одна сторона медали.

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

ML: Какие нормативные акты регулируют деятельность биржевых трейдеров по купле-продаже валюты на валютном рынке Московской биржи?

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

Например, в соответствии с ГК РФ к объектам гражданских прав относятся вещи, включая наличные и безналичные денежные средства.



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

Интервью с Александром Шадриным об инвестициях

Рад вам представить видео-запись интервью с известным частным инвестором, блогером, членом Совета директоров УК Арсагера, Александром Шадриным.
Александр рассказал очень много интересных мыслей об инвестировании и дал советы начинающим.


Также можно прослушать аудио-запись (подкаст)
http://sostoyanie.podfm.ru/Secrets/1/

Два важных замечания:
1. Приветствуются обсуждения идей и вопросов, затронутых в интервью.
Не допустимы личные оскорбления, троллинг и т.д. Подобные комментарии будут удаляться, а авторы вносится в черный список.
Господа, будьте вежливы, будьте людьми.
2. Извиняюсь за качество звука и монтаж. Петличных микрофонов не было. Буду развиваться в этом направлении=)

История развития языка R

Продолжаю проект по популяризации языка R. Сегодня познакомимся с его историей. И заодно поймем, как так вышло, что он стал САМЫМ популярным языком алготрейдеров/квантов на западе.

История развития языка R

Как появился

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

Таким образом, в середине 80ых годов появился язык S. Да-да. Язык S(не R). Кто и зачем его так назвал, оставим за скобками. Язык S был быстр, красив и работал с бигДатой весьма хорошо. Но была и проблема. Язык S — был ПЛАТНЫМ (тьфу!).

Долго такой беспредел продолжаться не мог, и уже в 1993 году, появился Бесплатный аналог S — язык R.

Язык R вобрал в себя самое лучшее от своего платного собрата, и начал своё победное шествие по планете!

Как развивался

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

Год кодинга

Всегда мечтал уметь программировать. Вот начал самостоятельно изучать Computer Science и Python Programming, имея сугубо финансово-экономический бэкграунд, но будучи гиком в душе.

Изучаю Python в контексте инструментария для применения в Data Science и далее в Machine Learning. Навыков программирования до этого не имел, если не считать работу со сложными связанными таблицами excel.

Начал с самого базового курса "Основы программирования на Python", книги Марка Лутца «Изучаем Python» и тренинга Python Essentials от Enthought, Inc. И официальные инструкции поглядываю: The Python Tutorial.

Также обучаюсь на курсах:

• массачусетского технологического института (MIT) MITx: 6.00.1x Introduction to Computer Science and Programming Using Python на 

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

Из-за ошибок налогового инспектора инвестору отказали в возврате налога

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

На днях ко мне обратился клиент, который подавал декларацию 3-НДФЛ за 2012 год, в которой отражался доход 2012 года и зачитывали убытки 2010 и 2011 годы. Налоговая инспекция не приняла декларацию, сославшись на то, что вернуть убытки 2010 уже нельзя. Получается, что из-за неграмотности сотрудника налоговой инспекции человек пропускает драгоценное время на возврат налога за 2012 год. Мы помогли клиенту избежать судебного разбирательства и вернуть налог за 2012 год, причем уже в 2016 году. 

Давайте еще раз вспомним порядок возврата налога по полученным убыткам. Налог возвращают за три предыдущие года. Например, в текущем 2016 году можно вернуть НДФЛ за 2013, 2014 и 2015 годы. То есть, у вас должны быть это прибыльные годы, в которые ваш брокер удерживал с вашего дохода подоходный налог. А вот зачесть убытки в прибыльном году можно за десять лет. Причем “брать во внимание” убытки можно, начиная с 2010 года. Это ваше право.



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

Правительство вспомнило о малом бизнесе после обвала в экономике

Ка пишет источник: РБК

Примерно четверть антикризисного плана правительства посвящена поддержке малого и среднего бизнеса. В частности, предлагается увеличить порог применения спецрежимов и бессрочно продлить действие ЕНВД

Антикризисный план правительства будет содержать большой блок по поддержке малого и среднего предпринимательства в 2016 году, доложил сегодня президенту первый вице-премьер Игорь Шувалов на совещании с правительством. РБК проанализировал 105-страничный документ, который 26 января, по данным РБК, был отправлен из Минэкономразвития в правительство. Из 96 различных пунктов поддержки более 20 касается малого и среднего бизнеса; в частности, правительство обещает, что по впервые обнаруженным нарушениям сначала будет выноситься пред​писание, а не штраф. В план включены и другие меры, призванные облегчить жизнь малым и средним предпринимателям: ​

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

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