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

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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 64 След.
Реальный период расчета скриптов, написанных на QPILE, Реальный период расчета скриптов, написанных на QPILE
 
Цитата
Анатолий написал:
Период расчета выставлен 1сек. у всех скриптов

Для начала, период в настройках это время между окончанием предыдущего расчета скрипта и началом нового расчета.
Например если сам скрипт у Вас отрабатывает за 5 сек, то значит между запуском первой итерации и второй будет 5+1=6 сек.

Далее, если есть проблема с кодом, без самого кода разобраться не представляется возможным, как бы подробно Вы всё не описывали.

И наконец, QPILE мы уже давно не развиваем и развивать не будем, сейчас он существует только для поддержки обратной совместимости.
Рекомендуем перейти на более современный язык QLUA.
Да сложно, да долго, но это того стоит.
CreateDataSource: задержка получения данных
 
rpns,
да верно
CreateDataSource: задержка получения данных
 
Цитата
rpns написал:
До вызова main в нем неинициализированной глобальной переменой sz_sr присваивается некоторое значение. OnInit завершается (в основном потоке). Затем (если я верно понял) в отдельном потоке запускается и нормально работает main. Никто, вроде, не висит больше. Но почему-то присвоенное значение -- это 0, что обнаруживается в самом же вызове OnInit. Причем лишь каждый ВТОРОЙ запуск скрипта (а иначе -- правильное значение).

Как уже было сказано и еще раз повторим, пока работает колбек, терминал QUIK просто ждет, ничего не делает.
Вы в колбеке отправили заказ данных, а потом залип на цикле.
Пока цикл не завершится, данные заказанные прошлой строкой не поедут, а пока данные не поедут, цикл согласно логике, не завершится.
Получается замкнутый круг.
При повторном запуске, данные УЖЕ приехали т.к. были заказаны при первом запуске скрипта, по этому второй запуск показывает числа.
main работает в отдельном потоке, по этому там заказ данных и ожидание данных, работают параллельно с поступлением данных в терминал.
по этому в main можно делать цикл, а в колбеке нет.

Цитата
rpns написал:
Кстати, и без вызова SetEmptyCallback. Зачем он тогда?)
Он нужен для подписки на данные. Ровно эту же подписку можно выполнить через терминал, открыв нужный график.
Если Вы откроете график то по сути SetEmptyCallback не нужен, данные и так будут поступать.
Но не всем удобно открывать графики, по этому существует SetEmptyCallback.

Цитата
rpns написал:
Что вообще стоит делать в OnInit? Можно, например, стакан заказать (Subscribe_Level_II_Quotes)?
Что угодно, лишь бы выход из колбека был максимально быстрым, и это касается не только OnInit, а вообще всех колбеков (функции с именем On*)
Не удаётся запустить даже тестовый Lua скрипт в Квике (версии 7.25.1.3), Всё делаю строго по инструкции, но скрипт не запускается.
 
Цитата
Physic98 написал:
Теперь скрипт запускается, но не срабатывает функция message() почему то?

Откройте таблицу текущих торгов по нужному инструменту с параметром Спрос, убедитесь что данные в этом параметре отображаются
CreateDataSource: задержка получения данных
 
rpns,
Уберите код из OnInit
Все колбеки выполняются в основном потоке терминала, т.е. пока колбек не завершит работу, терминал будет висеть и ничего не делать.
Помогите получить цену по своей последней сделке по определенному инструменту
 
Цитата
Дмитрий написал:
Добрый день !

Еще вопрос, а как найти номер свечи этой последней сделки при использовании CreateDataSource ?

на графиках нет номеров сделок, так что только по времени и цене.
Зная дату и время сделки, и ее цены, Вы можете найти ее на графике.
attempt to concatenate field '?' (a nil value)
 
Цитата
Sergey Denegin написал:
Исходя из чего луа будет опредялять что выводить?

Все просто, если левое выражение не nil и не false то будет выведено  оно, в противном случае будет выведено правое выражение.
attempt to concatenate field '?' (a nil value)
 
Позвольте немного поправить, лучше так:

Код
 sd="..tostring(t_big[candle][6])


