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

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

Страницы: Пред. 1 ... 10 11 12 13 14 15 16 17 18 19 20 ... 78 След.
Вопрос по скрипту индикатора 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, Работает медленно на последних версиях
 
Сергей,
Повторите то же самое при отключенном терминале.
И не надо менять код тестового скрипт, это совершенно лишнее.
Медленный getItem для таблицы depo_limits, Работает медленно на последних версиях
 
Цитата
Сергей написал:
Как я вынесу getItem из цикла? Мне нужно найти нужный инструмент из таблицы. Для этого нужно перебирать каждый элемент.
Просто чтобы Вы убедились что getItem не виноват. Ничего не мешает потом вернуть его обратно.

Цитата
Сергей написал:
Если это не QUIK, почему тогда на 19 версии все работает?
Вы проверяли или это домыслы?
Ниже простая проверка которая показывает что всё одинаково что на 7.19 что на 7.27, ровно как и должно быть.

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

Если к нам нет доверия, Вы можете проверить данные самостоятельно:
Код:
Код
function main()
   local items_num = getNumberOf("depo_limits")
   local T1 = os.sysdate()
   for i = 0, items_num - 1 do
      local table_item = getItem("depo_limits", i)
   end 
   local T2 = os.sysdate()
   local total= (T2.hour-T1.hour)*60*60*1000+(T2.min - T1.min)*60*1000+(T2.sec - T1.sec)*1000+(T2.ms - T1.ms)
   message("total_limits="..tostring(items_num).." total_time_ms="..tostring(total).." avg_ms="..(string.format("%f",(total)/items_num)))
end


Результаты:

Помогите получить цену по своей последней сделке по определенному инструменту
 
Цитата
Дмитрий написал:
local row = getItem("trades",indexNeed[-1]) -- здесь хочу взять последнюю строчку из набора строк indexNeed

Правильно так
local row = getItem("trades",indexNeed[#indexNeed]) -- здесь хочу взять последнюю строчку из набора строк indexNeed[/QUOTE]

и предыдущая рекомендация не отменяется
Помогите получить цену по своей последней сделке по определенному инструменту
 
Дмитрий,
У Вас переменная PriceLastOrder объявлена как локальная, т.е. при выходе из if она удаляется, следовательно и в return не попадает.

уберите слово local перед PriceLastOrder
Медленный getItem для таблицы depo_limits, Работает медленно на последних версиях
 
Здравствуйте,
А если вообще убрать getItem из цикла?
Больше похоже на таймер Windows нем на проблему с QUIK
Про таймер рассказано например тут
https://habr.com/ru/company/intel/blog/186998/

и как можете заметить он тоже приблизительно равен 15 мс
Помогите найти ошибку, Вам, как экспертам, возможно, не сложно, а я застрял....
 
Цитата
Sorokin написал:
Нашел ошибку. Но  теперь attempt to perform arithmetic on upvalue 'Trade_B...
Значит не правильно исправили ошибку.

Рекомендуем еще раз внимательней проверить что и как происходит с переменной Trade_B
Qlua автономно, Qlua автономно
 
Цитата
Борис Гудылин написал:
- шаг цены - это не онлайновый параметр, для VTBR он менялся 8 лет назад;

Вы не правы, шаг цены это статичный параметр, он не обновляется во время торгов. Он обновляется один раз в сутки, при подключении шлюза к торговой системе.

Цитата
Борис Гудылин написал:
Мне интересно, что все-таки по этому конкретному поводу думает уважаемый Разработчик.  
Берите значение через getSecurityInfo
Помогите найти ошибку, Вам, как экспертам, возможно, не сложно, а я застрял....
 
Цитата
Sorokin написал:
Но есть же параметр выше в коде function OnTrade(trade)

Значит колбек OnTrade не срабатывает до обращения к Trade_B+50  
Кроме того в колбеке какая-то проверка.

таким образом пока не будет сделки удовлетворяющей условию, колбек не сработает,  а пока он не сработает ,переменная Trade_B не будет существовать
Помогите найти ошибку, Вам, как экспертам, возможно, не сложно, а я застрял....
 
Цитата
Sorokin написал:
пишет  "attempt to perform arithmetic on upvalue 'Trade_B' (a nil value)".....не нравится условие Trade_B+50  

ошибка означает что переменная не задана.

простой пример покажет ошибку:

X = Y + 1

чему будет равно X?  никто не знает т.к. Y неизвестно. Вот и ошибка у Вас говорит о том же, что значение Trade_B неизвестно.

Вот если написать например так:
Y = 0
X = Y + 1

то сразу понятно что X будет равен 1 и ошибки не будет.
Вот и Вам надо задать значение для Trade_B
Помогите найти ошибку, Вам, как экспертам, возможно, не сложно, а я застрял....
 
Sorokin,

У Вас под составлен так что функция Trade() вызывается только после выхода из цикла "while stopped == false do" может быть в этом проблема?
Попробуйте переместить во внутрь цикла
Помогите найти ошибку, Вам, как экспертам, возможно, не сложно, а я застрял....
 
Цитата
Sergey Gorokhov написал:
Здравствуйте,
Первое что бросается в глаза у цикла while stopped == false do нет завершающего end
А нет, прошу прощения с этим все в порядке.
Уточните подробней, что именно не работает? У нас код не вызывает ошибок.
Помогите найти ошибку, Вам, как экспертам, возможно, не сложно, а я застрял....
 
Здравствуйте,
Первое что бросается в глаза у цикла while stopped == false do нет завершающего end
Исторические данные торгов spbexchange - какого брокера выбрать, Можно ли получить исторические данные торгов Санкт-Петербургской биржи через CreateDataSource
 
Alexegin,
У нас нет информации о том какой брокер какие услуги предоставляет.
таблица сделок., таблица сделок
 
Дмитрий,
Такое может быть если брокер не переносит значения на следующий день, тогда Вы будите видеть цену только по тем инструментам которые покупали сегодня, а на следующий день цена обнулится.
Обратитесь к брокеру с просьбой настроить перенос цены приобретения на следующий день.
Встроенные индикаторы в скриптах индикаторов, Встроенные индикаторы в скриптах индикаторов
 
Цитата
Николай написал:
Здравствуйте! Данный файл в настоящий момент удален из общего доступа?
Нет, он переехал в файловый архив на сайте
Страницы: Пред. 1 ... 10 11 12 13 14 15 16 17 18 19 20 ... 78 След.
Наверх