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

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

Страницы: Пред. 1 ... 23 24 25 26 27 28 29 30 31 32 33 ... 78 След.
Доступ к свечам открытого интереса фьючерсов
 
Цитата
Виктор Столетов написал:
Можно ли  в Lua получить доступ к  свечам открытого интереса, например к закрытию C?

Да это возможно.
Доступ происходит по тому же принципу что и к графику цены и объема.
Если через getCandlesByIndex, то на нужном графике надо указать идентификатор.
Если через CreateDataSource, то в четвертом параметре надо указать имя параметра, для открытого интереса это "numcontracts"
тестовый квик не учитывает размер лота в getDepoEx и OnDepoLimit
 
Цитата
kroki написал:
Если брокер...
Логично задать вопрос не сюда, а напрямую брокеру.
Что приходит в OnTransReply ?
 
Цитата
Nikolay написал:
ID U0120866
Проверили, права есть.

Цитата
Nikolay написал:
Не уверен, что есть ошибки, т.к. если убрать обработку ожидания  while trans_Status == nil do sleep(1) end, то все работает.
Больше интересует вопрос что именно "работает"? Т.е. заявка по факту ставится или нет?
В качестве примера, сообщите точное время (по МСК) когда была попытка выставить такую заявку.
Заявки не были исполнены по непонятной причине, ошибка в работе демо-версии
 
Ilya,
Здравствуйте,
К сожалению, пока новой информации нет.
Чтение данных из файла
 
Цитата
Андрей Пахомов написал:
Мне важно знать что будет работать быстрее:   file:seek (cur,2)    или   file:read()   ?

У нас нет ответа на этот вопрос.
Проведите тестирование и сравните результаты.
Что приходит в OnTransReply ?
 
Nikolay,

Проверьте в таблице транзакций терминала QUIK нет ли ошибки при отправке транзакций.
Дело в том что рыночные заявки на покупку могут быть запрещены.
Если так то в таблице транзакций Вы увидите сообщение об этом.
Сообщите Ваш UID чтобы мы могли проверить права.
Чтение данных из файла
 
Цитата
Андрей Пахомов написал:
MySec[i..'']['SCod'] = file :read(6)

Судя по скриншоту у Вас там явно не 6 символов, а больше. Может 7?

и InsertRow Вы используете не правильно.
надо так:
Код
        row = InsertRow(AVT, -1)
        SetCell(AVT, row, 1, MySec[i..'']['CCod'])
        SetCell(AVT, row, 2, MySec[i..'']['SCod'])
Алгоритм скрипта по разному отрабатывает в режиме отладчика и автономно
 
Артем,

Под полным кодом понимается весь текст скрипта, а не его часть.
тестовый квик не учитывает размер лота в getDepoEx и OnDepoLimit
 
Цитата
electron написал:
вывод в лотах?

Может быть в лотах, может быть в штуках. Каждый брокер настраивает на свое усмотрение.
тестовый квик не учитывает размер лота в getDepoEx и OnDepoLimit
 
electron,
О каком тестовом сервере идет речь?
Если это сервер Вашего брокера то вопрос к брокеру.
Если это наш джуниор, то мы не будем менять настройки т.к. разных брокеров много и у каждого могут быть свои настройки, а джуниор один на всех.
тестовый квик не учитывает размер лота в getDepoEx и OnDepoLimit
 
Здравствуйте
Разные серверы, разные настройки. ничего удивительного.
CreateDataSource, не грузятся данные при формир. через CreateDataSource
 
Nikolay,

Попробуйте убрать условие if.
Алгоритм скрипта по разному отрабатывает в режиме отладчика и автономно
 
Артем,
Здравствуйте,
Для анализа нужен полный код портфеля.
QPILE признан нами устаревшим и мы уже давно его не развиваем. Так что если Вы только начинаете программировать в QUIK лучше сразу начинать с QLUA
Документация лежит в отдельном файле QLUA.chm в папке с терминалом.
Неверная дата и время, Стандартные функции Lua возвращают неверное время сервера
 
К слову, в терминале версии 7.16 добавлена функция os.sysdate, позволяющая получить локальное время с точностью до микросекунд.
Неверная дата и время, Стандартные функции Lua возвращают неверное время сервера
 
Цитата
Иван Ру написал:
Нееет... эта функция возвращает время по Гринвичу, которое не совпадает с локальным временем компьютера и с временем сервера.

Это не так.
Код
message ('time='..os.date())
Вызов функции ATR
 
Let_it_go,

