Anton написал: кастуем ноль к инт пойнтеру и читаем оттуда координату
Это как?
Линии тренда
Пользователь
Сообщений: Регистрация: 07.09.2017
09.10.2019 16:26:23
Цитата
Александр написал: А как определить в какую ячейку памяти записан?
Устанавливаете одну из точек линии тренда на какое-то значение, например 12,35467, потом ищете все ячейки памяти, в которые записано это значение, и смотрите, какая из этих ячеек меняет значение при перетаскивании линии тренда или этой точки. Эта ячейка и содержит Y-координату одной из точек тренда. ArtMoney так работает.
Если бы адрес ячейки сохранялся при перезапуске Quik, можно было бы забить в скрипт lua адреса ячеек, в которые пишутся координаты точек тренда, и использовать библиотеку, которая определяет значение переменной, записанной в ячейку, по адресу ячейки. Но проблема как-раз в том, что адреса не сохраняются.
Линии тренда
Пользователь
Сообщений: Регистрация: 07.09.2017
09.10.2019 12:34:29
Цитата
Александр М написал: ЦитатаЦитата Александр М написал: Ещё один. Из видео невозможно понять, меняется ли линия индикатора сама или только при получении новых свечек/перестройке индикатора, поэтому ваша ссылка бесполезна.Общайтесь корректно к коллегам, тогда и они начнут вас уважать. Из видео прекрасно видно, что линия меняется сама с заданной задержкой. Задержка сделана специально, надеюсь понимаете для чего.
Во-первых, мы с вами не коллеги, я не пытаюсь никому впарить бессмысленные скрипты. Во-вторых, вопрос был о линии тренда, а не об индикаторах, читайте внимательнее.
В-третьих, из видео не понятна причина перестройки индикатора - то ли это обновление графика для ликвидного инструмента во время торговой сессии, то ли ещё что-то, видно только что он обновляется через промежуток времени. Программный код, как он реализован, также не приводится.
И, наконец, требовалось программное решение, которое можно воспроизвести, а не какой-то закрытый скрипт, поэтому, ваша ссылка по-прежнему остается бесполезной.
Линии тренда
Пользователь
Сообщений: Регистрация: 07.09.2017
07.10.2019 14:47:22
Цитата
Александр написал: Возможно я не понял вопроса. Получить координаты тренда программно по идентификатору сразу в скрипт? Или просто получить записать на бумажку?
Александр, получить сразу в скрипт или получить и записать в файл, или куда-то, откуда можно будет считать их. В принципе, удается не только получить, но даже изменить тренд при помощи программы ArtMoney, обращаясь непосредственно к ячейкам памяти, в которые он записан, правда, при перезагрузке квика адрес ячеек меняется и этот способ становится бесполезным.
Ещё один. Из видео невозможно понять, меняется ли линия индикатора сама или только при получении новых свечек/перестройке индикатора, поэтому ваша ссылка бесполезна.
Линии тренда
Пользователь
Сообщений: Регистрация: 07.09.2017
03.10.2019 01:04:24
Цитата
написал: посмотрите.
не так чтобы очень уж удобно, но задачу решает.
Михаил, не решает задачу.
Вопрос был о линии тренда, а не об индикаторе. К тому же у вас, как я понимаю, индикатор не перерисовывается при перетаскивании мыши, а ждет перестройки графика - это уж совсем не комильфо.
Линии тренда
Пользователь
Сообщений: Регистрация: 07.09.2017
02.10.2019 18:43:55
А можно ли получить координаты точек линии тренда, построенной вручную, при помощи сторонних средств? (то, о чём спрашивал несколькими сообщениями ранее)
Если у кого-то получалось, напишите, пожалуйста, в каком направлении двигаться.
Отработка OnOrder после остановки скрипта
Пользователь
Сообщений: Регистрация: 07.09.2017
24.11.2017 11:06:45
Вопрос снимается за отсутствием ответа, запишем это в пользу минусов и ошибок quik.
Отработка OnOrder после остановки скрипта
Пользователь
Сообщений: Регистрация: 07.09.2017
23.11.2017 13:40:02
, а сможете ли вы запустить скрипт из другого потока и, если да, то каким образом?
Отработка OnOrder после остановки скрипта
Пользователь
Сообщений: Регистрация: 07.09.2017
17.11.2017 17:17:02
Цитата
Sergey Gorokhov написал: Кнопка "Остановить" это не аварийный выход, а просто остановка скрипта. Принудительная (в Вашем термине "аварийная") остановка происходит не по нажатию кнопки, а по истечении таймаута 5 сек. И это не зависит от того что в это время делает main, что-бы Вы туда не написали скрипт принудительно завершится. Таймаут можно изменить, это делается в return события OnStop (см документацию QLUA.chm) Если Вам что-то нужно снять заявки перед остановкой скрипта, делайте это в самом OnStop
Я могу и в main-е снять заявки, вопрос не в этом был, а в том, почему OnOrder не отрабатывает после остановки. Запустите скрипт из начала темы, сразу все станет понятно. Строка message(tostring(IS_STOPPING)) должна была бы выводить true в конце, если бы OnOrder отрабатывал.
Попробовал перенести снятие заявки в OnStop, как вы написали, - всё то же, не работает OnOrder.
Отработка OnOrder после остановки скрипта
Пользователь
Сообщений: Регистрация: 07.09.2017
17.11.2017 16:30:24
, спасибо, это хорошая идея, думаю реализовать что-то подобное. Вопрос был к разработчикам относительно кнопки "Остановить", аварийный выход - это всё-таки когда скрипт падает с выводом ошибки в поле "Ошибки выполнения скрипта".
Отработка OnOrder после остановки скрипта
Пользователь
Сообщений: Регистрация: 07.09.2017
16.11.2017 19:01:39
Он не остановит работу, ведь main продолжает работать. Что вы посоветуете сделать, как выйти из main-a только удостоверившись, что все заявки сняты (а это можно сделать только по результатам колбека OnOrder)?
И кстати, с таблицами такая же ситуация, после нажатия на "Остановить" я уже не могу корректно запустить SetCell - он просто ждет 5 секунд и содержимое ячейки не меняет.
Отработка OnOrder после остановки скрипта
Пользователь
Сообщений: Регистрация: 07.09.2017
16.11.2017 18:26:21
Здравствуйте.
Скрипт ниже выставляет заявку при старте, а при нажатии на кнопку "Остановить" снимает ее.
Код
IS_RUN = true
IS_STOPPING = false
ORDER_NUM = ''
function main()
-- ставим заявку
local t =
{
CLASSCODE = 'TQBR',
SECCODE = 'MVID',
ACTION = 'NEW_ORDER',
ACCOUNT = 'L01-00000F00',
CLIENT_CODE = 'DEMO915',
TYPE = 'L',
OPERATION = 'B',
QUANTITY = '1',
PRICE = '393',
TRANS_ID = '1'
}
sendTransaction(t)
while IS_RUN do
-- выполнение скрипта останавливается - снимаем заявку
if IS_STOPPING then
local t =
{
CLASSCODE = 'TQBR',
SECCODE = 'MVID',
ACTION = 'KILL_ORDER',
ORDER_KEY = tostring(ORDER_NUM),
TRANS_ID = '1'
}
sendTransaction(t)
for i=1,25 do sleep(200) end -- ждем 5 сек. в надежде что OnOrder отработает снятую заявку
end
--
sleep(500);
end
end
function OnStop()
IS_STOPPING = true
SLEEP_TIME = 50;
end
function OnOrder(order)
ORDER_NUM = order.ordernum
message(tostring(IS_STOPPING))
end
А это вывод в окне сообщений:
Получается, что после нажатия "Остановить" OnOrder уже не отрабатывает. Это ошибка или так должно быть? Версия квик 7.14.1.7