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

по

Учет и анализ сделок iDeals на 1С для трейдера и инвестора версия 1.2.5.1

Добрый день!
хочу поделиться с участниками сайта новой версией решением для учета и анализа сделок IDeals 1.2.5.1 на платформе 1С.

По сравнению с предыдущей версией 1.2.0.1 было реализовано очень много изменений и исправлений.
Из основных — добавлен валютный учет по всем раздела учета (ценные бумаги, денежные средства и т.д.).

краткое описание:

Учет и анализ сделок iDeals на 1С для трейдера и инвестора

iDeals — беcплатная конфигурация 1С для учета и анализа сделок трейдеров и инвесторов.


Функциональные возможности:*
  1. учет ценных бумаг (акций, облигаций, лонг / шорт)
  2. метод учета ценных бумаг ФИФО/по средней
  3. учет полученных комиссий
  4. учет полученных дивидендов
  5. загрузка валют
  6. загрузка котировок с файлов скачанных с finam.ru
  7. учет облигаций (оплата купона, полное и частичное погашение облигаций, амортизация)
  8. ежедневный расчет стоимости чистых активов (СЧА)
  9. валютный учет

В конфигурацию существуют разнообразные отчеты:

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

Spreads - новый бесплатный open-source инструмент для алготрейдинга

На Смарт-Лабе редко, поэтому тут напоминалка про Spreads по мотивам этого поста, который до меня даже через Фейсбук добрался, и не мог пройти мимо. Цифры — ответ на оригинальный пост. Мой комментарий странным образом изчез из оригинального поста, ниже его полная копия. 

Сорри, гайз:

 1 — история и реальная торговля — один код

2 — тайм-фреймы вообще нерелевантны, соединение серий идет по time stamp. Главное самим помнить, где он для свечек — в начале или конце, и использовать .Lag(1) где нужно

3 — событийная архитектура — это ад, однажды разобравшись в функциональных преобразованиях серий пути назад нет. Shared mutable state спрятан и совсем не shared.

4 — помимо стандартных проектов VS, можно писать в F#/C# interactive REPL

5 — higher-order преобразования серий (Window,ZipLag,Map,Scan,Filter,Repeat,ZipN) позволяют написать индикатор любой сложности в несколько строк кода и спрятать всю логику и состояние в лямбдах

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

Индикаторы для QUIK - ASCTrend

После семинара В. Олейника захотелось в своем квике получить индикатор ASCTrend, но т.к. на просторах интернета не смог его найти, то решил сделать свой путем переработки кода для MT5. На авторство не претендую, просто вдруг кому пригодится.
Синяя точка под свечой — сигнал на покупку, красная над свечой — сигнал на продажу.

Краткое описание.