Попробуйте выделить две функции под разные параметры
Код
dofile ("C:\\Program Files\\Lua\\5.1\\lua\\ATR.lua")--ATR
ds_v = CreateDataSource(instr[k].v_class,instr[k].v_sec,INTERVAL_D1)
ds_v:SetEmptyCallback()
sleep(1000)
func1 = ATR() 
func2 = ATR() 
candles=ds_v:Size() --до этого места доходит и выдаёт количество свечей
long_v={}
short_v={}
for i=1,candles do   
long_v[i]=func1(candles, {Period=252}, ds_v)                  
short_v[i]=func2(candles, {Period=5}, ds_v)   
end
Вызов функции ATR
 
Let_it_go,

Сообщите на каком инструменте смотрите график.

К слову, ATR не вернет данных если номер свечки меньше чем заданный период (по умолчанию 14)
Т.е. если у Вас период 14, то первые 14 значений будут nil и это нормально.
Отображение изменения цены в проц
 
Как добавить картинки
Неверная дата и время, Стандартные функции Lua возвращают неверное время сервера
 
если надо в виде таблицы, тогда так:
local Ttime = os.date("!*t",os.time())
Неверная дата и время, Стандартные функции Lua возвращают неверное время сервера
 
Иван Ру,

А что Вы хотите получить?
Если Дату/Время Вашего компьютера, то есть штатная Lua функция os.date()
QLUA, вопросы начинающих.
 
Арсений,
Здравствуйте,
Есть целая куча причин. Существуют разные ограничения со стороны биржи.
Например нельзя указывать слишком маленькую или слишком большую цену. Или слишком часто подавать транзакции или еще много чего. Это описано биржевых правилах торгов.
Еще Ваш брокер может настроить какие-нибудь ограничения. Это следует уточнить у брокера.
В связи с чем, всегда лучше всего сообщить текст ошибки которая возникает при неудачном выставлении.
Получать график один раз в день
 
Цитата
Let_it_go написал:
1. Если я воспользуюсь ds[sec]:Close(), чтобы отписаться от дневок, он случайно не отпишет меня от минуток?

Если Вы вызовите Close для потока с дневным интервалом, то он закроет поток с дневным интервалом.

Цитата
Let_it_go написал:
2. По графику, где мне нужны раз в день дневки, я заказываю минутки на постоянной основе. Будет ли КВИК делать лишнюю работу, если я буду всё время обновлять дневки (не отпишусь от них), или в данном случае этой лишней работой можно пренебречь?

этой лишней работой можно пренебречь
Неверная дата и время, Стандартные функции Lua возвращают неверное время сервера
 
Иван Ру,

Время в сообщениях, это время Вашего компьютера.
SERVERTIME это время сервера.
И эти времена совершенно не обязаны совпадать. Никто кроме Вас не может гарантировать что время на Вашем компьютере синхронизировано с компьютером брокера.

TRADEDATE показывает дату торговой сессии. Это не тоже самое что астрономическая дата.
Дата торговой сессии это дата когда проводились торги.
Последний раз они проводились в пятницу, 9-го числа.
Получать график один раз в день
 
Let_it_go,
Чтобы заказать графики нужно вызвать CreateDataSource с SetEmptyCallback
Когда график уже не нужен просто вызовите ds:Close()
Не приходят данные по обезличенным сделкам, версия 7.16.1.36, тестовый сервер
 
Цитата
aidan1387 написал:
Как решить эту проблему?

Lua не будет получать данные если они не заказаны.
И это правильное поведение. Если раньше оно работало, значит либо раньше заказ все-таки происходил, либо это была какая-то ошибка.

Заказать данные по обезличенным сделкам через сам Lua можно функцией CreateDataSource с параметром INTERVAL_TICK, и последующей установкой коблека SetEmptyCallback или SetUpdateCallback.
Если нужно заказать данные по параметрам текущих торгов, то это делается функцией ParamRequest
Если нужно заказать данные по стаканам, то это делается функцией Subscribe_Level_II_Quotes
Ошибка после обновление Windows, Как исправить ошибку , после обновления системы Windows
 
Цитата
_sk_ написал:
Разработчикам пора в дистрибутив терминала включить вот такой bat-файл,

Во первых, брокер сам формирует дистрибутив для своих клиентов, так как сам посчитает нужным.
Во вторых, в терминале QUIK есть команда запуска -clear
Подробнее о нем в документации
-Раздел 1. Подготовка к работе
---Ключи запуска Рабочего места QUIK
Как получить данные с индикатора на графике?, Как получить данные с индикатора ADX на графике?
 
