Избранное трейдера V.V.
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
Предыдущие части опубликованы вчера, доступны по ссылке:
0. Введение
1. Торговля с помощью робота
2. Какие торговые системы можно торговать роботом
3. Какие инструменты годятся для торговли роботом, диверсификация
4. Выбор индикаторов и их параметров для системы
5. Как построить торговую систему на тестах исторических данных
6. Психологические аспекты торговли роботом
7. Выводы кратко
2. Какие торговые системы можно торговать роботом
Есть несколько принципов на которых основана робота торговых роботов. Можно выделить следующие категории: HFT роботы – высокочастотные роботы, расположенные близко к бирже, имеющие сложную техническую инфраструктуру. Эта категория роботов борется за каждую миллисекунду в скорости получения информации с биржи и выставлении заявки. Они зарабатывают прибыль на неэффективностях рынка, обгоняя в скорости человека и других роботов, зарабатывая в каждой сделке относительно небольшую сумму, но совершая большое количество сделок. Конкурировать в домашних условиях в этой категории роботов проблематично.
Доброго времени суток, господа!
М-да… Вся лента забита новостями: коронавирус, нефть-матушка, кризис...
А где же будоражащие душу исследования, напрямую ведущие к Граалю? Нетути… Нетути Грааля аль, все ж таки, есть?
Продолжим путешествие в мир случайности/закономерности рыночных временных рядов с целью узреть Свет и Счастие для всех страждущих.
В предыдущих частях проекта:
https://smart-lab.ru/blog/579572.php
https://smart-lab.ru/blog/580961.php
https://smart-lab.ru/blog/582407.php
мы убедились, что заработать на теоретических случайных процессах («монетка», Laplace motion, ...) довольно просто. Пользуемся тем фактом, что сумма независимых или слабозависимых случайных величин (приращений) дает число, принадлежащее нормальному распределению Гаусса и при выходе текущей кумулятивной суммы за пределы диапазона +-Delta*1.96, где Delta = sqrt(2*(b^2)*t), заключаем сделки, а при возврате в 0 — закрываем их. Дело сделано...
Уже и не знаю, сколько раз это было написано, в том числе и здесь, но повторю еще раз.Торгуя опционы, Вы торгуете гамму и вегу. Т.е., прогнозируете будущую волатильность базового актива и IV. Тета — это просто последствия Вашей гамма-ставки.Если ставите на то, что в ближайшие n-дней диапазон движения актива будет меньше, чем за последние n-дней, то создаете позицию с отрицательной гаммой. Соответственно, тета позиции будет положительной.
Инвестиции без границ. Как получить доступ к иностранным биржам из России (и других стран, их много)
Акции иностранных компаний обеспечивают более высокую доходность, чем российские бумаги, причем в твердой валюте. Кто может обеспечить доступ на зарубежные рынки и в какую сумму это обойдется?
Для примера:
В РФ на Московской бирже всего около 300 компаний.
И для сравнения в США, на крупнейших биржах NYSE и NASDAQ
Более 6000 компаний. И это две биржи из США. А их там несколько.
Плюс еще более 100 рынков по всему миру. Ну и компаний тоже представьте сколько?
Глобальные рынки акций по-прежнему привлекательнее с точки зрения доходности, чем российский рынок.
Также помните, уже писал про ETF фонды:
Биржевые ETF-фонды: как работают, как инвестировать в ETF, риски и возможный доход, рекомендации
https://smart-lab.ru/blog/605103.php
Далее.
Напомню, Линейка доступных инструментов также несопоставима с отечественным рынком. «На Московской бирже торгуются 283 акции и расписки. Для сравнения: на рынке акций США — более 6000 бумаг, на европейском рынке — более 4000, в Китае — более 3000»
Откуда я черпаю информацию?
Есть несколько источников: интернет-сайты, телеграмм-каналы, приложения, радио, Твиттер, Instagram, Research банков, TV. Все источники должны работать на вас 24 часа в сутки.
Сайты:
Надо понимать: российские ресурсы очень слабые. Их недостаточно. Новости в них рассчитаны на широкую массу, они запаздывают. Поэтому нужно учить английский. Это