s_mike@rambler.ru (Все сообщения пользователя)

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

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 31 След.
Кривые шибки в QLua
 
Цитата
TGB написал:
Цитата
s_mike@rambler.ru написал:
TGB, прекратите фантазировать.этот код (усложненный) работает в сотнях (может тысячах, я не знаю) копий роботов, из числа выложенных  на сайте и написанных под заказ.
    Вы что, никогда не сталкивались с ситуацией, когда программы использовались сотнями тысячами пользователями и в этих программах потом обнаруживались ошибки?
и спамить тоже прекращайте.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Кривые шибки в QLua
 
Цитата
TGB написал:
Цитата
Старатель написал:
код в сообщении  #24  в частности.
       Выполненные мною в Lua 5.3 (5.4) тесты атомарности операций вставки/удаления полей в таблицу показали, что эти операции (в условиях реализован-ной многопоточности QLua) все-таки атомарны.  Возможно?, есть ситуации, не охваченные тестированием, когда атомарности может не быть. Если же таких ситуаций нет, то мое утверждение, что выложенный Старателем код Queue (с описанием редко возникающей ошибки) создает потокоопасные очереди, ошибочное.
TGB, прекратите фантазировать.

этот код (усложненный) работает в сотнях (может тысячах, я не знаю) копий роботов, из числа выложенных  на сайте и написанных под заказ.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Нехватка видеопамяти
 
Цитата
nikolz написал:
не знал, что на форуме есть телепаты.
одни и те же вопросы задаются по кругу разными людьми.

Это означает, что проблема ходит из рук в руки и все ее бросают. Или неохота заниматься или слишком сложная проблема.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Нехватка видеопамяти
 
Цитата
Daniil Pozdnyakov написал:
   s_mike@rambler.ru, здравствуйте,
Могли бы Вы, пожалуйста, указать версию вашего терминала. Также убедительная просьба прислать код, на котором указанная Вами проблема воспроизводится, и скриншот окна всплывающей ошибки.

Когда задают вопрос про версию, это означает, что никто даже и не пошевелился, чтобы найти ошибку.  Она проявляется на любой версии

ккогда спрашивают код скрипта, это означает, что никто даже не почесался прочитать первые три сообщения ветки

когда спрашивают скриншот окна сообщения, это значит, что никто  даже не пробовал поискать в текстах терминала  слово "видеопамяти "

Даниил, вам спихнули эту проблему, потому что все равно никто не решить не может?
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Вызывается OnStopOrder при загрузке
 
Цитата
Евгений написал:
Разработчики ответьте на вопросы, почему вызываются функции обратного вызова при перезагрузке квика?
Так и задумано? или это ошибка?
так и должно быть. Торговая сессия установлена прошлым днём, а вы подключились к новому серверу. Либо вы вообще не подключались в этот торговый день к серверу, а сделки в этот торговый день были.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Кривые шибки в QLua
 
Цитата
TGB написал
Пример использования потокобезопасной очереди:  https://forum.quik.ru/messages/forum10/message56397/topic6356/#message56397
table.sinsert неприменима в случаях, когда очередь имеет большую длину. Использовать такой код нужно с осторожностью.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Нехватка видеопамяти
 
Цитата
Roman Azarov написал:
   s_mike@rambler.ru, здравствуйте!

К сожалению, при переходе по предоставленной ссылке получаем сообщение от сервера об отсутствии доступа к директории.
Просьба предоставить корректную ссылку или уточнить, что имеется в виду под "активной" работой с метками.
О каком количестве меток идет речь?
Странно.

нажал на ссылку с тексте сообщения - страница замечательно открылась. Да и скачивания с этой страницы идут каждый день, счетчик растет, значит, со страницей проблем нет.


Это скрипт, который выводит профиль рынка.

он выводит много меток на график. За предыдущие дни (за каждый день) он выводит 50-100 меток (addlabel) и оставляет их в покое. Текущий день обрабатывается путем начального вывода тей же сотни меток и их перестановок при помощи replacelabel

При этом количество выставленных меток в течение дня (практически) не увеличивается, а количество свободной видеопамяти уменьшается.

Тест, который продемонстрирует проблему, может выглядеть так:

выставляем 100 меток посредством createlabel и потом раз в секунду заменяем первую на вторую, вторую на третью и так по кругу. Наблюдаем и удивляемся.


----

дополнительно, не относящееся к теме ремарка. Очень жаль, что bmp метки терминал может взять только из файла, и нет возможности передать картинку напрямую по памяти, минуя диск. львиная часть затрат мощности при активной работе с метками идет на бесполезную последовательность конверирование растра в бмп формат -> запись файла -> чтение файла -> раскодировка файла в растр.

