Избранное трейдера Ынвестор
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.