Александр,
В самой функции getCandlesByIndex в параметре line Вам нужно указать номер нужной линии.
Вы новых версиях Квика INIT в индикаторах появляется только один раз
 
Цитата
kbrobot.ru написал:
или перезапуске Квика - инит не вызывается
Это не так, вызывается.

Цитата
kbrobot.ru написал:
При попытке сменить таймфрейм

Это действительно так. И соответствует документации.
Можем предложить зарегистрировать пожелание на добавление функционала.
Принимаю из стека пустое значение, Программирование на Lua C++
 
Илья,
Если проблема в С++ то увы помочь ничем не можем т.к. вопрос вне нашей сферы ответственности.
Только вопросы касающиеся непосредственно QUIK.

По коду QLUA как минимум видно что Вы опять совершаете ту же самую ошибку что мы уже с Вами обсуждали
Еще раз повторяем OnQuote()  срабатывает сам по себе при изменении любых стаканов.
У Вас же при любом изменении стаканов по любым инструментам, вызывается getQuoteLevel2 по сбербанку.
Например, изменился стакан по лукойлу, а Вы дергаете данные по сбербанку.
Это уже само по себе не логично и не правильно.
Решение уже было озвучено и еще раз повторим, надо добавить проверку инструмента в событии.

Либо если с пониманием колбеков проблемы, вообще избавиться от OnQuote. Раз Вам так надо дергать стакан в цикле, так и делайте, никто не запрещает.
В стакан попадают странные значения, Работа со стаканом из Lua
 
Илья,
Таблица "Состояние счета" никакого отношения к стаканам не имеет. Ищите лучше.
Либо у Вас все-таки где-то открыты стаканы по другим инструментам (посмотреть в меню Окна - Менеджер окон)
Либо у Вас настроен экспорт стаканов по ODBC (посмотреть в меню Сервисы - Экспорт/Импорт данных - Экспорт инструментов по ODBC)
Либо запущен какой-то Lua скрипт который заказывает стакан функцией Subscribe_Level_II_Quotes

Если Вы считаете что всё сказанное для Вас не верно, пришлите нам на quiksupport@arqatech.com папку с терминалом (без ключей доступа) мы проверим.
В стакан попадают странные значения, Работа со стаканом из Lua
 
Цитата
Илья написал:
Но все еще не понял - почему функция вызывается по СЛУЧАЙНОМУ стакану, вместо того который открыт или по нескольким если открыты несколько или не возвращает ноль если стаканы закрыты все?

Функция срабатывает при поступлении данных по любому заказанному стакану в любом порядке. Т.е. все в одну кучу. Далее программист сам фильтрует то что ему надо.
Раз функция OnQuote у Вас срабатывает по не нужному инструменту, значит где то у Вас заказан стакан по этому инструменту.
Заказ данных происходит либо при открытии стакана, либо при экспорте по ODBC, либо через скрипт LUA.
Если заказано 10 стаканов по разным инструментам, значит OnQuote будет срабатывать по 10 разным инструментам и не важно кто и как их заказал.
Снятие всех заявок в Lua, Какой брать параметр trans_id?
 
Цитата
Constantin написал:
А номер транзакции должен быть уникальным или не обязательно? Если, например, запускаются несколько роботов и они нумеруют свои транзакции с единицы.

TRANS_ID может быть любым. уникальным или нет, всё равно, решать Вам.
Можете во всех транзакциях указывать 123 и оно будет работать.
Для удобства может в разных роботах указать разное значение. Чтобы определять какой робот подал транзакцию.
В стакан попадают странные значения, Работа со стаканом из Lua
 
Илья,
терминал сам вызывает функцию OnQuote при изменении данных по стакану.
В этом сама суть колбеков. И от того что Вы сами вызовите функцию OnQuote, терминал от этого не перестанет ее вызывать.
Вот и получается что терминал вызывает функцию по стакану который Вы не ожидаете.
Чтобы этого избежать надо добавить фильтр.
В стакан попадают странные значения, Работа со стаканом из Lua
 
Цитата
Илья написал:
Прошу, поясните - это баг, это фича, или это у меня руки кривые ?

Исправьте код так:

Код
function main() 
   is_run=true; 
   while is_run == true do 
      sleep(2000); 
   end 
end; 

function OnQuote(class, sec) 
if (class == "TQBR") and (sec == "SBER") then
   tb = getQuoteLevel2(class, sec); 
   message(tostring(tb.offer[1].price));
end   
end
Снятие всех заявок в Lua, Какой брать параметр trans_id?
 
