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

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

Страницы: 1 2 След.
Нашел баги, если вы будете каждые 10 мск пересчитывать число строк в таблице
 
Цитата
Николай Камынин написал:
давно это было, но я не использую sleep в потоках в том числе и в main QLUA.
попробуйте использовать ожидание событий в потоке а не sleep.
подробнее, как это сделать см книгу Джеффри Рихтер( для тех, кто не знает)
думайте что автор топика совсем нуб! Отнюдь  
Нашел баги, если вы будете каждые 10 мск пересчитывать число строк в таблице
 
Цитата
Борис Гудылин написал:
Boris Litvinov  , возможно, Вы не учитываете некоторые нюансы Таблицы позиций по клиентским счетам (фьючерсы) -- futures_client_holding.
Когда в ней возникают строки по инструменту, когда исчезают?

Чтобы строка с нужным фьючерсом появилась в этой таблице (если ее не было), я выдаю вспомогательную заявку по дальней цене (строка появилась) и снимаю заявку.
Далее могу работать с этой строкой. Но если я закрываю позицию, то строка держится в таблице не бесконечно, а  день-два , как карты лягут.

Примерьтесь.
Этот пост не об этом! Читайте ветку, что бы понять суть проблемы.  
Нашел баги, если вы будете каждые 10 мск пересчитывать число строк в таблице
 
Цитата
Алексей Ч написал:
Алексей Ч
Что та похожее и происходит. То что в моменте, а этого для бота более чем достаточно, транслируют пустую таблицу. При этом идет торговая сессия это очевидно! То что это происходит на серверах КВИК а не других платформах, так же доказано!
Повторюсь, если это кому то будет нужно, и для тех кто пишет подобные ТС. Этот костыль придется прикручивать не зависимо от языков и приводов. Иначе  ваши позиции будут скидываться, и перенабираться вновь!
Проблема второй день теста, решина! Но то что speep 2000 давит при нулевой позе фьюча и по другому решить не смог это печаль!
Но не не печальнее пере набора позы!
Всем спасибо!
Нашел баги, если вы будете каждые 10 мск пересчитывать число строк в таблице
 
Николай Камынин, И на счет демо вы не правильно поняли. Это я подумал что протестил. А на само деле, что бы поймать баг пяти минут мало.
Как на реале, так и на демо, баг проявляется
Нашел баги, если вы будете каждые 10 мск пересчитывать число строк в таблице
 
Николай Камынин, вы начните искать для начала! Проблема описана выше, на любом языке, работать будет одинаково! НА ЛЮБОМ!
Для себя решил уже задачу! И описал способ решения.
Повторюсь контроль позиций в этой таблице затруднителен, и решается через грабли.
После теста буду писать С++ DLL. С учетом этого бага.
Нашел баги, если вы будете каждые 10 мск пересчитывать число строк в таблице
 
ТЕСТ контроля позиций!
Нашел баги, если вы будете каждые 10 мск пересчитывать число строк в таблице
 
В общем пока что в глубоком тесте всё,. getFuturesHolding отложил, слишком много вводных.
Повторю способ лечения.
1. После парсинга стоит счетчик, и если в таблице было найдено два SR то при пропуске строки в цикле, покажет 1 а не 2, фильтр не пропустит до следующей итерации.
2. транзакция осуществляется только на следующей итерации если позиция по фьючу 0. Плюс между итерациями срабатывает sleep 2000.
Но это только при нуле по фьючам. Если позиция не 0, то ни каких задержек не стоит.

Так же подчистил скрипт и теперь могу утверждать что это баг критический для подобного софта. И будет работать аналогично на S#,  ALAB и т.д. По этому вопрос с разработчиков приводов снят. А вот Разработчикам Quik следует написать самим это задание, и поставить на тест! Убедившись что у них там полный привет! Не реально усложнен контроль позиции. Живет своей жизнью так сказать таблица фьючей!
Нашел баги, если вы будете каждые 10 мск пересчитывать число строк в таблице
 
Цитата
Алексей Ч написал:
не пробовали?

