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

по

Мифология Фибоначчи

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


Статистики у меня, конечно, нет никакой, но наверняка я не ошибусь, сказав, что анализ рынка на основе построения фибо-уровней — это один из самых распространённых видов анализа среди трейдеров-новичков. Впрочем, не только новичков. Профессионалы тоже этим иногда пользуются, — однако они видят в уровнях фибо совсем иной смысл, нежели новички. То же самое можно сказать о лучах Ганна, пивотах и расчётных уровнях поддержки/сопротивления… Но обо всём по порядку.

 Новичкам очень нравится, как удачно уровни Фибоначчи или лучи предсказывают будущие важные ориентиры в поведении цены. Вот курс очень точно отбился от фибо, лишь немного его проколов или чуть-чуть не дойдя; вот луч Ганна на целых три дня стал почти идеальной трендовой линией; вот цена развернулась в точности у другого луча. Форумы и блоги пестрят картинками, демонстрирующими пророческие возможности подобных методик. И при взгляде на эти картинки возразить, казалось бы, нечего: а ведь и вправду работает! Конечно, иногда хуже работает, иногда лучше, — но в целом это прекрасные ориентиры, надежная основа технического анализа рынка.



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

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




Волатильность: подходы к подсчётам, ответы на вопросы, заданные в личку

    • 30 марта 2020, 10:09
    • |
    • tashik
  • Еще
В связи с тем, что в личку приходит много вопросов о том, с чем же едят все эти разные волатильности, про которые упоминал Старый Бес в наших разговорах, решила немножко пояснить в меру своего понимания и применения. Товарищи мэтры и мастера, Ваши комментарии и поправки будут для меня очень ценны. Я новичок-практик, граблями учиться больно. Товарищи новички, читайте не только пост, но и обязательно комментарии, там может оказаться самый сок.

Приступим.

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

Волатильность: подходы к подсчётам, ответы на вопросы, заданные в личку


Подсчет волатильности — это дело довольно примерное. Правильнее было бы назвать его оценка. В чем разница? В том, что при оценке мы получаем некий уровень, некий «highly-likely» диапазон, и можем на основании его строить предположения и сравнивать, а при подсчёте мы думаем, что показатель вычислим с какой-то точностью.

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

Мои 10 правил

Вот делюсь личными наработками. У кого есть схожее, отпишитесь. 

1. Если торговля на сегодня окончена, открытых сделок нет и я в плюсе, можно поделиться этой радостью с близкими. Пока я в рынке — никто, кроме меня самого, не должен знать, что и зачем я делаю, сколько зарабатываю или теряю.
2. Нервы, психи, любая напряженность — торговать категорически нельзя. Необходимо отвлечься, чтобы расслабить фокус внимания.
3. Если я смотрю на график и не знаю наверняка, то не заключаю сделку. 50/50 не мой вариант. Я могу лучше.
4. Если знаю наверняка, то просто заключаю сделку и жду ее исхода. Терпение и бесстрашие — мои спутники.
5. Никуда не спешить. Спешка — недостаток уверенности. Я уверен, что на рынке для меня существует целая россыпь возможностей, каждая из которых реализуется в свое время. Пропустил одну сделку — будет следующая. Есть время подождать — есть деньги.
6. Чтобы зарабатывать, я использую голый график. Кроме цены, больше ничего не надо. Ни объемы, ни даже уровни. Никакие «точки входы» не работают. Есть только опыт определения верного шаблона поведения цены в моменте. Если это есть, то остается только «купить подешевле, продать подороже». Без заморочек.

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

Скрипт lua читающий таблицу обезличенных сделок.

Всем привет. Может кому пригодится. Скрипт читает ленту сделок и раз в минуту подсчитывает разницу между покупками и продажами. Часть кода нашел в интернете часть кода написал сам. Не знаю может уже есть что то подобное. Цель была не написать что то оригинальное, а наработать навыки программирования на lua.

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

США. Опционы на акции. Мастер класс


США. Опционы на акции.

В этом посте основы по опционам.

На примерах простых стратегий опцион Путт и опцион Колл.

 

 

Опцион (option)

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

 

Основные характеристики опционов

Стандартизированный опционный контракт – биржевой инструмент, параметры создания и обращения которого соответствуют правилам принятым организатором биржевых торгов, имеющий свободное обращение в биржевой системе.

Базовый актив – биржевой инструмент, являющийся предметом сделки при исполнении опционного контракта.

Дата окончания обращения (дата погашения, expirationdate) –установленная в опционном контракте дата, после наступления которой покупатель не имеет права требовать от продавца выполнения предусмотренных опционным контрактом обязательств.



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

Яндекс синтез речи на смартлаб

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

С первой функцией разобрались. Кто не знал, во всех гугл телефонах в клавиатуре есть микрофон, жмешь и распознает голос бесплатно.
Яндекс синтез речи на смартлаб

C распознаванием текста оказалось посложнее. Дело в том, что распознавание 1 млн нормальным ИИ стоит 1200 рублей.
Старая технология стоит 183 рубля за 1М символов, но я думаю никто не захочет))
1 млн символов это примерно 10 часов. 
То есть 10 наших читателей за час сожрут 1200 рублей.
Яндекс синтез речи на смартлаб

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

Потестить голоса можно тут https://cloud.yandex.ru/services/speechkit#demo

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

На мой взгляд, для спекуляций самый лучший инструмент в моменте — это фьючерс S&P500. Как я это оцениваю?
С точки зрения тренд/шум а также по параметрам ликвидности и риска этот инструмент в последние две недели выглядит гораздо лучше, чем любимый в моем спекулянтском прошлом фьючерс ртс.

По моим субъективным ощущениям в 2008-20012 фьючерс ртс был гораздо ликвиднее чем сейчас, соотношение тренд/шум было гораздо лучше. С другой стороны, если вы делаете не тренд, а стакан-скальпинг, то фьючерс ртс для вас будет неплох, потому что там постоянно кого-то подлавливают на микро-выносах.

Однако, не спешите торговать ES. Там 1 контракт стоит «значение индекса» умножить на $50.
Это значит что всего на 1 контракте диапазон вчерашнего дня 210 пунктов дает прибыль/убыток $10,500 или 800 тыс рублей!!!
Стоп-лосс 20 пунктов будет стоить $1000.
Такое можно себе позволить только если ваш счет ну минимум тыщ $30K

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