-- Для правильной обработки русских строк -- "Russian_Russia.1251", "Russian_Russia", "Russian" local RusLocale = "Russian_Russia.1251" os.setlocale(RusLocale, "ctype")
nikolz написал: - запуск коллбеков всех Lua-скриптов пользователя;Мое мнение:Колбеки не запускаются, а вызываются. Вызываются они в основном потоке, потому что иначе они не могут вызываться. Они и есть реакция на события в этом потоке.Вы знаете иной механизм вызова колбеков? Расскажите .
Как я понимаю человек предлагает вызывать колбеки в потоке Lua-скрипта.
И Г О Р Ь написал: самое дебильное, что за пять лет что я трахаюсь с этими галками, добавили "умный заказ данных" при котором открывая стакан опциона весь квик виснет от 10 секунд до минуты. нельзя совершать сделки и т. п. Умный заказ - шляпа.
Вообще не понятно почему Quik так много качает данных с сервера. И лог у него большой.
Karina Dmitrieva написал: Если же, со своей стороны, Вы хотите предложить изменения в работу данного алгоритма - просим Вас более подробно описать, как именно должна работать условная заявка типа "Тейк-профит" с Вашей точки зрения.Заранее благодарим.
ИМХО, надо чтобы цена выставлялась не ниже чем: цена тейк-профита минус отступ минус спред, при любом движении цены.
Ведь когда тейк-профит выставляется пользователем, то он хочет дождаться этой цены и получить цену не сильно ниже тейк-профита. А это может случиться при одномоментном сильном движении цены против него.
Текущий алгоритм подходит для стоп-лосса, но не для тейк-профита. На мой взгляд.
Не нормальный. Если я хочу продать от 18 100, то не надо продавать существенно ниже этой цены. А это произойдет, если сразу будет сделка на 40 пунтов ниже.
Установил тейк-профит 18 100, отступ 2, спред -2. На открытии был взлёт и падение цены. Заявка выставлена по 18 063 и исполнена по 18 084. Не лучший тут алгоритм.
ИМХО, надо чтобы цена выставлялась не ниже чем тейк-профит минус отступ минус спред. Это в случае если цена резко скакнёт против. В остальном случае будет как сейчас.
nikolz написал: Могу сообщить , что делаю запись в лог из колбеков, из main,и еще из 90 (краш-тест терминала) потоковкоторые выбираются из пула потоков (максимум 512 потоков) и проблем нет
Михаил написал: Так в OnTransReply() я и ловлю успешность выполнения заявки отправленной с помощью sendTransaction(). sendTransaction() исполняется, а ответа в OnTransReply() нет.
OnTransReply() - это ответ на транзакцию. OnOrder() - для заявки.
nikolz написал: Мой оппонент привел пример локальной переменной вне функций, т е это тоже не по теме, но эти локальные переменные являются копией глобальных
Не являются копией глобальных. Объясняю, что chank оформляется как как функция, после чего выполняться. То есть мой предыдущий пример "компилируется" по смыслу в следующий код:
Код
function init_chank()
local Stopped = false
_G["main"] = function()
while not Stopped do
end
end
_G["OnStop"] = function()
Stopped = true
end
end
init_chank()
nikolz написал: Замыкание связывает код функции с её лексическим окружением (местом, в котором она определена в коде). Лексические переменные замыкания отличаются от глобальных переменных тем, что они не занимают глобальное пространство имён. От переменных в объектах они отличаются тем, что привязаны к функциям, а не объектам.
Правильно. Всё тело файла кода, в луа, считается chunk. Переменные, помечены как local внутри chunk, захватываются функциями, когда эти функции определяются в chunk, и эти переменные разделяются между ними.
1. В main() можно использовать функции получения данных от Квика, которые обычно используются в колбаках? Такие как getParamEx(), getLevel2Quotes() и т.д.
2. QLua нормально синхронизирует обращение к переменным, помеченным как local, если к ним идет доступ и из потока колбаков, и из потока main?
1) Может в выставлении заявки на вкадке "Лимитная заявка" как-то разделить Лимитную заявку и Тейк-профит? А то они сейчас одновременно болтаются и сразу не понятно, что мы отсылаем на выполнение - очень много полей ввода.
2) И глюк программы - из графика бумаги (там отображаются активные заявки) снял пару тейк-профит заявок. После этого невозможно было зайти на владку "Заявки" со списком заявок - показывало информацию по снятой заявке.
Давно уже можно было бы указать в документации QLua GetParamEx сноску, где смотреть названия параметров! А то люди не находят и здесь спрашивают постоянно.
Таблица с использованием getParamEx. Не подтягивает цену открытия., В таблице расчетов использую цену открытия, последнюю, HIGH/LOW. По акциям всё идёт хорошо, но по фьючерсам в цене открытия стоит 0
s_mike@rambler.ru, спасибо. Имеется в виду нельзя одновременно писать из нескольких потоков? А не одновременно можно?
Еще один вопрос, теоретический. Где-то было написано, что в QLua доступ к глобальным переменным синхронизирован для потоков. Я не ошибаюсь? А вот если глобальная переменная объявлена как local, то этот случай тоже правильно отработается или лучше такие переменные как local не помечать?
В QLua main выполняется в своем потоке, а callback-функции в основном потоке Квика.
Вопрос. Если я буду открывать лог-файл (io.open()) в одном потоке, а писать в него буду в другом потоке и там же его закрывать, то все будет нормально работать? Так можно делать?
1) Надо ставить стоп-лосс заявку на покупку при цене 20 300. 2) Сейчас в Квике это никак не сделаешь. Люди давно просят сделать стоп-заявку на другую стоп-заявку, но разработчики не делают это.
Sergey Gorokhov написал: TRANS_ID - это произвольный номер Вашей транзакции, "снятие заявки" - это тоже транзакция и ей надо придумать номер. Номер может быть любым в диапазоне от «1» до «2 147 483 647»
А номер транзакции должен быть уникальным или не обязательно? Если, например, запускаются несколько роботов и они нумеруют свои транзакции с единицы.
алексей ратов написал: если я правильно все понял валютные фьючерсы можно торговать среднесрочно, прибыль идет в пунктах шага цены. При выходе из позиции доход просто может уменьшиться из-за укрепления рубля.
Среднесрочно, конечно, можно торговать. Только надо понимать, что доход/убыток будет начисляться каждый день в клиринг, а не только при выходе из позиции.
A.T. написал: Флажок «Хранить рабочие файлы в папке пользователя», и чтоб по умолчанию стоял, и пользователи даже о нём и не знали, и всё работало без танцев с бубнами.
Лучше в каком-либо файле настроек можно было бы прописать путь к папке, где хранятся данные. Если не прописано, то в текущей папке, как это сделано сейчас.
Let_it_go написал: пользуюсь переменной step до того как ей присвоено значение (частая ошибка у кодеров-самоучек, а я самоучка) Жду от этой функции что она мне что то покажет, но она молчит.
Выполнение до этой функции не доходит, т.к. происходит ошибка в предыдущей строке кода.
Тут явное не понимание, что такое ошибки в программе и что происходит когда они случаются.