nero333 (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Линии тренда
 
Цитата
Anton написал:
кастуем ноль к инт пойнтеру и читаем оттуда координату

Это как?
Линии тренда
 
Цитата
Александр написал:
А как определить в какую ячейку памяти записан?
Устанавливаете одну из точек линии тренда на какое-то значение, например 12,35467, потом ищете все ячейки памяти, в которые записано это значение, и смотрите, какая из этих ячеек меняет значение при перетаскивании линии тренда или этой точки. Эта ячейка и содержит Y-координату одной из точек тренда. ArtMoney так работает.

Если бы адрес ячейки сохранялся при перезапуске Quik, можно было бы забить в скрипт lua адреса ячеек, в которые пишутся координаты точек тренда, и использовать библиотеку, которая определяет значение переменной, записанной в ячейку, по адресу ячейки. Но проблема как-раз в том, что адреса не сохраняются.
Линии тренда
 
Цитата
Александр М написал:
ЦитатаЦитата Александр М  написал:  https://trdrobot.ru/interaktivnyj-indikator-postroeniya-trendovoj-linii-dlya-quik/   Ещё один. Из видео невозможно понять, меняется ли линия индикатора сама или только при получении новых свечек/перестройке индикатора, поэтому ваша ссылка бесполезна.Общайтесь корректно к коллегам, тогда и они начнут вас уважать. Из видео прекрасно видно, что линия меняется сама с заданной задержкой. Задержка сделана специально, надеюсь понимаете для чего.
Во-первых, мы с вами не коллеги, я не пытаюсь никому впарить бессмысленные скрипты.
Во-вторых, вопрос был о линии тренда, а не об индикаторах, читайте внимательнее.

В-третьих, из видео не понятна причина перестройки индикатора - то ли это обновление графика для ликвидного инструмента во время торговой сессии, то ли ещё что-то, видно только что он обновляется через промежуток времени. Программный код, как он реализован, также не приводится.

И, наконец, требовалось программное решение, которое можно воспроизвести, а не какой-то закрытый скрипт, поэтому, ваша ссылка по-прежнему остается бесполезной.
Линии тренда
 
Цитата
Александр написал:
Возможно я не понял вопроса. Получить координаты тренда программно по идентификатору сразу в скрипт? Или просто получить записать на бумажку?

Александр, получить сразу в скрипт или получить и записать в файл, или куда-то, откуда можно будет считать их. В принципе, удается не только получить, но даже изменить тренд при помощи программы ArtMoney, обращаясь непосредственно к ячейкам памяти, в которые он записан, правда, при перезагрузке квика адрес ячеек меняется и этот способ становится бесполезным.

Цитата
Александр М написал:
https://trdrobot.ru/interaktivnyj-indikator-postroeniya-trendovoj-linii-dlya-quik/
Ещё один. Из видео невозможно понять, меняется ли линия индикатора сама или только при получении новых свечек/перестройке индикатора, поэтому ваша ссылка бесполезна.
Линии тренда
 
Цитата
s_mike@rambler.ru написал:
Сюда  посмотрите.

не так чтобы очень уж удобно, но задачу решает.  
Михаил, не решает задачу.

Вопрос был о линии тренда, а не об индикаторе. К тому же у вас, как я понимаю, индикатор не перерисовывается при перетаскивании мыши, а ждет перестройки графика - это уж совсем не комильфо.
Линии тренда
 
А можно ли получить координаты точек линии тренда, построенной вручную, при помощи сторонних средств? (то, о чём спрашивал Ilya несколькими сообщениями ранее)

Если у кого-то получалось, напишите, пожалуйста, в каком направлении двигаться.
Отработка OnOrder после остановки скрипта
 
Вопрос снимается за отсутствием ответа, запишем это в пользу минусов и ошибок quik.
Отработка OnOrder после остановки скрипта
 
_sk_, а сможете ли вы запустить скрипт из другого потока и, если да, то каким образом?
Отработка OnOrder после остановки скрипта
 
Цитата
Sergey Gorokhov написал:
Кнопка "Остановить" это не аварийный выход, а просто остановка скрипта.
Принудительная (в Вашем термине "аварийная") остановка происходит не по нажатию кнопки, а по истечении таймаута 5 сек.
И это не зависит от того что в это время делает main, что-бы Вы туда не написали скрипт принудительно завершится.
Таймаут можно изменить, это делается в return события OnStop (см документацию QLUA.chm)
Если Вам что-то нужно снять заявки перед остановкой скрипта, делайте это в самом OnStop
Я могу и в main-е снять заявки, вопрос не в этом был, а в том, почему OnOrder не отрабатывает после остановки. Запустите скрипт из начала темы, сразу все станет понятно. Строка message(tostring(IS_STOPPING)) должна была бы выводить true в конце, если бы OnOrder отрабатывал.

Попробовал перенести снятие заявки в OnStop, как вы написали,  - всё то же, не работает OnOrder.
Отработка OnOrder после остановки скрипта
 
_sk_, спасибо, это хорошая идея, думаю реализовать что-то подобное. Вопрос был к разработчикам относительно кнопки "Остановить", аварийный выход - это всё-таки когда скрипт падает с выводом ошибки в поле "Ошибки выполнения скрипта".
Отработка OnOrder после остановки скрипта
 
Он не остановит работу, ведь main продолжает работать. Что вы посоветуете сделать, как выйти из main-a только удостоверившись, что все заявки сняты (а это можно сделать только по результатам колбека OnOrder)?

И кстати, с таблицами такая же ситуация, после нажатия на "Остановить" я уже не могу корректно запустить SetCell - он просто ждет 5 секунд и содержимое ячейки не меняет.
Отработка OnOrder после остановки скрипта
 
Здравствуйте.

Скрипт ниже выставляет заявку при старте, а при нажатии на кнопку "Остановить" снимает ее.
Код
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
Страницы: 1
Наверх