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

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

Страницы: 1
Функции getLinesCount и getNumCandles возвращают nil
 
Всем доброго дня. Поискал поиском, но ничего не нашел. Вопрос вот в чем. Мне надо в скрипте на LUA использовать функции getLinesCount и getNumCandles. Вобщем открываю нужные мне индикаторы, например RSI, как положено присваиваю ему уникальный идентификатор и из скрипта пытаюсь получить количество линий и свечей. Обе функции возвращают значение nil... Все значения вывожу в тестовую таблицу. При этом все остальные значения отображаются корректно. Что я делаю не так? Опять же получение занимает некоторое время, именно поэтому для теста все сделал в бесконечном цикле. Позже это все перенесется в коллбэки.
Как я понял из руководства по LUA функция CreateDataSource вышеупомянутым функциям вообще не нужна. Тем не менее даже из нее тестовый вывод работает. Но как я понял именно CreateDataSource работает исключительно с Price для выбранного инструмента. А если работать с графиками индикаторов нужна getCandlesByIndex?
Код
   while not stopped do 
      ds, Error = CreateDataSource (CLASS, SEC, INTERVAL_M5);
      local count = getLinesCount(ischBB)
      local num   = getNumCandles(ischBB)
      SetCell(t.t_id, row, 1, NAME)
      SetCell(t.t_id, row, 2, tostring (PRICE_STEP),2)
      SetCell(t.t_id, row, 3, tostring (PRICE_SCALE))
      SetCell(t.t_id, row, 4, tostring (count))
      SetCell(t.t_id, row, 5, tostring (num))
      SetCell(t.t_id, row, 6, tostring (ds:Size()))
      sleep(1000)
   end
Получить строки таблицы Текущие торги.
 
Цитата
Владимир написал:
Алексей, Так добавляйте и удаляйте - в чём проблемы? Что за периодичность? Раз в полгода? ::  
Ну примерно 2-3 раза в неделю :lol:  
Получить строки таблицы Текущие торги.
 
Цитата
Nikolay написал:
Чем не устраивает файл с списком кодов инструментов и списком параметров для считывания. Читаете файл при старте, а дальше читаете данные по ним.
И не надо заполнять ненужные мелькающие таблицы в терминале.
Да в принципе всем устраивает. Просто нужно добавлять/удалять инструменты периодически и хотелось бы все это делать именно через таблицу текущих торгов, а не прописывать все ручками.
Получить строки таблицы Текущие торги.
 
Цитата
Владимир написал:
Ах, да -  "Текущие торги #2" и "Текущие торги" это одна и та же таблица
Да, но сути это не меняет  :lol:
Цитата
nikolz написал:
есть два варианта, но они не на lua.рассказать?
Пожалуй наверное не стоит овчинка выделки  :wink:
Цитата
Дмитрий написал:
Месяц назад уже спрашивали
Да, не видел этой темы. Все таки эта задача судя по всему нереализуема средствами Qlua. Придется вручную все это делать :evil:  
Получить строки таблицы Текущие торги.
 
Об этом я в курсе. Задумка была такая, в эту таблицу я загоняю интересующие меня инструменты, а уже из нее я скриптом считываю только их и ничего больше. Может есть другой путь? Сама таблица "Текущие торги" меня вообще не интересует, принципиально я могу скриптом создать таблицу, но как в нее загнать интересующие меня инструменты? Понятно что скриптом без проблем, но принцип должен быть тот же, что и с таблицей "Текущие торги". Т.е. по сути, таблица должна указывать скрипту с чем работать, а инструменты добавляю и удаляю я сам из рабочего пространства Quik.
Получить строки таблицы Текущие торги.
 
Всем доброго времени суток. Есть такой вопрос. В терминале Quik есть таблица "Текущие торги #2". Создана прямо из оболочки Создать таблицу -> Текущие торги. В этой таблице находится весь список инструментов меня интересующих. Задача. Могу ли я получить из этой таблицы как минимум class_code и sec_code по каждому инструменту из этой таблицы? Или это в принципе невозможно? Зная идентификатор таблицы я думаю можно без проблем проделать такой фокус, но я его не знаю и понятия не имею где его достать.
OnTransReply возвращает order_num = nil
 
Например
STOP_ORDER_KIND=ACTIVATED_BY_ORDER_TAKE_PROFIT_AND_STOP_LIMI­T_ORDER
OnTransReply возвращает order_num = nil
 
Daniil Pozdnyakov, спасибо, буду изучать. Правда там не все типы, но насколько я понимаю все, которых нет в файле, это комбинация основных?
OnTransReply возвращает order_num = nil
 
С проскальзыванием понятно, вдруг не мне не хватило, будем продавать/покупать в рамках проскальзывания.
OnTransReply возвращает order_num = nil
 
Вот только сколько ни смотрел, сколько не читал, все как один говорят/пишут вот тут надо эту цену поставить, тут цена должна быть чуть меньше/больше, а тут вот такая. Т.е. никакого понимания не дают.
OnTransReply возвращает order_num = nil
 