Если в tostring попадет nil то он сам преобразует его в строку "nil"
Функция SetRangeValue рисует лишнюю линию, Как убрать линию, соединяющую уровни, заданные SetRangeValue
 
Цитата
Виктор Столетов написал:
Есть еще один  вопрос по линиям индикатора:   Если задать тип линии TYPE_DASH или  TYPE_POINT, то штрихи и точки идут очень близко  друг к другу. Когда сжимаешь график, то они сливаются в сплошную линию.   Можно ли как-то регулировать ширину пробелов между точками или штрихами, чтобы сделать их реже?
К сожалению такой возможности не предусмотрено
получить текущую эффективную цену позиции
 
Sergey,
нам и так понятно что Вам нужно, нет смысла это повторять.

ответ Вам уже был дан и не один раз.
Цитата
Sergey Gorokhov написал:
Следовательно если биржа не транслирует нужную Вам цифру то и в QUIK ее нет.
получить текущую эффективную цену позиции
 
Цитата
Sergey написал:
так что это не то что нужно =(( мне нужна текущая цена текущей позиции.

Что Вы понимаете под "текущая цена текущей позиции"?
биржа транслирует то что Вам нужно, если да в каком параметре?
Следует понимать что на срочном рынке (в отличии от фондового и валютного рынков), позиции ведет и транслирует биржа, а не QUIK.
Следовательно если биржа не транслирует нужную Вам цифру то и в QUIK ее нет.
получить текущую эффективную цену позиции
 
Sergey,
Этот параметр считает и транслирует биржа, можете поинтересоваться у нее какая формула расчета.
В биржевом потоке это параметр waprice из таблицы position потока FORTS_POS_REPL
получить текущую эффективную цену позиции
 
Пример:
T=getFuturesHolding("SPBFUT","SPBFUT0001", "SiM9", 0)
message(tostring(T.avrposnprice))
Архивы графиков
 
Цитата
Дмитрий написал:
1)в архиве также лежат две DLL-ки, они устанавливаются опционально, в ту же папку, что и exe-шник или если на компе установлена какая-то Visual C++ (какая именно?) это не нужно?

Рекомендуем не экспериментировать, есть дистрибутив и все файлы из дистрибутива должны быть на месте, если это не так, гарантировать стабильную работу мы не можем.
Цитата
Дмитрий написал:
2) После запуска программа будет одинаково работать с dat-файлами квик 6.16 и квик 7.12?

Должна работать
Вопрос по скрипту индикатора AD
 
Цитата
Анатолий написал:
1) За какой период получается суммируются вычисленные значения AD? Чему равно n-?
Нет никакого периода. n в формуле обозначает текущую свечку для которой происходит расчет.
Например если свечек 5 значит n=5
Цитата
Анатолий написал:
2) Для чего это делается? В литературе по тех.анализу я ненашел ничего о суммировании этого индикатора с его предыдущими значениями, хотя литературы очень много всю ее пересмотреть сложно, можно у вас попросить ссылку на литературу по которой у вас сделан индикатор AD, т.е. с сумрованием тогового значения за n периодов?
К сожалению на литературу ссылку дать не можем, но такая же формула легко находится в википедии

Цитата
Анатолий написал:
Изменил эту строчку на  tmp.p = CLH/HL  в файлах AD.lua и CO.lua
Зачем? Настоятельно НЕ рекомендуем менять наши формулы, т.к. потом мы не сможем Вам объяснить почему у Вас данные не совпадают.
Цитата
Анатолий написал:
но CO по прежнему несовпадает
Надо разбираться.
Вообще не понятно зачем Вы пишите свои формулы расчета когда уже есть готовые наши формулы.
Если не нравятся наши формулы, то очень зря, они отточены годами и оправдали свою надежность.
Тем более что, как показал разбор выше, в своих формулах Вы рано или поздно придете к тому что уже есть в наших.

Цитата
Анатолий написал:
Ну и хотел еще добавить - ваш индикатор A/D («Накопление/распределение») вовсе не оригинальный индикатор A/D разработанный Ларри Вильмсом в 1972 и вычисляемый по формуле

Никто не мешает Вам написать индикатор так как Вам хочется.
Получить в скрипт значения индикатора из графика
 
