Избранное трейдера Ынвестор
str='C:\\curl-7.63.0-win64-mingw\\bin\\curl.exe --socks5 127.0.0.1:9150 '
str=str..'"https://api.telegram.org/botидентификаторвашегобота/sendMessage?chat_id=айдивашегоаккаунта&text='
str=str..переменная1..": "..переменная2
str=str..'"'
os.execute(str)
Приведенный код будет слать в телеграм значения двух переменных, разделенных двоеточием.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
Все мы знаем, что зарубежные брокеры не являются налоговыми агентами в РФ, соответственно, отчитываться по доходам и платить налоги с них мы должны самостоятельно. Вопрос отчитываться или нет у меня не стоял, поэтому, чтобы не тратить каждый год уйму времени на достаточно трудоемкие расчеты, я написал скрипт, который берет отчеты Interactive Brokers и формирует на основе них пояснительную записку со всеми пояснениями и расчетами для налоговой. Вам останется только приложить этот файл к декларации 3-НДФЛ, а в нее саму внести лишь два пункта (см. ниже).
Ограничения по применениюПоскольку я занимаюсь долгосрочными инвестициями, я не использую такие инструменты, как фьючерсы, опционы, а также никогда не использую плечо и сделки SHORT. В связи с этим, такие операции скриптом не поддерживаются. Если у кого-то есть желание — могут дописать сами.
Подготовка к использованиюВсем привет!
Сегодняшнюю тему «Бэнкинг не-по-Русски» я бы хотел посвятить разбору потенциальных рисков и возможных проблем которые получает или может получить Россиянин, налоговый и валютный резидент РФ, открывая и активно торгуя через иностранного брокера.
У отдельной категории смартлабовчан почему-то сложилось, спорное на мой взгляд, мнение, что брокерский счет нужно открывать исключительно за рубежом, а в России все плохо/все брокеры отстой/все кухни и банки всех кинут. Ну и так далее в зависимости от глубины «Россиянофобства».
Давайте же объективно разберем плюсы и минусы использования зарубежного брокерского счета.
Начнем с того, что для того чтоб его открыть нужно пройти нехилый такой компленс у брокера, заполнить кучу форм и анкет, указав там в т.ч. и источники доходов и место работы (ниже поясню в чем тут подвох)
Допустим прошли Вы этот этап успешно, зачет — и прислали Вам кипу бумаг на подпись и реквизиты для пополнения своего нового брокерского счета.
тут маленькая ремарка — существуют два принципиально разных типа представления таких реквизитов — один в виде отдельного IBAN
На СмарЛабе появился отличный автор — Eugene Logunov и его друг KarL$oH. Если бы тут был бы еще и Блек Шоулз, то мы, конечно, его забанили. Потому что он не работает. Ну у кого то работает у кого то нет. Самое обидное, что вроде пишешь, хочешь объяснить, но чукчи ведь тоже писатели. Тем не менее, давайте разберемся.
Для простоты картины возьмем простой пример, который можно посчитать в уме или в уме эксела. Есть БА ценой 1000 который движется в течении 30 дней. Один день растет на 0,015 лог приращения, другой день падает на -0,01. Такое простое поступательное движение. Не трудно догадаться, что через 30 дней он будет в плюсе на 0,075 и если взять экспоненту -1, то в процентах это будет 0,0778% от начальной 1000. Теперь нам надо посчитать стоимость опциона, что бы продать его кому ни будь или что бы нас просто не поимели.
Измеряем волатильность как описано в измерители волатильности. Сразу скажу, что это будет 0,0129 и нормируем на время 362^0.5, итого годовая 0,246. 30 дней до экспари 30/362=0,0828 и если корень извлечь 0,287. Подставляем это все в БШ. Надеюсь, что у продвинутой публики будет какой ни будь калькулятор опционов, что бы все это подставить и получить 28,33. Я по простому и приблизительно: 0,4*0,246*1000*0,287=28,40 и это премия опциона на ЦС. И так как мы знаем конечную цену через 30 дней, то легко сосчитаем, что у нас получится. Нам отгрузят БА по 1000 при цене 1077,8, то есть 77,8 в плюс и спишут цену (премию) опциона 28.4 = 49,4.