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

по

Московская фондовая биржа воспользуется услугами Waves Platform

Депозитарное подразделение (НД) Московской фондовой биржи заключило партнерское соглашение с Waves Platform. Документ предполагает, что будет создан цифровой блокчейн проект, который поможет обслуживать цифровые активы, включая криптовалюты.

Специалисты считают, что НД пытается занять место на развивающемся рынке, рассчитывая на привлечение значительных объемов российских частных инвесторов, владеющих криптовалютами.

Проект предполагает следующее:

Готовый прототип должен обеспечить запись транзакций цифровых валют
Возможность хранения приватных ключей и идентификация собственников цифровых кошельков
Проект будет рассчитывать стоимость криптовалют на рынке, получая информацию от известных крипто-бирж мира
Руководитель Waves Platform Саша Иванов считает, что создание платформы не будет сложным с точки зрения инженерной разработки. Waves начала производство прототипа и собирается его обнародовать в сентябре этого года. Тяжелой частью станет организационная составляющая.



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

Учи матчасть, дурень! Или пару слов об улыбке волатильности для гуманитариев.

Навеяно постом https://smart-lab.ru/blog/411524.php персонажа по кличке @God , а также сохраненными и удаленными этим автором комментариями к нему.
Автор упомянутого поста решил, что «Сейчас настало самое время ПОАрмагИДонить» (не удивляйтесь орфографии — это цитата из оригинала, но суть не в ней). Предвестником армагеддона автор объявил не лютого зверя, а, кто бы мог подумать, смещение «ямки улыбки волатильности» опционов на ri и br вправо, относительно текущих значений БА. Автору в каком то из его снов явилось откровение, что такое смещение означает бОльшую вероятность падения БА, чем роста, с точки зрения опционных трейдеров. Так вот. Уважаемые гуманитарии! Не верьте снам сомнительных God-ов, планируя опционную торговлю! (Физики и прочие математики/инженеры в сны и так не верят, поэтому к ним не обращаюсь). «Улыбка волатильности» может улыбаться/ухмыляться/кривляться почти как угодно, но вероятность роста/падения БА при этом не изменится никак, останется строго 50/50.
А  слабообразованному God-у я посоветовал бы:
1) не удалять чужие комментарии и оппонировать без хамства;
2) подтянуть орфографию и личный словарный запас;
3) перечитывать заголовок моего топика, как мантру, 10 раз ежедневно перед сном.

Поборы ФОРТС за ошибочные и неэффективные транзакции

Всем привет.

Недавно столкнулся с проблемой неадекватных штрафов FORTS за якобы «ошибочные и неэффективные транзакции».
Каждый день в 19 часов с началом вечерней сессии в терминале QUIK вдруг появляется странная сумма 

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

В отчете брокера это выглядит как отдельная строка «Сбор за транзакции» или просто «КОМИССИЯ биржи»,
но это дополнительная комиссия, которая добавляется к обычной за все сделки.

Если за день сделок на FORTS штук 200, и комиссия брокера и биржи ну пусть 200 рублей, то дополнительно с меня снимают еще и несколько тысяч рублей каждое утро при положительной марже!


На вопросы у брокеров — что это такое, мне ответили:

---------------
Это сборы биржи ФОРТС за неэффективные транзакции и за ошибочные транзакции. Они относятся ко всем транзакциям (в том числе поданным через Шлюз). Сборы предназначены для подавления роботов, если они генерируют большое количество заявок,

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

Обслуживание внешнего долга съедает 40% экспортных доходов.

Объем внешнего валютного долга РФ уже находится за критической чертой, следует из данных ЦБ: на конец 2016 года ежегодная сумма погашения займов и процентных платежей съедала 40% экспортных доходов российской экономики. А за первое полугодие наши корпорации набрали ещё займов и  внешний долг России вырос на 15,5 млрд долларов, или 3%. На 1 июля он составлял 529,6 млрд долларов, оформив рекорд с осени 2015 года. Значит его обслуживание превысит 40 % экспортных доходов (пока ЦБ точную цифру не дал).

Скоро с такими эффективными менеджерами мы будем продавать наши природные богатства,  получая взамен дырку от бублика. Вспоминается анекдот: Кризис. На рынке редкие прижимистые покупатели и только у одного продавца огромная очередь. Спрашиваю — Что продаешь и почем? -Рубли по 95 коп. -А где же твоя прибыль? -А хер его знает, но оборот бешеный!

Приток капитала на рынок России

    • 25 июля 2017, 20:51
    • |
    • Upssss
  • Еще
Приток/отток капитала на  рынок акций в период с 03.01.2012 — 24.07.2017 выглядел следующем образом:
Приток капитала на рынок России
Приток капитала на рынок России

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

Теория десяти лучших дней

Западные эксперты утверждают, что (пассивный) инвестор всегда должен быть в рынке, быть вне рынка — самый главный инвесторский риск. Есть даже на первый взгляд бредовая теория, что за десятилетия роста индекса основной результат дают всего 10-20 дней. Можно даже найти исследование.

Если лень читать, суть исследования такова. За 20 лет (1995-2014) индекс S&P 500 вырос в 6,5 раз, принося 9,85% годовых. Если из него убрать всего 10 лучших дней, то сумма вложений вырастет всего в 3,2 раза (6,1%). Далее ещё хуже, если интересно, пройдите по ссылке и посмотрите картинку. На минутку, 10 дней из 20 лет (~5000 рабочих дней) — это всего 0,2% времени.


Но тема не была бы интересна, если бы я её не переложил на российские реалии. У меня сразу две таблички — на индексе полной доходности и на обычном. Из-за того, что ИПД у нас считается всего 8 лет.

Поехали.

ММВБ полной доходности (01.2009 — 07.2017)

Данные были взяты с сайта Мосбиржи, на каждый день был высчитан прирост в пунктах/рублях и процентах. Потом строки были отсортированы по этому приросту по убыванию.



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

Кто не понял, тот поймёт или почему искандеры не смеются.

Россия в мае купила облигации США на $3.8 млрд, увеличив их портфель до $108.7 млрд. За год: +$20,5 млрд.
--------------------
РФ: экспорт товаров в 2016 году:
Кто не понял, тот поймёт или почему искандеры не смеются.
Cуммарная установленная мощность солнечных электростанций Китая превысила 100 ГВт и достигла 101,82 ГВт.
--------------------
Количество активных буровых установок в Канаде за неделю увеличилось на 15, до 206.
--------------------
Мировой рынок акций превысил стоимость в $76.3 трлн, новый исторический максимум, 100% от ВВП
Кто не понял, тот поймёт или почему искандеры не смеются.

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

VIX сегодня пошел на исторический рекорд

Индекс волатильности закрывает неделю на уровне 9,31 — рекордное значение за всю его историю (ниже он был только в конце 2006 года, но закрытие недели было выше текущих значений).

Динамика индекса волатильности VIX

Доходности 10-летних трежерис игнорируют монетарное ужесточение ФРС…

Динамика доходности 10-летних трежерис



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

Раз в год и "пушка" стреляет! LONG BTCUSD bullish flag

Профиль «Мадам» DianKemala на tradingview
Поизучал ее (его) посты. Довольно неплохие рекомендации и их реализация.
Может кому-то будет интересно! 
Раз в год и "пушка" стреляет! LONG BTCUSD bullish flag
Раз в год и "пушка" стреляет! LONG BTCUSD bullish flag

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

Код робота на 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

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