Понятно, что не сделаете, но я все же "зарегистрируйте, пообещайте".  Булычев в свое время думал об этом, но не надумал, как выясняется.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Все индикаторы на Lua
 
   i=CountBars-1;
  while(i>=0)
  {
     L0A = L0;
     L1A = L1;
     L2A = L2;
     L3A = L3;
     L0 = (1 - gamma)*Close[i] + gamma*L0A;
     L1 = - gamma *L0 + L0A + gamma *L1A;
     L2 = - gamma *L1 + L1A + gamma *L2A;
     L3 = - gamma *L2 + L2A + gamma *L3A;

     CU = 0;
     CD = 0;
     
     if (L0 >= L1) CU = L0 - L1; else CD = L1 - L0;
     if (L1 >= L2) CU = CU + L1 - L2; else CD = CD + L2 - L1;
     if (L2 >= L3) CU = CU + L2 - L3; else CD = CD + L3 - L2;

     if (CU + CD != 0) LRSI = CU / (CU + CD);
     val1[i] = LRSI;
 i--;
}
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Все индикаторы на Lua
 
Цитата
Dobrota написал:
Кто-нибудь может поделиться индикатором скользящей средней Laguerre?
Я бы и сам мог написать, но формулу не до конца понял. Может, кто-нибудь может подсказать?

L0 = (1 – gamma)*Price + gamma*L0[1]
Price = ((H+L)/2)

H и L это максимум и минимум свечи? L0[1] это значение для предыдущей свечи?
Судя по всему, приведённая вами формула есть разновидность скользящей средней по средним ценам свечи.

Laguerre(0) = (1-gamma) * (High+Low)/2 + gamma * Laguerre(-1)
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Прочесть таблицу новости через LUA
 
Цитата
Владимир написал:

Для меня вот совершенно очевидно, что тип integer обязан быть в языке - это первый язык, который я встретил за долгие годы программирования, в котором его нет! И что? Его нет и не будет - как ни аргументируй.

про ассемблер слышал разработчик операционных систем? А про Forth?  Неужели про Бейсик тоже не в курсах? И про все остальные скриптовые языки со слабой типизацией тоже нет? Никогда не использовали sql ?

языков , которых по вашему мнению не существует, абсолютное  большинство.


какие интересные операционные системы...
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Нехватка видеопамяти
 
Цитата
Roman Azarov написал:
   s_mike@rambler.ru, добрый день!

Пришлите, пожалуйста, пример описанного поведения (с описанной ошибкой и количеством свободной на момент получения видеопамяти) и скрипт на котором оно воспроизводится.
Какая версия терминала Вами используется?
на видеокарте 1080ти на момент получения сообщения о нехватке памяти остаётся ещё 7 гигабайт свободными. Версия 9.1

Для написания тестов в компании должно быть соответствующее подразделение. Если компания Арка не в состоянии себе его позволить и некому написать 10 строк на языке луа  - берите вот этот http://www.bot4sale.ru/download-categories/2012-06-13-15-10-36/item/volume-at-price-dlya-quik.html в качестве гуманитарной помощи нуждающимся.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
8.13 vs 9.1
 
Удивительно, но удалось заставить 9.1 демо отображать метку.

После бубна и гимна России по него удалил диаграмму полностью, создал ее заново, дал тот же идентификатор - и чудо свершилось, метка появилась!


Как объяснить происходящее - я не представляю. Возможно, техподдержка сможет.


Из наблюдений.

После удаления диаграммы и создания ее заново метки начали нумероваться с 1. Каждая следующая метка дает инкремент в номере на 1.
До удаления диаграммы номера меток, которые создавались этим скриптом, стартовали с 250, также давали инкремент, но не рисоваться не желали.

Похоже, на диаграмме "были установлены" 249 меток, которые увидеть не представлялось возможным (по неясной причине). Ну не было, смотрел, не увидел ни одной, даже сильно выше и ниже графика.

Как так, почему так - покрыто тайной завесы. Но в механизме меток у терминала квик какие-то беды, и их много.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
8.13 vs 9.1
 
function main()

message(tostring(
AddLabel("gazp",
{HINT="zzzzz",
TEXT="тттт",
TRANSPARENCY=0,
DATE=20210730,
IMAGE_PATH="E:\\GoogleDisk\\ROBOT\\add.bmp",
TIME=170000,
YVALUE=285,
ALIGNMENT="RIGHT"}
)))
end

Вот такой чудесный скрипт, выставляющий метку.

В 8.13 боевой выставляет картинку на диаграмму, а в 9.1 демо - нет. Оба терминала на одной машине, запущены одновременно, идентификаторы идентичны, проверено, скопировано через буфер обмена.

Как такое может быть? Отчего это может зависеть? Индусов в программисты наняли?
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Нехватка видеопамяти
 
Ув. разработчики!

При активной работе с метками терминал через некоторое время начинает тупить и в результате вываливается с диагностикой о нехватке видеопамяти.

Свободной видеопамяти еще много гигабайт. Скрипт просто переставляет метки посредством SetLabel. Написать тест из 10 строчек кода вы должны суметь сами.



Почему вываливается если видеопамяти полно? Почему расходуется видеопамять при использовании SetLabel?
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Метки
 
Уважаемые разработчики!

Я уже много раз вам указывал на эту ошибку (и не только я). Много раз она "будет исправлена в очередной версии ПО"

