Cyber (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
Хочу заказать скрипт., Хочу заказать скрипт по поиску роботов, которые покупают или продают рыночными заявками.
 
Вот поэтому я рандомно ставлю заявки как по времени, так и по объемам))) А еще есть айсберги и никто не запрещает их ставить по несколько штук с разными объемами.
Кстати, есть ли в луа функция генератора случайных чисел без повторений с момента каждого запуска?
Смутно представляю, что даст определение таких роботов. Хотите заранее перед ними успеть? И потом продавать им подороже? Так они могут и не купить у вас))
Получить историю параметра через CreateDataSource
 
Ну я тоже на старте один раз в main, пока что-то вменяемое не придет.
Но даже один раз очень долго для 50 инструментов если грузить.
Обычные ценовые свечи намного быстрее грузятся. А эти данные, OFFERDEPTHT, очень медленно, как будто он всю историю заново грузит за несколько лет.
Получить историю параметра через CreateDataSource
 
Вроде заработало.
Но что-то для этих параметров он очень тормозить при создании CreateDataSource
Может надо в настройках квика поставить где-то галку, чтоб заранее грузил?
Галка "получать пропущенные данные" не влияет на скорость.
Получить историю параметра через CreateDataSource
 
Или может я зря потом с ним работаю, как со свечами?
askdepth = ASKDEPTH[i]:C(ASKDEPTH[i]:Size()-2)
Получить историю параметра через CreateDataSource
 
Из документации я так понял, что в CreateDataSource можно указывать любой параметр из таблицы текущих торгов?
Например историю OFFERDEPTHT можно так получить:
ASKDEPTH[i] = CreateDataSource(SEC_CODES['class_codes'][i],SEC_CODES['sec_codes'][i],INTERVAL_M1, "OFFERDEPTHT")
Но почему-то не работает??? Возвращает nil.
Альтернатива CanSell/CanBuy
 
Ладно, с шортами можно принудительно решить проблему, вбив руками таблицу доступных элементов.
Но вот то, что OnDepoLimit приходит только через несколько секунд после события у БКС, это вообще убивает всю работу скрипта. Я всегда из него брал подтверждение выставления заявки. Причем это только у БКС таки на VIP сервере, у остальных брокеров было норм. Кто-нибудь сталкивался с этим у БКС еще? Или может я зря квик обновил руками до последней версии?
Альтернатива CanSell/CanBuy
 
is_short_allowed из getBuySellInfoEx какую то фигню выдает, даже сбер шортить нельзя, зато можно FIXP? хотя в реальности наоборот
Альтернатива CanSell/CanBuy
 
Цитата
Serge123 написал:
Из аналогичных функций есть ещё
getBuySellInfoEx
CalcBuySell
Попробовал все, не помогло.
Проблема глубже, от брокера приходит такая неверная информация в квик. Причем в окне выставления заявки отображаются тоже неверные значения по размеру доступной операции.
А есть поля просто доступности шортов в каких-то таблицах или функциях?
по getBuySellInfoEx не понял что за типы клиентов и где хомяки?
Тип клиента. Возможные значения: «1» – «МЛ»; «2» – «МП»; «3» – «МОП»; «4» – «МД»
Альтернатива CanSell/CanBuy
 
Может это из-за  *  (единый брокерский счет)?
Еще заметил, что OnDepoLimit приходит только через несколько секунд после события.
Альтернатива CanSell/CanBuy
 
У трех брокеров всегда использовал
getBuySellInfo(FIRM_ID,CLIENT_CODE,CLASS_CODE,SEC_CODE,price).can_sell
для подсчета возможной позы.
И там где не давали шортить can_sell = 0 выдавал.
Но тут у БКС выяснилось, что эти значения не соответствуют реальности, и шортить не дают бумаги у которых can_sell не равон нулю.
Есть ли в квике какая-то другая таблица с реальными значениями? Откуда еще можно узнать доступную позу?
Что изменилось в 11.1.1.11, что перестали приходить данные по CreateDataSource?
 
