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

по

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

Продолжаем разработку универсального робота!

Выкладываю код OUR-0.3, который в настоящий момент еще далеко не полный – это только основа, скачать можно здесь https://yadi.sk/d/l3uic67yruCxa

Код прокомментирован подробно, но дам дополнительное описание общего плана, чтобы логику работы робота можно было представить.

Итак, по порядку:

Робот состоит из двух файлов: OUR.lua содержит основные функции (OnInit, main, коолбэки – пока только один OnStop), FunOUR.lua содержит вспомогательные функции – все остальные. Дополнительно приложен файл с информацией и файл с образцом котировок.

Функция OnInit

1 Первоначально котировки с сервера поступают в источник – таблицу с барами TBar (там все заполняется автоматически при подключении источника).

2 Далее робот делает различные вычисления, результаты которых он помещает в таблицу с данными TDat (также туда копируются параметры баров из TBar), эту таблицу нужно заполнять самому, ключи таблицы на свое усмотрение, но конечно часть ключей в алгоритм уже заложены, это «key»,«O»,«H»,«L»,«C»,«V»,«T» от них идут все вычисления. TDat – это таблица, содержащая таблицы по каждому бару, ключ соответствует номеру бара в источнике. Структура такого типа:

TDat = {
[1321] = {"O","H","L","C","SMAf","SMAs"…},
[1322] = {"O","H","L","C","SMAf","SMAs"…},
…
}


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

будни алготрейдинга и о том почему полгода не писал

Постараюсь коротко, хотя выйдет как всегда.
Не писал давно про трейдинг.
Что изменилось за полгода? Да почти ничего или почти всё, смотря как считать. 
Всё также работаю целыми днями в алго на себя. Счёт уменьшился (распишу позже)


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

быстрые средние на луа

--Параметры: p_classcode=«SPBFUT» --Код класса p_seccode=«RIH5» --Код инструмента p_account="...." --Код счета p_clientcode="...." --Клиенткий код p_count=2 --Размер позиции p_spread=170 --Проскальзывание

is_run = true count = 0

function main()  while is_run do   sleep(100)   robot()  end end

