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

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

Страницы: 1
Прочесть таблицу новости через LUA
 
Владимир,
да, у меня скромнее - порядка 30-ти, но выверенных и подходящих под мои критерии инструментов - но мне достаточно :)

********************************************
Уважаемый разработчик QUIK, хотелось бы услышать ваше мнение по обозначенной проблеме и по предложенным вариантам реализации!
Прочесть таблицу новости через LUA
 
Владимир, :)

По каждому инструменту у меня открыто два графика - один шестиминутный, второй минутный, а оперативные изменения под SL и TP я беру из стакана.
Прочесть таблицу новости через LUA
 
РебятЫ, давайте жить дружно!

У каждого свой уровень программирования, у каждого свой уровень понимания вопроса, у каждого свои любимые инструменты и приемчики и у каждого свои потребности. У каждого свои скрипты и, что самое главное, ОНИ РАБОТАЮТ. Но все мы работаем в QUIK и это ДАННОСТЬ. И нет смысла ломать палки - есть ли Float в ассемблере или нет его. Я пользуюсь тем функционалом, который мне дают и он пока меня устраивает. Я не выгружаю данные куда-то наружу, чтобы анализировать их в C++, я не пишу коннекты и внешние компоненты, меня устраивает QLUA - все, что мне надо - все работает и в этой среде. Да, я считываю значения свечек и индикаторов по идентификатору и не вижу в этом ничего ужасного, все так же хорошо работает и на таймфрейме и 3, и 5, и 6, и 10 - благодаря этому я могу оперативно сверить результаты работы своего скрипта с результатами в таблицах и на графиках и у меня нет никаких расхождений.

Теперь по вопросу ветки: мне надо всего-навсего прочитать очередную новость, найти нужные там вхождения и сделать в зависимости от этого определенные вычисления - И ВСЕ! Поэтому я и имел ввиду использование уже имеющегося механизма обращения к объекту через идентификатор, чтобы ускорило процесс разработки. Это мой взгляд на вещи. В этом механизме мне все понятно - что и куда...  Зачем усложнять?

И конечно, хотелось бы услышать мнение разработчика QUIK, а не перебранку на пустом месте адептов разных программистских течений. Поверьте, Вы все очень умные и талантливые... А мне надо всего-то новость прочитать.
Прочесть таблицу новости через LUA
 
Цитата
swerg написал:
Не должно быть никакой привязки к визуальной таблице
Не нравятся мне безапелляционные сообщения подобного рода. Если Вы так пишите - аргументируйте.

Я исхожу из того, что решение должно быть быстро реализуемым и удобным для большого количества пользователей QUIK, использующих QLUA в своих целях, а не для узкого круга супер-пупер программеров, пишущих на заказ... С таким подходом, который Вы озвучили, вообще не надо никакого интерфейса - достаточно получать котировки.

...Хотя, если разработчик сочтет Ваш вариант более подходящим, то не имею ничего против, главное, чтобы это не затянулось по времени и работало.
Прочесть таблицу новости через LUA
 
Добрый день!

Roman Azarov, Идея то хорошая.

Вот пожелание на доработку:
-надо иметь возможность задать идентификатор для конкретной таблицы новостей (как для графиков), так как таблиц с новостями можно открыть много и на каждую из них повесить свой фильтр и свой идентификатор.
-нужна возможность программно обратиться к таблице по идентификатору, перебрать строки-новости в составе полей (Дата, Время, Агентство, Заголовок, Новость) и в переменную засунуть нужную мне новость.

А все остальное можно получить оттуда строковыми функциями и проанализировать.

Думаю, это для вас абсолютно не сложно, тем более такой функционал есть для всех остальных основных таблиц - ничего не надо придумывать. Только идентификатор таблицы добаить.  

Зачем нужна возня с какими-то внешними компонентами, если это можно будет спокойно реализовать на QLUA ?!
QUIK 8.0
 
Артем, спасибо за помощь!

Но у меня не работает эта конструкция - module 'socket' not found.