Цитата
Anton Belonogov написал:
Cyber, добрый день.

Просим Вас прислать используемый Lua-скрипт.
Также уточните, пожалуйста, к какому серверу подключаетесь?
К серверу брокера.
Вроде решил проблему принудительным обновлением CreateDataSource  перед самым началом торгов.
Код
if SEC_CODES['m15'][i] == 0 or SEC_CODES['m15'][i] == nil then            
   SEC_CODES['m15'][i] = CreateDataSource(SEC_CODES['class_codes'][i],SEC_CODES['sec_codes'][i],INTERVAL_M15)
end    
--- обновление свечей утром перед стартом
if (dt.hour == 9 and dt.min == 59 and dt.sec < 20) then
    SEC_CODES['m15'][i] = CreateDataSource(SEC_CODES['class_codes'][i],SEC_CODES['sec_codes'][i],INTERVAL_M15)
end
local m15d = SEC_CODES['m15'][i]
SEC_CODES['pre_m15'][i] = m15d:C(m15d:Size()-1)
Но вопрос остается открытым, можно ли так обновлять результат CreateDataSource? Не занимает ли это дополнительной памяти?
После длительной работы QUIK: os.clock() =-0.001
 
А что вам дает 1 мс, если рассинхрон с сервером брокера до 100 мс бывает? Тут как не синхронизируй часы ПК, синхронности с брокером не получишь. Даже если предположить, что это обойдем, то простая синхронизация времени ПК все равно будет не идеальна +-10 мс после синхронизации. Тут была тема про это, там все очень плохо на ПК в аппаратной части с этой точки зрения.
Что изменилось в 11.1.1.11, что перестали приходить данные по CreateDataSource?
 
Можно ли несколько раз main (не очень часто) вызвать CreateDataSource переопределяя переменную?
 
Что изменилось в 11.1.1.11, что перестали приходить данные по CreateDataSource?
 
Функцию CreateDataSource можно использовать только внутри функций main() и
callback.
А что будет, если в Init первый вызов был? Чет не обращал раньше на это внимание и все работало.
Что изменилось в 11.1.1.11, что перестали приходить данные по CreateDataSource?
 
  • param – необязательный параметр. Если параметр не задан,
    то заказываются данные на основании таблицы обезличенных сделок, если задан –
    данные по этому параметру.
А если брокер не дает поток обезличенных сделок или отключен в настройках? Тогда как работает?
Что изменилось в 11.1.1.11, что перестали приходить данные по CreateDataSource?
 
без последних параметров, имелось ввиду так:
ds2 = CreateDataSource("SPBFUT", "RIU3", INTERVAL_M1)
Что изменилось в 11.1.1.11, что перестали приходить данные по CreateDataSource?
 
Все было нормально, но после обновления до последней версии перестали приходить данные по CreateDataSource без последних параметров.
Вернее приходит только значения из открытого графика. По остальным инструментам не приходят.
Уже перепробовал отключать в настройках "Исходя из настроек открытых пользователем таблиц". Не помогло.
Не могу понять, что изменилось то?
CalcBuySell. Что не так?
 
Кстати, эта функция раньше была очень тормозной. Может в 11.1 что-то изменилось?
Новая версия VCLua - библиотеки для GUI
 
Эту штуку к квику прикрутить можно?
Есть примеры такого?
Круто было бы отказаться от извращений с вводом в таблицы квика.
Еще хорошо бы умела графики рисовать и координаты клика мышкой по ним выдавать на событие.
Прикольно: Lua5.4 медленнее Lua5.3
 
Как часто вы синусы в своих реальных роботах считаете?
Скорее чаще идет работа с таблицами и обработка большого потока данных из потока сделок.
Сравнение языков программирования
 
