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

по

13 месяцев регулярного инвестирования. Счет - 10,000,000 рублей!

Всех приветствую!

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

Что изменилось у меня?

1) ОПД (ожидаемый пассивный доход = ожидаемые дивиденды /12мес — НДФЛ) упали с 89,100 рублей в месяц до 23,333 рублей. Падение почти на70,000 рублей. Ниже в посте объясню, что произошло.

2) Сумма инвестированных средств выросла за месяц с6,750,000 рублей до 10,000,000 рублей. Прирост более3 млн.

3) Ликвидационная стоимость портфеля на сегодня составляет 9,965,000 рублей. Также я смог получить в этом году более 500,000 рублей дивидендов + около 100,000 по облигациям от распродажи в сентябре. Эти деньги выведены. 

Теперь обо всем по порядку:

1) Как так произошло, что ОПД смог так сильно упасть при росте капитала на3 млн? Очень просто. Большую часть своего портфеля я перевел в доллары. Да. Я становлюсь быком по доллару

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

Куда нужно инвестировать, если вам от 25 до 45 лет – 7 шагов к счастью

Короткие, но очень важные рекомендации по инвестициям времени и денег для «молодого» поколения. 

Рекомендации основаны на личном опыте и изучении тенденций ближайшего будущего в сфере социологии, геополитики, климата, современных технологий и экономки.
Почему такой возрастной промежуток? До 25 лет мало кто задумывается об долгосрочных инвестициях, а после 45 лет ты уже должен чего-то достичь и иметь свою «консервативную» картину мира. Выводы ниже сделаны из видения будущего (2050-80 гг.) выдающимися представителями вышеперечисленных сфер. Список делался для своих детей (т.е. рекомендации «подкреплены» личным примером инвестирования :-) ).
Все пункты, естественно, очень субъективны.

1. Образование и профессии.

Современная система образования, по всему миру, значительно устарела. Особенно школа. Чуть меньше университеты. Она направлена на обучение «на основе предыдущего опыта», а не на «то, что будет востребовано в будущем». Еще она убивает таланты и креативность, начиная с детского садика.



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

Отвлекитесь от трейдинга, почитайте полезные книги!

#прокниги

Я поделюсь теми книгами, которые прочитала недавно и под впечатлением которых до сих пор нахожусь :) Те которые еще в процессе (я часто читаю одновременно по 3 книги) пока делиться не буду. 
«На Пределе. Неделя без жалости к себе» я прочитала на одном дыхании, в перерывах от гребли. Эта книга попала мне в руки в нужное время и в нужном месте. Вернее я ее специально купила перед 9-дневной экспедицией по рекам Сейм и Десна.

Я рекомендую абсолютно всем прочитать эту книгу. Тем кому нужно перезагрузиться, сделать внутреннюю встряску, сделать себе мощный пинок под одно место, активизировать свои внутренние ресурсы или не хватает внутренней мотивации «взять и сделать»! Даже если Вы сейчас успешны и у Вас вроде бы все гладко, даже все слишком гладко и не можете разобраться в своих внутренних жизненных приоритетах — прочитайте «На Пределе»!

Отвлекитесь от трейдинга, почитайте полезные книги!
По поводу «Голубого океана» и «Бизнеса с нуля».



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

10 советов 40-летнего 20-летним

не мое, но в свете постов о здоровье от 50-летных, думаю, актуально

10 советов 40-летнего 20-летним.

Достигнув сорока начинаешь поражаться, сколько же людей даже не дожило твоего возраста. Илья Ильф умер в 39. Максим Горький в 37. Да много кто умер.
Дожив до сорока начинаешь задумываться, достиг ли ты всего чего хотел, и много ли ты успел сделать.
Ты поражаешься, что Александр Македонский до твоего возраста не дожил, но уже успел завоевать полмира, оставив тысячелетние наследие. Осознавая свои достижения, ты понимаешь, что великие люди в твоем возрасте тебя превзошли многократно. Читая книги начинаешь ловить себя на мысли, что автор тебя явно младше (и думаешь, ну чему этот сопляк может тебя научить?).

Анализируя свой опыт хочется кое что посоветовать нынешним 20-летним с высоты, так сказать, прожитых лет.

Итак, 
1. Перестань бухать. Перестань курить. Как бы круто тебе это сейчас не казалось, бухать и курить это не айс. Больше того, я скажу тебе то, что может показаться банальностью, но бухать и курить крайне вредно для здоровья. Да, сейчас здоровье у тебя железное и никак тебя не беспокоит. Но будь уверен, что если продолжишь бухать/курить, через 20 лет ты поймешь, что здоровье свое ты загубил безвозвратно. Помни, что даже пиво ведет к выработке не свойственного тебе женского гормона эстрогена. К каким последствиям это приводит нагуглишь сам. Или можешь посмотреть на большинство нынешних сорокалетних. Хочешь быть таким — продолжай.



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