function main()
message(tostring(
AddLabel("gazp",
{HINT="zzzzz",TEXT="",TRANSPARENCY=0,DATE=20210730,IMAGE_PATH="нет такого файла",TIME=40500,YVALUE=284.51,ALIGNMENT="RIGHT"}
)))
end

Эта функция возвращает успех, номер метки. А не должна. Ошибка тянется с 2013 года, но компания Арка не чешется абсолютно.

Отдельный привет Алексею Иванникову. У вас полно ошибок, которые вы не исправляете годами или не в состоянии исправить.. Открывайте ваши регистрации или куда вы все это пишете, ищите. Можете поискать по форуму.


Пообещайте еще раз, что ли....
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Повторное выполнение функции OnCalculate
 
Цитата
Moneyness написал:
Добрый день, уважаемые форумчане!

Столкнулся с проблемой: функция OnCalculate выполняется 2 раза на периоде свечей.
Код:

  function OnCalculate(index)  
    if(index <= Size() - 100) then  
      return nil  
    end  
       
    message("index: " .. index)  
   end
 
Работаю на дневном таймфрейме.
Должен получить 100 сообщений в квике с указанием индекса обрабатываемой свечи.

Но получаю 200.

Почему код отрабатывает 2 раза? Кто-нибудь сталкивался с такой проблемой?
Версия: 8.13.0.1
При старте индикатора  идет пересчет свечей более одного раза
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Вопрос по индикатору.
 
И ещё нужно учитывать, что на тиковых интервалах  все свечи имеют разное время. Непонятно, что вы хотите увидеть, вычитая значение Газпрома в один момент времени из значения Лукойла в другой момент.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Вопрос по индикатору.
 
Может быть потому, что у разных инструментов разное количество свечей?
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Trans2QUIK.dll подключение несколько Quik одновременно, Как подключиться к нескольким квикам сразу для получения сделок из них?
 
Цитата
Юрий написал:
Требуется из приложения на QT C++ одновременное подключение через Trans2QUIK.dll к нескольким QUIK, для получения сделок в реальном времени и сведения их в единую базу.
Вопрос как организовать одновременное подключение Trans2QUIK.dll к нескольким квикам?
Идеологически правильно для каждого действия сначала подключать trans2quik к нужному терминалу, при завершении действия отключаться
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Получение признака "Субординированный инструмент" в lua
 
Цитата
Андрей написал:
Цитата
   s_mike@rambler.ru написал:
 
Цитата
Андрей  написал:
 
Цитата
 _sk_   написал:
  Может вы тоже подскажете, как это делается обобщенно через win32 ф-ции библиотеки w32 конкретно для стакана? Название активного окна (стакан) и выделенная в стакане строка. И как в макросе ожидать нажатие клавиш.
 нужно написать свой скрипт, который рисует вам стакан (так же как это делает сам терминал), ловить действия пользователя в нем стандартными средствами и запускать нужные вам обработчики.
Но так горазда больше оверхеда по ведению онлайн еще одного стакана, хотя ф-цию нужно запускать на разовой основе. Неужели прочитать окно стакана нельзя?  
Доступа к экранной таблице терминала, отображающей стакан, нет.

Что касается оверхеда - если это напишет программист с правильным пониманием мироустройства вселенной, то вы запустите 100 стаканов в скрипте и какого либо неудобства не почувствуете.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Получение признака "Субординированный инструмент" в lua
 
Цитата
Андрей написал:
Цитата
_sk_ написал:
Может вы тоже подскажете, как это делается обобщенно через win32 ф-ции библиотеки w32 конкретно для стакана? Название активного окна (стакан) и выделенная в стакане строка. И как в макросе ожидать нажатие клавиш.
нужно написать свой скрипт, который рисует вам стакан (так же как это делает сам терминал), ловить действия пользователя в нем стандартными средствами и запускать нужные вам обработчики.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Заявка + метка на графике
 
Цитата
Константин Рейм написал:
Ставим лимитную заявку роботом, поверх этой заявки (по той же цене) робот ставит метку в виде линии (можно сначала метку поставить потом заявку), в результате имеем на графике две линии одна из них это заявка, другая - метка, т.к. цены заявки и метки равны, на графике видим только метку, а заявка казалось бы лежит под меткой, но при наведении курсора на линию и попытке перетащить метку - цепляется не метка, а заявка. Есть ли какой то способ зацепить именно метку, а не заявку.
Настройте в диаграмме порядок отображения слоёв
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Индикатор средних Объемов типо скользящей средней
 
http://www.bot4sale.ru/download-categories/2012-06-13-15-10-36/item/volumeaverage.html
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
повторный Init() без OnDestroy() в индикаторе, При смене инструмента графика в Lua индикаторе перечитывается файл без предварительного срабатывания OnDestroy()
 
Цитата
Sergey Hlynovskii написал:
 Здравствуйте  BlaZed ,
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Похоже, у каждого вновь прибывшего сотрудникпа Арка свой маленький блокнотик, в который он чирикает пожелалки карандашиком.

в 2013 году Михаил Булычев дважды обещал мне исправить эту проблему - в приватной переписке и на этом форуме тоже.