Цитата
funduk написал:
Цитата
Cyber написал:
Радует, что 5,4 на 20% шустрее 5,3.
Подскажите, как Вы сравнивали?
Вон же выше написаны результаты.
Сравнение языков программирования
 
Что толку от jit, если квик однопоточный и большая часть тормозов внутренняя при отображении и обработке, а не в lua.
Радует, что 5,4 на 20% шустрее 5,3.
LuaJIT мы в квике не дождемся.
Сравнение языков программирования
 
LuaJIT это ваша разработка?
И какой от него смысл, если тормозит сам квик?
Сравнение языков программирования
 
И что значат разноцветные точки?
Сравнение языков программирования
 
что там по шкале?
Неверное отображение своих заявок в стакане Android X
 
А все уже само наладилось. Пока больше таких проблем не могу выявить.
Неверное отображение своих заявок в стакане Android X
 
Неверное отображение своих заявок в стакане Android X. На графике рядом правильно отображается. На стационарном квике тоже норм.
Страшно тормозит квик при исполнении айсберг заявки
 
При исполнении крупной айсберг заявки состоящей из 10 частей в 1000 лотов страшно тормозит квик, практически виснет. Пакеты почти перестают приниматься. Все таблицы виснут, кроме стакана, который немного шевелится, но запаздывает по времени.
Если посмотреть в это время в мобильном квике другого брокера, то заявка давно исполнилась и цена ушла ниже минут 5 назад.
Вы бы хотя бы таблицы в отдельные потоки сделали и прием данных в буфер.
ПростоПример
 
nikolz, а смысл с подкреплением обучать, а не на исторических данных? это ж сколько времени надо?
вы ее на потоке сделок обучаете в онлайн? вроде же не скальперская?
ПростоПример
 
nikolz, а где обучали в колабе или на домашнем компе с видяхой?
ПростоПример
 
nikolz, чем бинарная лучше обычных? тем, что на домашнем компе можно обучать? Или слоев побольше можно запихать? Что-то я не слышал, чтоб они особо развивались. Там у них все тоже самое, как у обычных по структуре? Сверточные слои есть? Библиотеки хоть есть?
А на обычной какие результаты были? Намного хуже?
А градиентный бустинг, деревья пробовали? Ускоритель котов? Там как результаты?
Говорят, нужно постоянно их дообучать на последних данных, тогда что-то полезное начинают показывать?
ПростоПример
 
На ЛЧИ его ))
ПростоПример
 
Хоть на чем торгует напишите. Кластерный анализ?
SearchItems не успевает обновить данные по заявкам при вызове в OnTrade
 
скрипт выше
SearchItems не успевает обновить данные по заявкам при вызове в OnTrade
 
nikolz, nikolz, ищу поиск и подсчет своих заявок в стакане в пределах 100 вокруг текущей ценыск
SearchItems не успевает обновить данные по заявкам при вызове в OnTrade
 
Како же тормозной этот SearchItems.
Или это у меня комп уже старый.
Чтоб проверить 100 цен на наличие в них заявок уходит около минуты.
Есть альтернативные методы?
Узнать точное время скриптом
 
люди не зря наверно Плазу и колокацию биржевую придумали, а иначе надо быть готовым к задержкам в несколько секунд или даже десяткам секунд.
Узнать точное время скриптом
 
Цитата
Serge123 написал:
activation_time NUMBER Время активацииdatetime TABLE Дата и время
проще попробовать и в потоке сделок потом посмотреть время исполнения и в логах выставление заявки
они могут висеть на сервере брокера до этого времени, а там уже от сервака брокера зависит, у Открытия вообще задержки по несколько секунд внутри дня бывают в "критические" дни, уж что там на открытии происходит страшно подумать
Узнать точное время скриптом
 
nikolz, что за прога такая?
Узнать точное время скриптом
 
И т
Узнать точное время скриптом
 
Точное время с сервера квика совсем не точное))И
SearchItems не успевает обновить данные по заявкам при вызове в OnTrade
 
