Избранное трейдера Олег

по

Дивидендные "аристократы" ММВБ

    • 16 августа 2017, 19:31
    • |
    • COREz
  • Еще
Начал потихоньку формировать дивидендный портфель на средства, которые не жалко потерять в России если произойдёт системный кризис. Итак первые три бумаги: Газпром, Мосбиржа и Русгидро. Среднегодовая чистая доходность по ним находится сейчас в районе 7%, что в общем-то сравнимо со ставками в топовых банках страны.

Дивидендные "аристократы" ММВБ

Почему именно эти бумаги?

Газпром, потому что монополист и очень дешёвый. Мне просто нравится иметь в портфеле кусочек «Национального достояния». :)

Мосбиржа — это новая «облигация» на рынке акций после Лукойла и ВСМПО. Бизнес любой биржи завязан на клиентских комиссиях. Трудно себе представить, чтобы резко упало количество желающих «припарковать» свои деньги в ценных бумагах. Богатые богатели, богатеют и будут богатеть. Правило «5Б» :) Кроме того сейчас пенсионные фонды активно стали «пылесосить» рынок ценных бумаг, так что «жирных» клиентов у Мосбиржи будет в достатке.

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

Про настоящих роботов, с ценой далеко за 500к рублей

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

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

Возможно, еще что-нибудь интересное по ходу расскажу :)

Уверен, кому-нибудь и интересно будет. Это мой первый блог. Давно думал, что делать с моими знаниями, но идей пока нет, может кто предложит :) Правда, скорее всего, что-то и устарело уже (инфраструктура биржи, скорее всего), давно этим занимался — более трех лет назад перестал.

Вообще, должен признать, нынешним алготрейдерам очень тяжело и будет еще тяжелее. Информацию приходится собирать по крупицам. Если лет 5-6 назад все достаточно легко делились информацией и подходами, то сейчас действительно стоящей информации вообще нет. Все, что есть на смартлабе по поводу алго и hft — настолько не значительно, а в 99% — ерунда. Помню, на конфе в Геленджике можно было получить больше практической информации, чем во всех книжках по hft :)



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

Не знаете что купить?

    • 15 августа 2017, 01:02
    • |
    • COREz
  • Еще
Заходите вот в эту табличку и покупаете самых дорогих «лузеров», которые хорошо просели с начала года. Это компании «монстры» с капитализацией от 500 млрд руб. и они сильно подешевели с начала года. Стратегия простая, она даёт Вам шанс купить солидный бизнес с хорошим дисконтом, НО ничего Вам не гарантирует в будущем. Инвестор предполагает, что эти бумаги уже хорошо упали за длительный период времени в текущем финансовом году и накопили тем самым потенциал роста.

«Народное достояние» в начале списка, готовится родимый к взлёту. :)

Не знаете что купить?

Разбор пути к 32 млн или 6 факторов успеха

На волне историй об успешности сформулировал 6 простых фактора успеха:

Поехали.

1. Москва и ближнее Подмосковье.
Если тебе «повезло» родиться не в этих Богом благословенных местах, тебе уже придется тяжело.
Родиться в Москве/Подмосковье означает:
— иметь родителей в Москве (с повышенной среднероссийской пенсией)
— иметь большие возможности в плане учебы
— иметь большие возможности в плане работы
— иметь самую развитую инфраструктуру в стране 
— иметь круг знакомых, знать нужных людей
— иметь наследственную недвижимость (от родителей и/или бабушек/дедушек). В потенциале это означает, что А. тебе не надо работать «на квартиру». Б. тебе не надо снимать квартиру

2. Удача.
Оказаться в нужное время в нужном месте. Попросту говоря, важен фарт.
Например, BigAlex оказался в спорный момент с низкой зп и избежал сокращения. Или оказался в нужный момент единственным с английским языком (хоть и с низкими компетенциями). Или зачем-то вложил деньги в акции в 2008 году. Мог ведь потерять еще полкапитала, но повезло.
Или история моей знакомой; приехала в Москву никем. Мыкалась по углам, пока случайно (подчеркиваю слово случайно), не встретила на улице знакомого из своей провинциальной школы. Случайно (подчеркиваю слово случайно) знакомый ее узнал, а узнав, что она ищет работу, тут же предложил ей свободную вакансию зам.депа в крупной компании, где он был топ-манагером. Она, конечно. согласилась. Как вы понимаете, все прошло всяких собеседований. Итог: 500k зарплаты. Сыграл ли тут «женский» фактор история умалчивает.



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