Потом я поднимал эту тему в ином разрезе. Написал, что в момент смены инструмента на вызывается destroy() уже на этом форуме. Алексей Иванников попросил сделать скрипт и прислать , чтобы "провести исследования". Как понимаю, в надежде, чтобы я отвязался. Я прислал. 6 строчек. После длительных обсуждений и "проверок на непротиворечивость и соответствие политике компании" признали, ну и дальше по тексту, "в одной из следующих версий". В результате потеряли блокнотик, или рыбу завернули неудачно в ту самую страничку.

Сергей Горохов, помнится, тоже поучаствовал, и с его блокнотиком тоже беда приключилась. Или просто карандашик сломался и записать было нечем.

а вы какую рыбу любите, Сергей?

P.S. Номера обращений не нужно спрашивать, поиск по форуму даст все ответы.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Написание автономного бота
 
Цитата
Mixa написал:
Цитата
Sergey Gorokhov написал:
Терминал подключается к серверу, начинает качать данные и сообщает скрипту isLimitsLoaded=true, т.е. на сервере все лимиты действительно загружены
Это действительно странно, что вы отвечаете в разделе "Программирование" и тем более имеете право принимать решения.
Цитата
Mixa написал:
А вслед за лимитами - уведомление "лимиты загружены". Отдельно для каждой секции.
Таким образом, в какое бы время не подключился клиент, уведомление "лимиты загружены" должно быть отправлено  после  лимитов.


Цитата
Sergey Gorokhov написал:
этому вопросу уже очень и очень много лет
Потому что этим вопросом занимается человек, мало понимающий в программировании.
миха, прекращай.

не нравится Горохов - не задавай ему вопросы. Ищи ответы в другом месте.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Доступ к Settings.line из кода индикатора, Пропадает доступ к массиву line структуры Settings в индикаторе после добавления индикатора на график и последующего изменения какого-либо параметра.
 
Здравствуйте

известная проблема. Несколько лет назад  разработчики мне ответили в стиле : так и должно быть, пользуйся тем что дали.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Все индикаторы на Lua
 
Цитата
Kander написал:
Цитата
Andrey Bezrukov написал:
Контрактов во всех сделках - Общее количество - Объем совершенных в текущей сессии сделок, штук.
Контракт и переводится как сделка. Вы можете дать вменяемый ответ, можно ссылкой на статью. Почему из вас надо сутками ответ выбивать?

О каких контрактах идет речь на скрине выше(акции Five)?
контракт - это обязательство, которое возникает вследствие сделки по определённым активам. Например, на акциях Газпрома возникает позиция по акциям, на фьючерсах Газпрома возникает позиция по контрактам. Контракт есть обязательство выполнить определенные действия к какому то сроку (например купить или продать акции)

не нужно наезжать, сначала имеет смысл определиться в терминологии.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
AddLabel из скрипта-индикатора
 
Цитата
swerg написал:
Если запрашиваемой возможности инет - просьба зарегистрировать пожелание.
году в 15 предлагал, регистрировали. Видимо, невозможно.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Оповещение на основе формулы с индикатором, Как создать оповещение с использованием индикатора
 
Цитата
Сергей написал:
Здравствуйте!

Пользуюсь Квиком в версии Сбербанка.
Прошу помощи в следующем.

Хочу создать смс оповещение когда цена закрытия на часовом интервале станет меньше moving average с периодом, скажем 9.
Другое оповещение, это когда цена закрытия, скажем, на часовом интервале станет меньше нижней границы Bollinger bands.

Есть ли в квике такая штатная возможность или нужно программировать?

спасибо и будьте здоровы!
и вам не хворать
http://bot4sale.ru/download-categories/2012-06-13-15-10-36/item/rasshirennyj-servis-opoveshchenij-qu...
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
string.upper(S) - русские буквы, Русские буквы в верхний регистр не получается сделать в string.upper(S) в Lua QUIK версии 8.13
 
Цитата
swerg написал:
Считаю это ошибкой, которую разработчики QUIK должны исправить.
Интерфейс у терминала русский, по умолчанию для русских букв штатные upper / lower должны корректно работать.
интерфейс у терминала не только русский, увы...
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
2048 game
 
Каждая уважающая себя среда должна иметь кроме прочего, исполняемую в ней игрушку. Я таких для терминала quik не встречал.

Одно время была очень популярна игра 2048б мне заказывали ее написать для какого-то сайта. Вот ее вариант для quik, нарисовал под пиво:
Код
local stopped

