Избранное трейдера Владимир

по

Дивиденды 2016, четвёртое чудо света и НКНХ

2016 год у меня получился сложный, профитный, насыщенный интересными и неожиданными событиями, яркими впечатлениями, знакомствами с замечательными людьми.
Вот и снова наступил конец года. Все дивидендные отсечки за 9 месяцев 2016 года в конце ноября уже были известны. Всё, что я хотела купить под эти отсечки, я купила.
И вновь мной «овладело беспокойство, Охота к перемене мест» ©
В этом году я решила снова путешествовать к одному из Семи Чудес Света. На этот раз я выбрала путешествие в Бразилию, посмотреть Статую Христа на горе Корковадо в Рио-де-Жанейро.
Я уже писала о своём плане путешествий в прошлые годы, поэтому просто коротко напомню
Из школьного курса истории мы помним, что в древности существовало Семь чудес света. Но до нашего времени сохранились только египетские пирамиды.
В середине двухтысячных годов появилась идея выбрать новые Семь чудес света.
Новые семь чудес света — проект, целью которого стал поиск более современных семи чудес света. Выборы новых семи «чудес света» из известных архитектурных сооружений мира происходили через SMS, телефон либо интернет. Всего в выборе новых чудес света приняли участие 90 миллионов человек по всему миру
Конкурс “7 новых чудес мира” Организован некоммерческой организацией New Open World Corporation (NOWC) по инициативе швейцарца Бернара Вербера. 7 июля 2007 года, в день «трёх семёрок», в столице Португалии Лиссабоне были названы новые семь чудес света.
Ими стали :
Великая Китайская Стена,
Римский Колизей,
Тадж-Махал,
Город Петра в Иордании,
Статуя Христа на горе Корковадо в Рио-де-Жанейро,
Город индейцев Мачу-Пикчу в Перу
Пирамида Майя в городе Чичен-Ица (Мексика).
Мне интересно посмотреть все эти великие памятники цивилизации и часть из них я уже посмотрела.
Фотографию кошки, которую я сделала в Римском Колизее, я выбрала моим аватаром
О путешествии в Мексику к Чичен-Ица есть рассказ и фото в моём блоге на СЛ в конце 2014 года.
Как я смотрела древний город Петру в Иордании, я написала в обзоре «ИГИЛ, 7 чудес света и дивиденды» в декабре 2015 года.
Так получилось, что в этом путешествии, мне было особенно интересно наблюдать за необычными событиями и деталями жизни людей тех стран, которые я посетила.
И вот я снова в пути, лечу в Барселону, откуда началось мой путешествие через Атлантику в Южную Америку
И так Барселона. Рынок Бокерия на La Rambla 
Дивиденды 2016, четвёртое чудо света и НКНХ



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

Что такое Plaza 2 и с чем ее едят! Ч.2.

Что такое Plaza 2 и с чем ее едят! Ч.2.

     Дальше будет интереснее.

Контуры Plaza 2.

     Существует 2 контура Plaza 2: для тестовых торгов и реальных торгов. Тестовый контур необходим для разработчиков. Доступ можно получить здесь: http://moex.com/s438.

На тестовом цена последней сделки, цена покупки и продажи очень похожи на реальный, но остальные данные далеки от реальности.

Установка и настройка шлюза.

     После того как получили логин Plaza 2 скачаем последнюю версию cGate ftp://ftp.moex.com/pub/FORTS/Plaza2/CGate/.

В процесс установки можно параметры по умолчанию не менять, кроме следующих:

 Что такое Plaza 2 и с чем ее едят! Ч.2.

Выбираем вариант подключения:

     Тестовая система для разработчиков если хотим подключаться к тестовому контуру.



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

настругал два ляма))))

Не так давно на смартлабе. Смотрю, очень много пишут здесь те у кого счета 50-100тыс рублей. кто-то жалуется на потери и свое лудоманство (раньше это слово на форумах трейдеров не использовалось), кто-то хвастает профитными сделками и зовет в ученики. Было бы интересно почитать посты о торговле тех, кто торгует суммами в несколько миллионов рублей, ежели более десятка то вдвойне интересно. Эти люди есть ведь в ЛЧИ, может быть Тимофей организует с ними интервью. Ведь именно это и есть реальные трейдеры, делающие деньги на фондовом рынке, а не мифические герчики, ну или персонажи, которым вдруг дали в управление 50лямов баксов (пару дней назад был такой пост). интересно все же почитать о стратегиях людей торгующих достаточно серьезным депозитом. Сам я пока не так много наторговал. Вот вчера наконец добрался до отметки 2 миллиона. с начала года доходность перевалила за 30%. Так как тут все требуют стейтмент (раньше тоже с этим словом не сталкивался), то вот он стейтмент....
ну а если тема с интервью трейдеров -миллионеров интересна, ставьте плюсики, может Тимофей организует)))настругал два ляма))))


  