Путь к 32 млн. пройден без биткоинов

    • 10 августа 2017, 08:51
    • |
    • BigAlex
  • Еще

Человек ранее предложил делиться историями успеха. Чтож, поделюсь и я. Страдаю паранойей, деньги любят тишину, потому зарегил новый ник и вхожу на смарт под VPN.  Это реальная история, врать под анонимным, одноразовым ником смысла нет. Просто тянет поделиться, да и похвалиться, чего уж там, пусть и анонимно.

40 лет, женат-дети. Заработал 31,7 млн. плюс 100 кв.м квартира в мск без ипотеки, сам купил наполовину (после продажи унаследованной поменьше, больше 5 млн. докладывал, плюс ремонт 2 млн.), черный джип за полтора ляма (до девальвации купленный), машина жены (чуть менее ляма) и прочее по мелочам. Взяток не брал, не украл ни рубля за свою жизнь, получал белую зарплату, не имел своего бизнеса, не имел стартового капитала от родителей, только квартиру, биток не покупал. Впрочем по порядку.

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



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

Про "докупателей"

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

— «Если уронят в течение месяца еще — докуплю акций.»

— «Сегодня чуть докуплю, уменьшу среднюю.»

— «Пойдём ниже-докуплю.»

— «Тоже докуплю обычки, усреднюсь неплохо.»

— «Докуплю пониже.»

— «Если дадут ощутимую скидку, то докуплю.»

— «Уходите я прикрою, т.е докуплю.»

— «В понедельник в последний раз докуплю что дадут… и в отпуск… опять плечи плечи...»

— «А куда его укатывать? На 8500? Ну это будет супер цена, ещё докуплю тогда.»

— «Вижу — паника — продавайте все, гоните мне цену вниз — я ее сразу докуплю.»

— «В понедельник вероятно буду только в неё играть, мечтаю докуплять от 535 и ниже»


— и т.д., и т.п., подобные посты можно цитировать бесконечно, их очень много.

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

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

Простой метод торговли для новичков.

    • 14 июля 2017, 23:47
    • |
    • COREz
  • Еще
Установите себе норму прибыли на каждую акцию в портфеле в размере допустим 10% и норму убытка в три раза меньше на уровне 3%. Следуя этим параметрам Вы должны закрывать прибыльные позиции сразу по достижении установленного предела и также поступать с убытками.

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

Простой метод торговли для новичков.

Можно взять другие параметры, но как подсказывает практика, колебания котировок до 3% — это практически рыночный шум, сильно выше 10% ликвидным бумагам трудно зарабатывать в короткий промежуток времени.

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

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

8 ошибок при обращении с деньгами

8 ошибок при обращении с деньгами 

Быть богатым и обладать состоянием – не одно и то же. 

Состояние – это избыток чего-либо, настолько большой, что никакие внешние условия не могут повлиять на него. Одно дело – заработать много денег, разбогатеть – совсем другое. Но только лишь немногие способны научиться создавать свое состояние. Вы, наверняка, слышали о «быстром обогащении», но вы никогда не услышите о том, что можно быстро стать состоятельным. 

Слышали когда-нибудь о том, что «деньги никогда не спят»? Состоятельные люди принимают это высказывание буквально и потому уверены, что деньги должны работать и расти круглые сутки. Состоятельные люди уважают и уделяют внимание своим деньгам, поскольку знают, что состояние не увеличится само по себе. И они знают, что деньги требуют любви и уважения.

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

Портфель дивитикеров от двух миллионов рублей.

    • 12 июля 2017, 18:58
    • |
    • COREz
  • Еще
Формируем портфель из 20 наиболее интересных дивидендных бумаг ММВБ, на каждую позицию примерно по 100 тысяч рублей. Тем самым каждая бумага возьмёт на себя риск 5% на случай допустим банкротства эмитента. Примерно раз в месяц или ещё реже (по ситуации) проводим ребалансировку по следующему принципу: продаём часть подорожавших бумаг и докупаем на эти деньги наиболее подешевевшие бумаги в портфеле из такого расчёта, чтобы начальная (учётная) стоимость каждой позиции стремилась к одинаковому значению.

Почему именно счёт от двух миллионов?

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

Портфель дивитикеров от двух миллионов рублей.

Что даёт такой подход?

1. Удобно считать среднюю дивидендную доходность, потому что все позиции примерно равны по объёму.

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

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