Избранное трейдера Денис Михайлов

по

А вы верите в статистику по индексу РТС?

 Посчитал статистику с пятницы по четверг, ну вот собственно такие результаты на рост получились. Можно использовать в опционной торговле))

А вы верите в статистику по индексу РТС?


Результаты Уоррена Баффета в 1 квартале

Berkshire Hathaway, холдинг Уоррена Баффета, отчитался о результатах 1 квартала 2020:

• Убыток 49.7. млрд долл. в первом квартале;
• Это максимальный убыток за историю компании;
• Однако это с 1 января по 31 марта (с 31 марта рынок вырос на где-то 10% — это примерно +20-30 млрд. для фонда);
• Компания наращивает денежный резерв. Сейчас он 137 млрл. долл. (хотя этот запас рос и до этого, и в 2019, и 2018, и 2017, и в 2016) – это очень много денег. Компания Баффета – бастион наличности;
• В апреле продал акций на 6 млрд долл.;
• Общие активы BH – 760 млрд. долл.;
• Размер чистых активов BH – 375 млрд. долл (для сравнения: ВВП России – 1,658 трлн долл.);
• В апреле Баффет продал все авиакомпании (!);
• Убыток в 49.7 млрд по большей части относится к investment gains (короче, переоценка ценных бумаг);
• Operating earnings в 1 квартале составили +5.8 млрд.;
• Справка: Berkshire Hathaway – это не просто фонд. Это холдинг реальных активов в самых разных индустриях: страхование, железные дороги и т.п.
• 31.7% акций голосующих акций BHK и 18% от общего числа акций принадлежит Баффету.
• Баффет: «В 2008 и 2009 годах наш экономический поезд сошел с рельсов, и было несколько причин, по которым дорожное полотно было слабым с точки зрения банков.В этот раз мы просто сняли поезд с рельсов и отправили его в тупик»
• Баффет уже давненько ничего не покупает, потому что «нет ничего привлекательного»;
• Уоррену Баффету в этом году будет… 90 лет. Этот чувак уже всё всем доказал.
• Больше всего у него вложено в Apple (71 млрд.)



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

А еще , на опционах можно зарабатывать такими стратегиями.

    • 17 апреля 2020, 17:51
    • |
    • FZF
  • Еще

Сегодня сделал извращение на волатильностях  Si и  RTS. Это были недельные опционы с экспирацией 23/04/2020.  На центральном 107500 страйке   RTS волатильность была  60 , а на центральном 75000 страйке Si  волатильность опустилась до 20. 

Волатильность Si я купил, а RTS  продал. Сделал я это  через стредлы.
А еще , на опционах можно зарабатывать такими стратегиями.

Пропорции выбирал следующим образом.  Фьючерс   RTS в рублях стоит 158709 руб., а фьючерс Si  =75000 руб. На один  RTS приходится 2,116 Si .

Поскольку Si  я покупал, а  RTS продавал, то пропорцию взял с запасом 1:3

Дальше подразумевалось дельтахеджирование по следующим правилам:

Когда у RTS дельта становится 1, выравнивать ее в ноль, и в этот же момент выравнивать в ноль позицию Si.  Ведущей должна быть проданная позиция.

Позицию я сделал в 12:30, а к 16:20 волатильности немного сошлись. Закрыл позицию с прибылью 5400 руб.

Ждать не стал, поскольку у меня нет математического описания для таких позиций. Делаю я так редко и по интуиции. Но если в рублях выразить центры стредлов, то Si примерно на 18-19 тыс. руб. дешевле, чем  RTS.  Так что, 5 тысяч мне для получения удовольствия вполне хвалило. Жадничать не надо.




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




Робот даром.

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

Тело робота

Пароль от архива: 1236

bot.quikluacsharp.ru - позвольте представиться

bot.quikluacsharp.ru - позвольте представиться
   Много лет мы занимаемся автоматизацией торговли наших клиентов в терминале Quik, но до сих пор не представились на просторах SmartLab. Исправляемся:)
   Приглашаем Вас, особенно тех, кто с нами еще не знаком, посетить наш основной ресурс quikluacsharp.ru  и дополнительную страницу для приема заказов bot.quikluacsharp.ru для того, чтобы мы смогли узнать друг друга лучше.
   Вы всегда можете обратиться к нам за любой помощью. Те, кто нас давно знают, подтвердят, что мы всегда отвечаем на любые вопросы, которые Вы задаете в комментариях на нашем основном сайте, помогаем Вам как самостоятельно написать своего робота, так и берем выполнение этой задачи полностью на себя, делая это на должном уровне.
bot.quikluacsharp.ru - позвольте представиться

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

Почему перевожу торговлю на MOEX в Interactive Brokers

Давно что-то ничего не писал — свалилось с начала года куча всего, вот начну исправляться потихоньку.

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


Плюсы IB перед российскими брокерами:

1. Американская юрисдикция. Думаю, всем все понятно, вкратце: ваши деньги на пару-тройку порядков лучше защищены, чем в России. Уже хотя бы потому, что американским жуликам некуда сбегать с вашими деньгами, их достанут из-под земли (выдача практически из любой точки земного шара) и заставят ответить по всей строгости сурового американского законодательства. В отличие от

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

Как выглядят маржинколы

joxi.ru/p271PbGFK9zldr.jpg
Как выглядят маржинколы
Газпром GZM9

Нижний график Открытый интерес. Видно что весь рост шло открытие позиций, то есть кто-то открывал шорт, а кто-то увеличивал лонг
Дальше видно как шорты резко начали закрывать
Вот так выглядит принудительное закрытие позиций

Дамы и господа. В моменты большого роста или падения делаются основные деньги. А в моменты когда ничего не происходит надо отдыхать. То есть большую часть времени надо ничего не делать.
Посмотрите, как только появились движняки начали появляться публикации с ростом депо по пол ляма. Берите пример

TurboMartin, обновление

Судя по отзывам, классический усреднятор многим понравился.

Чуть допилил и выложил на гитхаб.

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

Теперь скрипт лежит, однако, здеся: https://github.com/tp55/TurboMartin/blob/master/TurboMartin.lua

Пользуйтесь, не обляпайтесь.

Будут ошибки — обязательно пишите, хоть сюда, хоть в личку.

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