Ориентиры для трендовых систем на нашем рынке

Осень — подходящая пора для размышлений, рефлексии, ожидания всплесков волатильности, грусти, романтики (нужное подчеркнуть)!

Немного размышляя о том, хорошие ли у меня трендовые системы, построил тривиальную систему на минутках, которая наращивает лонги и сокращает шорты, если цена выше 60-минутной скользящей средней, а также сокращает лонги и наращивает шорты, если цена ниже этой скользящей средней. Казалось бы, проще стратегию не придумать:) Пусть это будет самый очевидный бенчмарк, который трендовая система должна обогнать ну хотя бы в два раза, чтобы её запускать на реале.

Верхний график — цены закрытия минуток.
Средний график — поминутная эквити в процентах.
Нижний график — размер открытой позиции в каждую минуту (в контрактах или в акциях).

Всё с января 2010 по сентябрь 2016.

Обыкновенные акции Сбербанка:
Ориентиры для трендовых систем на нашем рынке



























Фьючерс на Сбербанк-ао:
Ориентиры для трендовых систем на нашем рынке



























Фьючерс на индекс РТС:
Ориентиры для трендовых систем на нашем рынке



























Фьючерс на курс доллар/рубль:
Ориентиры для трендовых систем на нашем рынке












Линейная регрессия в помощь...

Добрый день!

Для всех QUIKеров в свободное пользование индикатор линейной регрессии (LUA).
Линейная регрессия в помощь...
Settings = 
{
        Name = "xLinReg",
        period = 128,
        deviation=2,
        line=
        {
                {
                        Name = "xLinReg",
                        Color = RGB(0, 0, 255),
                        Type = TYPE_LINE,
                        Width = 3
                },
                {
                        Name = "xLinReg",
                        Color = RGB(192, 0, 0),
                        Type = TYPE_LINE,
                        Width = 3
                },
                {
                        Name = "xLinReg",
                        Color = RGB(0, 128, 0),
                        Type = TYPE_LINE,
                        Width = 3
                }
        
        }
}



----------------------------------------------------------
----------------------------------------------------------
----------------------------------------------------------
function c_FF()
        
        local AMA={}
        local CC={}
        
        return function(ind, _p,_ddd)
                local period = _p
                local index = ind
                
                local vol = 0
        
                local sigma = 0
                local sigma2 = 0

                local aav = 0
                local bb = 0
                local ZZZ = 0


                                                
                if index == 1 then
                        AMA={}
                        CC={}
                        
                        CC[index]=(C(index)+H(index)+L(index))/3
                        AMA[index]=(C(index)+O(index))/2
                        
                        return nil
                end
                
                ------------------------------
                AMA[index]=AMA[index-1]
                CC[index]=(C(index)+H(index)+L(index))/3
                ---------------------

                if index < (_p) then return nil end
                ----------------------------------------------------
                                
                period =_p
                if index < period then period = index end
        --------------- 
                sigma=0
                sigma2=0
                aav=0
                ZZZ=0
                for i = 0, period-1 do
                        ZZZ=CC[index+i-period+1]
                        aav=aav+ZZZ
                        sigma=sigma+ZZZ*(-(period-1)/2+i)
                        sigma2=sigma2+(-(period-1)/2+i)^2
                end
                
                ------------------------
        bb=sigma/sigma2
        aav=aav/period
                
        AMA[index]=aav+bb*((period-1)/2) ---------линейная регрессия
        -------------------------------
                
                sigma=0
                sigma2=0
                sigma3 = 0
                for i = 0, period-1 do
                        ZZZ=CC[index+i-period+1]
                        sigma2=aav+bb*(-(period-1)/2+i)
                        sigma=sigma+(ZZZ-sigma2)^2

                end
                sigma=(sigma/period)^(1/2)
                
                
                for i = 1, period-1 do
                        ZZZ=aav+bb*(-(period-1)/2+i)
                        SetValue(index+i-period+1, 3, ZZZ)
                        SetValue(index+i-period+1, 2, ZZZ+sigma*_ddd)
                        SetValue(index+i-period+1, 1, ZZZ-sigma*_ddd)

                end     
                        SetValue(index+0-period+1, 3, nil)
                        SetValue(index+0-period+1, 2, nil)
                        SetValue(index+0-period+1, 1, nil)
                
                
                ----------------------------------
                                                                
                        return AMA[index]-sigma*_ddd,AMA[index]+sigma*_ddd, AMA[index]
                        
        end
