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

Покупаем 20 ликвидных акций, которые по нашему субъективному мнению будут расти в перспективе нескольких ближайших недель.
Каждый день в конце торговой сессии удаляем из списка акции, которые показали убыточные дни подряд с общим значением, допустим -0.5% и ниже.
Например, с начала покупки бумага показала вчера первый минус на уровне -0.3 и сегодня на уровне -0.4, в сумме -0.7, что меньше -0.5, значит сегодня её продаём.
Или бумага сегодня первый раз с начала «рыбалки» показала убыток -0.6, значит тоже продаём.
Полученные средства в этот же день в равных долях распределяем по оставшимся бумагам в портфеле.
Продолжаем подобное действие до того дня, когда придётся продать последнюю бумагу из списка, которая аккумулировала в себе все средства
Считаем прибыль/убыток и снова закидываем «невод».
Стратегия простая и в то же время эффективная.
В портфеле всегда только самые «сильные» в моменте бумаги, из которых выжимается весь потенциал среднесрочного движения.
Если попадаем на дивидендную отсечку Т-2, то бумагу естественно придётся продать по установленному правилу, но позже получим дивиденды примерно равные уровню падения.
Можно поиграться с параметрами, например 30 бумаг и дневной убыток больше «рыночного шума», допустим -1% и ниже.
Начало покупок можно выбирать по дневным свечам Хейкен Аши на индексе ММВБ, которые очень точно показывают зарождающиеся тренды.
Например, вчера была первая зелёная свеча после серии красных, следовательно сегодня уже получили бы прибыль.
TICER = "SBER";
CLASS_CODE = "TQBR";
FilePath = getScriptPath() .. "\\export.txt";--путь к файлу
save = false;--сохранять данные в файл если false нет, true да
f = nil;
stopped = false;
t_id = nil
H = -1;
M = -1;
VSELL = 0;
VBUY = 0;
CDelta = 0;
CountTrans = 0;
PriceTrans = 0.0;
t = "";
function OnInit()
CountTrans = 0;
if save then f = io.open(FilePath,"w"); end
CreateTable();
end
function main()
while not stopped do
if IsWindowClosed(t_id) then
stopped = true;
end
sleep(10);
end
end
function CreateTable()
t_id = AllocTable();
AddColumn(t_id, 0, "Время", true, QTABLE_STRING_TYPE, 10);
AddColumn(t_id, 1, "BUY", true, QTABLE_INT_TYPE, 10);
AddColumn(t_id, 2, "SELL", true, QTABLE_INT_TYPE, 10);
AddColumn(t_id, 3, "Дельта V", true, QTABLE_INT_TYPE, 10);
AddColumn(t_id, 4, "AVG Цена", true, QTABLE_DOUBLE_TYPE, 15);
AddColumn(t_id, 5, "Накопленная Дельта", true, QTABLE_INT_TYPE, 15);
AddColumn(t_id, 6, "Кол-во сделок", true, QTABLE_DOUBLE_TYPE, 12);
tab = CreateWindow(t_id);
local NAME = tostring(getParamEx(CLASS_CODE,TICER,"LONGNAME").param_image);
SetWindowCaption(t_id, TICER.." ("..NAME..") Баланс покупок/продаж");
SetTableNotificationCallback(t_id, EventCallBack);
end
function Calc(alltrade)
if bit.test(alltrade.flags, 0) then VSELL = VSELL+alltrade.qty; --Продажа
else VBUY = VBUY+alltrade.qty; end
CountTrans = CountTrans+1;
PriceTrans = PriceTrans+alltrade.price;
end
function OnAllTrade(alltrade)
if alltrade.sec_code == TICER then
local Rows, Col = GetTableSize(t_id);
if H==-1 or H~= alltrade.datetime.hour then
H = alltrade.datetime.hour;
M = alltrade.datetime.min;
t = tostring(alltrade.datetime.hour)..":"..tostring(alltrade.datetime.min);
end
if M==alltrade.datetime.min then
Calc(alltrade);
else
M=alltrade.datetime.min;
InsertRow(t_id, -1);
local Delta = VBUY-VSELL;
Price = PriceTrans/CountTrans;
SetCell(t_id, Rows, 6, tostring(CountTrans));
SetCell(t_id, Rows, 0, t);
SetCell(t_id, Rows, 1, tostring(VBUY));
SetCell(t_id, Rows, 2, tostring(VSELL));
SetCell(t_id, Rows, 3, tostring(Delta));
local SEC_SCALE = tostring(getParamEx(CLASS_CODE,TICER,"SEC_SCALE").param_value);
SEC_SCALE = string.format("%.0f",SEC_SCALE);
SetCell(t_id, Rows, 4, string.format("%."..SEC_SCALE.."f", tostring(Price)));
if Rows>=2 then
local OldPrice = tonumber(GetCell(t_id,Rows-1,4).image);
if OldPrice>Price then
Red(Rows,4);
else
Green(Rows,4);
end
CDelta = tonumber(GetCell(t_id,Rows-1,5).image);
CDelta = CDelta + Delta;
else
CDelta = Delta;
end
SetCell(t_id, Rows, 5, tostring(CDelta));
if Delta<0 then Red(Rows,3); end
if Delta>0 then Green(Rows,3); end
if CDelta<0 then Red(Rows,5); end
if CDelta>0 then Green(Rows,5); end
if save then
local Str = tostring(H)..";"..tostring(M)..";"..tostring(VBUY)..";"..tostring(VSELL)..";"
..tostring(Delta)..";"..tostring(Price)..";"..tostring(CDelta);
Str=Str.."\n";
SaveFile(Str);
end
t = tostring(alltrade.datetime.hour)..":"..tostring(alltrade.datetime.min);
VBUY = 0;VSELL = 0;
PriceTrans = 0;
CountTrans = 0;
Calc(alltrade);
end
end --if alltrade.sec_code == TICER then
end
function SaveFile(Str)
if f ~= nil then
f:write(Str);
f:flush();
end
end
function Red(row,col)
SetColor(t_id, row, col, RGB(255,0,0), RGB(0,0,0), RGB(255,0,0), RGB(0,0,0));
end
function Yellow(row,col)
SetColor(t_id, row, col, RGB(240,240,0), RGB(0,0,0), RGB(240,240,0), RGB(0,0,0));
end
function Green(row,col)
SetColor(t_id, row, col, RGB(0,200,0), RGB(0,0,0), RGB(0,200,0), RGB(0,0,0));
end
function EventCallBack(t_id, msg, par1, par2)
if msg==QTABLE_CLOSE then
OnStop();
end;
end
function OnStop(s)
if f ~= nil then f:close(); end
if t_id ~= nil then
DestroyTable (t_id);
end;
stopped = true;
end