Виктор Столетов,
Просьба больше никогда не выкладывать код в виде JPEG.
Для кода в панели есть специальная кнопка
Например:
Код
function Close_all_order()
 function myFind(F)
  return (bit.band(F, 0x1) ~= 0) 
 end
 local ord = "orders"
 local orders = SearchItems(ord, 0, getNumberOf(ord)-1, myFind, "flags")
 if (orders ~= nil) and (#orders > 0) then
  for i=1,#orders do
   local transaction={
   TRANS_ID=tostring(1000*os.clock()),
   ACTION="KILL_ORDER",
   CLASSCODE=c_code,
   SECCODE=getItem(ord,orders[i]).sec_code,
   ORDER_KEY=tostring(getItem(ord,orders[i]).order_num)
   }
   local res=sendTransaction(transaction) 
  end
 end
end


Цитата
Виктор Столетов написал:
getMoney выдает одни и же значения

getMoney возвращает только лимит вида Т0
Вам же нужен другой вид лимита. Посмотрите в таблице лимитов, в колонке "Вид лимита" что на самом деле Вам нужно.
Для остальных видов лимитов, существует отдельная функция getMoneyEx.
Снятие всех заявок в Lua, Какой брать параметр trans_id?
 
Цитата
Виктор Столетов написал:
И все же я не совсем понимаю, как  работает  функция снятия всех заявок
Что именно не понятно?

Цитата
Виктор Столетов написал:
Почему например в операторе local ord = "orders" стоит "orders", а не "order"?

При обращении к данным таблицы используются константы которые приведены в документации
-Функции для обращения к строкам произвольных таблиц QUIK
--Таблицы, используемые в функциях «getItem», «getNumberOf» и «SearchItems»

и там таблица заявок называется "orders".
Вы новых версиях Квика INIT в индикаторах появляется только один раз
 
Цитата
Eldar написал:
если я изменю настройки индикатора, то в любом случае он будет пересчитываться весь с первой свечи! так зачем событие? при изменении не будет входа в функцию Init. ну этого мы избежим и грамотнее код напишем.
На вопрос "зачем" уже был дан ответ. Если Вам не нужно использовать OnChangeSettings просто не используйте.
Еще раз повторять одно и тоже не вижу смысла.

Цитата
Eldar написал:
я добавляю индикатор на график. есть начальные настройки, которые указываю. так и нужно. но например я открываю настройку области на графике и хочу изменить какие либо настройки самой области (например убрать сетку) или меняю области местами, а индикаторы пересчитываются. вот именно в данном случае не стоит все пересчитывать. или например я поменял цвет линии!! и тут не нужно пересчитывать индикатор.
В текущей реализации нет никакого способа отличить те настройки "где надо делать перерасчет" от тех "где не надо", по этому перерасчет делается всегда.
Вы новых версиях Квика INIT в индикаторах появляется только один раз
 
Цитата
Eldar написал:
вы указываете на график с 1 свечой - что это за график такой мегауникальный.
например месячный но новому фьючерсу.

Цитата
Eldar написал:
если я изменяю настройки индикатора, то и весь индикатор пересчитывается с новыми настройками и без надобности событие по изменению.
Не нравится не используйте, никто не заставляет.

Цитата
Eldar написал:
вот ЕСЛИ бы при изменении не происходил обязательный перерасчет с 1 свечи
Простите, т.е. по сути Вы хотите чтобы настройки индикатора вообще не работали? Тогда зачем они вообще нужны, удалите из кода и все.

Цитата
Eldar написал:
либо со свечи, в которой поменялись настроки, пошел пересчет с новыми настройками. тогда логично и правильно.
Вы хотите получить винегрет на графике? такого никогда не будет.
Вы новых версиях Квика INIT в индикаторах появляется только один раз
 
Eldar,

А что именно не понятно из предыдущего ответа?

Цитата
Sergey Gorokhov написал:
если на графике всего одна свечка то постоянно будет сыпать 1.
Как отличить?
Никак, именно по этой причине мы создали OnChangeSettings.
64-битная версия QUIK
 
Здравствуйте,
64 битая версия терминала, в ближайшем будущем не планируется.
Снятие всех заявок в Lua, Какой брать параметр trans_id?
 
Здравствуйте,
Команды «KILL_ALL_ORDERS», «KILL_ALL_STOP_ORDERS», «KILL_ALL_NEG_DEALS» не поддерживаются в QLUA.

Цитата
Виктор Столетов написал:
Непонятно, как задавать TRANS_ID.

TRANS_ID - это произвольный номер Вашей транзакции, "снятие заявки" - это тоже транзакция и ей надо придумать номер. Номер может быть любым в диапазоне от «1» до «2 147 483 647»
как поставить айсбер-заявку, как поставить айсбер-заявку
 
Цитата
AlexanderKk написал:
не понял! по русски писать?
Да верно.

Цитата
AlexanderKk написал:
trans = SET_VALUE(trans, "ACCOUNT", "Ввод айсберг заявки")

Проверьте внимательней, для параметра ACCOUNT следует указывать торговый счет, а не тип операции.
Тип операции указывается в ACTION
как поставить айсбер-заявку, как поставить айсбер-заявку
 
Цитата
AlexanderKk написал:
как параметр "видимые поля"?

пример транзакции типа "Айсберг-заявка" приведен в документации на терминал QUIK
-Раздел 6. Совместная работа с другими приложениями
--Импорт транзакций
---Формат .tri-файла с параметрами транзакций
----Примеры строк, которые могут содержаться в файле
Вы новых версиях Квика INIT в индикаторах появляется только один раз
 
Цитата
Eldar написал:
сейчас изменение параметра вызывает пересчет всего индикатора с 1 по текущую свечу.
в 7.16 данное изменение не приведет к пересчету?

В 7.16 ничего в этом месте не менялось, только добавилось событие.

Цитата
Eldar написал:
изменение параметра будем отлавливать по событию?
вопрос не понятен. Изменили параметр, случился OnChangeSettings, далее все по старому, перерасчет и т.д.

Цитата
Eldar написал:
по индикатору из 1 свечи - сравниваем с Size(). хотя как показала практика и общение на форме, Size() это не количество свечек на графике, а количество интервалов.
опять не понятно, это вопрос или утверждение?
Вы новых версиях Квика INIT в индикаторах появляется только один раз
 
Цитата
Sergey Gorokhov написал:
Другой вопрос в том зачем расчитывать  

Не договорил. Другой вопрос в том зачем рассчитывать индикатор который имеет всего одну свечку.
Но это уже зависит от идеи автора.
Вы новых версиях Квика INIT в индикаторах появляется только один раз
 
Цитата
Eldar написал:
вопрос - если изменили настройки индикатора, разве он не с 1 свечи будет вызывать OnCalculate?
Естественно будет перерасчет с 1. А еще, если на графике всего одна свечка то постоянно будет сыпать 1.
Как отличить?
Никак, именно по этой причине мы создали OnChangeSettings.
Другой вопрос в том зачем расчитывать  

Цитата
Eldar написал:
где можно почитать описание нового события ?

В документации на терминал 7.16
Цитата от туда
Цитата

OnChangeSettings - Функция вызывается при редактировании свойств индикатора после нажатия кнопок «Применить» или «OK».
Функция вызывается также при перезагрузке Рабочего места QUIK и при загрузке wnd-файла либо tab-файла, в которых сохранен график с индикатором
Помогите найти ошибку., После срабатывания стопзаявки
 
Здравствуйте,
Не рекомендуем использовать циклы в колбеках.
Т.к. колбеки выполняются в основном  потоке терминала, т.е. пока колбек не закончит работу, терминал будет виснуть.
Все тяжелые циклы, следует использовать только в main.
В самом же колбеке, следует добавить флаг, приводящий к нужным действиям в main
Пример
Код
work = false
function OnStopOrder(...)
 work = true
end

function main()
 ...
  if work then
   ...
  end
...
end

помогите разобраться с CreateDataSource, QJSIM - unknown class code.
 
Цитата
Сергей написал:
Как посмотреть список возможных и валидных класс кодов?

Здравствуйте,
Список доступных кодов классов можно получить через функцию getClassesList
Или просто открыть в терминале таблицу текущих торгов и посмотреть (колонка "код класса")

Цитата
Сергей написал:
QJSIM - unknown class code.

Класс с кодом QJSIM существует только на нашем демо контуре https://arqatech.com/ru/support/demo/
Если Вы используете демо доступ какого-то брокера, то там код класса вполне по честному может быть другим.
Либо Вы пытаетесь запросить данные когда наш демо контур не работает
Вы новых версиях Квика INIT в индикаторах появляется только один раз
 
Здравствуйте,
Из описания не понятно ,в "новых версиях" это в каких?
В версии 7.16, для корректной обработки изменения настроек индикатора, было добавлено новое событие OnChangeSettings.
Что обозначает поле VOL?, quik версии 7.14.1.7
 
Андрей,
На графике цены и объема, VOL это объем
Страницы: Пред. 1 ... 23 24 25 26 27 28 29 30 31 32 33 ... 78 След.
Наверх