end
----------------------------    ----------------------------    ----------------------------
----------------------------    ----------------------------    ----------------------------
----------------------------    ----------------------------    ----------------------------

function Init()
        myFF = c_FF()
        
        return 3
end
function OnCalculate(index)
        
        
        
        return myFF(index, Settings.period,Settings.deviation)
        
                
end


Продолжение: http://smart-lab.ru/blog/337978.php



Предвидеть будущее на рынке. + Прогноз нефть, РТС.

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

(Кто хочет просто увидеть цифры по инструментам — смотрите сразу внизу топика.)

Прочитал сегодня на смарте рецензию на книгу, где много говорилось о будущем и о том, как его предвидеть. Автор писал о парадигмах, ещё о чем-то… но зачем? Ведь способ предвидеть то, что случится на рынке через месяц, полтора, два и более — уже существует. И я это доказал. Не раз.

В нашем равнодушном и прекрасном мире все относительно и, к сожалению, нет ничего идеального, поэтому я сразу напишу, что не забываю об ошибках, которые были допущены в моих прогнозах. Конечно, они были. И я серьезно поработал над их пониманием и исправлением. Но сегодня я хотел бы написать о том, что мне удалось продемонстрировать за тот короткий срок, что я здесь нахожусь — 19 апреля я написал свой первый прогноз. И тогда же, в моем первом прогнозе, я написал: РТС — 95800, нефть — 52-52.80 (в дальнейшем при приближении к цели были уже уточнения), Сбер — 13350. Как вы можете видеть теперь — эти цифры уже вошли в историю рынка. И не потому, что эти цели были достигнуты, но потому, что они оказались значительными, разворотными ценами инструментов. Были и другие, более «близкие» прогнозы по разным финансовым инструментам, которые, порой, исполнялись просто точка в точку… Были покупки и продажи по РТС на самом дне и на самых макушках. Все это написано в моем блоге, все это свершившиеся факты. Особенно ярким был пример со фьючом на сбер, которым я, фактически, «крутил» как кукл… Сначала предсказал за месяц вперед цель, в которую рынок бил трижды — и трижды откатывал, затем с точностью почти до минуты предсказал начало коррекции, а потом с окончанием первого цикла падения — закончилась и коррекция.

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

Как создаются красивые трендовые эквити.

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

Скачаем данные и создадим скользящую среднюю по месячным данным SP500

require(quantmod)
require(xts)
require(TTR)
require(PerformanceAnalytics)

getSymbols('^GSPC', src='yahoo', from = '1900-01-01')
monthlyGSPC <- Ad(GSPC)[endpoints(GSPC, on = 'months')]

movAvg <- SMA(monthlyGSPC, 10)

signal <- monthlyGSPC > movAvg
gspcRets <- Return.calculate(monthlyGSPC)
Далее построим две системы одна с ошибкой заглядывания, вторая корректная. Суть системы простая, месячная SMA с периодом 10, выше покупаем, ниже продаем.

lookahead <- signal * gspcRets
correct <- lag(signal) * gspcRets

И построим результаты систем, на обычной шкале, и на логарифмической.

compare <- na.omit(cbind(gspcRets, lookahead, correct))
colnames(compare) <- c("S&P 500", "Lookahead", "Correct")
charts.PerformanceSummary(compare)
rbind(table.AnnualizedReturns(compare), maxDrawdown(compare), CalmarRatio(compare))
logRets <- log(cumprod(1+compare))
chart.TimeSeries(logRets, legend.loc='topleft')

Как создаются красивые трендовые эквити.


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

Открытый Универсальный Робот – Первичные сигналы

Как было отмечено в предыдущей части – вся суть технического анализа со всеми его индикаторами сводится к пересечению линий. Например, быстрая скользящая средняя пересекает медленную скользящую среднюю; цена пересекает уровень или любую линию какого-нибудь индикатора; RSI пересек уровень 70% и т.д. Ну пусть даже и есть исключения – напишем под них отдельные функции, главное, что наше обобщение будет охватывать 90% случаев ))).

Итак, из чего же состоят сигналы пересечения линий? А состоят они из событий и состояний. Событие – это факт пересечения, состояние – это фактическое расположение линий относительно друг друга.

На рисунке показано, как это выглядит геометрически на примере пересечения скользящих средних. А с точки зрения программирования эти события и состояния удобно представить в виде битовых флагов – сопоставить каждому из них определенный бит числа и если он установлен, то событие или состояние имеется и наоборот.

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

Готовимся к торговой неделе

    • 21 марта 2016, 00:35
    • |
    • jelezo
  • Еще
Этот ролик смотрю частенько  перед торгами, ибо надо освежить в памяти  свои старые грабли





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

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