Цитата
Анатолий написал:
что указывать в поле tag?
В нем надо указать строковый идентификатор графика или индикатора.
строковый идентификатор это строка которая должна быть прописана в свойствах нужного Вам графика на вкладке Дополнительно:


Цитата
Анатолий написал:
откуда функция знает с какого графика ей взять значения индикатора?
Функция узнает нужный график по параметру tag
Вопрос по скрипту индикатора AD
 
Цитата
Анатолий написал:
Где в вашей документации эта формула? Ненашел,
Документация к терминалу в файле info.chm, или можно открыть нажав F1
Формулы к индикаторам приведены в следующем разделе:
-Раздел 4. Работа с графиками
--Методы технического анализа
---A/D («Накопление/распределение»)
Цитата
Анатолий написал:
Где в скрипте индикатора AD.lua этот код CumAD = ADn + CumADn-1 ?
Вот:
Цитата
Анатолий написал:
          tmp.p = CLH/HL + (tmp.pp or 0)
Вопрос по скрипту индикатора AD
 
Цитата
Анатолий написал:
Вот подскажите пожалуйста, функция OnCalculate, из описания - функция вызывается при поступлении новой или изменении существующей свечки в источнике данных для индикатора, возвращает два аргумента - один из них координата x другой координата yя так понимаю, т.е. первый - местоположение свечки в рядяах свечей, второй фактически само значение индикатора
Нет такого в описании. Почитайте внимательней

Цитата
Анатолий написал:
и у меня и у вас тоже абсолютно одинаковая
Вы же понимаете что чудес не бывает если цифры разные значит формула разная. Это же математика.

Цитата
Анатолий написал:
Где CLH/HL  и есть AD
Да но дальше еще сложение, согласно формуле (которая если что есть в документации)
CumAD = ADn + CumADn-1,

Цитата
Анатолий написал:
Раз формулы одинаковые и значения свечей тоже то значит полученные из формулы значения в вашем скрипте еще и после формулы зачем то дополнительно меняются изучив скрипт AD.lua не трудно догадатся что изменяются они в функции OnCalculate в функции ConvertValue(Settings, func(Index, Settings)) где func(Index, Settings) это переименованная в Init функция AD():

Вы категорически не правы, функция ConvertValue тут не причем.
Если не верите, просто уберите ее из OnCalculate
Код
local Out = func(Index, Settings)


Цитата
Анатолий написал:
Будьте любезны обьясните пожалуйста что она делает и зачем? Зачем она дополнительно меняет уже готовое значение функции AD?

Это опциональная функция которая позволяет при желании включить округление Round значений индикатора, либо умножить значения на заданный коэффицент Multiply.
По умолчанию эти параметры выключены.
Код
Round = "off",
Multiply = 1,
Получить в скрипт значения индикатора из графика
 
Здравствуйте,
Функции для получения данных с графиков описаны в документации QLUA.chm
-Функции взаимодействия скрипта Lua и Рабочего места QUIK
--Функции для работы с графиками

Исходники индикаторов на Lua представлены на сайте по ссылке
Каков реальный сценарий вызова OnDepoLimitDelete(), OnMoneyLimitDelete(), OnFuturesLimitDelete()?
 
Цитата
timber написал:
у вас на картинке T365. А у брокер Tx. И в документации так же.

Это не имеет значения, отображение зависит от настроек на сервере.
Ниже пример с другой настройкой.


Просьба ответить на поставленный вопрос
Цитата
Sergey Gorokhov написал:
От Вас нужен пример кода на котором воспроизводится проблема и уточните версию терминала.
Каков реальный сценарий вызова OnDepoLimitDelete(), OnMoneyLimitDelete(), OnFuturesLimitDelete()?
 
Цитата
timber написал:
Цитата
Sergey Gorokhov написал:
 
Цитата
timber  написал:
)) Смешно. Ну скажите тогда, как при этом неудобстве через LUA понимать какой лимит пришел?
Что именно смешно? Если Вы хотите конструктивный диалог, извольте говорить предметно.
И что именно в LUA Вам мешает проверить лимит?
Или Вам в принципе не понятно зачем нужен Тх лимит?
Куда уж конструктивнее? Написал сразу - нужна информация по лимитам. Работаю через LUA. Согласно вашей (не брокера) документации определением позиции идет по коду инструмента и типу лимита. Вот с последним беда. Не может он правильно определить, потому что он дублируется для разных типов лимитов. Я про числовое значение. А строковое у вас не получить через LUA. Виноваты разумеется все (брокер, мы-трейдеры), кроме вас.