В архиве
luasocket_luasec_5.3_x64.zip есть:
Код
папка mime - внутри core.dll и core.lib
папка socket - внутри core.dll и core.lib
файл ssl.dll
файл ssl.lib
я так понимаю, что должен быть еще socket.dll для x64...

Задача - я хочу спарсить рекомендацию с сайта ru.investing.com - как один из факторов при принятии решения по инструменту.
Может для этого существует более простое решение, но я пока его не нашел.
QUIK 8.0
 
Цитата
Вячеслав написал:
Цитата
MikhaZz написал:
Собрал luasocket и luasec под lua 5.3 x64
Для линковки использовал эти библиотеки
!!! имя библиотеки lua53.dll
 https://sourceforge.net/projects/luabinaries/files/5.3.5/Windows%20Libraries/Dynamic/lua-5.3.5_Win64...  

Архив со сборкой здесь
 https://drive.google.com/file/d/1NiIfSLRcJUV7IdqnZVadtRmD3z2H5Q3Y/view?usp=sharing  
Коллеги, прощу помощи.

Под 5.1 все работало.

Под 5.3 скачал архив по второй ссылке выше, подключил, получаю ошибку module 'ssl.https' not found:

Мой код:
package.cpath  =   getScriptPath ()  ..   "\\5.3\\?.dll;"   ..  package.cpath
package.path  =   getScriptPath ()  ..   "\\5.3\\?.lua;"   ..  package.path

local  https  =   require ( "ssl.https" )

Подскажите в чем может быть проблема? Файлы libssl-1_1-x64.dll и libcrypto-1_1-x64.dll в System32 имеются. Windows 10, QUIK 8.7.0.6
Добрый день!

Такая же история - все сделал, как указано, но файл ssl.https не найден.
Физически этого файла тоже нет, есть только ssl.dll и ssl.lib

Нужна помощь...
Не работают функции getDepoEx и getMoneyEx, Как получить цену покупки бумаги и остаток денег в руб и usd на счете...
 
СПАСИБО Роману - разобрались!

Проблема была в:

limit_kind       = "2"; (те строка)

а должно быть:

limit_kind       = 2; (те число)
Не работают функции getDepoEx и getMoneyEx, Как получить цену покупки бумаги и остаток денег в руб и usd на счете...
 
Всех категорически приветствую!

У меня проблема: и в FFIN, и в VTB функции getDepoEx и getMoneyEx возвращают 'nil',  в то время как getBuySellInfoEx (третья в скрипте ниже) возвращает адекватный результат...
Я связывался с Quik - поддержкой и той и другой ИК, они говорят, что помочь могут только здесь   .
Посоветуйте - куда смотреть...

Мне надо получить цену покупки бумаги (щас я ее рассчитываю "через одно место"), остаток денег в руб и в usd на счете...

Скрипт вот:
Код
-- Это для FFIN
firm_id       = "MC0356400000";
client_code            = "53xxx";
trdaccid       = "BROKERSKIY";
class_code       = "SPBRU";
sec_code       = "FIPO";
tag          = "EQTV";
currcode       = "USD";
limit_kind       = "2";

-- Это для VTB

firm_id       = "MC0003300000";
client_code            = "10Txxx";
trdaccid       = "VTBRM_CL";
class_code       = "SPBXM";
sec_code       = "OXY_SPB";
tag          = "EQTV";
currcode       = "USD";
limit_kind       = "2";

----------------------------------------------------

local result = getMoneyEx(firm_id, client_code, tag, currcode, limit_kind); 
if result == nil then
   message('getMoneyEx = nil');
