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

по

В РФ доступна куча данных, в т.ч. экономических.

Весной был на вписке «Open Data», это не реклама!!!
oki-russia.timepad.ru/event/439731/

Был поражен масштабом открытости наших данных. Оказалось, что мы еще будучи в G8 подписали меморандум по открытию бесплатного доступа к статистическим донным. Поразительно, но по оценке НКО система госзакупок в РФ самая продвинутая. Но также имеется доступ к огромному массиву статистик начиная с количества кинотеатров в разрезе муниципалитетов до структуры правонарушение МВД.

Вот эта контора АНО «Информационная Культура» сотрудничает с различными НКО, включая инноагентов типа эмнисти, по международному соглашению и продвигает в массы доступ различным базам данных, включая буржуйские.
www.infoculture.ru/projects/

У них есть подписка на рассылку новостей по открывающимся статистическим ресурсам. И есть ежегодная сходка для разработчиков и зевак. Бутеры и пирожки там вполне съедобные. Куча конкурсов для разработчиков и внушительные призы.

Сегодня рассылку получил.

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

Достали посты о крахе 29г

Еженедельно читаю посты, как же было все плохо в 29г США. Изучается поведение правительства, мнение экспертов, поведение рынка и игроков.
А у самих под носом было событие покруче, чем крах в США в 29г.
Да, конечно в 1997г российский фондовый рынок стоил дешевле, РТС был в два раза, чем сейчас, но ММВБ уже заработала (правда едва-едва).
Но почему, почему никто не изучает этот КРАХ? В 1998г страну постиг полный коллапс. А фондовый рынок апокалипсис.
Конечно, раз главный враг это Америка, а российская история должна выглядеть патриотично, то как то не прилично обсуждать собственное событие.
Но тем не менее, статистически оно очень интересно и достойно всестороннего изучения. Хотя бы потому, что индекс РТС не так уж далеко ушел от максимумов 1997г, что роднит его с НАСДАК, который только год назад преодолел максимум 2000г. Но про НАСДАК все гуру смартлаба кричат, что это «фуфло, пузырь и скоро все обнулится». «Там же P/E какое!» «виртуальность»… и т.п.
Вопрос к знатокам, чего же наша «материальность» обвалилась в ад без санкций, без Путина, без Крыма и при гораздо большей любви иностранцев? И что есть сейчас такого, что ГАРАНТИРУЕТ повторение сценария 1998г? 

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

Код робота на LUA для QUIK

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

Предназначается для новичков в алготрейдинге, что-то типа болванки.

Важно: выставление заявок я закомментировал, поэтому можете смело запускать этот скрит, он не натворит ужаса по счету.

require"QL"

log = "sbrf.log"
seccode = "SRM6"
lots_in_trade = 80
accnt = ""
better = -5
chart = "sberbankxxx"
is_run = true
prev_datetime = {}
len = 100
basis = 9
k_bal = {0,1,2,3}
sell = false
buy = false
id = 0
first = true

function trade_signal(shift)
        number_of_candles = getNumCandles(chart)
        bars_temp,res,legend = getCandlesByIndex(chart,0,number_of_candles-2*len-shift,2*len)
        bars={}

        i=len
        j=2*len
        while i>=1 do
                if bars_temp[j-1].datetime.hour>=10 then
                        sk=true
                        if bars_temp[j-1].datetime.hour==18 and bars_temp[j-1].datetime.min==45 then
                                sk=false
                        end
                        if sk then
                                bars[i]=bars_temp[j-1]
                                i=i-1
                        end
                end
                j=j-1
        end

        t = len+1

        do_sell = false
        do_buy = true

        value = 0
        if do_sell then value = 1 end
        if do_buy then value = -1 end
        toLog(log,"value="..value.." on candle: "..bars[len].datetime.year.."-"..bars[len].datetime.month.."-"..bars[len].datetime.day.." "..bars[len].datetime.hour..":"..bars[len].datetime.min.."   O="..bars[len].open.." H="..bars[len].high.." L="..bars[len].low.." C="..bars[len].close.." V="..bars[len].volume)
        return value
end

function mysplit(inputstr, sep)
        if sep == nil then
                sep = "%s"
        end
        local t={} ; i=1
        for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
                t[i] = str
                i = i + 1
        end
        return t
end

function OnInit(path)
        log=getScriptPath()..'\\'..log
        toLog(log,"==========OnInit: START")
        toLog(log,"==========OnInit: FINISH")
end