Т.е. проблема в том что для Тх лимита параметр limit_kind равен 0?
Простите но из Вашего первоначального обращения это не очевидно.
Естественно такой проблемы не должно быть, для Тх лимитов limit_kind должен быть равен 365.
ниже скриншот доказывающий что это так:


От Вас нужен пример кода на котором воспроизводится проблема и уточните версию терминала.
Каков реальный сценарий вызова OnDepoLimitDelete(), OnMoneyLimitDelete(), OnFuturesLimitDelete()?
 
Цитата
timber написал:
)) Смешно. Ну скажите тогда, как при этом неудобстве через LUA понимать какой лимит пришел?

Что именно смешно? Если Вы хотите конструктивный диалог, извольте говорить предметно.
И что именно в LUA Вам мешает проверить лимит?
Или Вам в принципе не понятно зачем нужен Тх лимит?
Каков реальный сценарий вызова OnDepoLimitDelete(), OnMoneyLimitDelete(), OnFuturesLimitDelete()?
 
Цитата
timber написал:
При том, что значение числовым образом одинаковое. Не должно ли быть слияние строчек в этом случае.
Нет не должны. Вы где-то видели в документации что должны? Если так то где именно?

Цитата
timber написал:
Нормальный софт должен иметь проверку на дурака, и не дать вводить одинаковые значения для разных лимитов. Но так как мы имеем дело с Квик, тут всякое возможно :-) Поэтому лишний раз уточняю.
В QUIK есть защита от дурака и во многих местах, да все места где пользователь может ошибиться предусмотреть затруднительно но при каждой фиксации таких случаев мы предпринимаем меры.
В Вашем же случае, никакой ошибки не видно. Просто брокер у себя что то настроил а Вам это не удобно.
Что мешает обратиться к брокеру и попросить так не настраивать, до сих пор не понятно.

Если Вы просто хотите убрать строку с нулевым лимитом, тогда это делается путем снятия галки "Показывать нулевые лимиты"
Каков реальный сценарий вызова OnDepoLimitDelete(), OnMoneyLimitDelete(), OnFuturesLimitDelete()?
 
Цитата
timber написал:
Визуально строчки располагаются отдельно.
При чем тут это?

Цитата
timber написал:
Есть для каждого лимита по своей строке.
Комментарий не понятен.

Цитата
timber написал:
Это точно из-за брокера, а не из-за ошибки в терминале?
Точно.
Каков реальный сценарий вызова OnDepoLimitDelete(), OnMoneyLimitDelete(), OnFuturesLimitDelete()?
 
Цитата
timber написал:
Почему строчка с Tx имеют значение 0?

Это зависит от настроек на стороне сервера, рекомендуем задать вопрос брокеру.
Странное поведение getClassSecurities, Неторгуемые инструменты из getClassSecurities( "SPBFUT" )
 
Цитата
Alexey написал:
А почему он транслируется, если торги закончены? И когда перестанет?

Вопрос к бирже. Она отвечает за трансляцию.
Странное поведение getClassSecurities, Неторгуемые инструменты из getClassSecurities( "SPBFUT" )
 
Цитата
Alexey написал:
Перезаказал данные, это не помогло. Более конкретно, присутствует BRK9
Этот инструмент транслируется, а раз транслируется то попадает и в getClassSecurities
Странное поведение getClassSecurities, Неторгуемые инструменты из getClassSecurities( "SPBFUT" )
 
Цитата
Alexey написал:
Версия QUIK 7.26.0.26
Цитата

Повторяется ли проблема, после очистки данных в терминале (меню Система - Заказ данных - Перезаказать данные)?
Я не хотел бы перезаказывать сейчас, тк. возможно проблема при этом уйдет, но с истечением срока опять проявится. Или мне в скрипт перезаказ данных закладывать???

Это не рекомендация, а вопрос, ответ на который нужен для диагностики.
Странное поведение getClassSecurities, Неторгуемые инструменты из getClassSecurities( "SPBFUT" )
 
