Избранное трейдера Игорь В.

по

Отправка уведомлений из QUIK на смартфон

    • 14 апреля 2020, 18:52
    • |
    • iddqd3n
  • Еще
К торговому роботу надо было приделать какие-то уведомления, видел кучу вариантов разной степени извращённости, но ни одного адекватного и изящного. На форуме Арки вообще к решению так и не пришли :)

Для себя сделал простой выбор — Slack. Это что-то типа мессенджера («для рабочих групп», как они говорят) с простым и открытым API, без заморочек вообще. Если не нужно городить мощный функционал с форматированием, аватарками, вложениями и прочим, достаточно двух функций, реализованных через HTTP-запросы, которые можно отправлять хоть curl-ом из системной консоли. Для него полно готовых библиотек на любые ЯП, но мне они показались перегруженными в конкретно моём случае.

( Читать дальше )
  • обсудить на форуме:
  • QUIK

Скрипт lua Баланс покупок/продаж

Всем привет. Переделал первоначальную версию скрипта. Исправил некоторые ошибки и немного расширил функционал. Теперь скрипт может сохранять данные в текстовый файл, который потом можно анализировать в другой программе (например exсel). Также, в отличии от первого варианта, скрипт показывает в таблице усредненную цену, по которой прошли сделки. В первом варианте отображалась цена последней сделки. И в скрипте добавлен показ накопленной дельты за все время пока скрипт работает.

TICER = "SBER";
CLASS_CODE = "TQBR";
FilePath = getScriptPath() .. "\\export.txt";--путь к файлу
save = false;--сохранять данные в файл если false нет, true да

f = nil;
stopped = false;
t_id = nil
H = -1;
M = -1;
VSELL = 0;
VBUY  = 0;
CDelta = 0;
CountTrans = 0;
PriceTrans = 0.0; 
t = "";
function OnInit()
    CountTrans = 0;
        if save then f = io.open(FilePath,"w"); end
        CreateTable();
end 

function main() 
        while not stopped do 
          if IsWindowClosed(t_id) then
         stopped = true;
      end       
          sleep(10);
        end
end

function CreateTable()
   t_id = AllocTable(); 
   AddColumn(t_id, 0, "Время", true, QTABLE_STRING_TYPE, 10);
   AddColumn(t_id, 1, "BUY", true, QTABLE_INT_TYPE, 10);
   AddColumn(t_id, 2, "SELL", true, QTABLE_INT_TYPE, 10);
   AddColumn(t_id, 3, "Дельта V", true, QTABLE_INT_TYPE, 10);   
   AddColumn(t_id, 4, "AVG Цена", true, QTABLE_DOUBLE_TYPE, 15);
   AddColumn(t_id, 5, "Накопленная Дельта", true, QTABLE_INT_TYPE, 15);
   AddColumn(t_id, 6, "Кол-во сделок", true, QTABLE_DOUBLE_TYPE, 12);   
   tab = CreateWindow(t_id);
   local NAME = tostring(getParamEx(CLASS_CODE,TICER,"LONGNAME").param_image);
   SetWindowCaption(t_id, TICER.." ("..NAME..") Баланс покупок/продаж");
   SetTableNotificationCallback(t_id, EventCallBack);
end

function Calc(alltrade)
        if bit.test(alltrade.flags, 0) then VSELL = VSELL+alltrade.qty;  --Продажа
        else VBUY  = VBUY+alltrade.qty;  end                            
        CountTrans = CountTrans+1;
        PriceTrans = PriceTrans+alltrade.price;                 
end

