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

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

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 80 След.
Дата и время позиции
 
Цитата
Acaw написал:
Спасибо за ответы, отец!
разбираюсь с обработкой коллбэков по заявкам, onTransReply, onOrder, onTrade. При этом есть коллбэки на изменение позиций по деньгам и инструментам. Т.е. если у нас выставилась заявка значит изменилась позиция по деньгам, т.к. заблокировался объем, если прошла сделка, значит изменилась позиция по депо.
А что если использовать эти коллбэки и смотреть в соответствующие таблицы для подбития баланса. В моих целях отслеживание коллбэков по заявкам нужно для понимания именно позиций по деньгам и инструментам, чтобы например не накупить лишнего, не превысить лимиты робота, не попасть на маржинальную позицию.
Что думаете и как обстоят дела в реальности с этими коллбэками?
Все верно.
Но при старте или каждом новом соединении надо просматривать соответствующие таблицы.
--------------------------
Можно и без этих колбеков.
Если зарегистрировали новую активную заявку, то изменится баланс по деньгам.
Если зарегистрировали исполнение заявки, то изменится баланс по деньгам и бумагам.
Таким образом, достаточно коблека заявок и таблиц money_limits и  depo_limits для акций
или аналогичные таблицы для фьючерсов и опционов.
Дата и время позиции
 
Цитата
Acaw написал:
А на следующий день? Правильно ли понимаю, что единственный путь через свой лог в файле?
Да,или отчет брокера
Дата и время позиции
 
Цитата
Acaw написал:
Отцы, с праздниками!
Посоветуйте, пожалуйста, есть ли возможность в квике возможность связать сделку с позицией, а именно узнать время образования позиции? Т.е. у меня задача закрыть позицию не позднее 3 свечей от свечи, когда прошла сделка.  Можно ли в квике как-то понять, что имеющаяся позиция возникла тогда-то и во столько?
Есть таблица сделок и там время сделки.
Есть библиотека QLUA и там функции для чтения параметров сделки т е времени этой сделки.
Недостаточно прав для использования модуля "Модуль неторговых поручений"
 
Спрашивать надо у брокера.
Объем и цена в одном окне
 
Цитата
pilot написал:
Цитата
nikolz написал:
Надо цену прикрепить к правой шкале,а объем к левой получится вот так:
Спасибо за ответ!
С объемом закрепленным к левой шкале стало лучше, но свечи повсеместно пересекаются с объемом и разделить их не получается (картинка ниже).

Прокрутил график МТ5 - объем нигде с ценой не пересекается.
Но даже если бы пересечение произошло, график цены легко сжимается и свечи отдаляются от объемов.

А в Quik-e цена сжимается вместе с объемами, хотя мы закрепили цену к правой шкале, а объемы - к левой и объемы должны были остаться на месте.
Надо настроить диапазон для графиков
Например, так  - сжимаемся


а так нет:




Объем и цена в одном окне
 
Цитата
pilot написал:
Объемы в отдельном окне съедают очень много полезнй площади.
Добавил объемы в окне с графиком кцены - получилась белиберда, свечи слились в одно линию.
Как настроить график, чтобы объем и цена были в одном окне, но при этом каждый использовал собственную шкалу и не мешал другому?
ПС В платформах других производительй это работает.
Надо цену прикрепить к правой шкале,
а объем к левой получится вот так:
Вопрос кодерам
 
Цитата
Kolossi написал:
Даже в голову не приходило.  Я под словом "пустышка" понял пустые функции с тем же именем в коде.
Можно подробнее про создание dll  и подключения его (куда?) для той же getWorkingFolder()?
Предположил, что Ваше приложение написано на API C for Lua. Это так?
Но судя по вопросу, полагаю, что ошибся.
Поясните подробнее про свое приложение и его тестирование.
Использование индикаторов из терминала
 
Цитата
Цитата
Acaw написал:
Добрый день!

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

Такой код выдает nil