function OnStop()
        is_run = false
        toLog(log,"==========OnStop: script finished manually")
end

function CheckBit(flags, bit)
   -- Проверяет, что переданные аргументы являются числами
   if type(flags) ~= "number" then error("Ошибка!!! Checkbit: 1-й аргумент не число!"); end;
   if type(bit) ~= "number" then error("Ошибка!!! Checkbit: 2-й аргумент не число!"); end;
   local RevBitsStr  = ""; -- Перевернутое (задом наперед) строковое представление двоичного представления переданного десятичного числа (flags)
   local Fmod = 0; -- Остаток от деления
   local Go = true; -- Флаг работы цикла
   while Go do
      Fmod = math.fmod(flags, 2); -- Остаток от деления
      flags = math.floor(flags/2); -- Оставляет для следующей итерации цикла только целую часть от деления
      RevBitsStr = RevBitsStr ..tostring(Fmod); -- Добавляет справа остаток от деления
      if flags == 0 then Go = false; end; -- Если был последний бит, завершает цикл
   end;
   -- Возвращает значение бита
   local Result = RevBitsStr :sub(bit+1,bit+1);
   if Result == "0" then return 0;
   elseif Result == "1" then return 1;
   else return nil;
   end;
end;

function killorders(ccode,scode)
    for i=0,getNumberOf("orders")-1,1 do
        local t=getItem("orders", i)
        if t ~= nil and type(t) == "table" then
            if( t.seccode == scode and CheckBit(t.flags, 0) == 1) then
                local transaction={
                    ["TRANS_ID"]=tostring(math.random(2000000000)),
                    ["ACTION"]="KILL_ORDER",
                    ["CLASSCODE"]=ccode,
                    ["SECCODE"]=scode,
                                        ["ACCOUNT"] = accnt,
                    ["ORDER_KEY"]=tostring(t.ordernum),
                }
                                res=sendTransaction(transaction)
            end
        end
    end
end

function killstoporders(ccode,scode)
    for i=0,getNumberOf("stop_orders")-1,1 do
        local t=getItem("stop_orders", i)
        if t ~= nil and type(t) == "table" then
            if( t.seccode == scode and CheckBit(t.flags, 0) == 1) then
                local transaction={
                    ["TRANS_ID"]=tostring(math.random(2000000000)),
                    ["ACTION"]="KILL_STOP_ORDER",
                    ["CLASSCODE"]=ccode,
                    ["SECCODE"]=scode,
                                        ["ACCOUNT"] = accnt,
                    ["STOP_ORDER_KEY"]=tostring(t.ordernum),
                }
                                res=sendTransaction(transaction)
            end
        end
    end
end


