Я еще раз повторяю, мы не имеем права страивать в свой софт платные продукты сторонних компаний без урегулирования юридической стороны составляющей. И речь не о том "в состоянии" или "не в состоянии" а в согласовании вопросов обоих сторон. В конце концов автор этого индикатора может просто отказать нам в этом и все. Или заломить такую цену что целесообразность добавления конкретно этого индикатора будет не оправданной. И при чем тут программисты когда речь о юридической стороне вопроса?
Сергей, Если Вы уточните в чем именно отличие "позиций" то можно.
В идеале, если Вы хотите чтобы два робота торговали по разному, то и счета для них должны быть разными если счет один, то они в любом случае будут пересекаться. Банально например один робот все продал, и второму уже не досталось. Поэтому нужно четко понимать в чем должна быть разница между "позициями"
Здравствуйте, Если купить 1 бумажку за 10р потом купить вторую, точно такую же за 11р а потом третью, опять же ничем не отличающуюся, но по 12р. итого получится 3 бумажки за 10+11+12=33 рубля. то есть со средней ценой приобретения 1бумажка=11р так как бумажки абсолютно одинаковые, нет разницы какую потом продавать чтобы остаться в плюсе. Главное чтобы цена была выше 11р за бумажку.
Зависает Квик при запуске скрипта передачи данных под Win10, При апгрейде Win 7 и 8 до Win 10 возникла проблема - квик зависает при запуске скрипта передачи данных
То что на старой винде он "вполне работал" совсем ничего не значит. Просто потому что это разные операционные системы. Если считаете что именно в этом причина, ищите различия в самих системах. С Ваших слов код же одинаковый, а значит проблем в нем в нет. Или же все таки прислушаться к совету и привести его в порядок и тогда на любой системе он будет работать нормально. Это и есть та оптимизация с которой сталкиваются любые программисты
Зависает Квик при запуске скрипта передачи данных под Win10, При апгрейде Win 7 и 8 до Win 10 возникла проблема - квик зависает при запуске скрипта передачи данных
Alex Из приведенного кода не совсем понятно что он делает. Он при каждом изменении сохраняет последние 50 свечек? Если так то возможно проблема в логике кода и не надо сохранять последние 50 свечек, а только одну которая изменилась? Для этого есть функции ds:O(index), ds:H(index), ds:L(index), ds:C(index), ds:V(index)
А если надо получить старые свечки, то не брать постоянно одни и те же свечи в колбэке (смысла нет т.к. они не меняются) а хранить их в какой-нибудь таблице в памяти и добавлять туда новые значения той же table.insert
Константин Отличие в типах данных. В частности +0 возле массива Price_candle был явно лишним + бонусом перевели дату и время в строковый тип. Это не причина, но так оптимальней (особенность QPILE) К слову рекомендуем забыть про QPILE так как он уже считается устаревшим и более не развивается и перейти на QLUA
Здравствуйте, MOVE_ORDERS является биржевой транзакцией brokerref является биржевым параметром. В связи с чем, раз биржа переносит brokerref значит биржа считает это нормальной ситуацией. За комментариями к специалистам биржи.
Зависает Квик при запуске скрипта передачи данных под Win10, При апгрейде Win 7 и 8 до Win 10 возникла проблема - квик зависает при запуске скрипта передачи данных
Вы совершенно верно заметили что анализ проблемы производительности скриптов EasyScalp, Cofite LiveTrade Scalping следует адресовать непосредственно разработчикам этих скриптов.
Здравствуйте, Согласно документации, функция getBuySellInfoEx служит для получения параметров из таблицы «Купить/Продать». А значит для ответа на Ваш вопрос Вам достаточно просто взглянуть на эту таблицу в терминале QUIK Напомню, она открывается из таблицы Клиентский портфель, двойным кликом по какой либо строке в этой таблице. Собственно если Вы там увидите RIH6 значит сможете получить его через функцию getBuySellInfoEx Но Вы его там можете и не увидеть, так как в первую очередь эта таблица создана не для фьючерсов, а для акций/облигаций. Фьючерсы там отображаются только в случае если брокер использует единую денежную позицию
Зависает Квик при запуске скрипта передачи данных под Win10, При апгрейде Win 7 и 8 до Win 10 возникла проблема - квик зависает при запуске скрипта передачи данных
Космонавт пишет: Сергей Горохов, это правда то, что написал Николай Камынин? Неужели и в таблицу всех сделок данные заезжают срезами?
Нет, ТВС едет не срезами, тут скорее имеется в виду сама по себе технология TCP/IP которая сама по себе предполагает пакетную передачу данных. Но это уже вопрос не к QUIK а к Microsoft
Здравствуйте, В последнее время никаких обращений о проблемой с функцией getBuySellInfoEx к нам не поступало. Если Вы считаете что функция работает не правильно, приведите конкретный пример вызова функции, ее результат, и скриншоты таблиц лимитов по бумагам и по деньгам.
Здравствуйте, QLUA не работает с таблицами терминала (исключение только функции работы с графиками). Она работает с хранилищем данных в котором находятся данные из этих таблиц Это значит что пользователь может менять колонки местами, настраивать фильтры, открывать по несколько одинаковых таблиц с разными настройками, это ничего не изменит. в QLUA все равно попадут все данные из хранилища. Другой вопрос в том как эти данные в хранилище попадают. Они туда попадают только если был выполнен их заказ. Заказ данных, осуществляется как раз путем открытия таблиц.
PFelix пишет: Может ли сформироваться ситуация (при "подписке" на ликвидный инструмент, в момент какого-нибудь стопа), когда основной поток не успевает складывать данные в хранилище, т.е. приходит калбек, а данные, переданные в предыдущий(ие), в хранилище еще не поступили.
не понял вопроса. Вы имеете в виду может ли быть нарушен хронологический порядок? Если так то нет.
ЧТо именно не получается? И зачем Вы что то добавляли в примере? Вам просто надо вызвать функцию KillAllOrders с параметрами (код класса, код бумаги, код клиента) Если Вам надо без кода клиента можно так:
Код
function KillAllOrders(classCode, secCode)
function myFind(C,S,F, BR)
return (C == classCode) and (S == secCode) and (bit.band(F, 0x1) ~= 0)
end
local res=1
local ord = "orders"
local orders = SearchItems(ord, 0, getNumberOf(ord)-1, myFind, "class_code,sec_code,flags")
if (orders ~= nil) and (#orders > 0) then
for i=1,#orders do
local transaction={
["TRANS_ID"]=tostring(1000*os.clock()),
["ACTION"]="KILL_ORDER",
["CLASSCODE"]=classCode,
["SECCODE"]=secCode,
["ORDER_KEY"]=tostring(getItem(ord,orders[i]).order_num)
}
local res=sendTransaction(transaction)
end
end
return res
end
Космонавт пишет: то есть гипотеза, что нули приходят из за какого то левого класса - не верна
Вы меняете bid_best и offer_best после того как пришел колбэк, это уже некорректно Выполните эксперимент на нашем примере который был указан выше
Посмотрите сами, Допустим пришел колбэк с нулями, по инструменту НЕ из TQBR Согластно коду он записался в bid_best[sec] и offer_best[sec] Потом пришел другой колбэк без нулей по тому же самому инструменту но из класса TQBR Согласно коду bid_best[sec] и offer_best[sec] возьмутся из первого колбэка то есть не из того класса который запишется в лог
Космонавт пишет: Там же есть строка if string.find(ticker_list,sec)~=nil then Если вы прочитаете заглавное сообщение, то увидите нули по ликвидным акциям, которых не может быть в торговое время.
я не вижу проверки на класс в этой функции Проверка инструмента да есть, а что если один инструмент в двух классах?
И потом, в таблицу bid_best и offer_best тоже попадают данные без проверки класса, а значит легко может оказаться что правильные данные затрутся неправильными. И при первичном запуске тоже в лог запишутся нули. В общем рекомендация переделать логику, а уже потом делать выводы что в колбеке нули Хотя бы так:
Код
function OnParam (class, sec)
if string.find(ticker_list,sec)~=nil then
if getParamEx(class, sec, "bid").param_value==0 then toLog (log, class.." "..sec.." пишет колбек бид 0") end
if getParamEx(class, sec, "offer").param_value==0 then toLog (log, class.." "..sec.." пишет колбек аск 0") end
end
end
green_X5 пишет: Есть предположение, что с библиотеками всё в порядке, а вот попытка найти лог файл и при его отсутствии создать оный и приводит к неведомой ошибке,
Не исключено, ибо Windows параноидально следит за папкой ProgramFiles Выход либо писать файлы в другое место, либо перенести терминал в другую папку
function KillAllOrders(classCode, secCode, brokerref)
function myFind(C,S,F, BR)
return (C == classCode) and (S == secCode) and (bit.band(F, 0x1) ~= 0) and (BR == brokerref)
end
local res=1
local ord = "orders"
local orders = SearchItems(ord, 0, getNumberOf(ord)-1, myFind, "class_code,sec_code,flags,brokerref")
if (orders ~= nil) and (#orders > 0) then
for i=1,#orders do
local transaction={
["TRANS_ID"]=tostring(1000*os.clock()),
["ACTION"]="KILL_ORDER",
["CLASSCODE"]=classCode,
["SECCODE"]=secCode,
["ORDER_KEY"]=tostring(getItem(ord,orders[i]).order_num)
}
local res=sendTransaction(transaction)
end
end
return res
end
green_X5 пишет: И ещё одна проблема, только на моем компьютере. Квик Джуниор, при неудачном старте скрипта слетел пункт Доступа к скриптам в меню, как вернуть?
Попробуйте перезапустить терминал с очисткой данных (Система - Заказ данных - Перезаказать данные) если не поможет попробуйте восстановить WND файл из резервной копии. Если снова не поможет пришлите нам для анализа архив всей папки с терминалом на адрес quiksupport@arqatech.com
green_X5 пишет: Абсолютно рабочий скрипт, запускается у меня без проблем. Дал скрипт другу, у него брокер Открытие, вот такая беда при попытке запуска
Скрипт должен вначале подкачивать доп файл, пару библиотек, создать лог-файлы. Диску C сделали полный доступ от "Все", не помогает. Может быть кто сталкивался?
рекомендуем обратиться к автору скрипта, возможно не хватает каких-нибудь настроек или библоитек.