dofile(getWorkingFolder().."\\LuaIndicators\\MA.lua")
ds = CreateDataSource("TQBR", "NLMK", INTERVAL_D1)
sleep(5000)
k = ds:Size()
message("==="..tostring(k))  -- для проверки получения данных
message("==="..tostring(ds:H(k)))
func = MA()
ema8 = func(k, {Period=8, Metod = "EMA", VType="Close"}, ds)
message("==="..tostring(ema8))

Последний message выдает nil, хотя данные в ds есть
В индикаторах есть инструкция в которой сказано:
------------------------------
Данный архив содержит примеры функций расчета индикаторов терминала QUIK.
Файлы предоставляются "как есть". Допускаются любые правки на свое усмотрение.

ИНСТРУКЦИЯ:
Скопируйте каталог LuaIndicators из архива, в папку с терминалом QUIK.
После этого в терминале, в окне с графиком, станет возможным добавить индикаторы из архива.
Имя каждого из индикаторов начинается с символа *.

----------------это пример для скрипта--
--Пример расчета индикатора Moving Average по произвольному набору чисел:
dofile(getWorkingFolder().."\\LuaIndicators\\MA.lua")
tbl = {[1]=2587.5, [2]=2588.5, [3]=2585.1, [4]=2583.7, [5]=2582.6, [6]=2581.2, [7]=2579.2, [8]=2574.7,
[9]=2571.5, [10]=2570.8, [11]=2569.9, [12]=2569.7, [13]=2567.2, [14]=2569.3, [15]=2566.1, [16]=2567,
[17]=2563.3, [18]=2565.2, [19]=2564.3, [20]=2565.9, [21]=2568.5, [22]=2572.2, [23]=2572, [24]=2572, [25]=2571.3}
function main()
 func = MA()
 t_id = AllocTable()
 AddColumn(t_id,1,"Price",true,QTABLE_INT_TYPE,10)
 AddColumn(t_id,2,"MA",true,QTABLE_INT_TYPE,10)
 CreateWindow(t_id)
 SetWindowCaption(t_id,"MA")
 for i=1,#tbl do
  ma_out=func(i, {Period=3, Metod = EMA, VType=ANY}, {[i]=tbl[i]})
  tmp=InsertRow(t_id,-1)
  SetCell(t_id,tmp,1,tostring(tbl[i]),tbl[i])
  SetCell(t_id,tmp,2,tostring(ma_out),ma_out)
 end
end
Вопрос кодерам
 
Цитата
Kolossi написал:
Ну как-то ручные манипуляции с пустышками по 3 тысячам строк кода не особо вдохновляют. И даже если собрать все q-функции
в одном месте, то делать подмену после каждой правки то еще удовольствие.
Возможность подключение к редактору qlua буду изучать.
Я просто подумал может быть кто подскажет как в скрипте объявить функцию внешней и успокоить интерпретатор что, мол, она типа существует.
А причем здесь размер кода?
Вы делаете пустышки как dll  и подключаете.
Вопрос кодерам
 
Цитата
Kolossi написал:
Sublime Text 3 при проверке синтаксиса путем тестовой прогонки скрипта (Build) ругается на встроенные функции qlua, например на getWorkingFolder().
Понятно, что встроенный интерпретатор Lua их не знает и считает не объявленными глобальными переменными.
Как его заткнуть? Мешает.
сделайте пустышки либо подключите qlua
как найти единый счет
 
Цитата
Nikolay написал:
Не видел таких проблем для единого счёта. Вы бы вывели поля каждого счёта, да посмотрели что у него в поле классов.
У Вас единый счет? И указанный выше цикл его находит?
--------------------------------
У меня нет единого счета и все работает автоматом.
--------------------
Но у заказчика единый счет и x.trdaccid=nil .
Пока решил проблему просто указав явно account.
-------------------------
Но при дальнейшем изучении вопроса обнаружил в документации функции:

Функции получения информации по единой денежной
позиции


  • getTrdAccByClientCode
  • getClientCodeByTrdAcc
  • isUcpClient
Таким образом, работа с единым счетом отличается от работы с раздельными счетами.
Но нигде в документации это явно не объяснено и нет нигде ни слова о том, в какой таблице QUIK этот счет содержится.
----------------------
Если это не военная тайна, то хотелось бы получить вразумительное объяснение от разработчиков.
как найти единый счет
 
Никто из разработчиков не знает ответа?
как найти единый счет
 
Цитата
TGB написал:
Так должно работать:
Код
     local  str, x, account
   local   class_code  =   getClassInfo ( 'QJSIM' )  and   'QJSIM'   or   'TQBR'     -- в песочнице 'QJSIM', а в продуктиве 'TQBR'  
  str =  "trade_accounts" ;
   for  i =  0 ,  getNumberOf (str) -  1   do  
     x =  getItem (str,i) 
      if   string.find (x.class_codes, class_code)  then  account = x.trdaccid;  break ;  end  
   end 
  
Возможно я непонятно объяснил.
Если счета различные, то все работает.
Но если счет единый, то nil.
Вопрос:
Как получить торговый счет для формирования транзакции , если он единый.  
как найти единый счет
 
Вопрос к разработчикам.
Тестирую на демо поиск счата таким образом:
-------------------------
str="trade_accounts";
for i=0,getNumberOf(str)-1 do x=getItem(str,i) if string.find(x.class_codes,c) then account=x.trdaccid; break; end end
--------------------
Все находит замечательно.
Но на реальном едином счете, счет не находится.
Что не так?
Уточнение по CreateDataSource
 
CreateDataSource - это подписка на получение данных с сервера.
После подписки сервер присылает данные в терминал и они записываются в базу данных.
Как сделать 3D объект на lua?, Как сделать 3D объект на lua в любом приложении или хотябы в pocket up
 
https://thewikihow.com/digest/Как%20сделать%203D%20в%20Pocket%20Code:%20Самый%20лёгкий%20способ!
https://mksegment.ru/c/kak-sozdat-3d-igru-v-poket-kod
Установка точного времени
 
статистика погрешности синхронизации ПК с серверами точного времени:
Вывод через DDE-сервер, Вывод через DDE-сервер
 
Возможно проблема с правами доступа.
Что-то на ноутбуке теперь установлено с правами администратора.  
Установка точного времени
 
Установка точного времени
 
Добрый день,
Иногда можно замечать, как время сервера брокера куда-то убегает относительно времени компьютера и времени сделок.
-----------------------
В моей практике были случаи, когда сервер брокера отставал.
Получалось прикольно, время сделок было в будущем.
----------------------  
Особенно важным становится знание точного времени в момент открытия торгов,
если Вы совершаете сделки на открытие.
-------------------------
Как известно, все биржи сверяют свои часы по серверам точного времени.
--------------------
Сделал это на своем компьютере.
Проверить насколько точно синхронизирован ваш компьютер можно здесь:
https://www.ntp-servers.net/
у меня так:


Про синхронизацию ПК можно прочитать здесь:

https://learn.microsoft.com/ru-ru/windows-server/networking/windows-time-service/windows-time-servic...

https://support.hanwhavision.com/hc/en-us/articles/26570683589529-How-to-Setup-an-NTP-Server-on-Wind...

Сервер лучше брать российский из этого пула:


Вылетает квик 50 раз за сессию!, вылетает квик при работе в период торговой сессии
 
сколько ВЫ получаете инструментов и параметров в КВИКЕ?
Вылетает квик 50 раз за сессию!, вылетает квик при работе в период торговой сессии
 
еще я бы посоветовал для проверки откатится на версию 8.7.1.3. По моим наблюдениям это самая стабильная версия.
Я в сбере так  с нее и не ушел, хотя пытался уходить и на 10 и на 11 . Последние версии гоняю лишь в тестовом режиме.
Вылетает квик 50 раз за сессию!, вылетает квик при работе в период торговой сессии
 