Здравствуйте,
Уточните какая версия терминала QUIK используется?
Повторяется ли проблема, после очистки данных в терминале (меню Система - Заказ данных - Перезаказать данные)?
Фьючерсы/акции/опционы
 
Цитата
s_mike@rambler.ru написал:
Существует ли способ однозначно определить тип актива Фьючерсы/акции/опционы без использования таблицы текущих торгов? ТТТ может быть не открыта и получить оттуда нужные поля далеко не всегда возможно.

Статичные параметры инструментов всегда доступны без дополнительных заказов и без необходимости открытия таблиц.
Получение стакана котировок, EUR_RUB_TOM
 
Цитата
Олег написал:
но почему то данные не возвращаются.

Проблема в синтаксисе. В LUA регистр символов имеет значение. Так для LUA имя переменной table и Table это разные вещи.
Функция toString и tostring - это разные вещи.
Offer_Count и offer_count - это разные вещи.
Bid_Count и bid_count - это разные вещи.

приведите все названия в порядок
Активная Тэйк-профит и стоп-лимит заявка
 
Цитата
Sergey написал:
через lua проверить исполнена заявка или активная?
Через флаги, параметр flags.
Пример для проверки стоп заявки:
if bit.test(zalyavka.flags, 0) then
message ("заявка активная")
end
Сравнение дат.
 
Игорь М,
При сравнении даты и времени, самый правильный и надежный способ, перевести дату в число дней (для времени секунд) и далее уже сравнивать.
левые котировки, getCandlesByIndex()
 
Цитата
sergei написал:
...и тогда пишет округленное в файл, но, блин, мне при любом использовании ii писать его через функцию округления?!Как это - округление работает только в момент округления? :)

Что именно не понятно?
Вы округляли только стартовое значение ii, а не все которые рождаются при переборе цикла.
Кто сказал что округлив самое первое значение цикла все остальные тоже округлятся? нигде такого в программировании нет, и LUA не исключение.
Хотите видеть округленное значение так и округляйте это значение, а не первую цифру в цикле.
И кто мешает один раз округлить полученную цифру и сохранить ее в переменной?
   for ii = candles[i].low, candles[i].high, MinPriceStep do
       local round_ii = math.round(ii,2)
       lst = lst..i.." --- "..round_ii.." --- "..candles[i].low..", "..candles[i].high.."\n"
   end

Цитата
sergei написал:
Кроме того, вот на первых свечках вообще не видно проблемы с 000000001
Это не имеет значения, появление 000000001 может произойти при любой арифметической операции.
Например:
message(tostring(124.4 - 124.3))
выдаст 0.10000000000001

Цитата
sergei написал:
но цикл не доходит одну итерацию. Почему?
не понятно что имеется ввиду.
левые котировки, getCandlesByIndex()
 
Цитата
sergei написал:
Сергей, что-то даже с округлением не получается.

Значения округляются там где Вы их округляете.
Вы округляете в for, а не там где происходит передача данных в lst
левые котировки, getCandlesByIndex()
 
sergei,
Тогда Вы можете округлить значения перед использованием
левые котировки, getCandlesByIndex()
 
Цитата
sergei написал:
Сергей, как корректно округлить до нужного знака, чтобы в итоге не получить новое подобное число?
Округлять имеет смысл только при выводе данных.
Функции по округлению не раз приводились на форуме
например
https://forum.quik.ru/messages/forum10/message35034/topic4042/#message35034

Цитата
sergei написал:
Насколько плохая идея использовать в таблицах индексы в виде чисел с плавающей точкой?

Вопрос не понятен, просьба уточнить подробней что имеется ввиду, можно на примере.
левые котировки, getCandlesByIndex()
 
Цитата
sergei написал:
ЧТО ЗА ФИГНЯ?! :)

это особенность типа данных с плавающей точкой.
Почитать что это такое можно в википедии
https://ru.wikipedia.org/wiki/Число_с_плавающей_запятой
ошибка в функции TRANS2QUIK_TRADE_DATE
 
Антон (band),
Чем новее версия тем лучше т.к. более свежие версии появляются в том числе и при исправлении каких-либо ошибок, а не только при добавлении функционала.
Есть ли ошибки в 1.2? Возможно, но за последние 5 лет никто не жаловался.
ошибка в функции TRANS2QUIK_TRADE_DATE
 