else
   message(
      "getMoneyEx \n" ..
      "currcode: " .. tostring(result.currcode) .. "; \n" ..
      "tag: " .. tostring(result.tag) .. "; \n" ..
      "firmid: " .. tostring(result.firmid) .. "; \n" ..
      "client_code: " .. tostring(result.client_code) .. "; \n" ..
      "openbal: " .. tostring(result.openbal) .. "; \n" ..
      "openlimit: " .. tostring(result.openlimit) .. "; \n" ..
      "currentbal: " .. tostring(result.currentbal) .. "; \n" ..
      "currentlimit: " .. tostring(result.currentlimit) .. "; \n" ..
      "locked: " .. tostring(result.locked) .. "; \n" ..
      "locked_value_coef: " .. tostring(result.locked_value_coef) .. "; \n" ..
      "locked_margin_value: " .. tostring(result.locked_margin_value) .. "; \n" ..
      "leverage: " .. tostring(result.leverage) .. "; \n" ..
      "limit_kind: " .. tostring(result.limit_kind).. ";"
   );
end;

local result = getDepoEx(firm_id, client_code, sec_code, trdaccid, limit_kind);
if result == nil then
   message('getDepoEx = nil');
else
   message(
      "getDepoEx \n" ..
      "trdaccid: " .. tostring(result.trdaccid) .. "; \n" ..
      "firmid: " .. tostring(result.firmid) .. "; \n" ..
      "client_code: " .. tostring(result.client_code) .. "; \n" ..
      "currentbal: " .. tostring(result.currentbal) .. "; \n" ..
      "awg_position_price: " .. tostring(result.awg_position_price) .. ";"
   );
end;

local result = getBuySellInfoEx(firm_id, client_code, class_code, sec_code, 0)
if result == nil then
   message('getBuySellInfoEx = nil');
else
   message(
      "getBuySellInfoEx \n" ..
      "is_margin_sec = " .. tostring(result.is_margin_sec) .. "; \n" ..
      "is_asset_sec = " .. tostring(result.is_asset_sec) .. "; \n" ..
      "balance = " .. tostring(result.balance) .. "; \n" ..
      "can_buy = " .. tostring(result.can_buy) .. "; \n" ..
      "can_sell = " .. tostring(result.can_sell) .. "; \n" ..
      "position_valuation = " .. tostring(result.position_valuation) .. "; \n" ..
      "value = " .. tostring(result.value) .. "; \n" ..
      "open_value = " .. tostring(result.open_value) .. "; \n" ..
      "lim_long = " .. tostring(result.lim_long) .. "; \n" ..
      "long_coef = " .. tostring(result.long_coef) .. "; \n" ..
      "lim_short = " .. tostring(result.lim_short) .. "; \n" ..
      "short_coef = " .. tostring(result.short_coef) .. "; \n" ..
      "value_coef = " .. tostring(result.value_coef) .. "; \n" ..
      "open_value_coef = " .. tostring(result.open_value_coef) .. "; \n" ..
      "share = " .. tostring(result.share) .. "; \n" ..
      "short_wa_price = " .. tostring(result.short_wa_price) .. "; \n" ..
      "long_wa_price = " .. tostring(result.long_wa_price) .. "; \n" ..
      "profit_loss = " .. tostring(result.profit_loss) .. "; \n" ..
      "spread_hc = " .. tostring(result.spread_hc) .. "; \n" ..
      "can_buy_own = " .. tostring(result.can_buy_own) .. "; \n" ..
      "can_sell_own = " .. tostring(result.can_sell_own) .. ";"
   );
end; 
getMoney и getMoneyEx возвращают nil, Как получить данные от getMoney или getMoneyEx?
 
Всем привет!

К сожалению, мне не помогло. И в FFIN, и в VTB функции getMoneyEx и getDepoEx возвращают 'nil',  в то время как getBuySellInfoEx (третья в этом скрипте) возвращает адекватный результат...
Я связывался с Quik - поддержкой и той и другой ИК, они говорят, что помочь могут только здесь  :smile: .
Если есть у кого решение - подскажите, буду благодарен!

Надо получить цену покупки бумаги (щас я ее рассчитываю "через одно место"), остаток денег в руб и usd на счете...

Скрипт вот:
Код
-- Это для FFIN

firm_id       = "MC0356400000";
client_code            = "53xxx";
trdaccid       = "BROKERSKIY";
class_code       = "SPBRU";
sec_code       = "FIPO";
tag          = "EQTV";
currcode       = "USD";
limit_kind       = "2";

-- Это для VTB