Не стал плодить темы, вобщем с order_num разобрался, спасибо. Пришел к выводу что надо брать из таблицы заявок еще и статус заявки, так как бы надежнее :) Сейчас разбираюсь с простым и по исполнению тэйк профитом и стоп лоссом. Вообще в голове сумбур полный, ибо они работают как на покупку так и на продажу. Хочу для начала разобраться с простым. Читаю документацию и вижу это
Код
Тэйк-профит и стоп-лимит Лукойл, покупка 1 лота, активация тэйк-профита при достижении цены 2000 с отступом в 5% и защитным спрэдом в 3%, стоп-цена 2222, цена лимитированной заявки 2255, время действия с 10:00:01 по 19:45:45
ACTION=NEW_STOP_ORDER; 
TRANS_ID=10055; 
CLASSCODE= TQBR; 
SECCODE=LKOH; 
ACCOUNT=L01-00000F00; 
CLIENT_CODE=Q7; 
OPERATION=B; 
QUANTITY=1; 
PRICE=2255; 
STOPPRICE=2000; 
STOP_ORDER_KIND=TAKE_PROFIT_AND_STOP_LIMIT_ORDER; OFFSET=5; 
OFFSET_UNITS=PERCENTS; 
SPREAD=3; 
SPREAD_UNITS=PERCENTS; 
MARKET_TAKE_PROFIT=NO; 
STOPPRICE2=2222; 
IS_ACTIVE_IN_TIME=YES; 
ACTIVE_FROM_TIME=100001; 
ACTIVE_TO_TIME=194545; 
MARKET_STOP_LIMIT=NO
В частности недопонимаю когда ее выставлять? Вижу, что операция продажа. Следовательно чтобы что то выставить на продажу надо сначала купить?
Как я понимаю здесь, при достижении цены 2000 на уже купленной акции активируется тейк профит? Или же я неверно понимаю логику тэйк профит, активируется когда цена достигнет 2000 + 5% и -3% защитного спреда? При этом условии акция будет продана?
Не понятно что такое стоп цена 2222?
Да и цена лимитированной заявки 2255 вообще не вписывается в логику.
OnTransReply возвращает order_num = nil
 
Цитата
Anton написал:
Спасение в том, чтобы не закладывать никакой порядок колбеков и даже факт их появления.
Но ведь колбэки именно под это и заточены.
Цитата
Владимир написал:
оставил только OnTrade
Только этот колбэк не катит, ибо он приходить только после факта сделки. А у меня логика другая, заявка может сниматься еще до факта сделки, но чтобы убить заявку до сделки, нужен order_num, а кроме как из OnOrder или OnTransReply я больше не знаю способов как его получить. Разве что кроме как прямо из таблицы заявок TABLE order NUMBER indx getOrderByNumber(STRING class_code, NUMBER order_id), Но опять же надо знать order_id, а получить его можно только из OnOrder или OnTransReply еще до факта сделки. Правда order_id я не проверял...
OnTransReply возвращает order_num = nil
 
Anton, спасибо за пояснение. В принципе нечто подобное я себе и представлял. Но остается открытым вопрос, что же делать то? Но из вашего пояснения получается, что OnTransReply может вызываться на каждую заявку неоднократно? Если это так, достаточно ли фильтровать те, что пришли с order_num = nil и тупо ждать коллбэк с заполненным этим полем, он обязательно появится?
QApplication, спасибо, обязательно гляну.
OnTransReply возвращает order_num = nil
 
Принципиально у меня тоже самое, насчет price не проверял, но order_num = nil это точно.  
OnTransReply возвращает order_num = nil
 

Здравствуйте. Только начал знакомится со скриптами Lua в Quik. Возникла проблема. Если вкратце, отправляю заявку sendTransaction с необходимыми параметрами. В терминале вижу, что заявка принята и отображается как активная, OnTransReply возвращает status = 3, trans_id ровно тот что и присваивал при отправке заявки. Все прекрасно ровно до тех пор, пока мне не понадобится, например, снять заявку. Начинаются чудеса какие-то. Параметр order_num = nil, но в терминале то в таблице заявок я прекрасно вижу эти номера. Почитав документацию, там некоторые параметры, помеченные звездочкой,

* – параметр может иметь значение nil

НО! Интересует, при каких же условиях они будут возвращаться как nil? Ни слова об этом в документации.
Опять же таки, как поступить если нужен order_num?
1. Обрабатывать OnTransReply только на status?
2. Обрабатывать коллбэк OnOrder? Опять же таки я не нашел в документации ни слова о том при каком условии он вызывается? Только при условии что trans_reply.status = 3 или вообще при любой попытке отправить заявку, даже неудачной? В первом случае получив и обработав OnOrder можно не запариваться с OnTransReply и его статусом по идее, разве что для информации. Во втором случае в коллбэке OnOrder обязательно нужно проверить trans_reply.status. И опять же появляется другой вопрос, в какой последовательности оба этих коллбэка идут??? Если OnOrder может прийти раньше OnTransReply, то получается полнейшая ерунда, order_num в OnTransReply я получить не могу, а OnOrder не могу обработать, т.к. понятия не имею о статусе заявки...

Страницы: 1
Наверх