function main()
        toLog(log,"==========main: START")
        while is_run do
                if isConnected() == 1 then
                        ss = getInfoParam("SERVERTIME")
                        if string.len(ss) >= 5 then
                                hh = mysplit(ss,":")
                                str=hh[1]..hh[2]
                                h = tonumber(str)
                                if (h>=1000 and h<1400) or (h>=1405 and h<1845) or (h>=1905 and h<2350) then
                                        if first then
                                                for ti = 50,2,-1 do     trade_signal(ti) end
                                                if buy and not sell then message(seccode.." Current state: green and buy",1) end
                                                if sell and not buy then message(seccode.." Current state: red and sell",1) end
                                                if buy and sell then message(seccode.." ERROR: green and red",1) end
                                                if not buy and not sell then message(seccode.." WARNING: nothing",1) end
                                                first = false
                                        end
                                        prev_candle = getPrevCandle(chart,0)
                                        if not isEqual(prev_candle.datetime,prev_datetime) then
                                                current_value = trade_signal(1)

                                                if current_value ~= 0 then
                                                        optn = "B"
                                                        if current_value==1 then optn = "S" end
                                                        curvol=0
                                                        no=getNumberOf("FUTURES_CLIENT_HOLDING")
                                                        if no>0 then
                                                                for i=0,no-1,1 do
                                                                        im=getItem("FUTURES_CLIENT_HOLDING", i)
                                                                        if im.sec_code==seccode then
                                                                        curvol=im.totalnet
                                                                        end
                                                                end
                                                        end
                                                        trvol = -current_value*lots_in_trade-curvol
                                                        if trvol ~= 0 then
                                                                killorders("SPBFUT",seccode)
                                                                killstoporders("SPBFUT",seccode)
                                                                f = io.open(getScriptPath().."\\sbrf2_pos.txt","r")
                                                                sbrf2_pos=f:read("*n")
                                                                f:close()
                                                                f = io.open(getScriptPath().."\\sbrf3_pos.txt","r")
                                                                sbrf3_pos=f:read("*n")
                                                                f:close()
                                                                pr,n,l = getCandlesByIndex ("futsber", 0, getNumCandles("futsber")-1, 1)
                                                                local trans =
                                                                {
                                                                        ["ACTION"] = "NEW_ORDER",
                                                                        ["CLASSCODE"] = "SPBFUT",
                                                                        ["SECCODE"] = seccode,
                                                                        ["ACCOUNT"] = accnt,
                                                                        ["OPERATION"] = optn,
                                                                        ["PRICE"] = toPrice(seccode,pr[0].close+current_value*better),
                                                                        ["QUANTITY"] = tostring(math.abs(curvol-sbrf2_pos-sbrf3_pos)),
                                                                        ["TRANS_ID"] = tostring(getTradeDate().month*100+getTradeDate().day+id)
                                                                }
                                                                id = id+1
                                                                --res = sendTransaction(trans)
                                                                message(seccode.." Send : " .. res, 2)
                                                                toLog(log,"Send: ".. res)
                                                                for btr=0,200,5 do
                                                                        local trans =
                                                                        {
                                                                                ["ACTION"] = "NEW_STOP_ORDER",
                                                                                ["CLASSCODE"] = "SPBFUT",
                                                                                ["SECCODE"] = seccode,
                                                                                ["ACCOUNT"] = accnt,
                                                                                ["OPERATION"] = optn,
                                                                                ["PRICE"] = toPrice(seccode,pr[0].close-current_value*btr),
                                                                                ["STOPPRICE"] = toPrice(seccode,pr[0].close-current_value*(btr+better)),
                                                                                ["QUANTITY"] = tostring(6),
                                                                                ["TRANS_ID"] = tostring(getTradeDate().month*100+getTradeDate().day+id),
                                                                                ["EXPIRY_DATE"] = "GTC"
                                                                        }
                                                                        id = id+1
                                                                        --res = sendTransaction(trans)
                                                                        message(seccode.." Send : " .. res, 2)
                                                                        toLog(log,"Send: ".. res)
                                                                end
                                                                if current_value == 1 then
                                                                        message(seccode..' RED: buy->sell',1)
                                                                        toLog(log,"RED signal")
                                                                else
                                                                        message(seccode..' GREEN: sell->buy',1)
                                                                        toLog(log,"GREEN signal")
                                                                end
                                                        else
                                                                if current_value == 1 then
                                                                        message(seccode..' RED: buy->sell',1)
                                                                        toLog(log,"RED signal, but nothing to do")
                                                                else
                                                                        message(seccode..' GREEN: sell->buy',1)
                                                                        toLog(log,"GREEN signal, but nothing to do")
                                                                end
                                                        end
                                                else
                                                        if buy and not sell then toLog(log,"Nothing to do. Current state: green and buy",1) end
                                                        if sell and not buy then toLog(log,"Nothing to do. Current state: red and sell",1) end
                                                        if buy and sell then toLog(log,"Nothing to do. ERROR: green and red",1) end
                                                        if not buy and not sell then toLog(log,"Nothing to do. WARNING: nothing",1) end
                                                end
                                                prev_datetime = prev_candle.datetime
                                        end
                                end
                        end
                end
                sleep(5*1000)
        end
        toLog(log,"==========main: FINISH")
end
  • обсудить на форуме:
  • Quik Lua

Список шортов по 3 брокерам

Список шортов по 3 брокерам



Самые большие возможности шорта у Открытия и БКС, + у БКС есть возможность шорта для ОФЗ. Финам сильно отстает

Поправка: У БКС итого — 49 


Сейчас на рынке только один покупатель это сами компании.

Эндрю Карт­вайт, управ­ля­ю­щий ди­рек­тор Credit Suisse:
«Одной из глав­ных осо­бен­ной фон­до­во­го рынка США с 2009 года стало, то, что нефи­нан­со­вый кор­по­ра­тив­ный сектор вы­ку­пил 18% со­во­куп­но­го ры­ноч­но­го объема, в то время как все прочие участ­ни­ки про­да­ли 7% со­во­куп­но­го объема».
Сейчас на рынке только один покупатель это сами компании.
После фи­нан­со­во­го кри­зи­са остал­ся только один чистый по­ку­па­тель — это сами ком­па­нии, де­ла­ю­щие об­рат­ный выкуп акций, поль­зу­ясь сверх­де­ше­вой кре­дит­ной став­кой ФРС и за­вы­шая при помощи этого как ко­ти­ров­ки акций, так и по­ка­за­тель при­бы­ли в рас­че­те на одну акцию.  Многие на­би­ра­ли кре­ди­ты спе­ци­аль­но для этой задачи — вместо таких глу­по­стей, как, к при­ме­ру, раз­ви­тие биз­не­са и запуск новых про­из­водств.
До­мо­хо­зяй­ства США по­ти­хонь­ку сли­ва­ют акции.