game = {
   cell = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
   best = 0,
--   key = nil,
-- t = nil,
   colors =   {   [0]   = QTABLE_DEFAULT_COLOR,
               [2]   = RGB(248,248,255),
               [4]   = RGB(255,239,213),
               [8]   = RGB(255,222,173),
               [8]   = RGB(255,218,185),
               [16]   = RGB(205,92,92),
               [32]   = RGB(255,69,0),
               [64]   = RGB(238,238,0),
               [128]   = RGB(238,118,33),
               [256]   = RGB(255,160,122),
               [512]   = RGB(255,0,0),
               [1028]= RGB(238,18,137),
               [2048]= RGB(139,0,0)
            },
   
   create_table =
      function(self)
         self.t = AllocTable()
         for i = 1,4 do
            AddColumn(self.t, i, "", true, QTABLE_INT_TYPE, 10)
         end
         CreateWindow(self.t)
         SetWindowPos(self.t,100,100,300,130)
         for i = 1,4 do
            InsertRow(self.t,i)
         end
         SetTableNotificationCallback(self.t,       
                                      function(_t, msg, _p, key)
                                       if msg == QTABLE_VKEY then
                                          self.key = key
                                       elseif msg == QTABLE_CLOSE then
                                          stopped = true
                                       end
                                      end)
         SetWindowCaption(self.t, "2048 game by www.bot4sale.ru")
      end,
   
   draw = 
      function(self)
         local cell = self.cell
         for row=1,4 do
            for column=1,4 do
               local value = cell[(row-1)*4 + column]
               SetCell(self.t,row,column,value==0 and "" or tostring(value))
               SetColor(self.t,row,column,game.colors[value],0,game.colors[value],0)
            end
         end
     end,
  
   incr = 
      function(self)
         local t,open = self.cell,{}
         for i=1,16 do 
            if t[i]==0 then 
               open[#open+1]=i 
            end
         end
         t[open[math.random(#open)]] = math.random()<0.1 and 4 or 2
      end,
  
   pack = 
      function(self,ofr,oto,ost,ifr,ito,ist)
         local t = self.cell
         for outer=ofr,oto,ost do
            local skip = 0
            for inner=ifr,ito,ist do
               local i = outer+inner
               if t[i]==0 then 
                  skip=skip+1 
               else 
                  if skip>0 then 
                     t[i-skip*ist],t[i],self.diff = t[i],0,true 
                  end 
               end
            end
         end
      end,
  
   comb = 
      function(self,ofr,oto,ost,ifr,ito,ist)
         local t = self.cell
         for outer=ofr,oto,ost do
            for inner=ifr,ito-ist,ist do
               local i,j = outer+inner,outer+inner+ist
               if t[i]>0 and t[i]==t[j] then 
                  t[i],t[j],self.diff,self.best = t[i]*2,0,true,math.max(self.best,t[i]*2) 
               end
            end
         end
      end,
  
   move = 
      function(self,dir)
         local loopdata =   {   {0,12,4,1,4,1},
                              {0,12,4,4,1,-1},
                              {1,4,1,0,12,4},
                              {1,4,1,12,0,-4}
                           }
         local ofr,oto,ost,ifr,ito,ist = table.unpack(loopdata[dir])
         self:pack(ofr,oto,ost,ifr,ito,ist)
         self:comb(ofr,oto,ost,ifr,ito,ist)
         self:pack(ofr,oto,ost,ifr,ito,ist)
      end,
  
   full = 
      function(self)
         local t = self.cell
         for r=0,12,4 do
            for c=1,4 do
               local i,v = r+c,t[r+c]
               if (v==0) or (c>1 and t[i-1]==v) or (c<4 and t[i+1]==v) or (r>0 and t[i-4]==v) or (r<12 and t[i+4]==v) then
                  return false
               end
            end
         end
      return true
   end,
  
   play = 
      function(self)
         math.randomseed(os.time())
         self:incr()
         self:incr()
         while not stopped do
            self:draw()
            if self.best == 2048 then 
               message("Поздравляю!\n\nwww.bot4sale.ru") 
               break 
            end
            if self:full() then 
               message("Game Over!")
               break 
            end
            
            self.diff = false
            if       self.key==0x25 then       -- Left
               self:move(1)
            elseif self.key==0x27 then         -- Right
               self:move(2)
            elseif self.key==0x26 then       -- Up
               self:move(3)
            elseif self.key==0x28 then         -- Down
               self:move(4)
            end
            self.key = nil
            if self.diff then 
               self:incr() 
            end
            sleep(100)
         end
      end,
      
   rules = 
      function()
         message("Правила игры:\n\nВ каждом раунде появляется плитка номинала «2» или «4». Нажатием стрелки игрок может скинуть все плитки игрового поля в одну из 4 сторон. Если при сбрасывании две плитки одного номинала «налетают» одна на другую, то они превращаются в одну, номинал которой равен сумме соединившихся плиток. После каждого хода на свободной секции поля появляется новая плитка номиналом «2» или «4». Если при нажатии кнопки местоположение плиток или их номинал не изменится, то ход не совершается. Если в одной строчке или в одном столбце находится более двух плиток одного номинала, то при сбрасывании они начинают соединяться с той стороны, в которую были направлены.\nЛевый столбец с номерами строк участия в игре не принимает.\n\ns_mike@rambler.ru")
      end
}
local game = game

--------------------------------------------------

function main()
   game:create_table()
   game:rules()
   game:play()
end
Также можно взять здесь

Не имею возражений, если разработчики включат игрушку в список своих демонстрационных скриптов ))))
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
_dataline_data_metatablegc
 
Добрый день

Что за тип данных такой

_dataline_data_metatablegc