function OnAllTrade(alltrade)    
        if alltrade.sec_code == TICER then      
                local Rows, Col = GetTableSize(t_id);
                
                if H==-1 or H~= alltrade.datetime.hour then 
                        H = alltrade.datetime.hour;
                        M = alltrade.datetime.min;
                        t = tostring(alltrade.datetime.hour)..":"..tostring(alltrade.datetime.min);
                end
                if M==alltrade.datetime.min then
                        Calc(alltrade);
                else                                    
                M=alltrade.datetime.min;        
                        InsertRow(t_id, -1);                                               
                        local Delta = VBUY-VSELL;
                        Price = PriceTrans/CountTrans;
                        SetCell(t_id, Rows, 6, tostring(CountTrans));                   
                        SetCell(t_id, Rows, 0, t);
                        SetCell(t_id, Rows, 1, tostring(VBUY));
                        SetCell(t_id, Rows, 2, tostring(VSELL));                           
                        SetCell(t_id, Rows, 3, tostring(Delta));
                        local SEC_SCALE = tostring(getParamEx(CLASS_CODE,TICER,"SEC_SCALE").param_value);
                        SEC_SCALE = string.format("%.0f",SEC_SCALE);                    
                        SetCell(t_id, Rows, 4, string.format("%."..SEC_SCALE.."f", tostring(Price)));
                   if Rows>=2 then
                           local OldPrice = tonumber(GetCell(t_id,Rows-1,4).image);
                           if OldPrice>Price then 
                                        Red(Rows,4); 
                           else 
                                        Green(Rows,4);
                           end
                           CDelta = tonumber(GetCell(t_id,Rows-1,5).image);
                           CDelta = CDelta + Delta;                        
                        else 
                          CDelta = Delta;
                        end
                        SetCell(t_id, Rows, 5, tostring(CDelta));
                    if Delta<0 then Red(Rows,3); end
                    if Delta>0 then Green(Rows,3); end
                    if CDelta<0 then Red(Rows,5); end
                    if CDelta>0 then Green(Rows,5); end                                                   
                   if save then
                                local Str = tostring(H)..";"..tostring(M)..";"..tostring(VBUY)..";"..tostring(VSELL)..";"
                                                ..tostring(Delta)..";"..tostring(Price)..";"..tostring(CDelta);
                           Str=Str.."\n";
                           SaveFile(Str);
                        end
                t = tostring(alltrade.datetime.hour)..":"..tostring(alltrade.datetime.min);                        
                    VBUY = 0;VSELL = 0;
                        PriceTrans = 0;
                        CountTrans = 0;
                        Calc(alltrade);
                end
        end --if alltrade.sec_code == TICER then        
end

function SaveFile(Str)
        if f ~= nil then 
                f:write(Str);           
                f:flush();                               
        end
end

function Red(row,col)
        SetColor(t_id, row, col, RGB(255,0,0), RGB(0,0,0), RGB(255,0,0), RGB(0,0,0));
end
function Yellow(row,col)
        SetColor(t_id, row, col, RGB(240,240,0), RGB(0,0,0), RGB(240,240,0), RGB(0,0,0));
end
function Green(row,col)
        SetColor(t_id, row, col, RGB(0,200,0), RGB(0,0,0), RGB(0,200,0), RGB(0,0,0));
end


function EventCallBack(t_id, msg, par1, par2)
   if msg==QTABLE_CLOSE then
     OnStop();
   end;
end

function OnStop(s)
  if f ~= nil then f:close(); end
  if t_id ~= nil then
    DestroyTable (t_id);
  end;
  stopped = true;
end




Лучше тысячи слов: какие классы активов надо держать.

слайд от Дмитрия Шагардина  из БСПБ Капитал (@BSPB_Capital) о том, где мы находимся и какие классы активов надо держать
Лучше тысячи слов: какие классы активов надо держать.

Фьючерс Brent! Мои мысли!

Личное мнение по движению в нефти. 

Фьючерс Brent! Мои мысли!


https://ru.tradingview.com/chart/BR1!/6yCWygfk-dna-v-nefti-esche-ne-bylo/


На мой взгляд, нефть находится в небольшой коррекции. На графике находятся уровни с которых должен начаться новый шорт! Примерные цели шорта так же обозначены. 

Если есть вопросы, отвечу в комментариях. Всем удачи!

👍Первое интервью Уоррена Баффета: советы для долгосрочных инвесторов

Это первое телевизионное интервью Уоррена Баффета, которое было записано в 1985 году. Ему было 55 лет и у него всё только начиналось! Можете себе представить? К этому моменту он уже сделал 10,000% за 20 лет. Это всего-то 26% годовых по формуле сложного процента. Его состояние тогда составляло $500 млн.

Я обожаю Баффета, обожаю его мудрость и интеллект, посмотрел с удовольствием это видео и...
Ниже я выписал почти все идеи этого интервью:

👉Первое правило: не теряйте деньги
👉Вы не теряете, если покупаете акции весьма дешевле их стоимости
👉Самое важное качество инвестора — подходящий темперамент, а не интеллект
👉Инвестор должен быть стабильной личностью
👉Грэм говорил: ты не прав или не прав, потому что тысячи людей согласны или не согласны с тобой 
👉Большинство думает о том, что акция будет делать в следующий год
👉Они не думают об акции, как о части бизнеса
👉Если я покупаю хорошую акцию, я не расстроюсь, если рынок закроют на 5 лет
👉Цена акций ничего не говорит о бизнесе
👉Бизнес говорит сам за себя
👉Я лучше сначала прикину сколько стоит бизнес, а потом посмотрю на биржу, совпадает ли цена с моей оценкой