Здравствуйте,

Цитата
Антон (band) написал:
TRANS2QUIK v1.1.0.9(1.1)
Версия старая, просьба проверить поведение на более актуальной версии 1.3 она х64, если нет возможности проверить на х64 системе, то проверьте на версии 1.2
Сообщите результат.
Получение списка кодов бумаг для списка классов
 
Цитата
Андрей написал:
Не совсем понял, что Вы имели ввиду.
Что именно не понятно?
Каким должен быть порядок инструментов в getClassSecurities нигде в документации не сказано, значит он может быть любым.
Если в какой-то момент он действительно поменялся, это не является какой-либо ошибкой, т.к. никто не обещал что порядок никогда не поменяется.
Вот если бы в документации было четко сказано какой порядок инструментов выдает getClassSecurities  тогда да, можно было бы считать нарушение этого порядка проблемой.
Но в документации ничего не сказано, значит никакой проблемы в этом нет и не было.
Вам же следует переделать логику кода с учетом этого, т.е. без какой либо привязки к порядку инструментов.
Получение списка кодов бумаг для списка классов
 
Андрей,
Даже если действительно что-то поменялось это ничего не изменит.
Цитата
Sergey Gorokhov написал:
Какой-либо порядок инструментов в getClassSecurities никогда не гарантировался.
Получение списка кодов бумаг для списка классов
 
Здравствуйте,
Какой-либо порядок инструментов в getClassSecurities никогда не гарантировался.
sendTransaction: Можно ли послать заявку непосредственно в Аукцион периода закрытия?
 
Александр,
Здравствуйте,
Через sendTransaction можно подать любую транзакцию с любыми параметрами.
Вопрос только в каком формате. Есть формат описанный в документации, в котором действительно поддерживаются не все возможные параметры транзакций, а есть универсальный формат транзакций, увидеть который можно сохранив транзакции из кармана транзакций в tri файл.

Если нужных параметров в документации нет, значит добавьте транзакцию в карман, и сохраните из него в tri файл. открыв файл блокнотом увидите какие параметры надо передать в sendTransaction.
обращаем внимание на следующие нюансы:

Универсальный формат содержит названия параметров на том языке который выбран в терминале. Если терминал русский то и параметры будут на русском и это нормально и это будет работать.
Если терминал на английском то и параметры будут на английском, использовать  названия на английском в русском терминале нельзя и на оборот.

Нельзя перемешивать названия параметров из документации с теми которые получены в ttri файле.
Это значит что даже если Вам нужен всего один параметр транзакции из tri то всю транзакцию надо подавать в формате из tri и по другому нельзя.
Не дает передвинуть заявку
 
Виктор,
В таком случае Вам необходимо обратиться к брокеру
Не дает передвинуть заявку
 
Здравствуйте,
Уточните это боевой доступ или демо, или это конкурсный сервер?
Если конкурсный, то сегодня была проблема на бирже.
Медленный getItem для таблицы depo_limits, Работает медленно на последних версиях
 
Сергей,

Пришлите нам архив всей папки с Вашим терминалом QUIK (без ключей доступа) на адрес quiksupport@arqatech.com
Архив следует паковать при закрытом терминале.
Медленный getItem для таблицы depo_limits, Работает медленно на последних версиях
 
Цитата
Сергей написал:
Какая еще дополнительная информация нужна?

Было два запроса:
Цитата
Sergey Gorokhov написал:
А если вообще убрать getItem из цикла?

Цитата
Sergey Gorokhov написал:
Повторите то же самое при отключенном терминале.
Медленный getItem для таблицы depo_limits, Работает медленно на последних версиях
 
Сергей,
Вам наглядно было показано что у нас проблема не воспроизводится, а значит нам нужна дополнительная информация которую мы и пытаемся от Вас получить.
Вы, к сожалению, всеми силами отказываетесь нам эту информацию предоставить.
Медленный getItem для таблицы depo_limits, Работает медленно на последних версиях
 
Сергей,
Повторите то же самое при отключенном терминале.
И не надо менять код тестового скрипт, это совершенно лишнее.
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 64 След.
Наверх