Добрый день, ну да, "без выкрутасов": ------------------------------- есть общепринятые форматы дат. А это: 2015 0002 01, 2015 0002 01 не дата и не число. а последовательность цифр и пробелов.
yako-v, ВИЛЫ ЭНДРЮСА - это всего-то лишь прямая проведенная из одной точки через середину отрезка, соединяющего две других. Т е это настолько примитивный индикатор, что он без проблем рисуется в квике. -------------------------------------------------------- Неужели Вы серьезно верите, что Эндрюс на таком примитиве делал бабло на рынке. 50 лет ему приносит бабло издание книжечки для буратин. Как в прочем и большинству популярных книг о торговле на фондовом рынке. ---------------------------------------------------------- лучше почитайте книгу Сореса Новая парадигма финансовых рынков. Этот чел по крайней мере не пишет бульварных книг для буратин, но делает деньги. .
Список доступных для транзакций инструментов, получение списка инструментов для совершения транзакций с учетом различных аккаунтов у одного и того же брокера.
Серж, Вы заблуждаетесь. Ответ на вопрос платная или нет очень простой. Если Вы платите за эту программу, то она для Вас платная, если нет - то бесплатная. -------------------------------------------- Т е программу покупает проф участник рынка(брокер) , который вам оказывает услуги. Для него она платная. Но Вам он может предоставлять как платные так и бесплатные услуги. Большинство брокеров не берет плату за предоставление данной программы, что снимает с них ответственность за качество этой услуги. В этом случае данная услуга бесплатная для клиентов брокера. Кроме того, терминал QUIK -это программа подачи поручений, исполнение которых не является обязательным для брокера. Т е Вы ему сообщили? Он Вас услышал? Все!! Если окажет услугу (купит или продаст) - возьмет денюшку если нет, то нет. --------------------------------------------------------------------------- Вместо того, чтобы наезжать на разработчиков , перечитайте внимательно ГК РФ, ФЗ о защите прав потребителя, ФЗ о рынке ценных бумаг и регламент брокера. Претензии к бесплатным продуктам не имеют никаких правовых последствий. ---------------------------------------------------------------------- "Дареному коню в зад, т е в зубы не смотрят" - народная мудрость.
Дмитрий Вот так все работает: -------------------------------------------
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)
В одной русской сказке, под названием "по щучьему велению" сидел Иван на печи и мечтал
В другом классическом произведении есть тост "Хочу чтобы Все" --------------------------------------------- мечтать оно конечно не вредно, но и бесполезно. ------------------------------- "С одной стороны....С другой стороны" -ничего не напоминает ? ( типа песню из одного классического фильма)
Список доступных для транзакций инструментов, получение списка инструментов для совершения транзакций с учетом различных аккаунтов у одного и того же брокера.
вообще-то у большинства брокеров КВИК - бесплатная прога для подачи поручений и только, А не торговая платформа (можно почитать регламент брокера на досуге)
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
суть в том, что в LUA необходимо будет реализовать работу с событийной моделью робота, чего в QPILE просто нет. Вот и вырастет программа а если еще "да ладно " прикрутить то будет еще больше. Относительно того в 2 или в 10 раз - это уж от автора произведения зависит.
Так как QPILE - это танк первой мировой, то изготовить из него современный можно лишь с помощью кувалды и отбойного молотка, что автоматизировать очень сложно и следовательно дорого, но возможно.
На днях решил вернуться к пакету IUP и проверить его работу в QUIK . IUP - версия 3.13, QUIK - версия 6.16.1.15. Раньше не удавалось получить устойчивой работы пакета. Произнеся несколько заклинаний , я с удовлетворением отметил, что тест не падает и ничего не роняет. Предлагаю желающим повторить данный эксперимент. тест здесь : http://www.kamynin.ru
Добрый день Всем, более пяти лет назад я возмущался, почему нельзя вместо допотопного QPILE сделать нормальный скриптовый язык например LUA. Когда появился ЛУА, я очень удивился решению в виде main потока и говорил , что будут проблемы с многопоточностью. Потому что мне было уже тогда понятно, что родилась вещь в себе (некий монстр, повадки которого даже создатели не знают). И в этом случае создание нормального API было бы более проcтым решением, чем такая модель встроенного языка. ---------------------------------------------- Мне объяснили, что так задумал автор данного творения и все проблемы синхронизации потоков уже решены (но очевидно автору и самому не все проблемы были понятны). ------------------------------- Увы, Пришлось все то, о чем правильно отмечено автором данной ветки писать самому. -------------------------------------------- Полагаю, что причина такого тусклого развития средств разработки торговых роботов в том, что терминал квик изначально это условно бесплатная программа для подачи поручений брокеру. И ВСЕ Остальное - это бесплатное приложение. ------------------------------------------------ Игры - это совершенно другая область бизнеса. Там игра - это массовый продукт(товар). ----------------------------------------------- А торговые роботы - это либо дорогие разработки проф участников, либо игрушечные поделки для малограмотных частных инвесторов. Луа в КВИК - это песочница для детского сада. Вот желающие могут строить дома и возить песочек на игрушечных машинах. Умеющие стряпать игрушечных роботов впаривают им свои поделки. -------------------------------------------------------------------- Здесь пока нет бизнеса, поэтому и нет нормальных решений среды разработки. Но это не только недостаток КВИК, это уровень данного вопроса на российском фондовом рынке. На российском рынке бабло делают без роботов. ---------------------------------------------------------------------- Но я рад , что в нашем полку недовольных прибыло. ----------------------------------------------------------------------- Порою смелое движение вперед есть результат пинка под зад.
например так: --------------------------- 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
Добрый день, Нарисовал библиотеку на чистом луа для работы с очередями без использования каких либо модулей. Полагаю должна работать с QLUA без проблем. ------------------------------ Отличается от написанной выше Владимиром следующим: 1) Вариант Владимира может работать лишь при условии что длина истории очереди не выходит за точность чисел в формате double. 2) В моем варианте функция push работает в 3 раза быстрее 3) добавил функцию full - для обнаружения заполненной очереди. -------------------------------------- Особо сильно не тестировал, поэтому сообщения об ошибках приветствуются. -------------------------------- модуль можно взять тут http://www.kamynin.ru
Владимир, Я вот немного ваши программы переписал в таком виде: -------------------------------------------- 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
Добрый день,Владимир, 1) Из своего опыта замечу, что самый эффективный алгоритм и его реализацию подобного класса задач можно сделать с использованием операций над битами и языка уровня СИ.