👉Мне нравится в Омахе — тут мало информационных раздражителей
👉У орущей толпы слишком короткий фокус, а короткий фокус не способствует долгосрочным прибылям
👉Здесь в Омахе я могу сфокусироваться на том, сколько стоит бизнес
👉Не купил ни одной технологической компании за 30 лет, покупаю только то, что понимаю
👉Чтобы зарабатывать, тебе не надо делать деньги в каждой игре
👉Есть 1000 компаний, это не бейсбол, тебе не надо брать каждую из 1000 подач, тебе достачно взять хорошую одну:)
👉Я вообще могу ничего не покупать два года
👉Скука — не может быть проблемой профессионального управляющего активами
👉Академики на бирже потребляют слишком много данных, и слишком много всего умеют. 
👉Если у них есть молоток в руке, они будут искать гвозди
👉А я буду думать об инвестициях как бизнесмен думает о своем бизнесе.

QUIK. Реальные шаги для ускорения работы терминала.

    • 07 марта 2020, 16:22
    • |
    • SaOLin
  • Еще

Последние две недели на всех мировых рынках резко повысилась активность, количество биржевых данных выросло в 2-3 раза. Из-за этого у многих пользователей терминал QUIK начал безбожно тормозить и виснуть. Сервера брокеров также с трудом переваривают повышение нагрузки и наплыв клиентов, желающих что-либо купить-продать (по слухам кто-то из брокеров висел аж целую неделю))) ).

На Смарт-Лабе появилось несколько постов с советами как избавиться от тормозов. И меня сильно поразила неадекватность предлагаемых действий. Люди готовы покупать новое железо за бешеные деньги, создавать какие-то командные файлы и заниматься прочей ерундой. А нужно всего лишь включить голову и разобраться в причинах тормозов. Когда программисты разрабатывают какую-либо программу, они всегда оптимизируют ее для работы на определенном «средне статистическом» компьютере, закладывая при этом кратный запас по производительности. Если вдруг эта программа (QUIK) начинает неадекватно тормозить и виснуть на обычном современном компьютере — значит дело почти наверняка не в железе, и даже не в самой программе, а в ее конфигурации (настройках). Т.е. нам нужно правильно настроить терминал QUIK , а уже потом апгрейдить железо, менять туда-обратно версии и бухтеть на Смарт-лабе.



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

Мультипликаторы – все, что вам нужно знать!

План этой статьи:
  • Понимание мультипликаторов
  • P/E – самый просто и универсальный
  • EV/EBITDA: преимущества и недостатки
  • ДОЛГ и мультипликаторы, которые его оценивают
  • Мультипликаторы рентабельности
  • Что я понял, 3 года считая мультипликаторы по всем компаниям

Понимание мультипликаторов

Мультипликаторы – это производные финансовые показатели, которые позволяют оценить бизнес компании и сравнить ее с конкурентами.

Суть мультипликаторов в том, что мы приводим рыночную оценку (цена акций) компании и ее бизнес оценку (прибыль, выручка и т.п.) к единому знаменателю.

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

Поясню на примере:

1. Прибыль компании A – 100 000 рублей

2. Прибыль компании B – 1 000 000 рублей

Вопрос: акции какой компании лучше покупать?

Еще пример:

1. Капитализация компании С – 1 млрд. рублей



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

Получение оповещений о сделках из Квика в Телеграм

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

Если торговля активная, и за компом не сидишь, то начинаешь париться, а чего там, а все ли норм, а как процесс и тому подобное.

При этом я торгую сейчас в основном в ВТБ, у них основной терминал для торговли, это Квик. Есть еще мобильное приложение, но в отличии от 
приложения Альфадиректа, оно не оповещает о сделках, если заявки были выставлены через Квик. (Честно говоря, мобильное приложение Альфы тоже в этом смысле не ахти, Пуш уведомлениями оповещает, но не всегда, да и Пуш уведомления на любителя, они не долго сохраняются на телефоне).

Гугление выявило, что тема об оповещениях популярная, есть даже встроенный в Квик какой то оповещатель по СМС, но пишут, что вроде как услуга платная (и кое кто даже платит), да и вообще, способ какой устаревший.

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

( Читать дальше )
  • обсудить на форуме:
  • QUIK

Когда покупать, если рынок летит вниз?

    • 28 февраля 2020, 13:59
    • |
    • AlexChi
  • Еще

Когда покупать, если рынок летит вниз?

Введение

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

Многие ждали этого момента и не один год, сжимая в потном кулачке денежку и надеясь купить, как только все упадет. И вот сейчас на их улице праздник: все летит вниз, да еще как летит! Когда же стоит купить, чтобы не грызть потом локти, а рассказывать сидя возле камина долгими зимними вечерами восторженным потомкам о том, откуда у их деда (или бабки) столько денег? )))) 

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

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



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

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