Суть иска к Системе для тех, кто не понял

Некто гражданин Евтушенков прихватизирует квартиру в хрущевке в 90х и начинает ее сдавать.
В десятых рыночек порешал, что «бабушкин ремонт» не позволяет сдавать квартиру за хорошую цену.
Закупается мебель из Икеи, выбрасывается чехословацкая стенка, квартира сдается за полную цену.

ВНЕЗАПНО государство в лице мэра Мухосранска спохватилось, что прихватизация прошла с нарушениями. Квартиру отбирают и продают на муниципальном аукционе приближенным к мэру местным бандитам.

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

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

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

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

Снять чайник с плиты.

    • 15 июля 2017, 19:24
    • |
    • Urwald
  • Еще
У нас в институте был прекрасный профессор физики. К нему даже с других потоков ходили на лекции. Как-то на семинаре он объяснял нам разницу между математическим и физическим подходом в решении задач. 
Итак есть кран водоснабжения, чайник, плита. Необходимо сделать кипяток. Алгоритм решения — наливаем в чайник воды, ставим чайник на плиту, включаем ее и доводим воду до кипения.  Математический и физический алгоритм здесь будет одинаков.
А теперь изменим условия задачи. Чайник с водой стоит на плите. Как сделать кипяток?
Физический подход —  включаем плиту и доводим воду до кипения.
Математический подход — снимаем чайник с плиты, выливаем воду и приводим условия новой задачи  к условиям задачи, решение которой мы уже знаем.
При этом такой подход раньше мне казался  если не глупым, то каким-то негибким. 
Сейчас я в этом не уверен.
А при чем тут опционы?
Квартальные экспирации у меня практически всегда прибыльны. За шесть лет помню вроде две убыточные Фукусима и Крым. Отработан четкий алгоритм  хронометраж чуть ли не по минутам. Зато в недельных экспирациях проблемы через две на третью.
Что-то надо с этим делать подумал я.  

Улучшаем торговлю

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

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

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

На что я ориентируюсь, когда хочу улучшить ТС?

  — На кривую роста капитала, доходность для меня вторична. Основная задача апгрейда ТС это сократить кол-во и волатильность «просадок». Сама доходность мало что нам расскажет особенного годовая, может вы бы инфаркт приобрели если б знали что происходило с вашим капиталом в течение периода. Поэтому лучше анализировать доходность помесячно и в динамике, каждый убыточный месяц надо разбирать и выявлять что стало основной причиной «минуса». Тогда мы увидим, где были проблемы и что надо изменить (небольшой апгрейд или кардинальное изменение ТС), чтобы этого не повторялось, либо проходило «мягче».



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

Тепличный бизнес

ширина теплицы 11 метров :

1) Крайний ряд, высота 2 метра + 1 метр в земле, столбы стоят на расстоянии 1.5 метров друг от друга в длинну

0.075 х 0.075 х 6 метров = 0.03375 х 67 штук = 2.261 куб.

2) Средний ряд, высота 2.5 метра + 1 метр в земле, столбы стоят на расстоянии 2 метра друг от друга в длинну

0.075 х 0.075 х 4 метра = 0.0225 х 100 штук = 2.25 куб.

3) Центральный столб, высота 3.5 метра + 1 метр в земле, столбы стоят на расстоянии 2 метра друг от друга в длинну

0.075 х 0.075 х 5 метров = 0.028 х 50 штук = 1.40 куб.

4) Крыша ( обрешетка ) 0.075 х 0.075 х 6 метров = 0.033 х 222 штуки = 7.326 ( каждые 0.9 метра )

5) Продольные 0.075 х 0.075 х 6 метров = 0.033 х 85 штук = 2.805 куб.

6) Дюймовка ( центр ) 0.025 х 0.1 х 6 метров = 0.015 х 17 штук = 0.255 куб.

Итог:

2.261 + 2.25 + 1.4 + 7.326 + 2.805 + 0.255 = 16.297 куб. х 10.000 руб куб = 162.970 руб.

Плёнка :

6500 руб. х 4 рулона ( крыша ) = 26.000 руб.
4000 руб. х 1 рулон ( бока ) = 4.000 руб.
3000 руб. х 1 рулон ( торцы ) = 2.000 руб.

20.000 + 4.000 + 2.000 = 32.000 руб.

Дранка :

500 х 1 метр = 500 метров х 2200 метра = 22 пучка х 250 руб. = 5.500 руб.

Шпагат, навесы, гвозди, уголки, шурупы примерно 20.000 руб.



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

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