Хах, но появилась другая проблема. Если заявка недавно выставлена, то она не находится в системе через SearchItems.
Какой же этот Квик мееедленный((.
SearchItems не успевает обновить данные по заявкам при вызове в OnTrade
 
Короче, разобрался, перекинул эти функции в OnOrder
Там хоть возвращает таблицу заявок, а не сделок. Можно отфильтровывать исполненные до вызова моей findNumOrderPrice.
Но как и OnTrade тоже по несколько раз вызывается на одну сделку.
SearchItems не успевает обновить данные по заявкам при вызове в OnTrade
 
Цитата
После получения всех сделок, информация о состоянии заявки, нам больше не нужна.
А как тогда информацию о исполнении заявки брать? Я всегда из флагов заявки брал. Таблица исполненных заявок всегда содержит информацию по всем исполненным заявкам.
Как тогда узнать, что больше активных заявок по этой цене не осталось?
SearchItems не успевает обновить данные по заявкам при вызове в OnTrade
 
поправочка
myLog('norders='..tostring(#norders)) возвращает данные до сделки
SearchItems не успевает обновить данные по заявкам при вызове в OnTrade
 
Пытаюсь найти оставшиеся заявки по текущей цене внутри OnTrade
Код
function findNumOrderPrice(ordtable, TRADE_CLASS_CODE, TRADE_SEC_CODE, fPrice)
    function myFindPriceNum(C,S,F,P)        
        if (tostring(C) == tostring(TRADE_CLASS_CODE)) and (tostring(S) == tostring(TRADE_SEC_CODE)) and (bit.band(F, 0x1) ~= 0) and (tostring(P) == tostring(fPrice)) then 
            return true 
        end
        return false
    end       
    local norders = SearchItems(ordtable, 0, getNumberOf(ordtable)-1, myFindPriceNum, "class_code,sec_code,flags,price")
    if (norders ~= nil) and (#norders > 0) then
        myLog('norders='..tostring(#norders))
        return #norders
    end
    return 0
end
Но, в таблице заявок к этому моменту не успевают обновится данные, даже флаги, что заявка исполнена.
Как их принудительно перепроверить внутри этой функции?
myLog('norders='..tostring(#norders)) возвращает количество в последней сделке, даже если там несколько заявок было и все они разом исполнились.
Точно такой же код поиска нормально работает в main cо старыми долговисящими заявками
История ошибок выполнения скрипта
 
Возможно добавить в ближайших версиях отображение таких ошибок в общем логе сообщений?
История ошибок выполнения скрипта
 
Где-то в квике сохраняется история ошибок выполнения скриптов, хотя бы последнего ввполнения? Или только в окне запуска скриптов можно увидеть? А после закрытия квика больше эту ошибку н.бю. посмотреть?
Работа асберг-заявки
 
Недавно был удивлен, ставил айсберг примерно 1% от дневного оборота по акции кусочками по 100 лотов. До этого всегда думал, что если по этой же цене стоит кто-то еще за тобой, то между кусочками айсберга его пропустят вперед твоего очередного кусочка, при удовлетворении заявки. А тут кто-то крупный бахнул по рынку и мой айсберг почти полностью съел, но не весь, а тот чел так и остался за мной. Но самое удивительной, что в потоке обезличенных сделок эта сделка прошла одной строкой в несколько тысяч контрактов.
Это как?
Я вообще думал, что айсберги, как и стопы, хранятся на сервере брокера и отправляются на биржу по мере исполнения кусочков?
Пусть даже это ММ шалит и убрал свою же заявку перед тем как бахнуть по моей. Но в потоке сделок должны же быть видны все кусочки айсберга?
Отправка заявки айсберг с использованием полей на англ. языке
 
Что нибудь изменилось за 4 года? Айсберг заявки также нужно на русском отправлять? Или можно на английском? В документации к луа квика поля таблицы заявок только на английском описаны.
Страницы: 1 2 След.
Наверх