3.6.1 getFuturesHolding
Функция предназначена для получения информации по фьючерсным позициям.
TABLE getFuturesHolding(STRING firmid, STRING trdaccid, STRING sec_code,
NUMBER type)
Функция возвращает таблицу Lua с параметрами Таблицы позиций по фьючерсам.
В случае ошибки функция возвращает «nil».
нет, нужно попробовать, позже отпишусь  
Нашел баги, если вы будете каждые 10 мск пересчитывать число строк в таблице
 
Цитата
Egor Zaytsev написал:
Egor Zaytsev
Дело в том, что скрипт вам мой не поможет, эта же беда происходит на S#.
Сложно сказать что происходит, но контроль позиции  через эту таблицу крайне сложен.
Понимаю что такого рода задачи мало кому нужны, пишут моно боты.
Решил сделать на LUA после перенести на C++ DLL
Повторюсь, при написании не программирую идею, а латаю дыры в  софте, которых иметь не должен подобный продукт!
Проскакивает ноль позиций, через все фильтры, значит ноль транслируют! Специально пускают в моменте!
Обрывы, перезапуски Квика, входы выходы, всё работает без сбоев. Но наступает в моменте 0. Откуда он берется ХЗ
И да, общаюсь с товарищем, говорит у него подобная тема на транзаке работает как часы через S#.
Но стоит зайти тем же софтом через Квик, та же петрушка!
Нашел баги, если вы будете каждые 10 мск пересчитывать число строк в таблице
 
Если лечение пойдет на пользу, оставлять постоянно такой тормоз не 1100 не буду!
Только если 0 позиций, в этом случае будет работать фильтр.  А так как выход в 0 крайне редкий.
Проблема не критична! Критично то, что это вообще так работает с торговым софтом!
Мне кажется этот 0 транслируется просто! И дело не совсем в квике, а в трансляции позы фьюча, но могу ошибаться!
Нашел баги, если вы будете каждые 10 мск пересчитывать число строк в таблице
 
4 день треша.
С утра запустил переделанный скипт.
Повторюсь, скрипт смотрит и парсит таблицу фьючей, при этом зеркально совершая сделки базового актива.
В общем был установлен счетчик, который считает итерацию. При этом не дает совершить уровнять позу на текущей.
А лишь на следующей. Каждfя итерация sleep 100
Ну думалось что эта гребеная талица дает это глюк лишь в одной итерации. Вот результат на демо счете.
Повторю что это происходит рас в день, а может вообще не произойти, как повезет!
Дальше лечить буду Sleep 1100 будет залипать перед следующей итерацией на исполнение транзакции.
Будем поглядеть, Sleep 100 в Main и сбои итерации не помогли!
 
Нашел баги, если вы будете каждые 10 мск пересчитывать число строк в таблице
 
Так как этот редкий глюк обнаружить крайне сложно, решил поставить счетчик на подтверждение что эта грёбаная таблица не лжет!
И только после подтверждения двух итераций  что поза сменилась давать добро на исполнения второй ноги!
Всем удачи.
Нашел баги, если вы будете каждые 10 мск пересчитывать число строк в таблице
 
И да там 5 минут ждать мало! Бывает работает сутки и ничего! Вот такой пипец.
А что бы это понять начать писать подобную систему.
Нашел баги, если вы будете каждые 10 мск пересчитывать число строк в таблице
 
Думал что всё закрыл, и сегодня запустил на реальном счете бот!
Повторю раньше он был моно! Теперь он мониторит весь спектр в зависимости от базового актива.
На тестах что только не делал, обрывы сети, перезагрузка квика, набор позы выходы. всё было синхронно как часы.

С утра уже запустил на реале! в Main Sleep100
Результат на скрине. Гребаный КВИК!
Друзья на S# будет так же. Специально на Lua писал для стабильности, но её нет даже на LUA
В двух словах, смысл скрпта смотреть в таблицу фьючей и повторять зеркально.
Но в моменте что та происходит, типа 0 позиций по фьючу. Всё на скрине!


 
Нашел баги, если вы будете каждые 10 мск пересчитывать число строк в таблице
 
          no=getNumberOf("FUTURES_CLIENT_HOLDING")
у вас не увидел. Что вы считаете и где?

Позже, скину!
Нашел баги, если вы будете каждые 10 мск пересчитывать число строк в таблице
 