Стоимость S&P500

Для того, чтобы купить S&P500 (будь он в долларах, а не пунктах), американцу надо работать около 110 часов. Максимум за долгие годы. Еще одно подтверждение, что рынок перекуплен.
Стоимость S&P500

Не забывайте подписываться на нашу группу Вконтакте! https://vk.com/DeHoMi


Как я вылечил свою аллергию

По просьбе коллег попробую публиковать в своём блоге статьи про ЗОЖ.
У меня есть готовые статьи, ничего нового выдумывать не буду.
Вот эта статья написана в 2013г.
==
Предисловие к этой статье находится здесь 
Краткий вариант статьи — здесь


Наконец настало время написать про то, как я избавился от аллергии, от которой я страдал с детства

Реально страдал — ибо с весны до осени я истекал соплями, у меня чесались и гноились глаза (иногда я проснувшись утром не мог открыть глаза из-за слипшихся от гноя ресниц), я реагировал на запахи растений и на приближающиеся осадки (у меня закладывало нос так, что я даже не мог дышать от боли, из-за внутреннего давления, или начинал чихать раз по 30 подряд)

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

кто там фьючерсами (FORTS) торгует?

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

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

Поставьте его, скажите какие есть ошибки? Баланс там не правильно показывает, или еще что.

как поставить: в QUIK нажимаем CTRL+F11 далее ДОБАВИТЬ (указываем файл), далее ПЕРИОД РАСЧЕТА поставьте на 1 секунду. ПРИМЕНИТЬ
далее снова CTRL+F11 — создать таблицу, выделяем наш скрипт, добавим все колонки (ДОБАВИТЬ ВСЕ) и жмем ДА

Когда будете писать ошибку, напишите какой у вас брокер.
Если все хорошо, можете просто написать что еще сделать.

>>> СКАЧАТЬ <<<

биржевая сводка


UPD1
14 июля в 19:47 нашел на вечерке ошибку.
Все поправил — можно обновиться

UPD2
15 июля в 10:40
Подправил работу со временем локальным и серверным. 
Из-за этого выборка по позициям шла коряво в клиринг и выходные

  • обсудить на форуме:
  • QUIK

Когнитивные искажения мышления у трейдеров(все посты в одном)

Хочу объединить все свои прошлые посты по когнитивным искажениям мышления у трейдеров- 
http://smart-lab.ru/blog/400539.php
http://smart-lab.ru/blog/401351.php
http://smart-lab.ru/blog/404035.php
И добавить еще немного измышлений на этот счет.

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

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

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

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

Нефть и газ оставьте себе.

    • 06 июля 2017, 19:38
    • |
    • COREz
  • Еще

В Китайской академии инженерной физики создан лазер, способный генерировать импульсы мощностью 4,9 петаватта — это в 500 раз больше, чем мощность ВСЕХ электростанций мира!

Достичь такого результат удалось за счёт использования метода, известного как усиление чирпированных импульсов (Chirped pulse amplification, CPA): усиливаемый лазерный импульс сначала растягивается в пространстве, за счёт чего его мощность падает, затем усиливается, а в конце собирается обратно при помощи так называемых дифракционных зеркал больших размеров. Выглядят эти зеркала как-то так.

Нефть и газ оставьте себе.

Огромная мощность получаемых импульсов не означает, однако, что для них требуется огромное количество энергии. Дело в том, что они имеют чрезвычайно малую длительность. В обсуждаемой работе учёным удалось сжать импульс до 18,6 фемтосекунд (10¯¹⁵ секунд) — это всего в 6 раз больше, чем время, за которое свет делает одно колебание в такой световой волне. За счёт такой малой длительности для достижения рекордной мощности потребовалась энергия импульса равная всего 91,1 Дж. Такую энергию имеет, например, кирпич, упавший со второго этажа, — не так уж и много для рекорда.

Нефть и газ оставьте себе.



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

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