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

по

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

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

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

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

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

Рынок в переломном моменте. 15 лет чтобы вернуться.

Рынок в переломном моменте. 15 лет чтобы вернуться.
На графиках выше изображена почти идентичная хронология событий, произошедших после краха Dow Jones в 1929 году и взрыва пузыря доткомов NASDAQ в 2000 году. Путь до последнего дна занял у Dow 32 месяца, а у NASDAQ-31 месяц. Индекс NASDAQ снизился на 78%, а индекс Dow-на 89% от своих максимумов.
Рынок в переломном моменте. 15 лет чтобы вернуться.

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

Скрипт 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




9 СОВЕТОВ ДЛЯ НАЧИНАЮЩИХ ТРЕЙДЕРОВ

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

1. Не спешите торговать

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

2. Не торгуйте без причины



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

COVID-19: социальный эксперимент по изучению возможностей централизованного запугивания населения во всем мире.

А также инструмент для искусственного создания глобального финансового кризиса.

Сегодня можно услышать очень много противоположных мнений по последним событиям в мире, связанным с «пандемией». Я предпочитаю формировать свое собственное суждение, опираясь на факты и статистику, а не на СМИ или блогеров. Поэтому решил заморочиться и самому посмотреть доступные источники по статистике смертности – благо знание английского позволяет. Для проверки выбрал Италию и Испанию – страны с самым большим количеством «жертв коронавируса». Данные по ним по ссылке ниже.

www.worldometers.info/coronavirus/

COVID-19: социальный эксперимент по изучению возможностей централизованного запугивания населения во всем мире.

Получилось следующее: в Италии смертность за последние 3 года – 10.7 человек на 1000 (1.07%).

Источник: www.statista.com/statistics/568024/death-rate-in-italy/
COVID-19: социальный эксперимент по изучению возможностей централизованного запугивания населения во всем мире.



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

НЕФТЬ торговля интрадей - Клуб Нефтяников

    • 03 апреля 2020, 09:16
    • |
    • D-trade
      Популярный автор
  • Еще

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

Обстановка:
Четверг: чудеса продолжились — утренний рост — дневное снижение — и ракета на 36 с последующим возвратом под 30!
Пятница утро: плавно снижаемся,  28.3 на текущую минуту.
НЕФТЬ торговля интрадей - Клуб Нефтяников


Долгосрочный портфель. Как выбрать страны для инвестиций?

Время возможностей!

Мысли по долгосрочным инвестициям.

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

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

 

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

К счастью, в современном мире очень легко инвестировать практически в любые торгуемые на бирже активы любых стран, достаточно иметь счет у иностранного брокера. Лично я пользуюсь брокером США Interactive Brokers.

 

Остается задача выбрать страны для инвестиций, чтобы снизить свои риски и повысить доходность, а для этого нужно учесть 3 желания инвестора:

  1. Желание совершать выгодные сделки
  2. Желание снизить риски
  3. Желание вкладываться в сильные, либо развивающиеся страны и экономики.


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

В поддержу простоты предсказательных моделей

    • 02 апреля 2020, 17:39
    • |
    • ipsnow
  • Еще

Общеизвестно, что чем метод проще, тем он надежнее (в контексте предсказаний — точнее). Комментаторы смартлаба через один утверждают это, но сколько из них обосновывают свои утверждения?
Решил изучить этот вопрос подробнее. Ключевые ссылки нашел в ответах на вопрос https://stats.stackexchange.com/questions/124955/is-it-unusual-for-the-mean-to-outperform-arima (чувак спрашивает, нормально ли, что в его исследованиях лучше работают простые методы типа  скользяшек). Помимо множества цитат авторитетов научного мира приведено любопытное исследование от 2015г (цифры округлены, т.к. немного гуляют даже в пределах публикации):

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



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

Объединение методов пересечения и ценового канала скользящих средних (перевод с elliottwave com)

    • 02 апреля 2020, 16:36
    • |
    • RUH666
  • Еще
Еще один способ работы со скользящими средними — это объединить технику кроссовера с техникой ценового канала. Система ценовых каналов показана на графике E-mini S&P 500 на рисунке 1-6. Зеленые стрелки показывают, когда синяя линия пересекает 20-периодную скользящую среднюю более высокой линии, которая является 20-периодной простой скользящей средней максимумов. Красные стрелки указывают на пересечения вниз. Обведенные кружочками ромбы показывают, когда 5-периодная скользящая средняя пересеклась ниже 10-периодной. (В попытке облегчить интерпретацию этого графика цены я не показал простую скользящую среднюю за 10 периодов.)
Объединение методов пересечения и ценового канала скользящих средних (перевод с elliottwave com)По сути, этот метод объединяет лучшие из двух систем скользящих средних в одну. Его цель состоит в том, чтобы дать вам медленный вход с использованием системы канала с скользящей средней ценой, которая устраняет ложные торговые сигналы, но быстрый выход для защиты прибыли с помощью системы пересечения скользящих средних.

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

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

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

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