firm_id       = "MC0003300000";
client_code            = "10Txxx";
trdaccid       = "VTBRM_CL";
class_code       = "SPBXM";
sec_code       = "OXY_SPB";
tag          = "EQTV";
currcode       = "USD";
limit_kind       = "2";

----------------------------------------------------

local result = getMoneyEx(firm_id, client_code, tag, currcode, limit_kind); 
if result == nil then
   message('getMoneyEx = nil');
else
   message(
      "getMoneyEx \n" ..
      "currcode: " .. tostring(result.currcode) .. "; \n" ..
      "tag: " .. tostring(result.tag) .. "; \n" ..
      "firmid: " .. tostring(result.firmid) .. "; \n" ..
      "client_code: " .. tostring(result.client_code) .. "; \n" ..
      "openbal: " .. tostring(result.openbal) .. "; \n" ..
      "openlimit: " .. tostring(result.openlimit) .. "; \n" ..
      "currentbal: " .. tostring(result.currentbal) .. "; \n" ..
      "currentlimit: " .. tostring(result.currentlimit) .. "; \n" ..
      "locked: " .. tostring(result.locked) .. "; \n" ..
      "locked_value_coef: " .. tostring(result.locked_value_coef) .. "; \n" ..
      "locked_margin_value: " .. tostring(result.locked_margin_value) .. "; \n" ..
      "leverage: " .. tostring(result.leverage) .. "; \n" ..
      "limit_kind: " .. tostring(result.limit_kind).. ";"
   );
end;

local result = getDepoEx(firm_id, client_code, sec_code, trdaccid, limit_kind);
if result == nil then
   message('getDepoEx = nil');
else
   message(
      "getDepoEx \n" ..
      "trdaccid: " .. tostring(result.trdaccid) .. "; \n" ..
      "firmid: " .. tostring(result.firmid) .. "; \n" ..
      "client_code: " .. tostring(result.client_code) .. "; \n" ..
      "currentbal: " .. tostring(result.currentbal) .. "; \n" ..
      "awg_position_price: " .. tostring(result.awg_position_price) .. ";"
   );
end;

local result = getBuySellInfoEx(firm_id, client_code, class_code, sec_code, 0)
if result == nil then
   message('getBuySellInfoEx = nil');
else
   message(
      "getBuySellInfoEx \n" ..
      "is_margin_sec = " .. tostring(result.is_margin_sec) .. "; \n" ..
      "is_asset_sec = " .. tostring(result.is_asset_sec) .. "; \n" ..
      "balance = " .. tostring(result.balance) .. "; \n" ..
      "can_buy = " .. tostring(result.can_buy) .. "; \n" ..
      "can_sell = " .. tostring(result.can_sell) .. "; \n" ..
      "position_valuation = " .. tostring(result.position_valuation) .. "; \n" ..
      "value = " .. tostring(result.value) .. "; \n" ..
      "open_value = " .. tostring(result.open_value) .. "; \n" ..
      "lim_long = " .. tostring(result.lim_long) .. "; \n" ..
      "long_coef = " .. tostring(result.long_coef) .. "; \n" ..
      "lim_short = " .. tostring(result.lim_short) .. "; \n" ..
      "short_coef = " .. tostring(result.short_coef) .. "; \n" ..
      "value_coef = " .. tostring(result.value_coef) .. "; \n" ..
      "open_value_coef = " .. tostring(result.open_value_coef) .. "; \n" ..
      "share = " .. tostring(result.share) .. "; \n" ..
      "short_wa_price = " .. tostring(result.short_wa_price) .. "; \n" ..
      "long_wa_price = " .. tostring(result.long_wa_price) .. "; \n" ..
      "profit_loss = " .. tostring(result.profit_loss) .. "; \n" ..
      "spread_hc = " .. tostring(result.spread_hc) .. "; \n" ..
      "can_buy_own = " .. tostring(result.can_buy_own) .. "; \n" ..
      "can_sell_own = " .. tostring(result.can_sell_own) .. ";"
   );
end;   
Страницы: 1
Наверх