Цитата
Лена написал:
Цитата
nikolz написал:
 
Цитата
Лена  написал:
вот так выглядит сейчас сбой, и это повторяется именно сейчас каждую секунду.
в торговое время вылетает постоянною

Как  стакой программой работать?
я порой стоп не успеваю выставить после входа в позицию, потому что прога вылетает
 А показать диспетчер задач (вкладки процессы и производительность) в этот момент Вы не желаете?
Ну,ну, успехов в борьбе с QUIK.
а там нечего показывать от слова совсем, цп не перегружен абсолютно, бездействие системы 90%, вам это что то гооврит?
сколько занято памяти квиком?
Вылетает квик 50 раз за сессию!, вылетает квик при работе в период торговой сессии
 
Цитата
Лена написал:
вот так выглядит сейчас сбой, и это повторяется именно сейчас каждую секунду.
в торговое время вылетает постоянною

Как  стакой программой работать?
я порой стоп не успеваю выставить после входа в позицию, потому что прога вылетает
А показать диспетчер задач (вкладки процессы и производительность) в этот момент Вы не желаете?
Ну,ну, успехов в борьбе с QUIK.
Как передать данные в КВИК из сторонней программы? Из Квика я отправляю через SOCKET, а в Квик не получается(((
 
на форуме тема уже обсуждалась.
я приводил результаты теста обмена через файл.
Это самый простой и достаточно быстрый способ.
Рекомендую начать с него.
Как передать данные в КВИК из сторонней программы? Из Квика я отправляю через SOCKET, а в Квик не получается(((
 
Цитата
Alex написал:
Цитата
nikolz написал:
 
Цитата
Alex  написал:
Коллеги добрый день

Как передать данные в КВИК из сторонней программы??
Из Квика во внешний мир я отправляю через SOCKET сервер который я поднял на ПИТОНЕ.

А в Квик из внешнего мира не получается(((
 Если сторонняя программа на том же ПК, то нет надобности использовать SOCKET.
Можно обмениваться через память или файлы. По скорости будет также или быстрее.
-----------------
Если надо обмениваться через SOCKET то сделайте на Lua сервер и клиент в одном скрипте.
В сторонней программе можно на любом языке.
Универсально сделать все на си и обернуть для нужных языков .
В инете есть примеры
Спасибо за ответ

СОКЕТ не принципиален

Подскажи пож-ста как обмениваться через ПАМЯТЬ ??
Через файлы умею, но хочу еще научится через память делать обмен данными

Спасибо
Для этого Вам надо будет написать функции на С или обернуть такие функции  для Lua
Методы обмена между процессами через память:   Shared memory и Mapping memory.

 
Народ, как подключить библиотеку HTTP ?
 
https://github.com/daurnimator/lua-http
https://www.educba.com/lua-http/
Как передать данные в КВИК из сторонней программы? Из Квика я отправляю через SOCKET, а в Квик не получается(((
 
Цитата
Alex написал:
Коллеги добрый день

Как передать данные в КВИК из сторонней программы??
Из Квика во внешний мир я отправляю через SOCKET сервер который я поднял на ПИТОНЕ.

А в Квик из внешнего мира не получается(((
Если сторонняя программа на том же ПК, то нет надобности использовать SOCKET.
Можно обмениваться через память или файлы. По скорости будет также или быстрее.
-----------------
Если надо обмениваться через SOCKET то сделайте на Lua сервер и клиент в одном скрипте.
В сторонней программе можно на любом языке.
Универсально сделать все на си и обернуть для нужных языков .
В инете есть примеры
Вылетает квик 50 раз за сессию!, вылетает квик при работе в период торговой сессии
 
Цитата
Лена написал:
на компьютере открыто 36 вкладок ,на каждой вкладке 5 графиков и стакан. квик вылетает каждую минуту. Места на диске, где он установлен свобоно 100ГИГ, оперативка 8гиг
Разрабы, откройте у себя 40 вкладок и выведите на каждую по 5 графиков и поработайте, выйдет у вас или нет.
Бесит уже такая ситуация.

напомню, у меня ДВА инструмента-комп с виндой 7 и ноут с виндой 10, везде памяти вагон и везде одна и таже проблема и мне еще говорят-что проблема в моих девайсах? ну вот ага
когда квик вылетает есть сообщения или он просто закрывает все окна?
и хорошо бы при этом наблюдать диспетчер задач (загрузка процессора и памяти)
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
VPM написал:
Но в отличии от функции исполнение идет в собственном потоке, низко затратам, без использования задержек и блокировки основного потока, может приостанавливать исполнение и возобновлять впоследствии. Подход, в котором каждая стратегия работает в своей корутине, позволяет молниеносно обрабатывать ее, практически не влияя на производительность
Вы опять ошибаетесь .
корутина выполняется не в отдельном потоке , а в отдельном стеке .
Но поток в смысле многопоточность ОС будет один
Т е все корутины , которые вы создадите будут исполняться на одном ядре и последовательно.
они не мешают друг другу так как при их создании выделяется отдельный стек.
------------------
Но Вы можете верить что у вас все параллельно.
Выставить сделку с переносом из стакана, быстрые сделки
 
никак
Как создать глобальную константу доступную многим скриптам и индикаторам?, Как создать глобальную константу доступную многим скриптам и индикаторам?
 
Но опять же называется  строго это называется:
программирование без блокировок (Lock-free).
Как создать глобальную константу доступную многим скриптам и индикаторам?, Как создать глобальную константу доступную многим скриптам и индикаторам?
 
но если использовать атомарные операции то можно сказать и потоконезависимость.
Так как никакие потоки вообще никак не обнаруживают друг друга.  
Как создать глобальную константу доступную многим скриптам и индикаторам?, Как создать глобальную константу доступную многим скриптам и индикаторам?
 
Цитата
swerg написал:
Вообще точнее сказать потокобезопасный.

Это подразумевалось под потоконезависимостью? Или что-то другое?
Пардон, опечатка, подразумевалась потокобезопасность.
Как создать глобальную константу доступную многим скриптам и индикаторам?, Как создать глобальную константу доступную многим скриптам и индикаторам?
 
Цитата
swerg написал:
StaticVar специально для этого делалась

https://quik2dde.ru/viewtopic.php?id=61
У вас обмен потоконезависимый?
Как создать глобальную константу доступную многим скриптам и индикаторам?, Как создать глобальную константу доступную многим скриптам и индикаторам?
 
хотел сравнить со своим решением.
у меня библиотека в 3 раза меньше.(43кБ)
Как создать глобальную константу доступную многим скриптам и индикаторам?, Как создать глобальную константу доступную многим скриптам и индикаторам?
 
Цитата
swerg написал:
StaticVar специально для этого делалась

https://quik2dde.ru/viewtopic.php?id=61
если не ошибаюсь, то собрана для 5.3.
Не смог залогиниться в десктоп квике
 
Такая проблема возникала и у Сбера.
Заметил, что это обычно возникало, если подключаешься до начала торгов.
Как правило, через некоторое время после такого сообщения соединение устанавливается без каких либо пинков.
Не смог залогиниться в десктоп квике
 
Цитата
Serge123 написал:
В 9:50 выставил заявку в квике, перезагрузился для отмены алгоритма Нейгла, опять запускаю квик, на ввод пароля получаю сообщение, что у меня какие-то неправильные ключи и что-то не то с авторизацией, и так 2 раза.

А что было бы, если бы я попытался залогиниться в 4-й раз? Я, наверно, попал бы на блокировку аккаунта?

А волатильность сейчас высокая, может потребоваться срочно снять заявку (так оно и случилось), а то при её выполнении я стану должен брокеру хорошую сумму, а цена может пойти ещё ниже... Я методом тыка выбрал дополнительный сервер у брокера для связи и тогда только смог залогиниться.

Вопрос: что это была за ерунда такая?

Иногда я для подстраховки держу запущенную торговую программу на телефоне, но особого спокойствия всё равно не чувствую...
Сервер обнаруживает отсутствие связи через некоторое время.
Поэтому если сразу и быстро, то может быть как у Вас.
Как создать глобальную константу доступную многим скриптам и индикаторам?, Как создать глобальную константу доступную многим скриптам и индикаторам?
 
Цитата
ДмитрийР написал:
Есть потребность сохранить одно число и иметь возможность использовать его в разных скриптах и индикаторах. Как это можно сделать без чтения\записи в фаил?
См API C for Lua
или готовые внешние dll.
-------------------
Зря пренебрегаете  файлами.
Работают быстро так как хранятся в памяти.
Зависание приёма данных в QUIK
 
Цитата
unikum33 написал:
Подскажите, пожалуйста, как можно откатиться на 10-ю версию квика, пока идёт багфиксинг.
Просто копирование, как при апдейте, через файловый архив не работает. QUIK просто не запускается.
есть в квике папка backup
там в папках по датам Ваша предыдущая версия
Берете оттуда файлы и копируете в QUIK.  (на всякий случай сначала сделайте архив текущего содержания)
Вылетает квик 50 раз за сессию!, вылетает квик при работе в период торговой сессии
 
Цитата
Лена написал:
Цитата
ну я и пишу,что квик не умеет работать с большим числом графиков. так что это не моя проблема а разрабов.
я не долгосрочный инвестор, который купил и забыл. я внутри дн торгую разные инструменты и, естественно, мне надо переключаться между ними, а иначе как вы себе это представляете?

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

когда раньше я сидела с парой инструментов, проблем не было. вот и все
Ваш рассказ не содержит технических характеристик загрузки Вашего компьютера, поэтому могу лишь посочувствовать Вам.
-------------------------------
Если биржа  вернет торговый день с 7-00 до 23-59 и Вы будете все это время активно бегать по бумагам т е по графикам, то Вас надолго не хватит.
--------------------  
Что касается QUIK как торгового терминала,
то писал на форуме результат краштеста   для 200 бумаг, примерно 200 тысяч выставленных и снятых заявок за 4 часа.
Загрузка процессора примерно 10%.
-------------------
Если хотите конкретной помощи, то выкладывайте параметры из менеджера задач и оптимизируйте  работу компа и свое беганье по графикам.
---------------------
Есть еще один универсальный способ решить проблему.  
Надо поднять правую руку над головой.
Глубоко вдохнуть и , резко опустив руку вниз ,
громко сказать "ну и ...... c ним ( тут по желанию можно добавить что-то про QUIK или про компьютер или про рынок )"
После такого сложного дела можно попить кофе.
[BUG] getFuturesHolding: ошибка в работе
 
Цитата
VPM написал:
nikolz,  Не понял что мешает организовать свой поток маин? Вот накидал на скорую руку, попробуйте так поставив свои данные.
[CODE][/CODE]
Да ничего не мешает.   Функцию я эту использую.  Но у меня все иначе написано и проблем с этой функцией не было.
-----------------------
Поэтому и хотел посмотреть именно ваше решение, в котором есть проблемы.
------------------------
Относительно задержки процессора.
Я использую Event, об этом писал и вы знаете.
В результате реакция на колбек запаздывает не более, чем на 0.00001 сек, а загрузка процессора 3-7%.  
[BUG] getFuturesHolding: ошибка в работе
 
Цитата
VPM написал:
nikolz, Функция вызова обрабатывается в потоке маин, работает правильно и со стороны пользователя защищена проверкой на nil,  
Цитата
В случае ошибки функция возвращает «nil».
На этот случай дополнительно выводится сообщение и проверяемся корректность ввода пользователем входных параметров. В случае описанном нет ошибки на стороне пользователя (все введено корректно изменился тикер)! Ошибка возникает на стороне функции (Разработчиков), так как возвращает nil то есть - ошибку (читаем документацию)! Вот я и пытаюсь получить комментарий Разработчиков, понять где не точность в функции или документации? Описание говорит что должна вернуться таблица.
просто хотел посмотреть на демо сервере и понять причину.
Возможно я не нашел примера, но этот код не содержит  вызова, результата  и рабочего скрипта, который можно запустить чтобы обнаружить проблему:
Код
-- Function to get Futures Holding
function MoneyManagement:FuturesHolding(symbol)
    local holdings = getFuturesHolding(self.firmid, self.account, symbol, self.type)
    if holdings then
        self.holdings = holdings
        self.startbuy = holdings.startbuy or 0
        self.startsell = holdings.startsell or 0
        self.startnet = holdings.startnet or 0
        self.todaybuy = holdings.todaybuy or 0
        self.todaysell = holdings.todaysell or 0
        self.totalnet = holdings.totalnet or 0
        self.openbuys = holdings.openbuys or 0
        self.opensells = holdings.opensells or 0
        self.lused = holdings.cbplused or 0
        self.lplanned = holdings.cbplplanned or 0
        self.varmargin = holdings.varmargin or 0
        self.avrposnprice = holdings.avrposnprice or 0
        self.positionvalue = holdings.positionvalue or 0
        self.real_varmargin = holdings.real_varmargin or 0
        self.total_varmargin = holdings.total_varmargin or 0

        --self.session_status = math.floor(holdings.session_status) or 0
        local session_status = {
            [0] = 'не определено',
            [1] = 'основная сессия',
            [2] = 'начался промклиринг',
            [3] = 'завершился промклиринг',
            [4] = 'начался основной клиринг',
            [5] = 'основной клиринг: новая сессия назначена',
            [6] = 'завершился основной клиринг',
            [7] = 'завершилась вечерняя сессия'
        }
        self.session_status = session_status[ math.floor(holdings.session_status)]
        if getFuturesHolding ~= 'основная сессия' then
        Log:trace('Актуальный статус торговой сессии getFuturesHolding: ' .. holdings.session_status .. ' ' .. self.session_status)
        end
    else
        Log:info("Ошибка функции getFuturesHolding, возвращает = " .. tostring(holdings) ..
                     "; self.firmid = " .. tostring(self.firmid) ..
                     "; self.account = " .. tostring(self.account) ..
                     "; symbol = " .. tostring(symbol) ..
                     "; self.type = " .. tostring(self.type)..' '.. type(self.type))
    end
end
[BUG] getFuturesHolding: ошибка в работе
 
Цитата
VPM написал:
nikolz, Выше я показал функцию вызова и ответ на нее. Все прекрасно работало на старом тикере. Сбой происходит в момент ввода нового тикера. Ответ на вызов
local holdings = nil? при этом все входящие данные верны, более того изменился только код тикера.
Цитата
Ошибка функции getFuturesHolding, возвращает = nil; self.firmid = SPBFUT; self.account = SPBFUT00hkv; symbol = NGU4; self.type = 0 number
  Функция возвращает таблицу Lua, не может быть здесь отсутствие самой таблицы, могут отсутствовать поля этой таблицы, но не сама таблица?

Вот из справки
Цитата
Функция предназначена для получения информации по фьючерсным позициям.  Формат вызова:  TABLE getFuturesHolding(STRING firmid, STRING trdaccid, STRING sec_code, NUMBER type)  Функция возвращает таблицу Lua с параметрами Таблицы «Позиции по клиентским счетам».  В случае ошибки функция возвращает «nil».
Я и допустил что при обновлении тикера не проходит какая - то инициализация, так как таблица отражает владение, то и активировал просто ордер по этому тикеру, сразу функция заработала нормально. Об этом мое сообщение.
Так как повторить данную ситуацию не могу, то могу лишь предположить следующее.
Эта функция по указанным параметрам ищет информацию в архиве терминала.
Если это новый тикер и он поступил в колбеке, то его еще нет архиве и в таблицах, так как информация в колбек приходит до ее записи в таблицы.
--------------------  
Чтобы такой ситуации не происходило , или для того чтобы определить причину,
я бы поставил ожидание данных при возникновении ситуации и запись состояния при этом в лог файл.
По результатам  в лог файле можно было бы что-то решить.
[BUG] getFuturesHolding: ошибка в работе
 
Мое мнение:
Чтобы найти ошибку надо видеть вызов функции и результат.
Вполне возможно, что ошибка происходи так как поток не успеет выбрать значение из архива до прихода новых данных.
Надо ставить ожидание события, чтобы не было мучительно больно.  
история сделок, история сделок
 
Цитата
Ирина Никонова написал:
Цитата
nikolz написал:
если Вы выключили QUIK, то историю сделок Вы не получите, а брокер, вне зависимости от включения QUIK, обязательно Вам ее передаст согласно ГК РФ.
Поумничали....  А нам не официальный отчет нужен, а просто табличка из Квик со сделками на предыдущий день. Без всякого ГК. Для сервиса удобного, а не ради соблюдения ГК.  Брокеров много, от каждого идет свой формат загрузки, иногда дурацкий. Простая структура данных, которую самая стать построчно формировать, в такую матрешку оборачивается, запаришься ее обрабатывать.  А из Квика можно получать одинаковые файлы от разных брокеров.
Ну,ну.
Я Вам объяснил, почему  делать филькину грамоту Вам никто не будет.
Ну если Вы других не дурите, то вам можно .  
история сделок, история сделок
 
Цитата
Ирина Никонова написал:
Добрый день. У нас в компании работает скрипт, сохраняющий сделки в нужном нам формате для загрузки в учетные системы. Но иногда бывают сбои - пользователь может случайно закрыть табличку и ... сделок нет. Хотя бы на один-два дня глубиной хранить историю сделок было бы очень актуально. Брокер, к сожалению, дает какой-то невообразимо дурацкий формат для загрузки сделок, а квиковский нам нравится.  
Попробую объяснить почему это не будет сделано.
------------------------
Согласно ФЗ о рынке ЦБ сделки на бирже делает не клиент, а брокер.
QUIK лишь терминал для подачи заявок брокеру. .
Поэтому действительны лишь те сделки , которые есть в отчете брокера.
--------------------  
При этом, если Вы выключили QUIK, то историю сделок Вы не получите,
а брокер, вне зависимости от включения QUIK, обязательно Вам ее передаст согласно ГК РФ.
--------------------
В итоге то, что прислал брокер это и есть Ваши сделки.
------------------  
Если формат не устраивает, то конвертируйте в другой формат.
Это техническая задача на уровне студента.
сообщение в Telegram - это просто
 
Цитата
Nikolay написал:
io.popen в окружении терминала все равно поднимает окно.
тогда придется использовать API C for Lua
и написать такую функцию для отправки сообщений:
Код
static int shell(lua_State* L){  ShellExecuteA(0,"open", (char*)lua_tostring(L, 1),(char*)lua_tostring(L,2),0,0);return 0; }
сообщение в Telegram - это просто
 
Цитата
VargoR написал:
Вопрос только в том, как убрать мелькание командного окна.
попробуйте так:
Код
local token=""
local chat_id=""
local serv= "https://api.telegram.org/bot"..token
local pref= serv.."/sendMessage?chat_id="..chat_id.."&text="
local cur1="curl -s "..'"'..pref
local mes="Привет"
local f=io.popen(cur1..mes); f:close(); 
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 80 След.
Наверх