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

по

Анализ акций языком, понятным даже вашей бабушке

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

Анализ акций языком, понятным даже вашей бабушке

Неужели так сложно объяснить простыми словами то, что лежит на поверхности? Давайте попробуем разобраться.

Представьте, если вы вдруг захотите купить какой-нибудь маленький бизнес. Салон красоты, палатку с шаурмой, ресторан. Что угодно. Какие вопросы вы будете задавать продавцу:

  • Вы вообще прибыльны?
  • Через сколько мои вложения окупятся?
  • На что тратите больше всего?
  • Есть ли у вас долги?


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

Как ускорить терминал Квик

Всем привет.

Все кто давно пользуется терминалом Квик – знают, что со временем он начинает «подтормаживать», долго загружаться, медленно переключаться между вкладками, а в особо тяжёлых случаях проводить заявки с задержкой. А это уже чревато потерей реальных денег….

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

Поехали!

Итак – включаем секундомер и делаем первоначальные замеры:

Результат времени загрузки до появления окна загрузить новую версию

1 минута 21 секунда.

Ну что ж…. За работу:

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

Как ускорить терминал Квик

Находим файл        info.log

Как ускорить терминал Квик



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

ЗОЖ лайфхак на время изоляции.

Хотите привести свое тело в порядок. Мышцы в тонус. Укрепить связки. Если бег для вас муторное нудное занятие.
Купите гирю на АВИТО. Старого советского образца.
Ниже я вам поясню почему нет ничего лучше её если заниматься в домашних условиях.
Народ цена от 1тыщ рублей до 2 тыщ. Куда еще дешевле. В зависимости от веса и региона.  
Сразу скажу если будите покупать то берите только старого советского образца соревновательные.
16, 24, и 32 кг они только есть.
ЗОЖ лайфхак на время изоляции.
Есть такие модные, ну это не для нас гламурные какие то, это тоже самое что в лосинах в тренажерку придти. Нам нужен только хардкор, голимое железо. 
ЗОЖ лайфхак на время изоляции.

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

Заполнение декларации по дивидендам, полученным на СПБ

Российские брокеры не являются налоговыми агентами по доходам, полученным от дивидендов, купленных на Санкт-петербургской бирже (БКС, Открытие, например). К примеру, у меня были акции NVIDIA, по которым я получил в 2019 году дивиденды. Помимо этого, часть акций я продал, зафиксировав прибыль от курсовой разницы. Налог на прибыль от изменения курсовой разницы рассчитал и уплатил мой брокер, а вот по полученным дивидендам – нет. Поэтому обязанность по уплате налога ложится на плечи инвесторов. До 30 апреля 2020 года следует подать налоговую декларацию и до 15 июля заплатить рассчитанный налог. Как это пошагово сделать будет рассказано в этом посте.

Для удобства Вы можете читать наши статьи в Telegram «ИнвестГазета»

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



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

Spydell: Захват контроля над рынком

Текущий импульс роста с 23 марта самый сильный с мая 1933 года, а закрытие недели было самым мощным с 1938 года, т.е. почти никто из ныне живущих в мире не видел ничего подобного в осознанном состоянии. Как так вышло?

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

К черту перспективы дивидендов и байбеков.
Spydell: Захват контроля над рынком



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

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

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

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

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

Общий финансовый анализ на Python (Часть 3)

    • 05 апреля 2020, 12:51
    • |
    • Aleks
  • Еще

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

Сначала немного теории:

О линейной регрессии

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



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

QLua: таблица крупных "склеенных" обезличенных сделок

    • 03 апреля 2020, 15:06
    • |
    • _sk_
  • Еще
Иногда хочется наблюдать за ситуациями, когда участники торгов исполняют по рынку крупные заявки. Конечно, можно смотреть на обычную ленту обезличенных сделок с настроенными фильтрами на размер сделки, но ведь можно написать специальный QLua-скрипт, который будет отбирать сделки, являющиеся результатом исполнения.

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

Если суммарный объём не менее какой-то границы, которую можно задать для каждого инструмента индивидуально, такие «склеенные» сделки выводятся в таблице. В ней указаны:
— суммарный объём;
— количество обезличенных сделок, которые были склеены;
— начальная цена и конечная цена;

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

Скрипт 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) о том, где мы находимся и какие классы активов надо держать
Лучше тысячи слов: какие классы активов надо держать.

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