IsRun = true class_code="TQBR" function main() -- Получает доступный id для создания t_id = AllocTable() -- добавить столбцы AddColumn(t_id, 1, "Бумага", true, QTABLE_STRING_TYPE, 20) AddColumn(t_id, 2, "Кол-во", true, QTABLE_INT_TYPE, 7) AddColumn(t_id, 3, "Цена покупки", true, QTABLE_DOUBLE_TYPE, 14) AddColumn(t_id, 4, "Цена текущая", true, QTABLE_DOUBLE_TYPE, 14) AddColumn(t_id, 5, "Прибыль, р", true, QTABLE_DOUBLE_TYPE, 14) AddColumn(t_id, 6, "Прибыль, %", true, QTABLE_DOUBLE_TYPE, 14) t = CreateWindow(t_id) for iRow=1, getNumberOf("depo_limits")-1, 1 do rowInPortfolioTable = getItem("depo_limits", iRow) -- получить текущую строку из таблицы "Лимиты по бумагам" qtyBoughtLots = tonumber(rowInPortfolioTable.currentbal) limitKind = rowInPortfolioTable.limit_kind if qtyBoughtLots>0 and limitKind<1 then InsertRow(t_id, iRow)-- добавить новую строку вниз таблицы end end local rows, columns = GetTableSize (t_id) InsertRow(t_id, rows+1) -- добавить новую строку вниз таблицы для "Итого" SetWindowCaption(t_id, "Портфель: прибыли и убытки © ramirzaev@mail.ru") -- исполнять цикл, пока пользователь не остановит скрипт или не закроет окно таблицы while IsRun do if IsWindowClosed(t_id)==true then IsRun=false end local currentPrice=0 local qtyBoughtLots=0 local profitAbs = 0 local profitPerc = 0 local currentSecCode= "" local fullNameOfInstrument = "" local limitKind = 0 local rowInPortfolioTable = {} -- строка из таблицы "Лимиты по бумагам" local tableInstrument = {} -- данные "Таблицы текущих торгов" local iRowInOutTable = 1 local totalInvest = 0 local totalPortfolio = 0 local totalProfit = 0 local totalPercent = 0 for iRow=0, getNumberOf("depo_limits")-1, 1 do rowInPortfolioTable = getItem("depo_limits", iRow) -- получить текущую строку из таблицы "Лимиты по бумагам" qtyBoughtLots = tonumber(rowInPortfolioTable.currentbal) limitKind = rowInPortfolioTable.limit_kind if qtyBoughtLots>0 and limitKind<1 then -- если кол-во лотов >0 и тип лимита T0 currentSecCode = rowInPortfolioTable.sec_code fullNameOfInstrument = tostring(getParamEx(class_code, currentSecCode, "SHORTNAME").param_image or "0") --"LONGNAME" avgPrice = tonumber(rowInPortfolioTable.awg_position_price) currentPrice = GetAskPrice(currentSecCode) profitAbs = (currentPrice-avgPrice)*qtyBoughtLots profitPerc = 100*currentPrice/avgPrice - 100 totalInvest = totalInvest + avgPrice*qtyBoughtLots totalPortfolio = totalPortfolio + currentPrice*qtyBoughtLots SetCell(t_id, iRowInOutTable, 1, fullNameOfInstrument) -- "Бумага" SetCell(t_id, iRowInOutTable, 2, tostring(qtyBoughtLots)) -- "Кол-во"RemoveZero(tostring(qtyBoughtLots))) SetCell(t_id, iRowInOutTable, 3, tostring( math_round(avgPrice, 3) )) -- tostring(avgPrice)) -- "Цена покупки" SetCell(t_id, iRowInOutTable, 4, RemoveZero(tostring(currentPrice))) -- "Цена текущая" SetCell(t_id, iRowInOutTable, 5, tostring( math_round( profitAbs, 0)) ) -- "Прибыль, р" SetCell(t_id, iRowInOutTable, 6, tostring(math_round(profitPerc, 1)) .."%") -- "Прибыль, %" if profitPerc >5 then -- окрашиваем ColourRowInGreen(iRowInOutTable) elseif profitPerc<-5 then ColourRowInRed(iRowInOutTable) else ColourRowInYellow(iRowInOutTable) end iRowInOutTable = iRowInOutTable+1 end end totalProfit = totalPortfolio - totalInvest totalPercent = 100*totalProfit/totalInvest SetCell(t_id, iRowInOutTable, 1, "Итого") SetCell(t_id, iRowInOutTable, 3, tostring( math_round(totalInvest, 0) )) SetCell(t_id, iRowInOutTable, 4, tostring( math_round(totalPortfolio, 0))) SetCell(t_id, iRowInOutTable, 5, tostring( math_round( totalProfit, 0)) ) SetCell(t_id, iRowInOutTable, 6, tostring(math_round(totalPercent, 1)) .."%") if profitPerc >5 then -- окрашиваем ColourRowInGreen(iRowInOutTable) elseif profitPerc<-5 then ColourRowInRed(iRowInOutTable) else ColourRowInYellow(iRowInOutTable) end iRowInOutTable = iRowInOutTable+1 sleep(5000) -- пауза 5 сек. end --message("script table portfolio finished") end function ColourRowInRed(num_row) SetColor(t_id, num_row, QTABLE_NO_INDEX, RGB(255,150,150), RGB(0,0,0), RGB(255,150,150), RGB(0,0,0)) end function ColourRowInYellow(num_row) SetColor(t_id, num_row, QTABLE_NO_INDEX, RGB(255,255,200), RGB(0,0,0), RGB(255,255,200), RGB(0,0,0)) end function ColourRowInGreen(num_row) SetColor(t_id, num_row, QTABLE_NO_INDEX, RGB(150,255,150), RGB(0,0,0), RGB(150,255,150), RGB(0,0,0)) end function GetAskPrice(inp_Sec_Code ) local ask = tostring(getParamEx(class_code, inp_Sec_Code, "OFFER").param_value or 0) return ask end -- Округляет число до указанной точности function math_round (num, idp) local mult = 10^(idp or 0) return math.floor(num * mult + 0.5) / mult end -- удаление точки и нулей после нее function RemoveZero(str) while (string.sub(str,-1) == "0" and str ~= "0") do str = string.sub(str,1,-2) end if (string.sub(str,-1) == ".") then str = string.sub(str,1,-2) end return str end function OnStop() DestroyTable(t_id) IsRun = false end
Краткосрок для меня тема новая, и тестирую для себя продажи и докупки на откатах внутри недели. шорт и плечи самим собой себе запрещены, считайте это своего рода челленджем.
1- Газпром (куда ж без него) средняя цена 116,5 доля 10,17%
2- ГМК, скидывал 14 августа по 9073, подобрал на просадке назад, средняя 8716, доля 10,15%
3- ЛСР, средний вход 758,4, доля 10,3%
4- ЛУКОйл, добирал на проливах в надежде на рост ближайший, средняя (высокая, не нра) 2865,5, доля 24,8%
5- Магнит, та же история что и с Лучком, поза не особо нравится, несколько раз накосячил на эмоциях, скидывал когда не надо было, средняя 9358, доля 32,78% — планирую сокращать в дальнейшем до 15-20%
6- Ростелеком, средняя 65,25, доля 8,7%, планирую добирать до 10-12% с копейками.
7- ну и Системы немного, и больше набирать стремно, и выбросить жалко )
О компании: Hibbett Sports inc.— является одним из крупнейших спортивных ритейлеров с 1025 розничными магазинами в 32 штатах США.
Фундаментальный анализ: Все расчёты проведены самостоятельно, данные были взяты из отчётов компаний по международным стандартам финансовой отчётности GAAP, цифры в тыс. долларах США.
В начале июля все защитные активы полетели из каналов, об этом я писал и приводил примеры.
Были все признаки «кишки навыпуск» — свеча с гэпом вниз, пробитие сма200, побитие каналов, трендов и тд… И что в итоге? Как в шутке про известного комментатора «пас! гол! %уй!» (
Это укрепляет во мне мнение, что на ТА смотрит толпа, а в это же время большие деньги торгуют по своим принципам, собирая с лошков стопы и разводя на популярные паттерны (каналы, сма, уровни поддержки).
А по итогу безопасные гавани (трежерис, золото) выросли.
Опять можно заводить песни про тренды, поддержки, флаги, сопли, уши...
А пока тренд все увереннее показывает уход денег от рисков. Смотрите сами, как начали расти ютилитиз, золото и трежерис:
Вот таймфрейм 3 месяца:
Добрый день.
Мне 33 года. Работаю, своя недвижимость. Кредитов нет. Других обязательств нет. Планируется двое-трое детей. Сейчас есть 2,5 млн рублей на депозите в банке.
Планирую создать портфель. Цель — выйти на пенсию в возрасте 50 лет, и получать чистый доход с портфеля в размере не менее 60.000 в рублях 2017 года.
Думаю какая структура портфеля подойдет для моих целей.
Пока остановился на такой:
50% акций, 50% облигаций:
25% — ОФЗ, купленные на ИИС;
25% — Индекс ММВБ-10, собранный руками на ИИС;
25% — Индекс облигаций США (ETF), счет у американского брокера, скорее всего Interactive Brokers.
25% — Индекс акций S&P500 (ETF), счет у американского брокера, скорее всего Interactive Brokers.
Ребаланс раз в квартал путем покупки примерно на 100.000 рублей (в рублях 2017 года) тех активов, которые просели в цене. В случае резких просадок индексов акций возможен сдвиг баланса в пользу акций до 75% акций, 25% облигаций.
Пожалуйста покритикуйте портфель.