Дивиденды не учитываются изза того, что ещё не закончена разработка раздела Смартлаба «Портфель»
Рассмотрим операционные показатели ММК, а также попробуем спрогнозировать финансовые результаты компании.
В целом объем производства стабилен. Отдельно можно отметить, что производство концентрата продолжает восстанавливаться.

Средневзвешенная цена реализации 1-ой тонны стальной продукции снизилась с 616 долларов США до 534 по сравнению с 3-им кварталом 2019 года, то есть снижение составило на 13,4%. По сравнению с 4-ым кварталом 2018 года цена в долларах снизилась на 7,8%.
В рублях средневзвешенная цена реализации снизилась с 39,8 тыс. руб. до 34,0 по сравнению с 3-им кварталом 2019 года, то есть на 14,6%. При этом по сравнению с 4-ым кварталом 2018 года цены снизились с 38,5 тыс. руб. до 34,0 то есть на 11,7%.
В целом картина по ценам реализации схожа с динамикой цен Северстали.

Всем добрый день!
Решил скопипастить сюда свою статью с другого форума.
Занимаюсь на бирже в основном алгоритмической торговлей и экспериментами с торговым роботом. В связи с наличием выходного и скуки расскажу про один из алгоритмов для начинающих. Данный опус может использоваться не только в автоматической торговле, но рассматривается с этой позиции.
Каждый из нас в начале торгового пути слышал фразу «Не торговать против тренда!». Потом новичок убеждался, что если торговать только по тренду много не заработаешь и частенько попадаешь на раздачу. Потом, наслушавшись советов мудрых товарищей на форумах, жадность берет свое и начинается вход в позицию и, что гораздо хуже, усреднение без оглядки на тренд. Результаты как правило плачевные: «Кавалергарда век не долог...»©. И таки что, торговать против тренда нельзя? Можно! Это было предисловие.
Итак, для того что бы использовать в торговле тренд надо для начала его измерить. Начинаем собственно с рисования линии тренда любым способом, хоть вручную (сам я ее не рисую, расчетов достаточно). Для удобства рассмотрения будем считать за линию краткосрочного тренда линию индикатора EMA9 на графике цены дневного таймфрема. А почему нет?