у меня не получилось осознать и не смог найти в спецификации lua
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Владимир написал:
   s_mike@rambler.ru, Да, Вам слушать этот бред явно противопоказано. ::

Меня это блеяние про МОЖНО сделать достало ещё много лет назад. Так СДЕЛАЙТЕ, наконец, "простейшую таблицу под любым соусом при помощи метаметодов", чтобы у таблицы заявок строки не пропадали при обрыве связи! Что, не можете? Способны только языком чесать? А что происходит с этими долбаными таблицами "с любыми свойствами" после DeleteRow - не подскажете? А то я от этого говна вообще отказался. Что до loadstring - эта "deprecated" чуть ли не единственная приличная функция во всём языке, и я ею активно пользуюсь.

вам следует научиться различать  таблицы языка луа и оконный табличный интерфейс расширения qlua.

Владимир, вы хам и невежда. Я больше вам писать не буду. К сожалению, на этом форуме невозможно заблокировать вас и не читать то, что вы пишете.

поэтгму я предлагаю остальным посетителям форума более не отвечать вам с целью очищения атмосферы от запахов.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Владимир написал:
TGB, Да хрен с ними, с  "неокрепшими умами" - пущай укрепляются! Не в инкубаторе же их держать! ::

Все-таки это таблицы как деревья. С обращениям к их элементам как к многомерным массивам. И ничего не надо "с помощью них строить" - всё уже построено. Мой ТРЕТИЙ коммент в этот форум содержал фразу:

В общем, с языком почти всё ясно: граф (точнее, дерево) объектов построить можно, а простейшую таблицу или даже массив - нельзя. Остаётся разобраться со строковыми переменными: способна ли эта loadstring интерпретировать строки как операторы языка (или, скажем, функции), то есть имеется ли здесь техническая возможность программирования данными.

Не нужно слушать этот бред.

простейшие таблицы, что одномерные, что многомерные, что фиксированного размера, что динамические, на луа делаются под любым соусом при помощи метаметодов. Можно сделать матрицу вообще с любыми свойствами, а не только с заранее заданными.

функция loadstring является deprecated.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Изменить версию Lua с 5.4.1 до 5.4.2
 
Цитата
Старатель написал:
QUIK 8.13.1.16, Lua 5.4
Получил очередную ошибку  
Цитата
invalid key to 'next'
в древнем скрипте
Код
   local  ID  =  {}
 function   main ()
   .. .
   for  TableName, id  in  pairs(ID)  do 
    ID[TableName]  =   nil 
     DestroyTable (id)
   end 
   .. .
 end   
с функцией next проблемы давние, в 5.3 тоже присутствуют.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Получать объемы сделок
 
Цитата
Старатель написал:
Проще самому написать.

Цитата
Глебов Александр написал:
суммарные  обновляемые объемы сделок для каждого ценового уровня внутри дня
Как-то так:
Код
   local  Volume  =  {}
 local   function   Claster (alltrade)
   if  alltrade.sec_code  =  =  sec  and  alltrade.class_code  =  =  class  then 
    Volume[alltrade.price]  =  (Volume[alltrade.price]  or   0 )  +  alltrade.qty
   end 
 end 

 function   OnInit ()
   for  i  =   0 ,  getNumberOf ( "all_trades" ) -  1   do 
    Claster( getItem ( "all_trades" , i))
   end 
 end 

 function   OnAllTrade (alltrade)
  Claster(alltrade)
 end   

Можно SearchItems задействовать для боле быстрого поиска.
можно. Но в этом случае индикатор будет подвешивать терминал в случае запуска на ликвидном инструменте ближе к концу торговой сессии. А если таких индикаторов будет несколько - терминал умрет.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Получать объемы сделок
 
Цитата
Глебов Александр написал:
Цитата
   s_mike@rambler.ru написал:
 
Цитата
Глебов Александр  написал:
 
Цитата
    s_mike@rambler.ru  написал:
   
Цитата
  Глебов Александр    написал:
   
Цитата
      s_mike@rambler.ru    написал:
Вот       такой       вариант. Но не в таблицу выводит, а рисует на графике.
    Знакомо.Неинтересно.
   вывести результаты в таблицу на порядок (или на два порядка) проще, чем нарисовать все эти уровни и на графике.

Поэтому ответ на ваш вопрос о возможности реализации на lua имеет вполне себе утвердительный ответ.
  А  в чем конкретно состоит ответ на мой вопрос, кроме "посмотреть на Ваш график", а мне нужны данные для дальнейшей обработки?
 если вам хочется обрабатывать результаты, можно просто читать базу соответствующего дня и получать в луа сразу готовую таблицу с разблюдовкой по ценам сделок. Базы лежат в виде отдельных файлов в текстовом виде в формате языка луа.
Ну, собственно, это я и пытаюсь выяснить -  какими средствами QLUA  можно  читать  базу текущего дня и  получать готовую таблицу?

