Создание "вечного робота"., Переподключение 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