И это не зависит от sleep 10 или 1000
это лишь  увеличит шанс найти ошибку.
При 1000 она будет крайне редка, но будет!
И вы долго будете искать кто дурак. А дело не в вас!
Просто софт, не для работы с деньгами.
Дыры Дыры Дыры
Нашел баги, если вы будете каждые 10 мск пересчитывать число строк в таблице
 
напишите простой скрипт, возьмите любых четыре фьюча. И в цикле пересчитывайте при каждой итерации в  Main количество строк, sleep 10
Всё поймете, это трешь! У вас местами будут не считываться одна из строк.
Да, это арбитраж. Где не нужно вписывать ничего, лишь базовый актив!
Всё остальное делается  в теле скрипта.
Конечно я всё давел до идеала, и залепил ещё несколько подобных дыр.
Но это не торговый софт, это сплошные дыры!
Дело в том, если не видеться что та, то бот уравнивает позу принося убытки. Скидывая и набирая позицию вновь.
Даже не пойму как это возможно, пропустить строку которая есть в таблице. Но в моменте её типа нет!
Нашел баги, если вы будете каждые 10 мск пересчитывать число строк в таблице
 
если каждые 10 мск пересчитывать число строк в таблице, то по какой та причине бывает так что строки пропускаются.
Мне пришлось писать скрипт который проверяет количество строк. И если их меньше прошлого максимума то пропускать до следующей итерации.
А вообще дыр много если пишешь что та не моно.

По заданию в зависимости от базового актива, парсились фьючерсы.  По первым двум сиволам.
В таблице этих фиючерсов может быть 4, в зависимости от периода фьючерса.
У меня их как правило два ближний и дальний, Так вот, бывает так что одна из строк не считывалась.
Это критическая ошибка при написании подобного на LUA.
Залепил очередную дырку.
Неправильная эфф. цена позиции.
 
Решил уже этот вопрос, теперь всё работает не зависимо от крилингов
Неправильная эфф. цена позиции.
 