По большому счету — это обычный трендовый индикатор, который своими точками указывает на момент разворота тренда, пусть и не всегда удачно, но идеальных индикаторов не существует. Для формирования торговых сигналов используется стандартный индикатор Larry Williams` Percent Range.
Параметр у данного индикатора всего один, но он очень важен, так как отвечает за частоту появления точек на графике. Этот параметр не может быть меньше «3», так как индикатор начинает работать нестабильно и часто неправильно. Но при увеличении значения не значит, что сделки будут появляться часто, как раз наоборот, фильтр становится жестче и сигналов становится меньше, что позволяет отлавливать более затяжные тренды.
Взято отсюда: http://findicators.com/indikator-asctrend



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

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

Qlua для чайников. Часть 7. Отвечаю на ваши вопросы. Часть 1

    • 25 декабря 2014, 16:09
    • |
    • orekton
  • Еще

Этот урок будет посвящен ответу на некоторые ваши вопросы, которые накопились в ходе публикации данных уроков.

Qlua для чайников. Часть 1

Qlua для чайников. Часть 2

Qlua для чайников. Часть 3. Делаем робота-спредера

Qlua для чайников. Часть 4. Анализ информации из стакана и работа с заявками

Qlua для чайников. Часть 5. Работа с таблица Quik. Поиск заявок. Искусство отладки

Qlua для чайников. Часть 6. Модуль торговли. Остатки по бумагам на фондовом рынке. Удаление заявок


Вопрос: Можно пример, что бы в 23.40 закрывались все открытие позиции по рынку?

Для решения поднятой в данном вопросе задачи необходимо следующее:

  • Знать, как выставлять заявки. Это мы уже умеем. Данную тему мы изучили на уроке 1 (http://robostroy.ru/community/article.aspx?id=773) и уроке 6 (http://robostroy.ru/community/article.aspx?id=790), где мы писали блок совершения сделок биржевого робота.
  • Получить список позиций (частично этот вопрос мы так же изучили на уроке 6).
  • Работать со временем. Этому мы сейчас будем учиться.
  • Выставлять заявку именно по рынку. Этому тоже мы будем сейчас учиться.


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

Встречаем. Три новых майнера. БЕСПЛАТНО.

 Встречаем. Три новых майнера. БЕСПЛАТНО.
Рис. 1 Тренд my friend
    Когда я только начинал писать код, мне было интересно: «почему таких программ нет в открытом доступе?» Сотни программистов работают над терминалами, библиотеками, роботБилдерами. TSLab, WelthLab, S# и т.д. Программисты, архитекторы, менеджеры, целая туча народа. Это же возмутительно! Есть десятки конструкторов роботов и сотни всяких индикаторов, но нет возможности быстро и просто посмотреть текущую формацию на прибыльность. Как так!!!???
    И вот теперь, после того как я стал true программистом и потратил на изучение вопроса почти ПЯТЬ лет, я понял, в чём проблема: НИ ОДИН НОРМАЛЬНЫЙ ЧЕЛОВЕК НЕ ВЫЛОЖИТ ТАКУЮ ПРОГРАММУ В ОТКРЫТЫЙ ДОСТУП.
Но впрочем, с этим кажется, вам повезло… ))


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

Qlua для чайников. Часть 4. Анализ информации из стакана и работа с заявками

    • 07 октября 2014, 14:51
    • |
    • orekton
  • Еще
Продолжаем тему прошлого урока. Мы начали писать робота.
Предыдущие статьи:
Qlua для чайников. Часть 1
Qlua для чайников. Часть 2. Циклы
Qlua для чайников. Часть 3. Работа со стаканом
Так что, теперь, если вы принимаетесь за написание программы, у вас уже не должно возникать вопроса: «С чего начать?», ибо на прошлом уроке мы этот вопрос прекрасно разобрали. Но может возникнуть следующий вопрос: «А как продолжить?». Вот научились мы работать со стаканом, написали запись стакана в файл (чисто ради тренировки), а дальше-то что? Как реального робота создать?
Вообще, чтобы подобные вопросы не возникали («Как начать?», «Как продолжить?», «Как закончить?») полезно иметь определенный план действий. Вот сейчас мы с вами и составим такой план. Для начала разобьем процесс написания робота по шагам (начиная с текущего состояния):
  1. Разработать механизм определения границ лучших цен, с учетом уже выставленных заявок. Для этой цели нам придется написать механизм поиска своих заявок.
  2. Разработать механизм выставления заявок, с учетом того факта, что заявки могут быть уже выставлены и могут быть исполнены.
  3. Разработать механизм перевыставления заявок при изменении цен.
  4. Разработать механизм удаления выставленных заявок и закрытия всех открытых позиций по рынку в заданное время.


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

10 скальпинг стратегий

Недавно решил перейти из интрадея в скальпинг, но т.к. о скальпинге имел лишь общее представление и какой-то конкретной стратегии не было, пришлось обратиться к поисковику. К своему удивлению обнаружил, что на просторах интернета куда больше скальпинг стратегий для Форекса (во всяком случае сложилось такое впечатление), чем для ФОРТСа. Множество стратегий опираются на совокупность из сигналов индикаторов и на первый взгляд представляют собой невероятную сложность. Интрадей я торговал без индикаторов, за исключением скользящей средней, поэтому и скальпинг решено было изучать, используя стакан, график и объёмы (ои, плотность стакана и кластерный анализ я отнёс сюда же).

Итак,скальпинг — это быстрое совершение сделок внутри дня.

Время между открытием и закрытием сделки  у скальпера может составлять от нескольких секунд до нескольких минут (согласно финансовому словарю смарт-лаба).

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

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

До интуиции еще надо добраться

Ну что ж, в моём последнем посте я сделал правильные выводы о своей жадности и психологических слабостях. Кстати, очень много полезного о психологических аномалиях человека заметно проявляющихся у трейдера можно почитать в книге «Психология финансов» Ларс Твид. Материал собран из разных источников, то есть не является оригинальным. Но для общего развития безусловно полезен (особенно тем, кто мало читал до того на тему психологии трэйдинга). Полезны только начало и конец книги. Например: об открытом интересе, почему объёмы при росте больше чем при падении, о том почему мы быстрее расстаёмся с прибыльными позициями и цепляемся за убыточные. Хотя, честно скажу, сейчас для меня чтение любой книги – скорее бесполезная трата времени. Видимо уже достаточно начитал и, самое главное, до всего лучше доходить самому.

Больше пользы трейдер получает от анализа собственных ошибок, от исследования рыночных движений, от разработки собственных торговых схем. Например, для борьбы со своей жадностью я понял, что мне нужно жестко, иногда даже тупо, следовать сигналам своей системы, особенно тогда, когда убежден, что потеря денег абсолютно неизбежна. При этом, если не имеешь достаточно опыта, ни о какой интуиции не может быть даже речи. О ней можно говорить только в далёком будущем, когда выработаются безусловные  рефлексы на те или иные торговые паттерны. Собственно эти рефлексы должны быть на уровне подсознания, как и сама интуиция. Когда пропадут другие «обыденные» рефлексы, присущие обыкновенному пиплу, например, связанные с чувством комфорта, самозащиты, самосохранения и т.д.

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


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

Чего должен знать скальпер

    • 28 сентября 2011, 21:21
    • |
    • jtrade
  • Еще
В скальпинге есть такие моменты, на которых следует обострить свое внимание. Давайте начнем по порядку...
 
Уверен, что каждый трейдер начинал опыт торговли со скальпинга))) Как это происходит?) Открылся. Значимый удачный +, но в силу каких либо  факторов (возможно неопытность, страх, жадность) тут же закрылся… Дальше происходят убытычные и профитный сделки, но в итоге результат оставляет желать лучшего. После анализа напрашивается вывод. Зачем сделал столько сделок, если можно просто было открыться тут(указывая на график) и закрыться вот тут (снова указывая на график)? В итоге моральных сил потрачено много, а  результат не радует. Со ступеньки скальпера -прыжок на ступень интрадея, позиционного трейдинга...
 
Почему так произошло? И как добиться стабильности и ограничить потери, избавиться от неудачи? Попытаемя ответить на эти вопросы...
На чем зарабатывают- на тренде. Если есть тренд, то скальпинг прибыльный если работать в одном направлении тренда, но и тут профит скорее будет меньше чем просто встал по тренду и лови волну. Но когда тренда нет, на любом таймфрейме -час, 15мин, 5мин,1мин — ниша скальпера. Риски минимальны-тебя не вынисут вперед ногами от резкого движения и когда это движение идет весь день. Обозначаются ориентиры, когда стоит торговать лонг, а когда шорт. Возможная прибыль, лось......
 
-анализ ситуации. День стоит начинать с ТА графика ММВБ, РТС, торгуемого спота, и фьючерса на него. Общий анализ мировых индексов. закрытие DJIA, SP500, нефть и Brent, Light (спред м/у ними).Золото. Пара eur/usd, а в случае торговли fRTS также и фьючерс на пару доллар/рубль.(нудно утомляет и бывает хочется уйти в позиционный трейдинг-сразу бан! Нарушение всех правил)
 
-основной поток информации- стакан котировок. В случае скальпинга фьючерсами на акции — дополнительно стакан котировок на акции соответствующего эмитента (тут оптимально Газпром, Сбербанк)
-Графики. Рабочий минутный максимум 5-ти минутный. На остальных тайм фремах ищем паттерны (треугольник, двойное дно/вершина). Максимум час. Дневка и недельный-для общего анализа движения.
-индикаторы- их просто вовсе нет. Ни каких RSI, MACD  и прочего нет.Только стакан котировок самого фьючерса, его график и график поводыря… Единственное что может быть на графике-это скользящая средняя... 
-Стопы. Стоп-лоссов как таковых нет. Это занимает время и в данной ситуации ни к чему. Стопы в голове. Ушли в минус на заранее допустимую величину- тут же хладнокровно и не думая кроем сделку. Никаких надежд быть не должно. 
-Повадырь. Скальпинг требует максимального внимания, т.е. нужно тут же реагировать на изменения повадырей. Это фьючерс sp500, нефть, DAX, euro/usd, золото.Графики основного индекса ММВБ, торгуемого фьючерса, график торгуемого спота. Отслеживаем любые изменения, примерно так(таблица)



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

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