Избранное трейдера Строгий бык
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


Дивиденды не учитываются изза того, что ещё не закончена разработка раздела Смартлаба «Портфель»
USD/#RUB
Таймфрейм: 4H
Пользуясь случаем, хочу поздравить всех с началом долгожданной вами (не мной) девальвации национальной валюты: https://vk.com/wall-124328009_15275. Сейчас уже наверняка можно говорить о том, что (двойной) зигзаг от сентября 2018-го года завершен и начался аптренд. Поэтому я веду два сонаправленых до области зелёных фиб с первого рисунка подсчета. Приоритет не отдаю ни одному из них, расцениваю вероятность реализации каждого в 50%.
Первый предполагает, что сейчас формируется волна (d) треугольника [y] of «2». Именно для неё примерные цели я изобразил на первом графике зелёными фибами. После (d) рынок ждёт ещё волна (e) +- к текущим значениям, и только потом начнется грандиозный по своим масштабам (скорость и сила должна быть выше, чем в 2014 году) обвал.
Второй подсчет же (по счету, не по значимости) говорит, что обвал уже начался, и нас в ближайшие месяцы ждут пятизначные числа на табло обменников.

как и обещал — рассказываю о своих Базовых принципах торговли. Почему «Базовые» — спросите Вы? Потому что помимо них еще есть дополнительные, которые помогают более точно определять точку входа и выхода из сделки. Именно выхода, во множественном числе! Здесь все просто: я являюсь сторонником довольно популярного подхода по управлению открытыми сделками — использую правило «Сейфа». Это не моя разработка, но я её применяю, исходя из своих принципов и расчетов, однако об этом в следующей статье, а сейчас давайте вернемся к самой торговой системе.
Название «К.У.С.К.У.С.» — как Вы могли догадаться, это аббревиатура. Обозначает она следующее:
К — контрдвижение
У — уровень
С — структура
Вторая часть К.У.С — это ПЕРЕПРОВЕРКА первичных расчетов.
Желательно, если Вы производили первичный теханализ на сотовом, то перепроверять его лучше на ноутбуке или PC (и наоборот), чтобы «не замыливался глаз».
Да, и ПРАВИЛО ВСЕХ ПРАВИЛ — пока ВЫ НЕ ПРОИЗВЕЛИ ТЕХАНАЛИЗ НА ГРАФИКЕ, ТО ЕСТЬ НЕ ПОСТРОИЛИ ТРЕНДОВЫЕ ЛИНИИ, НАНЕСЛИ ГОРИЗОНТАЛЬНЫЕ УРОВНИ— СДЕЛКУ НЕ ОТКРЫВАЕМ.
Больше половины убыточных сделок Вы сможете отсекать на этапе проведения ТЕХАНАЛИЗА. Небольшая ремарка.