Цитата
ISR написал:
Короче, как я понял, как раньше уже из квика не получить цену позиции и придется самому считать ее, печально :(
повторяю, она никогда не была там другой. читайте ветку полностью что вам дал. Фьючерс всегда был интрадей, всегда.
И будет ставаться по тому что это происходит на бирже а не  софте. Это биржа с брокерам вам транслирует.  
Так случилось, что эти два дня занимался тем же самым. Всё сделал и работает теперь без сбоев.
Неправильная эфф. цена позиции.
 
Цитата
Zoya Skvorcova написал:
После обновления на бирже в эти выходные, теперь будет так.
оно так и было.
Неправильная эфф. цена позиции.
 
https://smart-lab.ru/blog/472380.php#comments
У нас видима обострение, но в моём случае решилось.
Сегодня только написал на LUA решив эту же самую задачу!
Неправильная эфф. цена позиции.
 
Цитата
ISR написал:
Мой qLUA-робот берет цену входа из таблицы «Позиции по  клиентским счетам (фьючерсы)» из поля "Эффективная цена позиции", так вот  она там не соответствует цене моего входа. Все это безобразие началось со вчерашнего дня, что делать и кто виноват? Такая же глючная "Балансная цена" из таблицы "Состояние счета", она ровна значению "Эффективная цена позиции".
Робот ставит стоп-тейк от цены входа, а она левая - в результате происходит выход из позиции, роботом невозможно пользоваться.
https://smart-lab.ru/blog/472064.php
Вы явно не по адресу! И ни кто ничего менять не будет...  
function OnTrade (trade), почему пропускаются колл беки, или того хуже не приходят?
 
Suntor отдельная благодарность за выделенное время!  
function OnTrade (trade), почему пропускаются колл беки, или того хуже не приходят?
 

заработало вроде, буду тестить дальше, но блин, работает!!!
так и было приходили кол беки в случайном порядке, всё решил
Всем спасибо за дискуссию. Получил СРЕДНЕЮ без бороды истории таблицы сделок, заявок и всей этой шляпы не нужной этому боту.
function OnTrade (trade), почему пропускаются колл беки, или того хуже не приходят?
 
Цитата
Suntor написал:
Цитата
Boris Litvinov   написал:
Цитата
UP
function OnTrade (trade), почему пропускаются колл беки, или того хуже не приходят?
 
Цитата
UP
function OnTrade (trade), почему пропускаются колл беки, или того хуже не приходят?
 
https://smart-lab.ru/blog/472380.php#comments почитайте, тут предложили решение. Все дураки получается?
Suntor , будьте добры ссылочку на эталонный и правильный скрипт работы с OnTrade.  
Вы думаете не искал, там обращаются к таблице сделок через цикл. К нас о чем речь? В прочем ссылочку  
function OnTrade (trade), почему пропускаются колл беки, или того хуже не приходят?
 
ОК, завтра прикручу генератор чисел, что бы была последовательность заявок и сделок, запущу всё в таблице и посмотрю  визуально есть ли повторения и всё ли отрабатывает. На этом сделаю вывод, может и правда туплю.
Но тогда вопрос, не ужели S# не доперли до этого, просили Арку разобраться с багом? Ведь у них двойная сделка и асинхронен это синоним их продукта.  И что только они не делали, и с бубном и без, всё равно всё что прикручивается через квик,
асинхронно.  
function OnTrade (trade), почему пропускаются колл беки, или того хуже не приходят?
 
Цитата
Suntor написал:
Чтобы отмести в сторону все ощущения, нужно хотя бы разок сохранить в файл все, что у Вас проходит после фильтра. И тогда будет точно ясно, грешить на кол-бэк или нет.
Может вы имели введу не тройной  дубль колл бека, а то что одна и та же сделка, может запускать колл бек много раз?
И получается так, сохранил номер, следам отработал другой колл бек и сохранился её номер, а потом снова пришла та что уже была?
Может вы это имели введу? Речь не о дублях колл бека?
function OnTrade (trade), почему пропускаются колл беки, или того хуже не приходят?
 
Проблема описана, и известна на СЛ программистам. Не работают колл беки должным образом. Вопрос, есть ли смысл ждать исправления и корректной работы?
Или так и будут все города городить, сохраняя всю историю сделок что бы получить среднюю?
https://smart-lab.ru/blog/472380.php#comments
function OnTrade (trade), почему пропускаются колл беки, или того хуже не приходят?
 
Прошу правильный код, от АРКИ. Где как и у меня нет обращения к таблице сделк, где всё берется из прешедшего коол бека, рас все они последовательно отрабатываются.
УТВЕРЖДАЮ, что не все колл беки приходят, если происходит быстрый набор, То часть колл беков не имеет очареди, они ТУПА ОТМЕНЯЮТСЯ. Или не приходят вовсе.  
function OnTrade (trade), почему пропускаются колл беки, или того хуже не приходят?
 
Цитата
Boris Litvinov написал:
Код
  seccode1  =  "SRM8"  
seccode2  =   "SiM9"  

trade_numSave  =   0 
 function  OnTrade (trade)

 if  trade.sec_code  =  =  seccode1  then 
 if  trade.trade_num ~ =  trade_numSave  then   
trade_numSave  =  trade.trade_num    -- что бы не повторялось, ограничиваем повторение по номеру заявки. 
  message (tostring(trade.flags),  1 )  
 if  trade.flags  =  =   36   or  trade.flags  =  =   68   then 
      value = trade.value  *  -  1    -- Текущие     
 else 
      value = trade.value    
 end    

valueSave  =   0    
file  =   io.open ( "volume_summa.txt" ,  "a+" )  -- Opens a file in append mode 
 if     file ~ =   nil   then 
 io.input (file) -- sets the default input file as test.lua 
valueSave  =   io.read () -- prints the first line of the file 
 end 
 io.close (file)   -- closes the open file       

 if  valueSave  =  =   nil   then  
valueSave  =  value
 else 
valueSave  =  tonumber(valueSave)  +  tonumber(value)
 end  


file  =   io.open ( "volume_summa.txt" ,  "w+" )  -- Opens a file in append mode 
 io.output (file)  -- sets the default output file as test.lua 
 io.write (valueSave)  -- appends a word test to the last line of the file 
 io.close (file)   -- closes the open file 

 end 
 end 
 end   
ТАК ЧТО НИЧЕГО ТУТ ПОВТОРНО НЕ ПРИХОДИТ, ТУПА КОЛЛ БЕКИ НЕ ПРИХОДЯТ. И НЕ НУЖНО ДИЧЬ ВПАРИВАТЬ, О ПРОБЛЕМЕ АРКА ЗНАЕТ
function OnTrade (trade), почему пропускаются колл беки, или того хуже не приходят?
 
Код
seccode1 ="SRM8" 
seccode2 = "SiM9" 

trade_numSave = 0
function OnTrade (trade)

if trade.sec_code == seccode1 then
if trade.trade_num ~= trade_numSave then  
trade_numSave = trade.trade_num   -- что бы не повторялось, ограничиваем повторение по номеру заявки.
 message(tostring(trade.flags), 1)  
if trade.flags == 36 or trade.flags == 68 then
      value=trade.value *-1  -- Текущие    
else
      value=trade.value    
end   

valueSave = 0   
file = io.open("volume_summa.txt", "a+") -- Opens a file in append mode
if    file ~= nil then
io.input(file)-- sets the default input file as test.lua
valueSave = io.read()-- prints the first line of the file
end
io.close(file)  -- closes the open file      

if valueSave == nil then 
valueSave = value
else
valueSave = tonumber(valueSave) + tonumber(value)
end 


file = io.open("volume_summa.txt", "w+") -- Opens a file in append mode
io.output(file) -- sets the default output file as test.lua
io.write(valueSave) -- appends a word test to the last line of the file
io.close(file)  -- closes the open file

end
end
end
function OnTrade (trade), почему пропускаются колл беки, или того хуже не приходят?
 
Цитата
Suntor написал:
Цитата
Boris Litvinov   написал:
Не пойму по чему не все сделки  вызывают кол бек?
Код
   function   OnTrade (trade)
 if   trade.trade_num ~  =   trade_numSave   then    
 message  (tostring(trade.trade_num))
trade_numSave   =   trade.trade_num
 end  
 end      
Глядя на такой код, я бы сказал, что дело в том, что вы сохраняете номер последней сделки в одной переменной, а не в массиве как это надо делать, и из-за этого, у вас всё перемешивается в итоге... но... совершенно непонятно, реальный это ваш код или нет... потому что, если реальный, то у вас там и повторно одни и те же сделки будут считаться, когда «тройные повторы» вперемешку пойдут. Поэтому вышеприведённый вами код в принципе не будет работать...
trade_num ограничивает повторение повторных кол беков.
В полном коде у меня и есть сохранение в файл всего что приходит, так вот кол беки не отрабатывают вск сделки.
На сколько знаю проблема известная. И много лет не решается Аркой!!! Заниматься отпиской смысла нет.
function OnTrade (trade), почему пропускаются колл беки, или того хуже не приходят?
 
и меня не интересует варианты с сохранением всех сделок, меня интересует лишь получение средней цены путем описанным выше и его стабильная работа.  
function OnTrade (trade), почему пропускаются колл беки, или того хуже не приходят?
 
Колбек OnTrade
В теле складывал value. BUY как есть, Sell наделял "-"  
После делил на количество лотов. И получая среднюю безубыточную цену.
А да, там приходит по три пакета, поставил фильтр что бы одни и те же trade_num (Номер сделки в торговой системе)не учитывались

В общем если торгую одним лотом всё гуд.
Но стоит кинуть большим лотом. Или делать много сделок подряд. Некоторые кол беки не отрабатывают.
Такое ощущение что колбеки не приходят.

Да, бот не может просто пропустить. По тому что обращаюсь именно колл беку, той сделке что его вызвала.
А не в таблицу сделок, запрашивая количество строк и так далее.
Не пойму по чему не все сделки  вызывают кол бек?
Код
function OnTrade (trade)
if trade.trade_num ~= trade_numSave then  
message(tostring(trade.trade_num))
trade_numSave = trade.trade_num
end
end
расширить БД, Просто уперся в дно! 3000 свечей предел мечтаний!
 
Цитата
Boris Litvinov написал:
Ваш брокер может транслировать Вам информацию архивных данных при наличии у него модуля ведения архивов.
Кит финанс 3000 свечей
расширить БД, Просто уперся в дно! 3000 свечей предел мечтаний!
 
Цитата
Anastasia Gordienko написал:
Ваш брокер может транслировать Вам информацию архивных данных при наличии у него модуля ведения архивов.

брокер Открытие 10 000 свечей c их слов, но это так говорят! мне кажется меньше...
расширить БД, Просто уперся в дно! 3000 свечей предел мечтаний!
 
Цитата
Anastasia Gordienko написал:
Ваше пожелание было реализовано в версии 7.10.0 терминала QUIK.
Количество свечей графиков, которые может отобразить Рабочее место QUIK, увеличено с 3000 до 65000.
огромное спасибо!!!
Где взять *.dat историю, или конвертер в *.dat для квика? У меня тестер в квике написан, вы расширили до 65к свечей...Нужен конвертер
Или где скачать историю? QMinEditor только в обратную сторону конверт в *.dat квика
Где взять *.dat историю, или конвертер в *.dat для квика?, Где взять *.dat историю, или конвертер в *.dat для квика?
 
QMinEditor только в обратную сторону конверт
Где взять *.dat историю, или конвертер в *.dat для квика?, Где взять *.dat историю, или конвертер в *.dat для квика?
 
Где взять *.dat историю, или конвертер в *.dat для квика? У меня тестер в квике написан, вы расширили до 65к свечей...Нужен конвертер
Или где скачать историю?
LUA и QPILE, Сравнение возможностей двух языков
 
Михаил, убедили!  
LUA и QPILE, Сравнение возможностей двух языков
 
Цитата
Николай Камынин написал:
он уже давно не поддерживается разработчиками, поэтому и умер.
Он  доведен до своих пределов. Но если вы найдете баги, и напишите на форум, вам ответят, и примут меры. А это значит поддержка есть.  
LUA и QPILE, Сравнение возможностей двух языков
 
пишу на QPILE и луа, Перехожу на C++. Не заметил что бы QPILE умер.
Есть проблема с метками, удаляются все метки, а не конкретного инструмента
 
удаляются все метки, а не конкретного инструмента, Разные лейблы, но если в одном из скриптов очистить метку по инструменту лейбла. Очистятся все метки по всем инструментам. Если в разных окнах, то всё нормально. У меня в одном окне, разделены инструменты, вот такой баг. Конечно можно загорячится,  И при обновлении сделать что бы бот перебрал все свечи все свечи и удалял метки. Но это не удобно. Может исправите в следующей версии?
расширить БД, Просто уперся в дно! 3000 свечей предел мечтаний!
 
Здравствуйте, прошу вас выпустить версию Квика с возможностью расширения количества свечей по инструменту!
У меня тестер написан вашим встроенным языком. Да, не так быстро, но стабильно в работе, ничто не отваливается, история прошла, следом переход в торговлю онлайн.  Одна проблема, это свечки!!! Уже ознакомился со всеми TSLAB, WEALTH-LAB, MULTICHARTS, AMIBROKER, METASTOCK. Где то быстро но не стабильно. Коннекторы не совершенны. В общем, нужно, сделать или подгруздку и склейку, или позволить расширение БД. Не хочу ничего менять, писать дважды робота! Хочу что бы из Квика я не выходил. Спасибо. Да и вообще было бы круто, платно прикручивать к PLAZA2 в обход сервера квик. Не знаю может и можно как то всё это!
В общем, спасибо за понимание! С уважением.
https://youtu.be/VAJu2TAWLM0
проблема переноса торговой сессии, проблема переноса торговой сессии
 
С утра происходит разрыв с серверам брокера. Далее грфики quik перезагружаются, вместе с ними перезагружается qpile скрипт. Так вот, кто нибудь знает что нужно что бы qpile продолжил расчет, и не начинал его заново?  Хотя проблема решена по другому, рас скрипт qpile начинает расчет заново. Нужно следить, что бы это произошло, после обновления графиков quik. Если Qpile начнет расчет раньше, то рассчитается только текущий день. Сейчас экспериментирую, думаю привязать ещё ко времени всё это дело. Сейчас у меня пропуск 60 секунд после старта новой сессии
проблема переноса торговой сессии, проблема переноса торговой сессии
 
Цитата
Boris Litvinov написал:
QPILE НЕ обнулялся, напишите.
проблема переноса торговой сессии, проблема переноса торговой сессии
 
там, НЕ ОБНУЛЯЛСЯ
Страницы: 1 2 След.
Наверх