function robot()  local N1=getNumCandles(«MA1-RIH5»)  local N2=getNumCandles(«MA2-RIH5»)  local N=getNumCandles(«RIH5»)  t1,n1,i1=getCandlesByIndex(«MA1-RIH5», 0, N1-3, 2)  t2,n2,i2=getCandlesByIndex(«MA2-RIH5», 0, N2-3, 2)  t,n,i=getCandlesByIndex(«RIH5», 0, N-1, 1)    --сигнал на продажу (первый мувинг пересекает втрой сверху вниз  if t1[0].close>t2[0].close and t1[1].close<t2[1].close then   Trade(«S»,count+p_count,t[0].close-p_spread)  end    --сигнал на покупку (первый мувинг пересекает второй снизу вверх  if t1[0].close<t2[0].close and t1[1].close>t2[1].close then   Trade(«B»,p_count-count,t[0].close+p_spread)  end   end

function Trade(a_oper,a_count,a_price)  if a_count>0 then   t = {     [«CLASSCODE»]=p_classcode,     [«SECCODE»]=p_seccode,     [«ACTION»]=«NEW_ORDER»,     [«ACCOUNT»]=p_account,     [«CLIENT_CODE»]=p_clientcode,     [«TYPE»]=«L»,     [«OPERATION»]=a_oper,     [«QUANTITY»]=tostring(a_count),     [«PRICE»]=tostring(a_price),     [«EXPIRY_DATE»]=«GTS»,     [«TRANS_ID»]=«1»    }   res=sendTransaction(t)   message(«Количество до »..tostring(count).."  количество сделки "..tostring(a_count).."  тип операции"..a_oper,1)   if a_oper==«B» then    count=count+a_count   else    count=count-a_count   end   message(«Количество после »..tostring(count),1)  end end

function OnStop(stop_flag)  is_run=false  stop_flag=1 end


Особенности расчёта комиссии за маржинальной кредитование у разных брокеров.

Думаю, многие используют заемные средства брокера  и/или срочный рынок (фьючерсы, опционы) для увеличения доходности торговли( но и повышения рисков).
Я напишу в статье некоторые особенности расчёта комиссии,  с которыми столкнулся на своём опыте (или прочитал в  других источниках).

1.БКС.
Данным брокером пользуясь давно. За годы использования обнаружились следующие особенности:
1. Если открыть короткую позицию по акциям, и  то на сумму проданных акций можно покупать другие акции на плечи, и комиссия будет только за шорт. Например, у вас на счёту 10 рублей, вы можете открыть шорт по акции А на сумму 10 рублей и купить акций Б на 20 рублей и платить только % за шорт акций А.
В качестве Б могут быть и ликвидные гособлигации с близкой датой погашения.
2. Дивиденты на плечи бкс выплачивает. Тем кто в курсе. В бкс нужно в дату див. отсечки (с учётом Т+2) проверять, не находятся ли акции в репо у брокера. Если акции были зарепованы брокером, то нужно ножками идти в представительство/филиал брокера для того, чтобы подписать бумагу о выплате вам дивов. СамНеЗнамВамОбьясням при подписании договора об этом нюансе скорее всего умолчит.

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

Открытый Универсальный Робот – Немного о Qlua и как запускать робота в квике

Подумал, что многие не знают, как подступиться к языку Qlua и запустить робота в квике. А между тем, это настолько просто, что даже не требует ничего кроме квика, виндусовского блокнота и знаний самого Qlua.

Qlua – это скриптовый язык поддерживаемый квиком, в основе язык lua 5.1 (в моем квике версия такая).

Скрипты, написанные на Qlua – это обычные текстовые файлы, которые имеют расширение «.lua». То есть можно сделать файл в обычном блокноте и после сохранения поменять в нем расширение с «.txt» на «.lua». Если внутрь этого файла записать инструкции кода на языке Qlua, то квик будет выполнять их.

Для удобства написания инструкций кода лучше пользоваться не виндусовым стандартным блокнотом, а например Notepad++, который можно скачать официально и бесплатно здесь https://notepad-plus-plus.org/download/v6.9.1.html. Он позволяет включить подсветку синтаксиса различных языков программирования, в том числе и lua, что очень помогает при написании кода.

В Notepad++ в «Опции -> Настройки» можно выбрать русский язык, а в «Опции -> Определение стиля» установить для lua понравившийся стиль отображения. Я для «Язык -> lua» ставлю стиль «Выбрать стиль -> Bespin» и еще в окошке «Стиль» для последних трех «FUNC» переопределяю цвет, иначе они с фоном сливаются.



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

Всем привет! Индикатор для QUIK - нештатный, нашару

Всем привет! 
Чуть о себе: зарабатываю на российском рынке (только для себя), делаю торговые программы (для себя и для других).
Давно читаю Smart-lab, нахожу что-то полезное и интересное. Вот добавлю одну свою легенькую утилитку для Квика, надеюсь пригодится.

Всем привет! Индикатор для QUIK - нештатный, нашару

Индикатор Fractal_Chennal, рисует уровни по «фракталам» с задаваемым периодом. В отличии от штатного  «Fractals» дожидается окончательного формирования формации. Я его использовал в качестве трейлинг-стопа в некоторых программах. Отдает два значения скриптам.
Код:

Settings={
Name = "Fractal_Chennal",
period=5,
line={
{
Name = "Level_High",
Type =TYPE_LINE,-- = LINE --линии  = DASH -- тире  = POINT -- точки
Width = 1,
Color = RGB(0,255, 0)--green
},
{
Name = "Level_Low",
Type =TYPE_LINE,
Width = 1,
Color = RGB(255,0,0)--root
}}}

idx_prosl=0

function Init()
return 2
end

function OnCalculate(idx)
if idx==1 then
P = math.floor(Settings.period/2)*2+1
message("Код бумаги: "..getDataSourceInfo().sec_code.." ; период индикатора: "..P,1)
t_H,t_L={},{}
end
if idx~=nil and idx>P then
if idx_prosl~=idx then
local l=idx-P
for l=l,idx-1 do
t_H[l]=H(l)
t_L[l]=L(l)
end
if t_H[#t_H-(P-1)/2]==math.max(unpack(t_H,#t_H-P+1,#t_H)) then
H_ind_value=t_H[#t_H-(P-1)/2]
end
if t_L[#t_L-(P-1)/2]==math.min(unpack(t_L,#t_L-P+1,#t_L)) then
L_ind_value=t_L[#t_L-(P-1)/2]
end
end
else
H_ind_value=nil
L_ind_value=nil
end
idx_prosl=idx
return H_ind_value, L_ind_value
end
Как пользоваться:

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

Алгоритмический подход к созданию стратегий.Часть 3

    • 24 апреля 2016, 11:47
    • |
    • uralpro
  • Еще

Interview-with-a-Quant-Part-3-980x423

Начало здесь

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

1.Как вы отслеживаете и управляете вашими моделями в боевых условиях? Какие дополнительные проверки и процедуры используются?

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



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

Дружим с налоговой: Получаем доступ в личный кабинет ФНС

В этой статье хочу рассказать об удобствах работы с сайтом налоговой nalog.ru и о преимуществах и простоте работы с его онлайн кабинетом для физических лиц. 

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

Если же вы открыли ИИС и претендуете на налоговый вычет, то познакомиться с налоговой вам придется в любом случае. И как оказалось, сделать это сейчас очень просто.

Скажу сразу, через личный кабинет физического лица на сайте ФНС nalog.ru вы можете:

  • 1. Видеть все свои объекты налогооблажения и суммы начисленных налогов по ним
  • 2. Видеть все суммы уплаченных и не уплаченных налогов, а также иметь возможность оплатить все онлайн. 
  • 3. Получить доступ к 2 НДФЛ отчетам об уплаченных налогах. 
  • 4. Еще многое другое, как: сформировать 3 НДФЛ справку с помощью удобной программы
  • 5.… и даже получить налоговый вычет по ИИС БЕЗ единого посещения налоговой!


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

К докладу на конференции Смарт-лаба 14 мая

    • 22 апреля 2016, 13:52
    • |
    • А. Г.
      Проверенный аккаунт
  • Еще
Подготовил презентацию

drive.google.com/file/d/0BzRUUWXCOSO5QzVxUEFRUGdVWU0/view

Но скажу сразу, что есть сомнения, а не напугаю ли я аудиторию? Посмотрите, дайте обратную связь.

P. S. Поясню, чтобы не было недопонимания. Это не доклад о том, как строить торговые алгоритмы, а методика классификации рынка, которая дает ключ к пониманию:

— какие алгоритмы были эффективнее в прошлом;
— на каком рынке от построенного алгоритма ждать «подлянки»;
— как построить эффективный портфель из имеющихся алгоритмов;
— на каких задачах сосредоточить усилия с целью улучшения существующего портфеля.

Алгоритмический подход к созданию стратегий.Часть 2

    • 17 апреля 2016, 10:00
    • |
    • uralpro
  • Еще

Interview-with-a-Quant-Part-2-980x423

Первую часть интервью смотрите здесь.

Что нужно учесть при запуске стратегии в производство?

Новичкам нужно обратить внимание на соответствие «реальному миру» — на нюансы типа дней экспирации и праздников. Когда вы калибруете систему на исторических данных, можно допускать аппроксимацию без таких дней. Но когда вы переходите к реальной торговле, то не можете быть небрежным, все должно быть максимально точно.

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

Обычно создается исполнительный прототип, который делает все правильно, но не очень эффективно. Затем я поручаю моим сотрудникам-инженерам сделать производительную версию стратегии на языке Python или даже С, используя библиотеки для реального рынка, которые они создавали и совершенствовали годами. И эта версия подключается к  моей торговой системе, для запуска данной стратегии «в бой».



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

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