Может объясните, как эмуляцией с использованием OnTransReply можно получить результат транзакции без использования OnTransReply
sendTransaction
Пользователь
Сообщений: Регистрация: 30.01.2015
19.02.2015 07:23:59
Добрый день, Михаил Вы надеюсь поняли, что не ответили челу на его вопрос? Если нет то повторю: Вопрос: Как получить результат транзакции, без использования OnTransReply ? Естественно ожидать два варианта: 1) Невозможно. 2) или какой-то вариант "без использования OnTransReply " Вот Ваш ответ: "Только эмуляцией, с использованием sendTransaction и OnTransReply." Вы придумали третий вариант очень напоминает ответ "сам дурак", Просто замечательный ответ. Главное доходчиво и сразу все понятно.
Событие возвращает ошибку 1000
Пользователь
Сообщений: Регистрация: 30.01.2015
18.02.2015 18:29:43
это значит, что на вершине стека лежит эта константа. попробуйте поставить проверку типа после вызова функции обращения к стакану. lua_pcall(st, 2, 1, 0); весьма возможно что функция ничего не вернула или вернула nil, а вы пытаетесь что-то извлекать из стека.
Потенциальная проблема с if, Потенциальная проблема с логическим оператором или скрытая ошибка
Пользователь
Сообщений: Регистрация: 30.01.2015
18.02.2015 18:23:19
Евгений,
"Мои коды просты как дрова, сложные я писать не умею" Значит Вы профессионал, потому что сложные( вернее сказать мудреные) пишут начинающие. -------------------------------------- В структурном программировании есть такое образное сравнение. программа не должна напоминать тарелку вареных спагетти, в которой трудно понять где что начинается и кончается. Программа должна быть подобно жемчужному ожерелью. Каждая функция подобно ниточке жемчуга. Можно удалить, но ожерелье не рассыпется. -------------------------- Ну а, у Вас тоже хорошо - стопка дров. Успехов
Событие возвращает ошибку 1000
Пользователь
Сообщений: Регистрация: 30.01.2015
18.02.2015 15:46:41
В целом проблема понятно, проверяйте типы данных и значения на nil. И будет Вам счастье.
Событие возвращает ошибку 1000
Пользователь
Сообщений: Регистрация: 30.01.2015
18.02.2015 15:44:38
, последний Ваш тест это про другую ошибку т е отсутствие данных по стакану она известна надо проверять на nil
Событие возвращает ошибку 1000
Пользователь
Сообщений: Регистрация: 30.01.2015
18.02.2015 15:42:55
А сделайте такой тест вместо sleep(1000) напишите sleep(999)
Потенциальная проблема с if, Потенциальная проблема с логическим оператором или скрытая ошибка
Пользователь
Сообщений: Регистрация: 30.01.2015
18.02.2015 15:37:13
Евгений, ------------------------------ Я указал как возможную ошибку ограничение памяти на основании того, что Вы указали о ранее работавшей программе. Т е данная конструкция у Вас работала. Т е она интерпретировалась правильно. Теперь не работает. как вариант, интерпретатрор обрезал строку и получил ошибку. ---------------------------------------- Давным дано я решил большинство проблем программирована на QPILE таким образом: ---------------------------------------------- Написал препроцессор , но так как компилятора нет в QPILE, то назвал его компилятор, который сам создает внутренние переменные для функций. --------------------------------------------------- Вместо функций сделал макросы. ---------------------------------------------------- Компилятор выдает список всех переменных и функций. ---------------------------------------------- Все функции и макросы разместил в библиотеках. -------------------------------------------------- В результате программа на QPILE стала простой и понятной. -------------------------------------------------------- Кроме того, таким образом снимается ограничение на максимальное число переменных и функций. ------------------------------------------------------- Если владеете языками рекомендую сделать так.
Событие возвращает ошибку 1000
Пользователь
Сообщений: Регистрация: 30.01.2015
18.02.2015 09:13:34
if (top == 0) return 0; поставьте здесь проверку значения на вершине стека на тип кода или вывод в лог файл string sec_code = lua_tostring(st, -1);// qlua.ToString(-1); // код бумаги
Потенциальная проблема с if, Потенциальная проблема с логическим оператором или скрытая ошибка
Пользователь
Сообщений: Регистрация: 30.01.2015
18.02.2015 09:09:17
Добрый день, выражение if((Server_Time_var-Registration_Time)>Time_Criterium_for_Bad_Deal) перепишите так: x=Server_Time_var-Registration_Time-Time_Criterium_for_Bad_Deal if x>0 -------------------------------------- Можно предположить, что не хватает памяти для данной строки и в результате облом. ------------------------------------ Могу рекомендовать следующее правило: Не пишите сложных и длинных выражений в условиях и такой проблемы никогда не будет. И еще в QPILE не рекомендую использовать длинные имена переменных. Все переменные и функции на одном уровне видимости. Длинные имена лишь замедляют интерпретацию
sendTransaction
Пользователь
Сообщений: Регистрация: 30.01.2015
17.02.2015 14:47:10
Добрый день, Михаил, Хорошо бы увидеть конкретный ответ. А то "эмуляция", хотя и короче двух слов и предлога между ними, но звучит почти также.
sendTransaction
Пользователь
Сообщений: Регистрация: 30.01.2015
17.02.2015 10:01:51
А что такое "эмуляция"? ---------------------------------------------- ВИки: Эмуля́ция ( emulation) в — комплекс программных, аппаратных средств или их сочетание, предназначенное для копирования (или эмулирования) функций одной вычислительной системы (гостя) на другой, отличной от первой, вычислительной системе (хосте) таким образом, чтобы эмулированное поведение как можно ближе соответствовало поведению оригинальной системы (гостя). ------------------------------------------ Вы это рекомендуете?
Может стоит объединить функции O, H, L, C, V, T в одну?
Пользователь
Сообщений: Регистрация: 30.01.2015
17.02.2015 09:58:31
возможно имеет смысл, если сделать это на CИ (сами пользователи этого не сделают, а на луа это будет медленнее, чем существующее решение) и возвратить таблицу типа: local x= ds:candle(index)
Формат даты
Пользователь
Сообщений: Регистрация: 30.01.2015
16.02.2015 07:42:46
Добрый день, ну да, "без выкрутасов": ------------------------------- есть общепринятые форматы дат. А это: 2015 0002 01, 2015 0002 01 не дата и не число. а последовательность цифр и пробелов.
Вилы Эндрюса
Пользователь
Сообщений: Регистрация: 30.01.2015
16.02.2015 07:35:12
"Служить бы рад, прислуживаться тошно"
Зависание терминала, Зависание терминала при загрузке портфеля qpile
Пользователь
Сообщений: Регистрация: 30.01.2015
15.02.2015 10:18:21
, А если это "неправильно" так удивило ОС, что у нее пропал дар речи? Надо ставить BREAKPOINT и по шагам искать проблему.
Вилы Эндрюса
Пользователь
Сообщений: Регистрация: 30.01.2015
15.02.2015 10:07:36
, ВИЛЫ ЭНДРЮСА - это всего-то лишь прямая проведенная из одной точки через середину отрезка, соединяющего две других. Т е это настолько примитивный индикатор, что он без проблем рисуется в квике. -------------------------------------------------------- Неужели Вы серьезно верите, что Эндрюс на таком примитиве делал бабло на рынке. 50 лет ему приносит бабло издание книжечки для буратин. Как в прочем и большинству популярных книг о торговле на фондовом рынке. ---------------------------------------------------------- лучше почитайте книгу Сореса Новая парадигма финансовых рынков. Этот чел по крайней мере не пишет бульварных книг для буратин, но делает деньги. .
Список доступных для транзакций инструментов, получение списка инструментов для совершения транзакций с учетом различных аккаунтов у одного и того же брокера.
Пользователь
Сообщений: Регистрация: 30.01.2015
15.02.2015 09:56:20
, Вы заблуждаетесь. Ответ на вопрос платная или нет очень простой. Если Вы платите за эту программу, то она для Вас платная, если нет - то бесплатная. -------------------------------------------- Т е программу покупает проф участник рынка(брокер) , который вам оказывает услуги. Для него она платная. Но Вам он может предоставлять как платные так и бесплатные услуги. Большинство брокеров не берет плату за предоставление данной программы, что снимает с них ответственность за качество этой услуги. В этом случае данная услуга бесплатная для клиентов брокера. Кроме того, терминал QUIK -это программа подачи поручений, исполнение которых не является обязательным для брокера. Т е Вы ему сообщили? Он Вас услышал? Все!! Если окажет услугу (купит или продаст) - возьмет денюшку если нет, то нет. --------------------------------------------------------------------------- Вместо того, чтобы наезжать на разработчиков , перечитайте внимательно ГК РФ, ФЗ о защите прав потребителя, ФЗ о рынке ценных бумаг и регламент брокера. Претензии к бесплатным продуктам не имеют никаких правовых последствий. ---------------------------------------------------------------------- "Дареному коню в зад, т е в зубы не смотрят" - народная мудрость.
не добавляются строки в таблицу
Пользователь
Сообщений: Регистрация: 30.01.2015
15.02.2015 09:42:08
Вот так все работает: -------------------------------------------
local stopped, t_id ------------------------------------------------ function main() t_id = AllocTable() res = AddColumn(t_id,1,"col1",true,QTABLE_STRING_TYPE,30) message("AddColumn - " .. tostring(res), 1) res = AddColumn(t_id,2,"col2",true,QTABLE_STRING_TYPE,30) CreateWindow(t_id) SetWindowCaption(t_id, "Моя таблица" ;) local row = InsertRow(t_id, -1); SetCell(t_id, row, 1, "тест" ;) row = InsertRow(t_id, -1) ; SetCell(t_id, row, 2, "привет" ) while not stopped do sleep(1000) end end ------------------------------------------------- function OnStop(s) stopped = true if t_id~= nil then DestroyTable(t_id) end end
---------------------------------------------------- У Вас основная ошибка в том, что Вы пытаетесь работать с таблицей, т е добавлять строки и изменять название до ее создания - CreateWindow(t_id)
Библиотека QCtrls.dll
Пользователь
Сообщений: Регистрация: 30.01.2015
14.02.2015 16:04:01
В одной русской сказке, под названием "по щучьему велению" сидел Иван на печи и мечтал
В другом классическом произведении есть тост "Хочу чтобы Все" --------------------------------------------- мечтать оно конечно не вредно, но и бесполезно. ------------------------------- "С одной стороны....С другой стороны" -ничего не напоминает ? ( типа песню из одного классического фильма)
Список доступных для транзакций инструментов, получение списка инструментов для совершения транзакций с учетом различных аккаунтов у одного и того же брокера.
Пользователь
Сообщений: Регистрация: 30.01.2015
14.02.2015 15:57:54
вообще-то у большинства брокеров КВИК - бесплатная прога для подачи поручений и только, А не торговая платформа (можно почитать регламент брокера на досуге)
Не считываются параметры инструмента
Пользователь
Сообщений: Регистрация: 30.01.2015
14.02.2015 15:54:25
вместо SIH5 надо писать SiH5 (i вместо I)
Снятие заявки и тут же ее выставление., Снятие заявки и тут же ее выставление.
Пользователь
Сообщений: Регистрация: 30.01.2015
14.02.2015 15:49:52
проверять в таблице заявок ее снятие перед отправкой новой
Снятие заявки и тут же ее выставление., Снятие заявки и тут же ее выставление.
Пользователь
Сообщений: Регистрация: 30.01.2015
14.02.2015 15:48:47
проверить разрешен ли шорт
Формат даты
Пользователь
Сообщений: Регистрация: 30.01.2015
13.02.2015 22:51:24
Если без особых выкрутасов, то можно упростить:
function DateFormat(date, input_fmt, output_fmt) local day = date:sub(input_fmt:find("([d|D]+)") local month = date:sub(input_fmt:find("([m|M]+)") local year = date:sub(input_fmt:find("([Y|y]+)") local outstr = output_fmt:gsub("([d|D]+)", day) local outstr = outstr:gsub("([m|M]+)", month) local outstr = outstr:gsub("([y|Y]+)", year) return outstr end
примерно в 2 раза быстрее.
Конвертация Qple на Lua
Пользователь
Сообщений: Регистрация: 30.01.2015
12.02.2015 15:55:29
суть в том, что в LUA необходимо будет реализовать работу с событийной моделью робота, чего в QPILE просто нет. Вот и вырастет программа а если еще "да ладно " прикрутить то будет еще больше. Относительно того в 2 или в 10 раз - это уж от автора произведения зависит.
Конвертация Qple на Lua
Пользователь
Сообщений: Регистрация: 30.01.2015
12.02.2015 15:51:25
а если еще и "да ладно", то в десять.
Библиотека QCtrls.dll
Пользователь
Сообщений: Регистрация: 30.01.2015
12.02.2015 15:48:25
Почему-то полностью согласен с , за исключением его пристрастия к слову "дерьмо".
Конвертация Qple на Lua
Пользователь
Сообщений: Регистрация: 30.01.2015
11.02.2015 21:33:57
Если в QPILE 2000 строк, то в луа будет раз в пять больше (включая строки программ на СИ).
Определить время начала интервала для заданного таймфрейма
Пользователь
Сообщений: Регистрация: 30.01.2015
11.02.2015 21:31:35
вопрос не понял. Причем здесь os.time и таймфрейм?
Что кажет? Что надо?
CreateDataSource, какое правильное расположение функции CreateDataSource?
Пользователь
Сообщений: Регистрация: 30.01.2015
11.02.2015 21:27:22
Раньше надо было подписываться в main. Я так и делаю. Возможно разработчики уже исправили этот ляп, я не проверял.
iuplua, обсуждаем работу стороннего графического пакета
Пользователь
Сообщений: Регистрация: 30.01.2015
11.02.2015 21:24:06
так конвертирует WP , а редактировать лень, замените сами на кавычки ".
Создание "вечного робота"., Переподключение QUIK и Lua-скрипта на следующий день.
Пользователь
Сообщений: Регистрация: 30.01.2015
11.02.2015 20:46:51
Для проверки подключения рекомендую делать так:
if getInfoParam("SERVERTIME")=="" then --подключения нет else --подключение есть end
Конвертация Qple на Lua
Пользователь
Сообщений: Регистрация: 30.01.2015
09.02.2015 21:07:04
Так как QPILE - это танк первой мировой, то изготовить из него современный можно лишь с помощью кувалды и отбойного молотка, что автоматизировать очень сложно и следовательно дорого, но возможно.
iuplua, обсуждаем работу стороннего графического пакета
Пользователь
Сообщений: Регистрация: 30.01.2015
09.02.2015 21:03:17
они у каждого свои. работают любые.
iuplua, обсуждаем работу стороннего графического пакета
Пользователь
Сообщений: Регистрация: 30.01.2015
09.02.2015 20:56:56
На днях решил вернуться к пакету IUP и проверить его работу в QUIK . IUP - версия 3.13, QUIK - версия 6.16.1.15. Раньше не удавалось получить устойчивой работы пакета. Произнеся несколько заклинаний , я с удовлетворением отметил, что тест не падает и ничего не роняет. Предлагаю желающим повторить данный эксперимент. тест здесь :
Пожелания по квику и LUA
Пользователь
Сообщений: Регистрация: 30.01.2015
07.02.2015 17:32:57
Добрый день Всем, более пяти лет назад я возмущался, почему нельзя вместо допотопного QPILE сделать нормальный скриптовый язык например LUA. Когда появился ЛУА, я очень удивился решению в виде main потока и говорил , что будут проблемы с многопоточностью. Потому что мне было уже тогда понятно, что родилась вещь в себе (некий монстр, повадки которого даже создатели не знают). И в этом случае создание нормального API было бы более проcтым решением, чем такая модель встроенного языка. ---------------------------------------------- Мне объяснили, что так задумал автор данного творения и все проблемы синхронизации потоков уже решены (но очевидно автору и самому не все проблемы были понятны). ------------------------------- Увы, Пришлось все то, о чем правильно отмечено автором данной ветки писать самому. -------------------------------------------- Полагаю, что причина такого тусклого развития средств разработки торговых роботов в том, что терминал квик изначально это условно бесплатная программа для подачи поручений брокеру. И ВСЕ Остальное - это бесплатное приложение. ------------------------------------------------ Игры - это совершенно другая область бизнеса. Там игра - это массовый продукт(товар). ----------------------------------------------- А торговые роботы - это либо дорогие разработки проф участников, либо игрушечные поделки для малограмотных частных инвесторов. Луа в КВИК - это песочница для детского сада. Вот желающие могут строить дома и возить песочек на игрушечных машинах. Умеющие стряпать игрушечных роботов впаривают им свои поделки. -------------------------------------------------------------------- Здесь пока нет бизнеса, поэтому и нет нормальных решений среды разработки. Но это не только недостаток КВИК, это уровень данного вопроса на российском фондовом рынке. На российском рынке бабло делают без роботов. ---------------------------------------------------------------------- Но я рад , что в нашем полку недовольных прибыло. ----------------------------------------------------------------------- Порою смелое движение вперед есть результат пинка под зад.
Событие возвращает ошибку 1000
Пользователь
Сообщений: Регистрация: 30.01.2015
06.02.2015 17:30:27
может быть проблема в _luafix?
Создание "вечного робота"., Переподключение QUIK и Lua-скрипта на следующий день.
Пользователь
Сообщений: Регистрация: 30.01.2015
06.02.2015 17:23:13
например так: --------------------------- local qtnF=getQuoteLevel2 (ClassCode, nFuture)
if qtnF~=nil then local bid_=qtnF.bid; local bid_count=qtnF.bid_count; if bid~=nil and bid_count~=0 then bid=bid_[bid_count].price --делаем что надо -- end end
Очередь+Массив, Объединение свойств очереди и массива.
Пользователь
Сообщений: Регистрация: 30.01.2015
02.02.2015 19:48:31
Добрый день, Нарисовал библиотеку на чистом луа для работы с очередями без использования каких либо модулей. Полагаю должна работать с QLUA без проблем. ------------------------------ Отличается от написанной выше Владимиром следующим: 1) Вариант Владимира может работать лишь при условии что длина истории очереди не выходит за точность чисел в формате double. 2) В моем варианте функция push работает в 3 раза быстрее 3) добавил функцию full - для обнаружения заполненной очереди. -------------------------------------- Особо сильно не тестировал, поэтому сообщения об ошибках приветствуются. -------------------------------- модуль можно взять тут
Очередь+Массив, Объединение свойств очереди и массива.
Пользователь
Сообщений: Регистрация: 30.01.2015
02.02.2015 13:53:22
Владимир, Я вот немного ваши программы переписал в таком виде: -------------------------------------------- local function _new(q_size) return { first = 1, last =0, max_size = q_size } end
local function _delq(q) local m=q.first local x = q[m] q[m] = nil q.first = m + 1 return x end
local function _push( q, value ) q.last = q.last + 1 q[q.last] = value if q.last >q.max_size then return _delq(q) end end
local function _pop( q) if q.last>=q.first then return _delq(q); end end
local function _get(q,pos) local x=q.first+pos if q.last>=x then return q[x] end end -- если очередь пустая то get(q,0)=nil
Создание "вечного робота"., Переподключение QUIK и Lua-скрипта на следующий день.
Пользователь
Сообщений: Регистрация: 30.01.2015
02.02.2015 09:25:21
пардон, давно не пользуюсь этой функцией, поэтому забыл про данный ляп в QLUA.
Очередь+Массив, Объединение свойств очереди и массива.
Пользователь
Сообщений: Регистрация: 30.01.2015
02.02.2015 09:22:19
Добрый день,Владимир, 1) Из своего опыта замечу, что самый эффективный алгоритм и его реализацию подобного класса задач можно сделать с использованием операций над битами и языка уровня СИ.
Очередь+Массив, Объединение свойств очереди и массива.
Пользователь
Сообщений: Регистрация: 30.01.2015
01.02.2015 20:46:10
Добрый день, А такой вариант устроит ?
---- создать новый массив, максимальная длина N new=function(N) local t={}; t.len=N; return t; end
---- вытолкнуть первый элемент pop=function(t) if #t>0 then return table.remove(t,1); end end
---- поставить в очередь , если очередь >N -вытолкнуть первый push=function(t,x) t[#t+1]=x; if #t>t.len then return table.remove(t,1) end; end
--------------- доступ к любому элементу как к элементу таблицы квадратными скобками
Создание "вечного робота"., Переподключение QUIK и Lua-скрипта на следующий день.
Пользователь
Сообщений: Регистрация: 30.01.2015
01.02.2015 18:31:07
Добрый день, 1) tt1[0] В Lua принято индексы таблицы начинать с 1. иначе неправильно работает # (размер массива).
2) попробуйте так: if ( t~=nil and tt1~=nil and #t>0 and (my_position==0) and (ind==0) and (t[1].close > tt1[0].close)) then