Учитывая, что исходные массивы уже отсортированы, то можно использовать такой вариант:
Код
t1={1,2,3,6,7,8}
t2={1,3,5,7,8}
t = {}
local n2, n = 1, 0
for i = 1, #t1 do t[i] = t1[i] end
for i = 1, #t1 do
local v1 = t1[i]
for j = n2, #t2 do
local v2 = t2[j]
n = n + 1
if v2 < v1 then table.insert(t, n, v2)
else
if v2 > v1 then n2 = j
else n2 = j + 1 end
break
end
end
end
Но здесь используется три цикла обхода массивов, вместо двух. Попробую исправить свой первый вариант, чтобы работал правильно.
Надо делать так, как надо. А как не надо - делать не надо.
sam063rus пишет: брокер сказал, что в таком случае, даст время на то, чтоб вывести со счёта деньги, а также уведомит об этой ситуации.
Вы ведь понимаете, что, если брокер использует денежные средства клиентов в своих целях, то случись чего с брокером этих денег на всех может не хватить?
Надо делать так, как надо. А как не надо - делать не надо.
Задача следующая: Есть два массива с целочисленными индексами, элементами которых являются числа, отсортированные в порядке возрастания. Нужно объединить их таким образом, чтобы результирующий массив содержал все элементы из обоих массивов без дубликатов, отсортированные также в порядке возрастания значения. Задача осложняется тем, что исходные массивы портить не надо. Иначе бы я использовал table.insert() для вставки новых элементов из одного массива в другой. Поэтому решил задачу следующим способом:
Код
function table.join(tab1, tab2)
-- Объединение массивов
-- Значениями массивов могут быть только числа
local tab, n1, n2, index = {}, #tab1, 1, 0
for i = 1, n1 do
local v1 = tab1[i]
for j = n2, #tab2 do
local v2 = tab2[j]
if v2 < v1 or i == n1 then
index = index + 1
tab[index] = v2
else
index = index + 1
tab[index] = v1
if v2 == v1 then n2 = j + 1 break
elseif i < n1 then n2 = j break end
end
end
end
return tab
end
А на table.or() Lua ругается.
Надо делать так, как надо. А как не надо - делать не надо.
Добавлю: в настройках сообщений снята галка "Показывать окно сообщений". Т.е., окно сообщений открывается вручную. Но не переходит автоматически к последнему сообщению, как это было в предыдущих версиях.
Надо делать так, как надо. А как не надо - делать не надо.
Кстати, если рассматривать вариант ведения двух субсчетов, то он потребует большего депонирования средств: отдельно для лонгов и отдельно для шортов. А также, в случае использования плеча по одному (или обоим) из счетов будет взиматься комиссия за пользование заёмными средствами (шортам - в любом случае), несмотря на то, что суммарный баланс по обоим счетам может быть положительным, как по деньгам, так и по бумагам.
Надо делать так, как надо. А как не надо - делать не надо.
В версии v.6.17.0.58 в окне сообщений не переходит автоматически к последнему сообщению при его открытии или получении нового сообщения, например функцией message() Это новая "фича"? Где она настраивается?
Надо делать так, как надо. А как не надо - делать не надо.
Drionn Drionn пишет: Срабатывает на вечерке На новой дневке не видно
Сделки (а также заявки) за вчерашнюю вечернюю сессию должны отображаться в информационном классе. У меня это FUTEVN и OPTEVN. Обратитесь к брокеру за разъяснениями.
Надо делать так, как надо. А как не надо - делать не надо.
sam063rus пишет: история сделок - не сохраняется. она доступна только в течении одного торгового дня. однако, вы можете написать скрипт на qlua, который будет вести историю ваших сделок, либо, воспользоваться готовыми платными и бесплатными поделками примеров которых навалом в интернете.
Не поможет:
Цитата
Drionn Drionn пишет: Как же получить историю сделок не только за текущую сессию и даже если был выключен quik терминал?
Тут только смотреть отчёт брокера.
Надо делать так, как надо. А как не надо - делать не надо.
Серж пишет: Также интересует этот вопрос. Какая информация содержится в дампе?
1. прочитайте ещё раз название темы.... И, если вы по-прежнему возомните себя разработчиком - тогда итолько тогда быть может поговорим...
Чего вы так напряглись-то? Вопрос был задан без "подковырки". Я ведь тоже дампы отсылаю разработчикам. А то вдруг чего лишнего в дампе окажется... Но, если вы не знаете, то, конечно, посмотрю "интернетах". Не обижайтесь.
Надо делать так, как надо. А как не надо - делать не надо.
Правильно я понимаю, что получить только с getItem позицию по фьючу не получится?, Предварительно нужно будет пройтись по количеству срок в "Позиции по клиентским счетам" с getNumberOf?
Правильно я понимаю, что получить только с getItem позицию по фьючу не получится?, Предварительно нужно будет пройтись по количеству срок в "Позиции по клиентским счетам" с getNumberOf?
Мда... У вас в функции pos поиск выходит за пределы таблицы. Перепишите код так:
Код
function pos(stroka)
for i = 0, getNumberOf("futures_client_holding")-1 do
local futures = getItem("futures_client_holding", i)
if futures.sec_code == stroka then return futures.totalnet end
end
end
Надо делать так, как надо. А как не надо - делать не надо.
Egor Zaytsev пишет: Такая проблема была замечена, если при обновлении вкладки находились сбоку. Если у Вас так, то перед обновлением расположите их внизу или вверху.
В таком случае нужно создавать отдельный раздел "Новые прошивки версии" и тему по каждой новой версии, в которой помимо полного перечня изменений указывать возможные проблемы и пути их решения. А не предлагать каждому пользователю пройти квест "обнови версию - найди пасхалки - откатись к предыдущей версии".
Надо делать так, как надо. А как не надо - делать не надо.
Prepod пишет: После скачивания файлов обновления почему-то исчезла панель на которой отображались вкладки. Меню-окна-показать вкладки не решает данной проблемы. В чем прикол? Менеджер окон показывает графики и вкладки на которых они якобы отображены. По факту вкладок на экране нет и переключать стало невозможным
Добрый день,
Описанная проблема будет исправлена в очередном релизе версии 6.17, который будет выпущен в самое ближайшее время. Информация о выходе обновления будет сообщена отдельным письмом.
Приносим извинения за причиненные неудобства.
Означает ли это, что не рекомендуется обновляться до версии 6.17.0.58?
Надо делать так, как надо. А как не надо - делать не надо.
Egor Zaytsev пишет: Если на сервере изменились какие либо данные по графикам, то обязательно необходимо перезаказывать архив графиков.
хотелось бы узнать, каким образом пользователь это поймёт, что данные в терминале не релевантны текущей ситуации? он это может понять только вручную проводя анализ - а это не есть хорошо. и уж тем более непонятно, как доверять на такой системе работу скриптам.
В этом есть проблема для МТС, торгующих по индикаторам, рассчитываемым по данным с графиков.
В связи со сложившейся ситуацией возникает вопрос: как роботу, торгующему по графику, понять, что с графиком что-то не то? На ум приходит только одно: для ликвидной бумаги контролировать, чтобы на минутном таймфрейме отображались все свечи без пропусков. Для неликвидной бумаги даже не знаю, что предпринять...
Надо делать так, как надо. А как не надо - делать не надо.
Egor Zaytsev пишет: Если на сервере изменились какие либо данные по графикам, то обязательно необходимо перезаказывать архив графиков.
хотелось бы узнать, каким образом пользователь это поймёт, что данные в терминале не релевантны текущей ситуации? он это может понять только вручную проводя анализ - а это не есть хорошо. и уж тем более непонятно, как доверять на такой системе работу скриптам.
В этом есть проблема для МТС, торгующих по индикаторам, рассчитываемым по данным с графиков.
Надо делать так, как надо. А как не надо - делать не надо.
sam063rus пишет: хотелось бы узнать, каким образом пользователь это поймёт, что данные в терминале не релевантны текущей ситуации? он это может понять только вручную проводя анализ - а это не есть хорошо. и уж тем более непонятно, как доверять на такой системе работу скриптам.
Согласен, не помешал бы автоматизированный контроль корректности полученных данных как на сервере, так и в клиенте.
Надо делать так, как надо. А как не надо - делать не надо.
при выборе режима "Вывод инструмента по всем интервалам" во все файлы
выводится архив только либо выбранного интервала либо последнего
интервала, выводимого в одиночный файл.
Описанное поведение у нас не воспроизводится. Выводятся интервалы отображаемые в QminEditore. Версия у Вас точно 4.14?
Версия 4.14.0.5. Сохраняются-то файлы по всем доступным интервалам. Но информация внутри них соответствует одному интервалу. Отличаются они только параметром <PER>.
Надо делать так, как надо. А как не надо - делать не надо.
Насколько я понимаю, для этого надо вызывать два раза функцию getParamEx, но ведь нет никакой гарантии, что таблица не изменится за это время. Как с получить эти данные, с гарантией, что они соответствуют одному и тому же моменту?
Я бы даже сказал, что нет никакой гарантии, что в момент получения данных по одному из параметров, данные по второму уже обновились и соответствуют тому же моменту. Поправьте, если ошибаюсь.
Надо делать так, как надо. А как не надо - делать не надо.
Откуда сервер QUIK берёт данные архивов графиков, которые потом передаёт клиентам? Он их сам формирует на основе биржевых данных или получает в готовом виде с биржи? Есть ли какой-нибудь механизм контроля этих данных на сервере/клиенте? Скажем, на сервере информация на свече за какой-либо прошедший период вдруг изменилась. Клиент получит это изменение или необходимо перезаказывать архив графиков вручную?
Надо делать так, как надо. А как не надо - делать не надо.
sam063rus пишет: у меня к примеру, сделка на графике по опционам отобразилась, на бирже тоже отобразилась, а у некоторых брокеров и, соответственно пользователей, которые через них торгуют - нет. я ещё в '12-ом голу задавал похожий вопрос - более/менее внятный ответ звучал, что брокеры могут фильтровать поток некоторых пользователей на некоторых маршрутах серверов и что у них эта хрень может отключаться "по запросу". http://smart-lab.ru/blog/72157.php
По вашей ссылке нет никакого официального ответа ни брокеров ни разработчика, а только домыслы трейдеров.
Что качается ТВС, то я могу предположить, что сделки могли не сохраниться в результате "краха" терминала из-за одного из Lua-скриптов: судя по логам в указанный период времени происходило переподключение к серверу (большей информации, к сожалению, не сохранилось). Отмечу, что экспорт ТВС в БД происходит только по окончании торгов. Поэтому, если часть сделок не попала в БД, то, значит её не было в хранилище Квика.
А насчёт архива графиков у меня нет никаких предположений.
Надо делать так, как надо. А как не надо - делать не надо.
Проблема с QminEditor не решена: при выборе режима "Вывод инструмента по всем интервалам" во все файлы выводится архив только либо выбранного интервала либо последнего интервала, выводимого в одиночный файл. При этом само значение периода проставляется в соответствии с названием файла, кроме минутного: в нём значение периода равно "All".
Надо делать так, как надо. А как не надо - делать не надо.
Egor Zaytsev пишет: "Добрый день. Т.е все тоже самое, что описано мною выше, но только для всех серверов указанных в пункте Связь/Доступные соединения ?"
Да именно так ... но пинговать постоянно все серваки не надо ... Достаточно в "просмотр доступных соединений" к пунктам "Описание соединения", "IP-адресс","Порт", "Ключ сервера" добавить пункт "пинг" ... и только в этом диалоге делать пинговку всех серваков.
Добрый день,
Мы рассмотрели Ваше пожелание. По итогам его анализа сообщаем Вам, что мы также считаем целесообразным его реализацию и постараемся включить в план доработок при выпуске одной из следующих версий нашего ПО.
От це дило! Дополню к пожеланию автора. Всё же лучше, чтобы связь с серверами из списка тестировалась в фоновом режиме не только при открытом диалоге "Просмотр доступных соединений". Иначе при выборе соединения придётся ждать ещё несколько минут прежде, чем клиент протестирует все сервера.
Надо делать так, как надо. А как не надо - делать не надо.
сергей пишет: как советуют закрывать позицию, и открывать шорт
Никто не советует закрывать позицию. С чего вы взяли? Разговор идёт за продажу (тогда и только тогда) при сигнале в шорт. Таким образом будет открыт "виртуальный шорт" при сохранении лонга (вопрос данной темы). Чтобы не путаться на бумажке можете записать себе отдельно количество лотов в лонг и шорт ;-) Суммарная позиция при этом будет рассчитываться как разница между шортами и лонгами:
Серж пишет: Считайте, что 100 лотов в данном случае - это нулевой баланс. Ниже 100 - шорт.
Когда нужно открыть шорт просто продавайте нужное количество лотов. Но вы правы, ваша манера общения не оставляет желания вести с вами дискуссию. Желаю успехов в изучении арифметики. :)
Надо делать так, как надо. А как не надо - делать не надо.
Нет, черт возьми, это не шорт, а то, что мне предлагают сделать!!! Вы, в том числе.
Вам никто не предлагает сократить позицию перед открытием шорта
Цитата
Серж пишет: Вам не нужно закрывать полностью всю позицию, а только на размер вашего шорта. Считайте, что 100 лотов в данном случае - это нулевой баланс. Ниже 100 - шорт.
Перечитайте несколько раз, пока не поймёте сказанное.
Надо делать так, как надо. А как не надо - делать не надо.
toshe пишет: б) Цена возвращается на уровень 10, при этом я в рублях - минус 40 руб из пункта 1 и недополученный профит от тех 20 лотов при цене выше 100.
toshe пишет: б) Цена возвращается на уровень 10, при этом я в рублях - минус 40 руб из пункта 1 и недополученный профит от тех 20 лотов при цене выше 100.
Тогда считайте, что это уже убыток по "шорту".
Надо делать так, как надо. А как не надо - делать не надо.
toshe пишет: Теперь, чтобы поторговать на уровнях +-80 10-20 лотами, мне нужно продать 100 лотов с дисконтом.
Вам не нужно закрывать полностью всю позицию, а только на размер вашего шорта. Считайте, что 100 лотов в данном случае - это нулевой баланс. Ниже 100 - шорт.
Цитата
toshe пишет: Смотрите. Есть условные 100 лотв, закупленные по 100 (для примера).Сейчас бумаги торгуются на уровне 80. Я уверен (ха-ха, но тем не менее), что цена на уровень 100+- вернется. Теперь, чтобы поторговать на уровнях +-80 10-20 лотами, мне нужно продать 100 лотов с дисконтом. Таким образом, на одной чаще весов гарантированная потеря при продаже 100 лотов с дисконтом, на другой - возможная потеря в случае, если я не успею выйти из негативного для меня тренда при объеме в 20 лотов. Такие дела, надеюсь, все понятно объяснил.
C математикой знакомы? Посчитайте финансовый результат для случая,
когда ведётся только одна позиция, в данном случае лонг
когда ведутся две независимые позиции: лонг и шорт
Теперь сравните результаты для первого случая и сумму во втором случае.
Надо делать так, как надо. А как не надо - делать не надо.
Sergey Gorokhov пишет: если один колбек занял терминал, то он не получает данных с сервера. как только отвиснет, получит пропущенные данные. таким образом, хронология восстановится.
Имеется ввиду хронология среди однотипных колбеков? Разнотипные колбеки придут в произвольном порядке, и не обязательно в том, в каком они бы пришли, не будь этой задержки, верно?
Надо делать так, как надо. А как не надо - делать не надо.
В документации должна быть полная информация, относящаяся к вашему продукту.
Цитата
Sergey Gorokhov пишет: К сожалению, не представляется возможным, описать все возможные варианты, всех транзакций, всех бирж с которыми работает QUIK, ввиду непреодолимо гигантского их количества. Поэтому, частный случай, лучше смотреть в документаци той конкретной биржи, о которой идет речь.
Об этом мы должны были сами догадаться?
Цитата
Sergey Gorokhov пишет: Если параметр code (в Quik это ACCOUNT) не задан или его значение равно ‘%%%’, то производится удаление заявок для всех клиентских счетов.
Если параметр code_vcb (в Quik это BASE_CONTRACT) не задан или его значение равно ‘%’, то производится удаление заявок для всех контрактов.
latrop1 пишет: Спасибо за ответ, стало чуть понятнее. А почему тогда в Квике случай с "параметр не задан" не отрабатывает аналогично "P2 роутер", а требуется обязательно?
Такова реализация.
Об этом тоже мы должны были сами догадаться? А также об именах параметров, задаваемых на русском языке.
Надо делать так, как надо. А как не надо - делать не надо.
Дмитрий пишет: И еще один вопрос: Если окно было закрыто не вручную, а с помощью вызова функции DestroyTable, то какое значение после этого должна вернуть функция IsWindowClosed?