Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 15.06.2023
04.07.2023 20:37:40
Чтоб двинуть цену нужны Капиталы! Чтоб двинуть цену нужном направлении нужно понимание, и это не закрытые форумы. Пример тому хорошо освещенная история в трайдинге по серебру.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 15.06.2023
04.07.2023 20:30:18
Владимир, к стати как Вы вставляете чтоб именно отвечать Вам.
Я просмотрел Ваши посты, более того мне нравится Ваш подход.
Но давайте говорить на одном языке.
Я установил КВИК не для программирования и Вы тоже.
Мы торгуем! Что будет если не понимать азов трейдинга?
Пример, если Всех участников этого форума просуммировать наш капитал, и открыть 1 сделку, на все. Что будет с этой сделкой?
Ответ очевиден. Это бизнес. Но не Ваш и не мой.
В чём преимущество OnInit
Пользователь
Сообщений: Регистрация: 15.06.2023
04.07.2023 20:06:47
Уважаемый , мы тут чуть отошли от темы.
На Ваш вопрос - В чём преимущество? Хотел сделать поправку на пост. Если скрипт небольшой, не требует особого быстродействия, не затратен по памяти. Вас все устраивает - То ни каких.
Если хотите оптимизировать Вас скрипт посмотрите "Програмирование на Lua" сэкономит много времени. Проверено!
С уважением VPM
В чём преимущество OnInit
Пользователь
Сообщений: Регистрация: 15.06.2023
04.07.2023 19:38:44
Я не обсуждаю язык, бессмысленно другого нет. Я лишь прислушиваюсь к рекомендациям авторов. Проверить видимость легко, быстродействие скрипта легко с локальными и глобальными. SciTe одно нажатие.
А вот со сбором мусора сложней. Оказывается nil запускает сборщик.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 15.06.2023
04.07.2023 19:26:21
Владимир, так я и обращаюсь к профи, с вопросом как правильно организовать в луа; Список, стек, очередь.
Мне тяжело судить какай язык или РЕ, у меня нет подобных знаний. Пользуемся что есть, хотя мне нравится луа, интуитивно понятен.
Таблица Всех сделок отражает кто сделку организовал, больше взять негде - это собственно "Лента". А Также Количество в сделке. Баланс я имел ввиду именно Количество контрактов в сделках по направлению сделки. А так же отслеживаю крупных игроков ну и другие римочки VSA SmartM.
В чём преимущество OnInit
Пользователь
Сообщений: Регистрация: 15.06.2023
04.07.2023 19:00:30
Я смотрел Ваши посты Как понимаю у Вас свой подход вы не пользуетесь историей данных. А локализация в луа нужна чтоб не засорять для видимости и быстродействия.
Ну вы это сами лучше меня знаете.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 15.06.2023
04.07.2023 18:52:46
Затраты памяти идут на высоко ликвидных к примеру фьючерс на NG нагружает, на RTS норм. OnAllTrade я баланс считаю.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 15.06.2023
04.07.2023 18:47:01
"Поскольку Lua использует для представления чисел двойную точность, ваша программа можем выполняться на протяжении двухсот лет, "
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 15.06.2023
04.07.2023 18:45:21
Владимир, Я это более менее понимаю.
Но по утверждению РЕ это
"Более эффективная реализация использует две индекса, один для первого элемента и один для последнего:"
Я это и опробовал. Здесь нет стандартной библиотеки.
Реализация похожа на Ваш стек, только использует два индекса. Я так понимаю именно для быстрого доступа и спереди и сзади.
Приведен весь код.
В чём преимущество OnInit
Пользователь
Сообщений: Регистрация: 15.06.2023
04.07.2023 18:30:04
, так я с Вами не спорю, где угодно!
Вопрос в организации переменных Вашего скрипта их локализации и видимости.
К примеру, "перед запуском основного потока main" всего 200 локальных переменных я постоянно выхожу за это число. Если как у Космонавта то сам lua ругается порой.
Сервис!
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 15.06.2023
04.07.2023 15:52:54
Забыл сказать что получаю в колбеке обработка Main(). И сколько прилетит в колбек неизвестно даже МаркетМейкеру. Отсюда и разница в расходе памяти. один ликвидный другой не очень.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 15.06.2023
04.07.2023 15:39:25
В примере приведены функции для организации Любого метода: LIFO или FIFO. В этом то собственно и вопрос в правильной организации обоих методов.
Да то что вы описываете я видел к Примеру понравилась реализация OnTrade() от Владимира, лаконично просто шикарно.
В моем же примере обработка не с последнего элемента а сначала сохранённого, ну собственно Вы сами об этом пишите.
В чём преимущество OnInit
Пользователь
Сообщений: Регистрация: 15.06.2023
04.07.2023 15:08:50
В чём преимущество? Так его и нет.
Вопрос в организации переменных Вашего скрипта их локализации и видимости.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 15.06.2023
04.07.2023 14:46:35
Всем Добрый день!
Уж коль тема называется , обращусь к профи за пояснениями.
Взят Пример из книги Р.Е.
------ Очереди и двойные очереди
"Простейшим способом реализации очередей в Lua является использование функций ins ert и remove из библиотеки table. Эти функции вставляют и удаляют элементы из произвольной позиции массива, сдвигая остальные элементы для согласования действий. Однако, подобные перемещения могут быть дорогими для больших структур.
Более эффективная реализация использует две индекса, один для первого элемента и один для последнего:
function ListNew () return {first = 0, last = -1} end
Во избежание загрязнения глобального пространства имен мы определим все операции со списком внутри таблицы, которую мы соответственно назовем List (таким образом, мы создадим модуль)."
Код
local List = {};
function List.new()
return {first = 0, last = -1}
end
--Теперь мы можем вставлять и удалять элементы с обоих концов за постоянное время:
function List.pushfirst (list, value)
local first = list.first - 1
list.first = first
list[first] = value
end
function List.pushlast (list, value)
local last = list.last + 1;
list.last = last;
list[last] = value;
--message('List.pushlast: ' ..'; '..tostring(last)..'; '.. tostring(value.price)..'; '.. tostring(value.qty))
end
function List.popfirst (list)
local first = list.first;
if first > list.last then
--error("list is empty")
return nil
end
local value = list[first]
list[first] = nil -- чтобы разрешить сборку мусора
list.first = first + 1
return value
end
function List.poplast (list)
local last = list.last
if list.first > last then error("list is empty") end
local value = list[last]
list[last] = nil -- чтобы разрешить сборку мусора
list.last = last - 1
return val ue
end
Если вы будете использовать эту структуру для обслуживания в порядке поступления, вызывая только pushlast и popfirst, то и first, и last будут постоянно расти.
Однако, так как мы представляем массивы в Lua при помощи таблиц, вы можете индексировать их как с 1 до 20, так и с 16 777 216 до 16 777 236.
Поскольку Lua использует для представления чисел двойную точность, ваша программа можем выполняться на протяжении двухсот лет, делая по миллиону вставок в секунду, прежде чем возникнет проблема с переполнением.
Получаю, сохраняю list и уматываю. function OnAllTrade(at) if is_run and at and at.sec_code==symbol and at.class_code==class then List.pushlast(list, at); end
Получаю из list строку для обработки. function AllTrade() at = List.popfirst(list); end
Все инструмента нормально для обработки одного инструмента, но в процессе работы скрипт накапливает память.
Вопрос к Профи, как нужно сделать чтоб максимально быстро обрабатывалась и очищалась очередь? Кто то может пример показать.
В чём преимущество OnInit
Пользователь
Сообщений: Регистрация: 15.06.2023
04.07.2023 13:31:33
написал: инициализирую переменные до начала main как то так:
это нормально если ваши переменные не лезут в терминал или к серверу до запуска mail()
В чём преимущество OnInit
Пользователь
Сообщений: Регистрация: 15.06.2023
04.07.2023 13:20:46
Владимир,
зря ругаете, функция необходима и ключевое здесь OnInit(STRING script_path) В данной функции пользователь имеет возможность инициализировать все необходимые переменные и библиотеки перед запуском основного потока main().
К примеру если обрабатываете колбек OnAllTrade() без нее и не обойтись.
Новые проблемы на все тоже quik, После обновления quik до версии 10. и выше перестал работать торговый сервис в таблице котировок (стакан)
Пользователь
Сообщений: Регистрация: 15.06.2023
30.06.2023 10:03:43
vladindre, Ок принято, спасибо.
Новые проблемы на все тоже quik, После обновления quik до версии 10. и выше перестал работать торговый сервис в таблице котировок (стакан)
Пользователь
Сообщений: Регистрация: 15.06.2023
28.06.2023 18:59:42
Добрый день
отправил Вам в почту.
Новые проблемы на все тоже quik, После обновления quik до версии 10. и выше перестал работать торговый сервис в таблице котировок (стакан)
Пользователь
Сообщений: Регистрация: 15.06.2023
26.06.2023 17:19:48
Андрей1
Нужно Вам убрать галочку. Редактировать графики, Диаграмма. Самая нижняя оставлять линии.
Новые проблемы на все тоже quik, После обновления quik до версии 10. и выше перестал работать торговый сервис в таблице котировок (стакан)
Пользователь
Сообщений: Регистрация: 15.06.2023
26.06.2023 12:51:38
Добрый день! Это давняя проблема! Более точно с версии 7,8,9,10. При аварийном обрыве соединения с сервером и последующим восстановлении. Скриншоты не сохранял. Да нужны ли они? см. арифметику в каком то режиме не сбрасывает в 0.
с уважение, VPM
Новые проблемы на все тоже quik, После обновления quik до версии 10. и выше перестал работать торговый сервис в таблице котировок (стакан)
Пользователь
Сообщений: Регистрация: 15.06.2023
25.06.2023 12:09:15
Спасибо! Отдельное спасибо за оперативность!
Если уж начали ремонтировать стакан может посмотрите и такую ошибку: При обрыве связи и последующий перезагрузке в стакане в столбце свои заявки - удваиваются активные заявки. Только их отображение в стакане. Это давняя проблема, Конечно ни на что не влияет, кроме восприятия в моменте. Но как то не солидно.
Новые проблемы на все тоже quik, После обновления quik до версии 10. и выше перестал работать торговый сервис в таблице котировок (стакан)
Пользователь
Сообщений: Регистрация: 15.06.2023
22.06.2023 12:31:45
Добрый день!
После обновления терминала quik до версии 10. и выше, перестал работать торговый сервис в таблице котировок (стакан), а именно не реагирует на на выделение строк в столбце Продажа, не выставляет заявки лимитированные на продажу, На покупку выставляет на продажу нет.
Вид стакана 3 в терминале (американский стакан) по строчное расположение котировок.
Подчеркиваю до версии 10 все работало отлично именно с 10 перестало, ошибка не устраняется.