Интересная опция появилась - показывать на графике не все свечи, а только последние 100 (200,300) штук. Но не могу сообразить, что эта опция экономит, позволяет ли она оптимизировать работу процессора, квика, трафик интернета? Что она экономит? У меня робот прочёсывает около 150 графиков, все они открыты на полную катушку, думаю мне эта опция пригодится, но прошу разъяснить, что же всё таки она даёт в плане производительности?
Один квик для двух брокеров
Пользователь
Сообщений: Регистрация: 05.02.2015
25.07.2016 21:17:45
Это очень плохо...
Один квик для двух брокеров
Пользователь
Сообщений: Регистрация: 05.02.2015
25.07.2016 15:26:48
Да, про одновременную. Чтобы с одного квика шарашить одновременно на двух брокерах.
Один квик для двух брокеров
Пользователь
Сообщений: Регистрация: 05.02.2015
25.07.2016 14:13:24
Здравствуйте. Можно ли настроить внутри одного КВИКа работу с двумя (тремя) разными брокерами? Спасибо.
запуск робота при запуске квика
Пользователь
Сообщений: Регистрация: 05.02.2015
29.06.2016 16:34:12
Спасибо за ответы! Но они разные. Что скажут разработчики? Сохранятся ли изменившиеся переменные в памяти при уходе в гибернацию? П.С. Для меня это ООООчень важно. Заранее спасибо.
запуск робота при запуске квика
Пользователь
Сообщений: Регистрация: 05.02.2015
24.06.2016 22:25:11
А если компьютер на ночь уходил в гибернацию без выключения КВИКА, а утром ожил? Запомнятся ли переменные и будет ли читаться код до функции main?
запуск робота при запуске квика
Пользователь
Сообщений: Регистрация: 05.02.2015
24.06.2016 11:11:45
Вопросы в продолжение этой темы. Вечером комп выключается. Утром включается. Роботы самозапустились (зелёные треугольники). Вопрос 1 С какого места начинает работать робот? С Функции Main или он читает и исполняет код с самого начала (до функции main)?
Вопрос 2. Помнит ли робот переменные, которые поменялись в ходе его работы? Ну например переменная flag имеет первоначальное значение 0, но стала иметь значение 1 в ходе работы скрипта. Какое у неё будет значение в моём случае - 0 или 1?
запуск робота при запуске квика
Пользователь
Сообщений: Регистрация: 05.02.2015
12.05.2016 15:08:22
Николай, но при это внизу нет никаких ошибок. Выглядит как незапущенный скрипт, вот так
запуск робота при запуске квика
Пользователь
Сообщений: Регистрация: 05.02.2015
12.05.2016 09:18:20
здравствуйте почему при утреннем запуске КВИКа какие то роботы само-запускаются, а какие то нет? от чего это зависит? вот пример:
Sleep (1) приводит к бОльшим задержкам чем 1 мс.
Пользователь
Сообщений: Регистрация: 05.02.2015
11.04.2016 17:42:28
ок но Ваш ответ о другом у меня вопрос почему при проходе 61 акции sleep (1) даёт задержку не 61 миллисекунда, а гораздо больше.
Sleep (1) приводит к бОльшим задержкам чем 1 мс.
Пользователь
Сообщений: Регистрация: 05.02.2015
11.04.2016 17:33:50
не понял Вашу мысль переформулируйте пожалуйста по простому, для не программиста.
Sleep (1) приводит к бОльшим задержкам чем 1 мс.
Пользователь
Сообщений: Регистрация: 05.02.2015
11.04.2016 17:04:05
Странная особенность у функции sleep с параметром 1 миллисекунда.
в ticker_list 61 акция ММВБ
Код
for sec in string.gmatch(ticker_list,"%a+") do
без sleep (1)
скрипт
end
начало первого прохода всех акций в тикер листе 04/11/16 16:50:11,109 начало второго прохода всех акий в тикер листе 04/11/16 16:50:11,296
Итого 187 миллисекунд
теперь то же самое, но уже со sleep (1)
Код
for sec in string.gmatch(ticker_list,"%a+") do
sleep (1)
скрипт
end
04/11/16 17:00:52,687 04/11/16 17:00:53,640
разница ПОЧТИ секунда!
откуда она берётся?
Экспорт графиков в Эксель
Пользователь
Сообщений: Регистрация: 05.02.2015
08.04.2016 18:54:09
Здравствуйте. Подскажите пожалуйста как экспортировать данные графика в эксель. Речь идёт не о банальном "Сохранить данные в файл", а о настройке непрерываного он-лайн экспорта. Спасибо за ответ.
Снятие каждой десятой заявки
Пользователь
Сообщений: Регистрация: 05.02.2015
02.04.2016 00:33:52
Спасибо. Сделал так:
Код
function FreeMoney ()
dofile("C:\\variables.lua")
i=0
for sec in string.gmatch(ticker_list,"%a+") do
sleep (1)
ostatok=math.mod(i/5)
if ostatok=0 then
table_mask={}
table_mask.seccode=sec
killAllOrders(table_mask)
i=i+1
end
end
end
Снятие каждой десятой заявки
Пользователь
Сообщений: Регистрация: 05.02.2015
31.03.2016 17:01:48
Помогите пожалуйста переделать эту функцию, чтобы она снимала не все активные заявки, а каждую пятую активную заявку. Спасибо
Это нужно чтобы когда засигналит соседний робот, эта функция сняла не все, а часть этих заявок, чтобы освободить немного денег.
Код
function killAllOrders(table_mask)
-- данная функция отправит транзакции на отмену АКТИВНЫХ заявок соответствующим фильтру указанному как входящий параметр table_mask
-- список всех возможных параметров : ACCOUNT,CLASSCODE,SECCODE,OPERATION,CLIENT_CODE,COMMENT
-- если вызвать функцию с параметром nil - снимутся ВСЕ активные заявки
local i,key,val,result_num=0,0,0,0
local tokill=true
local row={}
local result_str=""
for i=0,getNumberOf("orders")-1,1 do
row=getItem("orders",i)
tokill=false
--toLog(log,"Row "..i.." onum="..row.order_num)
if orderflags2table(row.flags).active then
tokill=true
--toLog(log,"acitve")
if table_mask~=nil then
for key,val in pairs(table_mask) do
--toLog(log,"check key="..key.." val="..val)
--toLog(log,"strlowe="..string.lower(key).." row="..row[string.lower(key)].." tbl="..val)
if string_lower(key)=='comment' then
if string_find(string_lower(row.brokerref),string_lower(val))==nil then tokill=false break end
else
if row[string_lower(key)]~=val then tokill=false break end
end
end
end
end
if tokill then
--toLog(log,"kill onum"..row.order_num)
res,ms=killOrder(tostring(row.order_num),row[securityfiledname],row.class_code)
result_num=result_num+1
--toLog(log,ms)
if res then
result_str=result_str..row.order_num..","
else
result_str=result_str.."!"..row.order_num..","
end
end
end
return true,"QL.killAllOrders(): Sended "..result_num.." transactions. order_nums:"..result_str
end
Слетают настройки приёма данных
Пользователь
Сообщений: Регистрация: 05.02.2015
31.03.2016 11:21:37
в каком файле хранится информация об этих выставленных параметрах? Я его буду отдельно сохранять и потом копировать в папку Front
Слетают настройки приёма данных
Пользователь
Сообщений: Регистрация: 05.02.2015
31.03.2016 11:04:58
Проблема проявилась после Перезаказать данные. Все птички возле рынков выставились, фильтры инструментов и параметров убрались.
Слетают настройки приёма данных
Пользователь
Сообщений: Регистрация: 05.02.2015
30.03.2016 20:01:45
Чтобы дать точную информацию, я дождусь следующего появления проблемы и опишу при каких условиях она возникла. По определённым причинам я не могу просто так брать и перезапускать КВИК когда захочу ради тестов.
Слетают настройки приёма данных
Пользователь
Сообщений: Регистрация: 05.02.2015
29.03.2016 21:24:04
Версия 7.1.0
Слетают настройки приёма данных
Пользователь
Сообщений: Регистрация: 05.02.2015
29.03.2016 18:46:53
Здравствуйте. Всё время слетают настройки приёма данных. Работаю-работаю. Потом перезапустил квик, и снова все птички стоят, все ненужные данные принимаются. Как с этим бороться?
Посоветуйте как повысить надёжность сбережения этих настроек. Может быть они лежат в каком то особом дат файле, его можно сохранить и если слетели настройки приёма данных, то подцепить сохранённый файл.
время сервера
Пользователь
Сообщений: Регистрация: 05.02.2015
29.03.2016 09:53:56
Михаил, спасибо. Помогло
время сервера
Пользователь
Сообщений: Регистрация: 05.02.2015
28.03.2016 20:12:46
Операционная система Windows Server 2003
время сервера
Пользователь
Сообщений: Регистрация: 05.02.2015
28.03.2016 19:47:29
внезапно стало отображаться время сервера в формате 5:07:22 PM Раньше было 17:07:22 Это сбило всю работу робота так как он брал время сервера. Это настраивается в КВИКе или у брокера?
Стало так:
Как вернуть чтобы было так:
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 05.02.2015
22.02.2016 19:41:06
Николай, спасибо! Раскройте пожалуйста термин "очередь сигналов"
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 05.02.2015
21.02.2016 20:26:38
попробую запихнуть проверку статуса в колбек. Тогда он будет реагировать на каждую сделку, даже если они пришли одновременно.
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 05.02.2015
20.02.2016 19:20:39
а вот - красота - всё сработало как надо (тоже сегодня)
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 05.02.2015
20.02.2016 19:17:33
Цитата
Николай Камынин написал: а почему Вы решили, что меньше сигналов - это неправильно? возможно у вас коридор для болинджера большой задан для текущего рынка.
всегда был такой коридор. Я имел в виду, что в новом брокере чересчур много случаев, когда визуально график опустился ниже нижней линии боллинджера (или поднялся выше верхней), а заявка не отправилась. Вот свеженький пример:
должна была выставиться заявка на продажу, а её не было. И в таблице Транзакций никаких попыток зашортить Сбер не было. Я не понимаю почему.
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 05.02.2015
20.02.2016 18:31:20
Цитата
Николай Камынин написал: Вы используете сделку и заявку Вы именно так хотите?
Раньше - торгуя в БКС - было так: если бид из ТТП опускается ниже нижней линии Боллинджера, робот выставляет заявку на покупку (лучшим бидом). Когда я понял, что на новом брокере - Неттрейдер - у меня раза в три меньше срабатываний, чем в БКС, то начал экспериментировать. Сейчас робот отсылает заявку если ИЛИ цена сделки из ТВС опускается ниже нижней линии Боллинджера, ИЛИ бид из стакана опускается ниже нижней линии Боллинджера. И то, и то меня устраивает с точки зрения точки входа: купить, если цена поцеловалась с нижней линией Боллинджера.
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 05.02.2015
20.02.2016 16:28:13
Цитата
Николай Камынин написал: вернее сказать ошибка в алгоритме функции пересечения
Код
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 - это нижняя и верхняя линии Боллинджера.
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 05.02.2015
19.02.2016 23:51:57
Я тоже думал о том, чтобы присвоить графику идентификатор, и сравнивать значение свечки CLOSE с Боллинджером, но потом решил что с коллбеком будет быстрее и реализовал через колбек.
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 05.02.2015
19.02.2016 23:46:34
Вот и я думаю, что заявки должны отсылаться, пусть даже с опозданием. Но на практике очень часто не бывает срабатываний. Снижение цены под Боллинджера есть, а заявка не выставляется. вот пример.
(при этом много случаев, когда робот молодец и всё сработало как надо)
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 05.02.2015
19.02.2016 18:41:04
Николай, спасибо что помогаете. Тогда такой вопрос. Ответ для меня очень важен. Станет понятно почему у моего робота после перехода на нового брокера стало мало срабатываний. Это и стало причиной, почему я встревожился и задал вопрос на этом форуме.
Вот пример сделки, которую заключил робот:
КУПИТЬ, если цена опустилась ниже нижней линии Боллинджера. Данные о сделках берутся коллбеком из таблицы обезличенных сделок (ТВС).
Итак, вопрос: Если у брокера тормозной сервер, а у меня тормозной интернет, то при наступлении точки входа, отправит ли робот заявку, пусть даже с опозданием? Или возможен вариант, что точка входа была, робот завтыкал, за эти миллисекунды точка входа прошла, и заявка отправлена не будет? Заранее спасибо. Ответ на этот вопрос даст мне очень многое.
П.С. Моё личное мнение: робот должен выставить заявку, даже с опозданием, ведь в Таблице обезличенных сделок появится запись, которую он обработает.
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 05.02.2015
16.02.2016 18:43:44
Цитата
Николай Камынин написал: а как вы управляете терминалом КВИК. Он у Вас на сервере брокера?
через RDP
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 05.02.2015
16.02.2016 18:29:28
Цитата
Николай Камынин написал: Похоже что в киеве. С первого взгляда выгоды от виртуалки почти нет. Я такие параметры получаю на своем компе(но не у всякого брокера). Есть брокеры у которых сервера тормозятся сильно. А где будет комп?
Дома в Симферополе.
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 05.02.2015
16.02.2016 10:52:34
виртуалка в 10-00 (она стоит в Киеве, поэтому время на час назад)
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 05.02.2015
16.02.2016 10:51:42
виртуалка в 10-00
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 05.02.2015
15.02.2016 18:08:10
Николай, то есть нынешний вариант - виртуалка у брокера - даже имеет реальные недостатки по сравнению с ноутбуком? (при условии что интернет везде одинаково хорош)
Переезд на вот такой ноутбук будет ли равнозначным?
У вас робот с типа высокочастотной торговлей или открываете позицию - и на неделю? если первое - то, как было сказано, основное - это каналы связи, а не железо.
он не ХФТ, но требует быстрой реакции.
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 05.02.2015
14.02.2016 17:53:24
Николай, спасибо. Тогда уточняющий вопрос. Какое железо лучше: виртуалка у брокера сейчас такая
Переезд на вот такой ноутбук будет ли равнозначным?
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 05.02.2015
13.02.2016 10:52:17
Господа, прошу давать конструктивные ответы в рамках заданного вопроса. Без советов "потестировать" и "нужен быстрый интернет" я вполне обойдусь. Спасибо.
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 05.02.2015
13.02.2016 03:10:59
Добрый день. Торгую роботом на минутках. Скорость срабатывания очень важна. Точка входа может длиться доли секунды, за которые робот должен успеть выставить заявку. В связи с этим вопрос. Какое должно быть железо у компьютера, чтобы роботу комфортно торговалось? Сейчас я пользуюсь виртуальным сервером брокера, но планирую переехать на обычный ноутбук и торговать с него. Других программ на ноутбуке не будет. Только КВИК. Робот на Lua. Работает с таблицей всех сделок и таблицей текущих торгов.
Вот параметры ноутбука. Достаточно ли их? Celeron ® Dual Core CPU T 3100 1,9 GHz ОЗУ 2 ГБ
Как бороться с файлом alltrade.dat
Пользователь
Сообщений: Регистрация: 05.02.2015
06.02.2016 01:42:42
За неделю файл alltrade.dat разросся до 130 мегабайт. Есть ли в 7 версии КВИКа способы как то с этим бороться? Или только вручную удалить?
Можно ли не открывать таблицы при работе с Луа
Пользователь
Сообщений: Регистрация: 05.02.2015
05.02.2016 17:52:54
Что значит по хорошему? Я добавил только один столбец, а принимаются все которые нужны
Можно ли не открывать таблицы при работе с Луа
Пользователь
Сообщений: Регистрация: 05.02.2015
05.02.2016 17:42:39
Эти таблицы достаточно просто открыть, или нужно добавлять в них те столбцы, которые мне нужны?
Можно ли не открывать таблицы при работе с Луа
Пользователь
Сообщений: Регистрация: 05.02.2015
05.02.2016 17:16:44
Добрый день Есть ли способ работы с коллбеками OnParam, OnAllTrade, не открывая таблицу Текущих торгов и таблицу обезличенных сделок? Спасибо.
В новой версии перестала работать функция
Пользователь
Сообщений: Регистрация: 05.02.2015
04.02.2016 15:27:14
если поставить row=getItem("orders",i-1) то функция начинает работать Вы что то поменяли в новых версиях в учёте строк в таблице заявок?
В новой версии перестала работать функция
Пользователь
Сообщений: Регистрация: 05.02.2015
04.02.2016 14:50:06
В этом виде функция работает в версии 6.14. Когда обновил до 6.17, она перестала работать. В версии 7 - тоже не работает. Ошибка: attempt to index local row (a nil value) Стоит откатить КВИК до версии 6.14, всё работает безукоризненно. Функция на входе принимает цену и объём котировки из стакана
Код
function is_it_my_quote(price_from_glass, volume_from_glass, sec)
local row
for i=getNumberOf("orders"),getNumberOf("orders")-orders_threshold,-1 do
row=getItem("orders",i)
if row.seccode==sec and row.price==price_from_glass and orderflags2table(row.flags).active then
if row.balance==volume_from_glass then
return true,true
else
return true,false
end
end
end
return false,false
end
Как эффективнее разгрузить КВИК
Пользователь
Сообщений: Регистрация: 05.02.2015
21.01.2016 00:03:22
Сергей Горохов, это правда то, что написал Николай Камынин? Неужели и в таблицу всех сделок данные заезжают срезами?
Как эффективнее разгрузить КВИК
Пользователь
Сообщений: Регистрация: 05.02.2015
19.01.2016 14:05:58
Николай Камынин,не понял Вас мне брокер выключил все лишние классы. Теперь вот так:
ТВС мне нужна, так как я отслеживаю цену последней сделки. ТТП не подходит, так как мой брокер обновляет её раз в 50 миллисекунд.
И ещё. Если в ТВС фильтром Редактировать таблицу оставить только 1 бумагу - ОГК-2 например. А все остальные акции останутся включенными в Связь - Заказ всех сделок. То.... коллбэк будет по прежнему находить сделки по всем акциям?
Как эффективнее разгрузить КВИК
Пользователь
Сообщений: Регистрация: 05.02.2015
16.01.2016 11:15:50
Здравствуйте. Я торгую роботом на акциях ММВБ, фортс мне не нужен. Работаю с таблицей всех сделок - коллбек OnAllTrades Как эффективнее разгрузить КВИК от ненужных данных рынка фортс?
1. Попросить брокера на своей стороне выключить мне рынок ФОРТС? 2. Убрать птички в Связь - Списки и Связь - Заказ всех сделок?
Во второму случае - как мне кажется - квик должен делать дополнительную работу - проверять сделку принадлежит она к ММВБ или ФОРТС и в зависимости от этого транслировать её или отфутболивать. Лишняя вычислительная нагрузка. Значит первый вариант лучше?