Вот такой функцией читают файлы базы индикатор из архива, ссылку на который я писал выше
Код
-----------------------------------------------------------------------------------------------------------------------------------
-- Чтение таблицы из файла в массива или таблицу. Вырезает сигнатуру из файла
-- Параметры:
--      Имя файла
--      Функция декодирования (или nil)
-- Возвращает:
--      Таблицу или nil
--      Сообщение об ошибке или nil
--      Полное имя читаемого файла
ifuse(`table',`read',`
   function table.read(filename,decode)
      m4_assert(type(filename) == "string","Вместо строки передано (" .. type(filename) .. ") " .. tostring(filename))
      m4_assert(type(decode) == "function" or decode == nil,"Вместо функции или nil передано (" .. type(decode) .. ") " .. tostring(decode))

      filename = io.makepath(filename,".dat")

      local result
      local f,status = io.open(filename,"r")
      if f then
         local str = f:read("*a")
         f:close()
         local _,_,s = string.find(str,"^%-%-%s.*%s%-%-\n(.*)$")
         str = s or str

         if decode then
            str = decode(str)
         end

         status,result = pcall(loadstring("return " .. str))
         if status then
            status = nil
         else
            status = "Файл поврежден" ifdef(`DEBUG',`.. ": " .. result')
            result = nil
         end
      end
      return result,status,filename
   end
')

тут есть немного того, что вам не потребуется (инструкции препроцессора, декодирование), просто выкиньте это лишнее.

Файлы базы формируются в папке <квик> / www.bot4sale.ru / VaP / <инструмент>

Таблица в файле содержит две подтаблицы.
[1] это общие итоги по дню
[2] это таблица данных по каждой торговой цене дня

Последовательность полей

Код
dnl Общие данные за день
pushdef(`COUNTER',            0)         dnl Поля в разделе DAT_TOTALS
define(`TOTAL_VOLUME_BUY',      m4_inc(`COUNTER'))      dnl Объём покупок за день
define(`TOTAL_VOLUME_SELL',   m4_inc(`COUNTER'))      dnl Объём продаж за день
define(`TOTAL_VOLUME',         m4_inc(`COUNTER'))      dnl Объём за день
define(`TOTAL_MAXVOLUME',      m4_inc(`COUNTER'))      dnl Максимальный объём, прошедший по какой-либо цене за день
define(`TOTAL_TRADES_BUY',      m4_inc(`COUNTER'))
define(`TOTAL_TRADES_SELL',   m4_inc(`COUNTER'))
define(`TOTAL_TRADES',         m4_inc(`COUNTER'))
define(`TOTAL_MAXTRADES',      m4_inc(`COUNTER'))      dnl Максимальное кол-во сделок, прошедших по какой-либо цене за день
define(`TOTAL_MINPRICE',      m4_inc(`COUNTER'))      dnl Минимальная цена дня
define(`TOTAL_MAXPRICE',      m4_inc(`COUNTER'))      dnl Максимальная цена дня
define(`TOTAL_TABLE_SIZE',      COUNTER)      dnl Размер таблицы total
popdef(`COUNTER')
Код
dnl Структура данных по конкретной цене
pushdef(`COUNTER',            0)         dnl Поля в разделе DAT_DATA
define(`VOLUME_BUY',            m4_inc(`COUNTER'))         
define(`VOLUME_SELL',         m4_inc(`COUNTER'))
define(`TRADES_BUY',            m4_inc(`COUNTER'))
define(`TRADES_SELL',         m4_inc(`COUNTER'))
define(`VOLUME_BS',            m4_inc(`COUNTER'))
define(`TRADES_BS',            m4_inc(`COUNTER'))
define(`PRICE_TABLE_SIZE',      COUNTER)                  dnl Размер таблицы по одной конкретной цене
popdef(`COUNTER')

Если что-то конкретное непонятно, спросите.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Получать объемы сделок
 
Цитата
Глебов Александр написал:
Цитата
   s_mike@rambler.ru написал:
 
Цитата
Глебов Александр  написал:
 
Цитата
    s_mike@rambler.ru  написал:
Вот     такой     вариант. Но не в таблицу выводит, а рисует на графике.
  Знакомо.Неинтересно.
 вывести результаты в таблицу на порядок (или на два порядка) проще, чем нарисовать все эти уровни и на графике.

Поэтому ответ на ваш вопрос о возможности реализации на lua имеет вполне себе утвердительный ответ.
А  в чем конкретно состоит ответ на мой вопрос, кроме "посмотреть на Ваш график", а мне нужны данные для дальнейшей обработки?
если вам хочется обрабатывать результаты, можно просто читать базу соответствующего дня и получать в луа сразу готовую таблицу с разблюдовкой по ценам сделок. Базы лежат в виде отдельных файлов в текстовом виде в формате языка луа.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Получать объемы сделок
 
Цитата
Владимир написал:
   s_mike@rambler.ru, Вот уж АБСОЛЮТНО до лампочки! Достаточно взглянуть в начало текста:
Версия:5.05
Требования:Quik 8.6
Размер:1.57 MB
и любому дебилу ясно, что это никак не Lua.

Достаточно взглянуть в конец:
Адаптировано для работы с библиотекой bot4sale.dll
и любому дебилу...
прекрасно.

как вы замечательно про дебила-то... Сами, никто за язык не тянул.

скрипт этот я написал как раз на луа. Это чистый незамутненнвй луа, который просто помещен в контейнер.  
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Получать объемы сделок
 
Цитата
Владимир написал:
   s_mike@rambler.ru,
1. Вы что, предполагаете самостоятельно разработать и графическую библиотеку? Если нет, то сложность представления данных в виде таблицы или графика ОДНОГО порядка.
2. Нет там ответа на его вопрос, ибо совершено очевидно, что вся тамошняя хрень написана НЕ на Lua.
позволю себе спросить - а на чем она написана?
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Получать объемы сделок
 
Цитата
Глебов Александр написал:
Цитата
   s_mike@rambler.ru написал:
Вот   такой   вариант. Но не в таблицу выводит, а рисует на графике.
Знакомо.Неинтересно.
вывести результаты в таблицу на порядок (или на два порядка) проще, чем нарисовать все эти уровни и на графике.

Поэтому ответ на ваш вопрос о возможности реализации на lua имеет вполне себе утвердительный ответ.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Получать объемы сделок
 
Вот такой вариант. Но не в таблицу выводит, а рисует на графике.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
QUIK 8.13 индикаторы перестали загружаться из подпапок., Раньше было лучше...
 
Поместите ваш индикаторкуда вам удобно, а в LuaIndicators создайте прокладку типа


dofile("путь к файлу индикатора")
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Оповещения по индикатору
 
Цитата
YURY написал:
Пожалуйста добавьте в программу функцию оповещений по индикатору
посмотрите это. Возможно, подойдёт.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
URL in message function
 
message("www.bot4sale.ru")

В сообщении на экране www.bot4sale.ru будет оформлена как ссылка, тут все в порядке. Но при нажатии на эту ссылку открывается проводник, а не браузер. Думаю, что и с другими типами (call-to и прочими будет то же самое)

По умолчанию приложением для открытия URL назначен Хром.

Поправьте.  
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Владимир написал:
swerg, Ну хватит тяфтяфкать, милок! За слова свои отвечать квалификации не хватает - понимаю, но тогда уж приличнее помолчать

Программирование давно и далеко ушло от Фортрана на БЭСМ-6. И даже от Кернигана с Ричи.

Самое простое, что  можно сделать для расширения кругозора, это обратиться к Википедии. Окажется, что существует несколько разных способов организации строкового типа. Я даже ссылку вам дам на русском языке: Строковый тип

P.S. Про ваше героическое прошлое мне известно, про удивительный скрипт тоже. Убедительная просьба больше не хамить, всему есть предел.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Событие получения данных всех таблиц и графиков после подключения к серверу
 
Цитата
Владимир написал:
   s_mike@rambler.ru, Это Вы с зеркалом разговорились, сударь? Повторяю для бестолковых:  Единственная таблица, из которой я получаю данные для торговли - это ТТТ, а она непустая даже если вообще не соединяться с сервером.
ну ладно. Вот вам несколько примеров. Исключительно чтобы ваша дурь и глупый  апломб были всем видны.

1. Таблица текущих торгов пуста после установки терминала до первого подключения к брокеру

2. Ттт пуста, если в ней нет ни одного инструмента.

3. ТТТ пуста, если запрещены к получению все добавленные в нее колонки параметров. Зависит от набора полей.

4. Ттт пуста утром, если в наcтройках стоит флаг очистки при смене торговой даты. Зависит от набора полей.

5.ттт пуста после очистки данных до начала их перезакачки с сервера брокеоа

наверняка есть и другие моменты и их более чем достаточно.


P.S. Да, мне известно о вашем героическом прошлом, чудесном скрипте и стиве джобсе, который носил вам кофе.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Событие получения данных всех таблиц и графиков после подключения к серверу
 
Цитата
Владимир написал:
   s_mike@rambler.ru, Что именно "неверно"?
"ТТТ, а она непустая даже если вообще не соединяться с сервером"

вам следует набраться опыта, прежде чем делать безапелляционные утверждения.  
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Событие получения данных всех таблиц и графиков после подключения к серверу
 
Цитата
Владимир написал:
Артем, Огласите весь список, пжалста!(с)  

Единственная таблица, из которой я получаю данные для торговли - это ТТТ, а она непустая даже если вообще не соединяться с сервером.

Обычное неверное утверждение.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Добавить аргумент param в колбек OnParam
 
Цитата
Roman Azarov написал:
Добрый день!

Прошу прощения, действительно, допустил ошибку в ответе.
Вызов OnParam происходит при изменении параметра(ов) и, в текущей реализации, функции действительно неизвестно, значение каких конкретно параметров было изменено.

Пожелание по добавлению параметра (массива) для OnParam зарегистрировали, постараемся его рассмотреть. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.

В случае, если необходимо зарегистрировать какие-либо пожелания по прочим функциям обратного вызова, просим описать их явным образом.
Это пожелание за последние 6-7 лет регистрировалось раза 3, столько же раз было признано целесообразным и 0 раз было реализовано.

Смысла ждать нет.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 31 След.
Наверх