Добрый день. Торгую роботом на минутках. Скорость срабатывания очень важна. Точка входа может длиться доли секунды, за которые робот должен успеть выставить заявку. В связи с этим вопрос. Какое должно быть железо у компьютера, чтобы роботу комфортно торговалось? Сейчас я пользуюсь виртуальным сервером брокера, но планирую переехать на обычный ноутбук и торговать с него. Других программ на ноутбуке не будет. Только КВИК. Робот на Lua. Работает с таблицей всех сделок и таблицей текущих торгов.
Вот параметры ноутбука. Достаточно ли их? Celeron ® Dual Core CPU T 3100 1,9 GHz ОЗУ 2 ГБ
Господа, прошу давать конструктивные ответы в рамках заданного вопроса. Без советов "потестировать" и "нужен быстрый интернет" я вполне обойдусь. Спасибо.
В принципе должно хватить. Главные затыки будут в Квике, Луа, ну и многое зависит от алгоритма робота - как быстро он работает (этот параметр нам не известен).
На указанном железе будет плохо. Если хотите очень хорошо, то робот надо ставить на удаленном выделенном железном сервере, в крайнем случае виртуальном, возможно как сейчас у Вас.
Переезд на вот такой ноутбук будет ли равнозначным?
У вас робот с типа высокочастотной торговлей или открываете позицию - и на неделю? если первое - то, как было сказано, основное - это каналы связи, а не железо.
Поясню еще раз. ----------------------- 1) Железо можно взять любое, лишь бы памяти не менее 2 Гб. На этом сервере у Вас 1.5 а пик более 1.5 т е бывает выгрузка на диск - это плохо. Поэтому памяти не менее 2. -------------------------- 2) сейчас у Вас квик у брокера в дата центре. сделайте в работающем КВИКЕ во 10:00, 12:00 и 21:00 информационное окно в расширенном варианте и покажите, тогда можно будет сказать конкретно на сколько хуже.
Переезд на вот такой ноутбук будет ли равнозначным?
У вас робот с типа высокочастотной торговлей или открываете позицию - и на неделю? если первое - то, как было сказано, основное - это каналы связи, а не железо.
Николай, то есть нынешний вариант - виртуалка у брокера - даже имеет реальные недостатки по сравнению с ноутбуком? (при условии что интернет везде одинаково хорош)
нашел у финама: до 30 транзакций в секунду примерно 5 т р в месяц + 5 т р установка + еще что-то для моего места нахождения обещают уменьшение задержки в 6 раз.
i3-i7, 8гиг, SSD, Win 7 64, если есть виз. библиотеки, то дискретная видеокарта. Хороший бот максимум за неделю отобьет цену своего коня. Инет оптика + резервный 3G-4G, переключатель программный, не роутером. У меня так, доволен, ни в каких дохлых виртуалках не нуждаюсь.
Похоже что в киеве. С первого взгляда выгоды от виртуалки почти нет. Я такие параметры получаю на своем компе(но не у всякого брокера). Есть брокеры у которых сервера тормозятся сильно. А где будет комп?
Николай Камынин написал: Похоже что в киеве. С первого взгляда выгоды от виртуалки почти нет. Я такие параметры получаю на своем компе(но не у всякого брокера). Есть брокеры у которых сервера тормозятся сильно. А где будет комп?
попробуйте из дома сделать пинг на ip брокера. Если сервер брокера не ответит то на московскую биржу и сравните с временем задержки ответа сервера В приведенной Вами картинки это 31 mc. если пинг у Вас будет меньше, то переход на свой комп будет работать также как сервером, иначе будет хуже.
Николай, спасибо что помогаете. Тогда такой вопрос. Ответ для меня очень важен. Станет понятно почему у моего робота после перехода на нового брокера стало мало срабатываний. Это и стало причиной, почему я встревожился и задал вопрос на этом форуме.
Итак, вопрос: Если у брокера тормозной сервер, а у меня тормозной интернет, то при наступлении точки входа, отправит ли робот заявку, пусть даже с опозданием? Или возможен вариант, что точка входа была, робот завтыкал, за эти миллисекунды точка входа прошла, и заявка отправлена не будет? Заранее спасибо. Ответ на этот вопрос даст мне очень многое.
П.С. Моё личное мнение: робот должен выставить заявку, даже с опозданием, ведь в Таблице обезличенных сделок появится запись, которую он обработает.
Полагаю, что в правильной программе выставление заявки по Вашему алгоритму не зависит от задержки общения с брокером. Если у Вас зависит, то ищите ошибки в логике программы. ------------------------ В качестве совета: Ваш алгоритм робота удобно реализовать в индикаторе (без заморочкой с колбеками и ТВС)
Вот и я думаю, что заявки должны отсылаться, пусть даже с опозданием. Но на практике очень часто не бывает срабатываний. Снижение цены под Боллинджера есть, а заявка не выставляется. http://i.imgur.com/fHRuwtY.jpg вот пример.
(при этом много случаев, когда робот молодец и всё сработало как надо)
Я тоже думал о том, чтобы присвоить графику идентификатор, и сравнивать значение свечки CLOSE с Боллинджером, но потом решил что с коллбеком будет быстрее и реализовал через колбек.
Хочу обратить Ваше внимание на тот факт, что в ТВС тики, а на графиках у Вас свечи. ------------------------------ Т е то, что вы реализовали это не то , что на графиках.
Николай Камынин написал: вернее сказать ошибка в алгоритме функции пересечения
Код
function OnAllTrade (alltrade)
if string.find(ticker_list,alltrade.sec_code)~=nil then
last_price[alltrade.sec_code]=alltrade.price
end
end
Код
function OnParam (class, sec)
if string.find(ticker_list,sec)~=nil then
tablebid=getParamEx(class, sec, "bid")
tableoffer=getParamEx(class, sec, "offer")
if bid_best[sec]~=tablebid.param_value then
bid_best[sec]=tonumber(toPrice(sec, tablebid.param_value))
end
if offer_best[sec]~=tableoffer.param_value then
offer_best[sec]=tonumber(toPrice(sec, tableoffer.param_value))
end
end
end
Внутри main идёт перебор 50 акций из тикер листа for sec in string.gmatch(ticker_list,"%a+") do
Код
if bid_best[sec]~=0 and offer_best[sec]~=0 and last_price[sec]~=0 then
if last_price[sec]<line_3 or bid_best[sec]<line_3 then
status="Fire_LONG"
elseif offer_best[sec]>line_2 or last_price[sec]>line_2 then
status="Fire_SHORT"
else
status="SPACE"
end
end
line_3 и line_2 - это нижняя и верхняя линии Боллинджера.
На картинках у Вас пересечение свечи с линией болинджера а в программе используется тик. ----------------------- свеча - это четыре индикатора вычисляемых по куче тиков. ----------------------------- поэтому то, что у Вас написано это совершенно не то, что Вы хотите (если смотреть на картинки) ------------------------------- Нарисуйте картинку тиков внутри свечи и посмотрите . Если хотите как на картинке то используйте свечи а не ТВС
и еще если я правильно понял, у Вас как-то странно проверяется пересечение. Вы используете сделку и заявку Вы именно так хотите? но тогда Ваш алгоритм вообще не соответствует картинке
Николай Камынин написал: Вы используете сделку и заявку Вы именно так хотите?
Раньше - торгуя в БКС - было так: если бид из ТТП опускается ниже нижней линии Боллинджера, робот выставляет заявку на покупку (лучшим бидом). Когда я понял, что на новом брокере - Неттрейдер - у меня раза в три меньше срабатываний, чем в БКС, то начал экспериментировать. Сейчас робот отсылает заявку если ИЛИ цена сделки из ТВС опускается ниже нижней линии Боллинджера, ИЛИ бид из стакана опускается ниже нижней линии Боллинджера. И то, и то меня устраивает с точки зрения точки входа: купить, если цена поцеловалась с нижней линией Боллинджера.
Николай Камынин написал: а почему Вы решили, что меньше сигналов - это неправильно? возможно у вас коридор для болинджера большой задан для текущего рынка.
всегда был такой коридор. Я имел в виду, что в новом брокере чересчур много случаев, когда визуально график опустился ниже нижней линии боллинджера (или поднялся выше верхней), а заявка не отправилась. Вот свеженький пример: http://i.imgur.com/TIiajov.jpg должна была выставиться заявка на продажу, а её не было. И в таблице Транзакций никаких попыток зашортить Сбер не было. Я не понимаю почему.
могу предположить следующее. Так как Вы пользуетесь колбеками , а они не синхронизируются то у Вас status успевает изменится туда и обратно до того момента, как Вы на него прореагируете
У БКС сервера работают медленно ( возможно так делают специально, чтобы на вип сервер подключались за денюшку, возможно старое железо, возможно клиентов много и сервер не справляется), короче реакция сервера медленная. Сейчас у нового брокера у Вас раз в 5 быстрее реакция сервера. В результате Вы сейчас просто не успеваете обрабатывать status и теряете сигнал. ----------------------------- Чем медленнее будет рынок, тем лучше у Вас будет срабатывание. -------------------------- Короче, проблема у Вас в потере сигналов status. Надо переделывать алгоритм обработки сигналов, либо работать со свечами. О чем уже писал ранее. --------------------------------- Чудес не бывает, но хочется в них верить.
дополню ранее сказанное. пропуски срабатываний у Вас будут всегда происходить по следующей причине. --------------------------------- Данные в ТВС приходят пакетами. Т е сделки следующие с малым интервалом друг за другом придут к Вам одновременно. ----------------------------------- При этом колбек будет срабатывать на них последовательно и непрерывно. Т е например две сделки совершены с интервалом 100 мс но пришили в одном пакете. колбек на них отреагирует два раза но с интервалом полагаю менее мс. Т е у Вас произойдет анализ статуса на обе сделки одновременно. Если первая изменит статус а вторая вернет его обратно, то Вы этот сигнал не увидите и заявку не выставите. -------------------------------------- Эту ошибку никаким железом не исправишь - это методическая ошибка (ошибка метода). Ее можно устранить лишь изменив алгоритм работы робота. Теперь вроде все.
проблема решается так: 1) создаем очередь сигналов пересечения 2) в колбеке ТВС каждое новое пересечение запихиваем в очередь 3) в функции main на каждый сигнал из очереди посылаем соответствующую транзакцию и сигнал убираем из очереди --------------------------------- Т е обработка колбеков должна осуществляться с помощью очередей. Я делаю в скриптах именно таким образом.