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

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

Страницы: 1
Звуки в Qlua, Вопрос по звуковой индикации
 
Цитата
Иван написал:
Цитата
Старатель написал:
 
Код
     os.execute (  'powershell -c (New-Object Media.SoundPlayer "c:\\windows\\media\\tada.wav").PlaySync();'  )    
 
Возможно ли данную команду запустить в фоновом режиме?
Или к примеру переключить на использование VLC.exe проигрывателя?
Интересует именно фоновый режим.
мне тоже интересно, как в фоне запускать.
Кстати огромное спасибо, проблема со звуком в целом решена.
CreateDataSource, не грузятся данные при формир. через CreateDataSource
 
Цитата
Дмитрий написал:
Цитата
Виктор написал:
На другом форуме подсказали
Можете написать что за форум?
https://quikluacsharp.ru/quik-qlua/poluchenie-v-qlua-lua-dannyh-iz-grafikov-i-indikatorov/
CreateDataSource, не грузятся данные при формир. через CreateDataSource
 
Roman Azarov, подскажите пожалуйста, а можно ли получать больше свечек этой функцией, или какой-либо еще? Встала проблема получения минутных свечей за месяц, а CreateDataSource возвращает от силы 500 минуток
CreateDataSource, не грузятся данные при формир. через CreateDataSource
 
Цитата
Roman Azarov написал:
Виктор,

Что касается самого вопроса
Цитата
Виктор написал:
так работает, но выдает 0
Запустили описанный вами скрипт у себя, все работает корректно.

Во-первых, для работы CreateDataSource по параметру (bid в Вашем случае), необходимо, чтобы были включены следующие настройки в пункте меню Система/Настройки/Основные настройки/Программа/Сохранение данных:
- "Данные, отражающие текущее состояние и всю историю изменений"
- "Получать пропущенные данные"

Также, заметим, что 0 это все еще результат, а не ошибка. Рекомендуем построить график по данному параметру и проверить, есть ли на нем свечи.
Эти настройки включены. График по параметру "лучшая цена спроса" построил, есть там свечи. Но скрипт не работает. На другом форуме подсказали, неправильно прописан инструмент. Надо строго соблюдать регистр. Теперь все работает.
CreateDataSource, не грузятся данные при формир. через CreateDataSource
 
Цитата
Виктор написал:
Цитата
Виктор написал:
ds = CreateDataSource("SPBFUT", "SIZ0", INTERVAL_M1)
ds:SetEmptyCallback()

В скрипте больше ничего нет. Выдает ошибку attempt to index a nil value (local 'ds')
Почему так? Что-то изменилось в терминале?
так работает, но выдает 0     Скрытый текст            Скрытый текст            Скрытый текст       function main()     Скрытый текст       ds, Error = CreateDataSource("SPBFUT", "SIZ0", INTERVAL_M1,"bid")     Скрытый текст       if ds == nil then     Скрытый текст       message('Ошибка подключения: '..Error)     Скрытый текст       end     Скрытый текст       ds:SetEmptyCallback()     Скрытый текст       sleep(60000)     Скрытый текст       message(tostring(ds:Size()))     Скрытый текст       end
Уважаемая Администрация. Скажите пожалуйста, как отредактировать свое сообщение?  
CreateDataSource, не грузятся данные при формир. через CreateDataSource
 
Цитата
Виктор написал:
ds = CreateDataSource("SPBFUT", "SIZ0", INTERVAL_M1)
ds:SetEmptyCallback()

В скрипте больше ничего нет. Выдает ошибку attempt to index a nil value (local 'ds')
Почему так? Что-то изменилось в терминале?
так работает, но выдает 0
Скрытый текст
CreateDataSource, не грузятся данные при формир. через CreateDataSource
 
ds = CreateDataSource("SPBFUT", "SIZ0", INTERVAL_M1)
ds:SetEmptyCallback()

В скрипте больше ничего нет. Выдает ошибку attempt to index a nil value (local 'ds')
Почему так? Что-то изменилось в терминале?
Получение подтаблицы в отдельную таблицк
 
Цитата
Владимир написал:
Виктор, Задавайте имена полей таблиц как натуральные числа и не мучайтесь. У меня весь скрипт так построен - и нет проблем. Вот, например, оператор аж из двойного цикла:
if a[8][j]~=0 then k=CF[a[9][j]+5];
И вам спасибо, точно же, он со строками даже число элементов не возвращает.
В итоге получился алерт на объемы, неидеальный, но пока пойдет
Код
--скрипт надо сохранить в кодировке Windows-1251, иначе будут кракозябры
require "bot4sale64" --надо скачать и вставить в папку со скриптом, или удалить строку, но тогда звука не будет
local ind =
{
   [1] =
   {
      ind_sub = "si_vol", --идентификатор отслеживаемого графика. Проставляется в настройках графика.
      need_volume = 10    --требуемый объем выше которого будет сигнал
   },                          --не забыть запятую после вставки еще одного блока
   [2] =
   {
      ind_sub = "ri_vol",
      need_volume = 10
   } 
}
was_alert = {ind = ""}


IsRun = true
function main()
while IsRun do

   for i,tab_data in pairs(ind) do
      true_alert = true   
      candles = getNumCandles(tab_data.ind_sub);
      tab, n, l = getCandlesByIndex (tab_data.ind_sub, 0, candles-1,1)
      local O = tab[0].open; -- Получить значение Open для указанной свечи (цена открытия свечи)
      local V = tab[0].volume; -- Получить значение Volume для указанной свечи (объем сделок в свече)
            if V>tab_data.need_volume then 
               msg_alert = string.format("Повышенные объемы:%d;Символ:%s;цена открытия:%s",V,tab_data.ind_sub,O)
         
               for i,alert_data in ipairs(was_alert) do --проверка на то, был ли уже такой алерт, чтобы повторно не срабатывало
               if alert_data == msg_alert then 
                  true_alert = false 
                  break
                  end
               
            end
            if true_alert == true then
               bot4sale64.PlaySound("Ахтунг.wav") --прописать свой звуковой файл и положить его в папку со скриптом
               message(msg_alert,1)
               table.insert(was_alert,msg_alert)
               end
            
            end
         
         
      
      if #was_alert>(#ind*60) then            --блок очистки памяти, так как этот список будет постоянно пополняться
         while #was_alert~=#ind*60 do
               table.remove(was_alert, 1)
         end
      end
   end
end
sleep(1000);                                             --задержка между проверками в милисекундах
end


function OnStop()
   IsRun = false;
end


Получение подтаблицы в отдельную таблицк
 
Цитата
Nikolay написал:
Если это не массив, то необходимо использовать другой итератор pairs. ipairs только для непрерывных массивов.

for i,tab_data in pairs(ind) do
Большое спасибо, получилось разобрать таблицу
Получение подтаблицы в отдельную таблицк
 
Цитата
swerg написал:
Цитата
Виктор написал:
в переменной подтаблицу, соответственно Si и Ri.

В переменную две подтаблицы Si и Ri ? или как надо?
Я не понял.
одну. в цикле перебираю ind,
в переменную сначала си, потом ри.
Чтобы их уже в свою очередь разобрать. Цель:иметь возможность быстро добавить другой символ без переделки и утяжеления скрипта
Ошибка экспорта по DDE
 
Цитата
Andrey Bezrukov написал:
Здравствуйте, Виктор.

Уточните пожалуйста текущую версию терминала (указана в заголовке окна), а также уточните - описанный эффект наблюдается только при экспорте из таблиц "Доска опционов", или при экспорте из других таблиц тоже?

Сейчас, можем предположить что причина проблемы, наиболее вероятно, в файле настроек окон *.wnd. В качестве возможного решения - предлагаем пересоздать проблемные таблицы и проверить не воспроизведётся ли эффект.
Если воспроизводится, то вероятно, проблема ошибка распространяется на весь файл wnd и все создаваемые в нём окна и таблицы. В этом случае - предлагается выполнить запуск терминала с чистым файлом настроек *.wnd и проверить повторится ли ошибка.
Для запуска с чистым файлом настроек необходимо закрыть терминал QUIK, в папке с файлами программы найти используемый файл настроек (по умолчанию - info.wnd) и переименовать его, например так "info1.wnd", запустить терминал, подключиться к серверу, создать таблицы и повторить попытку экспорта.

Просьба уточнить запрошенную информацию, выполнить предложенные рекомендации и сообщить результат.
Заранее большое спасибо.
Большое спасибо. Вроде выводит
Получение подтаблицы в отдельную таблицк
 
Есть таблица вида

local ind =
{
["Si"] =
{
ind_sub = "si_vol",
need_volume = 10
},
["Ri"] =
{
ind_sub = "ri_vol",
need_volume = 10
}
}

Надо пройтись по ней циклом, и получить в переменной подтаблицу, соответственно Si и Ri.
Как это можно реализовать?
Такая конструкция нифига не работает
for i,tab_data in ipairs(ind) do
Ошибка экспорта по DDE
 
Цитата
Andrey Bezrukov написал:
Здравствуйте, Виктор.

Уточните пожалуйста текущую версию терминала (указана в заголовке окна), а также уточните - описанный эффект наблюдается только при экспорте из таблиц "Доска опционов", или при экспорте из других таблиц тоже?

Сейчас, можем предположить что причина проблемы, наиболее вероятно, в файле настроек окон *.wnd. В качестве возможного решения - предлагаем пересоздать проблемные таблицы и проверить не воспроизведётся ли эффект.
Если воспроизводится, то вероятно, проблема ошибка распространяется на весь файл wnd и все создаваемые в нём окна и таблицы. В этом случае - предлагается выполнить запуск терминала с чистым файлом настроек *.wnd и проверить повторится ли ошибка.
Для запуска с чистым файлом настроек необходимо закрыть терминал QUIK, в папке с файлами программы найти используемый файл настроек (по умолчанию - info.wnd) и переименовать его, например так "info1.wnd", запустить терминал, подключиться к серверу, создать таблицы и повторить попытку экспорта.

Просьба уточнить запрошенную информацию, выполнить предложенные рекомендации и сообщить результат.
Заранее большое спасибо.
Версия 8.8.4.3
Описанный эффект наблюдается при экспорте только одной доски. Две другие доски в этот же момент совершенно нормально экспортируются. Все доски совершенно одинаковы. Проблемная доска создана копированием беспроблемной доски с помощью нажатия CTRL-n. Все поля в ней идентичны. Отличается только контракт. Безпроблемный нынешний контракт, проблемный мартовский, Si. Я попробую с чистым wnd, но вы скорее всего не туда роете
Ошибка экспорта по DDE
 
Вывожу три доски опционов по dde. Две выводятся нормально, третья при выводе наглухо вешает quik. В ней изменен только ба на следующий контракт
Содержание таблиц одно и то же, но две выводятся нормально, третья вешает, да так, что квик только из процессов вырубать Причем вывод начинается, идет нормально, но потом почему-то слетает.
В чем может быть дело?  
Доска опцинов из QLUA
 
Цитата
Egor Zaytsev написал:
Добрый день.
К какому именно параметру и по какому инструменту обращаетесь?

В таблице текущих торгов нет параметра "Цена базового инструмента", параметр есть в таблице "доска опционов"
Если обращение идет к BID, OFFER то именно цену спроса и предложения должна система выдавать.
Если у Вас по другому, то просьба выложить скриншот таблицы текущие торги, чтобы было видно инструмент, параметр спроса и предложения, скрипт который запускаете и результат, который получаете.

Видите, "расчетная цена" идет цена БА, что и вызвало проблему.
Попробовал переделать скрипт, сделал первые трудные шаги в луа. Добавил обращение к bid и offer
Получилось вот что:

До этого пробовал обращаться к  last, то же самое.
Обращение идет к Optionbase,вроде все правильно.  Ничего не понимаю :sad:  
Доска опцинов из QLUA
 
Цитата
Egor Zaytsev написал:
Добрый день.


Есть гипотеза, что  такого инструмента нет в терминале. Проверьте,  видите ли Вы значения по этому инструменту в терминале, когда ошибка проявляется. И еще проверьте, что возвращает result = getParamEx("SPBOPT","GD1550BL9",BID).
Скажите, вместо цены опциона, скрипт выдает цену БА. Можно как-нибудь пофиксить на цену собственно инструмента?
Доска опцинов из QLUA
 
Цитата
Sergey Gorokhov написал:
Цитата
Андрей написал:
Греками поделитесь, спасибо.

    Скрытый текст        
Код
   --[[ 
Что делает:
   По Таблице текущих параметров строит таблицу опционов с расcчитанными греками
   Формулы взяты отсюда:
   http://en.wikipedia.org/wiki/Black%96Scholes
   http://en.wikipedia.org/wiki/Greeks_%28finance% 29 
   
Как использовать:
   откройте Таблицу Текущих Параметров (меню Таблицы  -  >  Текущая Таблица)
   Укажите настройки, после чего, запустите скрипт (меню Таблицы  -  Lua  -  Доступные скрипты)
   чтобы сохранить в CSV файл, текущее состояние таблицы, нужно нажать комбинацию клавиш Ctrl + S файл сохраняется в папку со скриптом, с именем HHHMMDD.csv
]]
 -------------------------------НАСТРОЙКИ------------------------------- 
RiskFree =  0 / 100   --безрисковая ставка %, Указывается вручную 

BaseClassCode  =   "SPBFUT"   --Класс базового актива 
ClassCode  =   "SPBOPT"   --Класс опционов 

 --Список базовых активов, через запятую, по которым отображать опционы: 
BaseSecList  =   "RIU7"   --getClassSecurities(BaseClassCode) --все сразу 
 
 --Список опционов через запятую: 
SecList  =   getClassSecurities (ClassCode)  --все сразу 

INTERVAL  =   1000   --Интервал обновления таблицы 

doLogging =  false   --включает запись в файл, формата csv.  
log_file =  getScriptPath ()  ..   "\\Greek.csv"   --путь к csv файлу  

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

 -------------------------------ТО ЧТО НИЖЕ, ТРОГАТЬ НЕ НАДО------------------------------------------------------------------ 
 --Параметры таблицы 
tbl  =  {
[ "caption" ] =  "Greek" ,
[ 1 ] =  "Название" ,
[ 2 ] =  "Код опциона" ,
[ 3 ] =  "Тип опциона" ,
[ 4 ] =  "Баз. актив" ,
[ 5 ] =  "Расчетная цена" ,
[ 6 ] =  "Страйк" ,
[ 7 ] =  "Волатильность" ,
[ 8 ] =  "До исполнения" ,
[ 9 ] =  "Дельта" ,
[ 10 ] =  "Гамма(%)" ,
[ 11 ] =  "Тэта" ,
[ 12 ] =  "Вега" ,
[ 13 ] =  "Ро" ,
[ "t_id" ] =  0 
}

abTable  =  {}
BaseCol  =  {}
Sec2row  =  {}
file  =   nil 
Sep  =   ";" 
YearLen =  365.0   --Число дней в году 
WORK  =   true 
CALC  =   false 
G_ROW  =   -  1 
 if  (BaseSecList  =  =   "" )  or  (BaseSecList  =  =   nil )  then 
   BaseSecList  =   getClassSecurities (BaseClassCode)
 end 

 if  (SecList  =  =   "" )  or  (SecList  =  =   nil )  then 
   SecList  =   getClassSecurities (ClassCode)
 end 

 -------------------------------ФУНКЦИИ------------------------------------------------------------------ 
 function   Logging (str)  --Пишет лог 
    if  file~ =  nil   and  doLogging  then 
      file:write(str  ..   "\n" )
      file:flush()
    end 
 end 

 function  N(x)  --Нормальное среднее 
     if  (x  >   10 )  then 
       return   1 
    elseif  (x  <   -  10 )  then 
       return   0 
    else 
       local  t  =   1  / ( 1   +   0.2316419   *   math.abs (x))
       local  p  =   0.3989423   *   math.exp ( -  0.5   *  x  *  x)  *  t  *  (((( 1.330274   *  t  -   1.821256 )  *  t  +   1.781478 )  *  t  -   0.3565638 )  *  t  +   0.3193815 )
       if  x  >   0   then 
         p =  1  - p
       end  
       return  p   
    end 
 end 

 function   pN (x)  --производная от функции нормального среднего 
    return   math.exp ( -  0.5   *  x  *  x) /  math.sqrt ( 2   *  math.pi) 
 end 

 function   Greek (tmpParam)
    local  b  =  tmpParam.volatility /  100   --"b" волатильность доходности (квадратный корень из дисперсии) базисной акции. 
    local  S  =  tmpParam.settleprice  --"S" текущая цена базисной акции; 
    local  Tt  =  tmpParam.DAYS_TO_MAT_DATE / YearLen  --"T-t" время до истечения срока опциона (период опциона); 
    local  K  =   tmpParam.strike  --"K" цена исполнения опциона; 
    local  r  =  RiskFree  --"r" безрисковая процентная ставка; 
    local  d1  =  ( math.log (S / K)  +  (r  +  b  *  b  *   0.5 )  *  Tt) / (b  *   math.sqrt (Tt))
    local  d2  =  d1 - (b  *   math.sqrt (Tt))
   
 local  Delta  =   0 
 local  Gamma  =   0 
 local  Theta  =   0 
 local  Vega  =   0 
 local  Rho  =   0  

 local  e  =   math.exp ( -  1   *  r  *  Tt)
   
   Gamma  =  pN(d1) / (S  *  b  *   math.sqrt (Tt))
   Vega  =  S  *  e  *  pN(d1)  *   math.sqrt (Tt)
   
   Theta  =  ( -  1   *  S  *  b  *  e  *  pN(d1)) / ( 2   *   math.sqrt (Tt))

   
    if  tmpParam.Optiontype  =  =   "Call"   then 
      Delta  =  e  *  N(d1)
      Theta  =  Theta  -  (r  *  K  *  e  *  N(d2))  +  r  *  S  *  e  *  N(d1)
       ----Theta = Theta - (r * K * e * N(d2)) 
      Rho  =  K  *  Tt  *  e  *  N(d2)
    else 
      Delta  =   -  1   *  e  *  N( -  1  * d1)
      Theta  =  Theta  +  (r  *  K  *  e  *  N( -  1   *  d2))  -  r  *  S  *  e  *  N( -  1   *  d1)
       ----Theta = Theta + (r * K * e * N(-1 * d2)) 
      Rho  =   -  1   *  K  *  Tt  *  e  *  N( -  1   *  d2)
    end 
   

    return  {
   [ "Delta" ]  =  Delta,
   [ "Gamma" ]  =   100   *  Gamma,
   [ "Theta" ]  =  Theta / YearLen,
   [ "Vega" ]  =  Vega /  100 ,
   [ "Rho" ]  =  Rho /  100 
   }
 end 

 function   GetRow (ID,row)  --возвращает строку таблицы 
 local  rows, col  =  GetTable Size (ID)
 local  result  =   "" 
 if  rows~ =  nil   and  row <  = rows  then 
    for  i =  1 ,col  do 
      result = result ..  GetCell (ID,row,i).image  ..  Sep
    end 
 end 
    return  result
 end 

 function   CSV (T)  --пишет таблицу в csv файл 
    function   FTEXT (V)  --ПРОВЕРЯЕМ КОРРЕКТНОСТЬ КОЛИЧЕСТВА СИМОЛОВ ПЕРЕМЕННОЙ 
      V = tostring(V)
       if  ( string.len (V) =  =  1 )  or  ( string.len (V) =  =  5 )  then 
         V =  "0"  ..  V
       end 
       return  V  
    end 
 local  temp  =   os.date ( "*t" )
 local  Fname  =  getScriptPath ()  ..   "\ \"    ..  FTEXT(temp.year)  ..  FTEXT(temp.month)  ..  FTEXT(temp.day)  ..   ".csv" 
   CSVFile  =   io.open (Fname,  "w+" )
    if  CSVFile~ =  nil   then 
       local  rows, col  =  GetTable Size (T.t_id)
       for  i =  1 ,col  do   --расставляем заголовки 
         CSVFile:write(T[i]  ..  Sep)
       end 
      CSVFile:write( "\n" )
       for  i =  1 ,rows  do   --пишем таблицу 
         CSVFile:write(GetRow(T.t_id,i) .. "\n")
       end       
      CSVFile:flush()
      CSVFile:close()
       message ( "Файл успешно сохранен:\n"  .. Fname,  1 )
    else  
       message ( "Ошибка при сохранении файла:\n"  .. Fname,  3 )
    end    
 end 

 function   round (num, idp)  --округляет до указанного количества знаков 
    local  mult  =   10 ^(idp  or   0 )
    return   math.floor (num  *  mult  +   0.5 ) / mult
 end  

 function   comma_value (n)  --ставит разделители в числах 
    local  left,num,right  =   string.match (n,'^([^%d] * %d)(%d * )(. - )$')
    return  left .. (num:reverse():gsub( '(%d%d%d)' ,'% 1  '):reverse()) .. right
 end 

 function   CreateDataSourceEX (Class,Sec,Par)
    local  ds,err  =   CreateDataSource (Class, Sec, INTERVAL_TICK, Par)
    if  ds =  =  nil   then 
       message ( "Ошибка при получении параметра "  .. Par .. ":\n" .. err,  3 )
       return   false 
    else 
      ds: SetEmptyCallback ()
       while  (ds: Size () =  =  0 )  and  (WORK)  do 
          sleep ( 100 )
       end 
       return   true 
    end 
 end 

 function   Stop ()
    if  doLogging  then  
      file:close() 
    end 
   WORK  =   false 
 end 


 function   Calculate (row,do_calc)
 if  (row~ =  nil )  and  (row >  =  0 )  and  (do_calc)  then 

          local  T = BaseCol[row]

          local  tmpParam  = {
            [ "Optiontype" ]  =  T.Optiontype,
            [ "settleprice" ]  =   getParamEx (BaseClassCode,T.Optionbase,"settleprice").param_value +  0 ,
            [ "strike" ]  =   getParamEx (ClassCode,T.SecCode,"strike").param_value +  0 ,
            [ "volatility" ]  =   getParamEx (ClassCode,T.SecCode,"volatility").param_value +  0 ,
            [ "DAYS_TO_MAT_DATE" ]  =  T.DAYS_TO_MAT_DATE
         }
          local  tmpGreek  =  Greek(tmpParam)
          SetCell (tbl.t_id, row,  5 , comma_value(tmpParam.settleprice), tmpParam.settleprice)  -- "Расчетная цена", 
          SetCell (tbl.t_id, row,  6 , comma_value(tmpParam.strike), tmpParam.strike)  --"Страйк", 
          SetCell (tbl.t_id, row,  7 , tostring(tmpParam.volatility), tmpParam.volatility)  -- "Волатильность", 
          SetCell (tbl.t_id, row,  8 , tostring(tmpParam.DAYS_TO_MAT_DATE), tmpParam.DAYS_TO_MAT_DATE)  --"До исполнения", 
          SetCell (tbl.t_id, row,  9 , tostring(round(tmpGreek.Delta, 2 )), tmpGreek.Delta)  --"Дельта", 
          SetCell (tbl.t_id, row,  10 , tostring(round(tmpGreek.Gamma, 4 )), tmpGreek.Gamma)  -- "Гамма(%)", 
          SetCell (tbl.t_id, row,  11 , tostring(round(tmpGreek.Theta, 2 )), tmpGreek.Theta)  -- "Тэта", 
          SetCell (tbl.t_id, row,  12 , tostring(round(tmpGreek.Vega, 2 )), tmpGreek.Vega)  -- "Вега", 
          SetCell (tbl.t_id, row,  13 , tostring(round(tmpGreek.Rho, 2 )), tmpGreek.Rho)  -- "Ро", 
          if  doLogging  then 
            Logging( os.date () ..  Sep  ..  GetRow(tbl.t_id,row))
          end 
 end 
 return   false 
 end 

 -------------------------------Колбэки------------------------------------------------------------------ 
 function   f_cb (t_id,msg,par1,par2)  --событие на нажатие клавиш 
    if  (msg =  = QTABLE_CHAR)  and  (par2 =  =  19 )  then   --сохранить в CSV файл текущее состояние таблицы нужно нажать комбинацию клавиш Ctrl+S 
      CSV(tbl)
    end 
   
    if  (msg =  = QTABLE_CLOSE)  then   --закрытие окна 
      Stop()
    end 

    if  (msg =  = QTABLE_VKEY)  and  (par2 =  =  116 )  then   --функция принудительного обновления таблицы при нажатии клавиши Ctrl+F5 
       for  SecCode  in   string.gmatch (SecList,  "([^,]+)" )  do   --перебираем опционы по очереди. 
         Calculate(Sec2row[SecCode], true )
          Highlight (tbl.t_id, Sec2row[SecCode], QTABLE_NO_INDEX,  RGB ( 255 , 0 , 0 ), QTABLE_DEFAULT_COLOR, INTERVAL)
       end    

    end 
 end 

 function   OnStop ()
   Stop()
    DestroyTable (tbl.t_id)
 end 

 function   OnInit ()
 local  STR  =   "" 
    if  doLogging  then  
      file  =   io.open (log_file,  "w+" ) 
    end 
   tbl.t_id  =   AllocTable ()
    for  i =  1 , table.maxn (tbl)  do   --добавляем колонки 
       if  i <  =  4   then 
          AddColumn (tbl.t_id, i, tbl[i],  true , QTABLE_CACHED_STRING_TYPE,  string.len (tbl[i]) *  2 )
       else 
          AddColumn (tbl.t_id, i, tbl[i],  true , QTABLE_DOUBLE_TYPE,  10 )
       end 
       if  doLogging  then 
         STR = STR .. tbl[i] .. Sep
       end 
    end 
   Logging( "Дата Время"  ..  Sep  ..  STR)
    CreateWindow (tbl.t_id)
    SetWindowCaption (tbl.t_id,tbl.caption)
    SetTableNotificationCallback (tbl.t_id, f_cb)
 end 

 function   OnParam (class, sec)
 if  (class =  = ClassCode)  and  (WORK)  and  ( string.find (SecList,sec)~ =  nil )  then 
   G_ROW  =  Sec2row[sec]
    if  (G_ROW~ =  nil )  and  (G_ROW >  =  0 )  then 
       Highlight (tbl.t_id, G_ROW, QTABLE_NO_INDEX,  RGB ( 255 , 0 , 0 ), QTABLE_DEFAULT_COLOR, INTERVAL)
      CALC =  true 
    end 
 end 
 end 

 function   main ()

WORK  =   false 
CALC =  true 
    for  SecCode  in   string.gmatch (SecList,  "([^,]+)" )  do   --перебираем опционы по очереди. 
             local  Optionbase =  getParamEx (ClassCode,SecCode,"optionbase").param_image
             local  Optiontype =  getParamEx (ClassCode,SecCode,"optiontype").param_image
             if  ( string.find (BaseSecList,Optionbase)~ =  nil )  then 
                local  row  =   InsertRow (tbl.t_id, -  1 )
                local  T = {
                  [ "Name" ]  =   getSecurityInfo (ClassCode,SecCode).name,
                  [ "SecCode" ]  =  SecCode,
                  [ "Optiontype" ]  =  Optiontype,
                  [ "Optionbase" ]  =  Optionbase,
                  [ "DAYS_TO_MAT_DATE" ]  =   getParamEx (ClassCode,SecCode,"DAYS_TO_MAT_DATE").param_value +  0 
                  }
               BaseCol[row] = T
                --заполняем статичные параметры 
               Sec2row[SecCode] = row
                SetCell (tbl.t_id, row,  1 , BaseCol[row].Name)  -- "Название опциона", 
                SetCell (tbl.t_id, row,  2 , BaseCol[row].SecCode)  --"Код опциона", 
                SetCell (tbl.t_id, row,  3 , BaseCol[row].Optiontype)  -- "Тип опциона", 
                SetCell (tbl.t_id, row,  4 , BaseCol[row].Optionbase)  --"Баз. актив", 
                --заказ данных 
                CreateDataSource EX(BaseClassCode,T.Optionbase,"settleprice")
                CreateDataSource EX(ClassCode,T.SecCode,"strike")
                CreateDataSource EX(ClassCode,T.SecCode,"volatility")

                --заполняем динамичные параметры 
               CALC = Calculate(row, true ) 
             end 
    end 
WORK  =   true 
 while  WORK  do 
   CALC = Calculate(G_ROW,CALC)
    sleep (INTERVAL)
 end 
 end 


  


Цитата
Андрей написал:
Но мне интересна цена и волатильность.  
Цена и волатильность есть в таблице текущих торгов.
Огромное спасибо! Решение проблемы вывода котировок по опционам наверное месяц искал!
Не работает экспорт в ODBC
 
Цитата
Egor Zaytsev написал:
Цитата
Виктор написал:
Создал таблицу mysql в workbench,настроил, связал.
Квик все видит, жму начать вывод,
но ничего не выводится в базу
По совету с другого форума создал лог файл в папке квика, но он не пишет туда вообще ничего.
Как это можно победить?
Добрый день.

Нужно смотреть ошибки. Проверьте в таблице сообщений пункт меню Создать окно/Таблица сообщений, есть ли записи о выводе.
Что касается файла, то файл должен быть таким: quik_odbc.log
Последовательность действий такая:
Создайте в папке с программой Quik файл с именем quik_odbc.log
После перезапуска Quik, туда начнется записываться логи ODBC экспорта.
Большое спасибо. Проблему решило создание таблицы. Одно поле не соответствовало по типу.
Теперь правда, отдает одну строку в базу. Буду ковыряться в настройках.
Не работает экспорт в ODBC
 
Создал таблицу mysql в workbench,настроил, связал.
Квик все видит, жму начать вывод,
но ничего не выводится в базу
По совету с другого форума создал лог файл в папке квика, но он не пишет туда вообще ничего.
Как это можно победить?
Квик под ОС UBUNTU Linux
 
Квик таки зароаботал, но только с авторизацией по ключам. Все другие варианты я перепробовал
Квик под ОС UBUNTU Linux
 
Цитата
Вячеслав написал:
Цитата
Виктор написал:
Кракозябры только в сообщения брокера, они еще и в строке дублируются нормально.
У меня такая же проблема была, я сменил шрифт в Программа => Шрифты, мне помогло.
+++
Квик под ОС UBUNTU Linux
 
Цитата
Andrey Bezrukov написал:
Здравствуйте, Виктор.

Цитата
шифрование СКЗИ неактивно
Данный статус означает, что в настоящем Вы не подключены. Как только Вы подключитесь - состояние изменится на "Активно".

Цитата
Виктор написал:
У меня не работает квик под линукс.
Версия квика 8.3.Linux Mint 19
Работаю через кроссовер
Во-первых, запускает с кракозябрами
Во вторых, не авторизует по логину и паролю, пишет "файл не найден".
Брокер Сбербанк

Касательно шрифтов - просьба уточнить, для каких элементов интерфейса имеет место нечитаемое отображение шрифтов? По умолчанию, в рабочем

Касательно не найденного файла – если в качестве метода шифрования (Система/Настройки/Основные настройки/Программа/Шифрование)
Кракозябры только в сообщения брокера, они еще и в строке дублируются нормально. Так что с этим можно и потом разобраться.
Хуже со вторым, в сбере не удалось зарегаться по ключам.
Internal exception happend, Не запускается Quik.
 
Цитата
Sergey Gorokhov написал:
quiksupport@arqatech.com
К сожалению, сделал все по инструкции, но не помогло
Internal exception happend, Не запускается Quik.
 
Цитата
Sergey Gorokhov написал:
quiksupport@arqatech.com
отправил
Internal exception happend, Не запускается Quik.
 
Цитата
Sergey Gorokhov написал:
Виктор,

Если у Вас действительно такая же проблема, значит просто не ставьте терминал QUIK в папку Program Files и всё.
Пишет "internal exeption happened".
А стоит в папке Сбербанк на Це, действительно не в програм файлс
Internal exception happend, Не запускается Quik.
 
Цитата
Sergey Gorokhov написал:
Здравствуйте,
Вопрос к Microsoft так как кэширование папки  Program Files в папку VirtualStore делает операционная система, а не QUIK
В интернете есть куча информации на эту тему.
Только папку VirtualStore я не нашел. Подскажите пожалуйста, как решить аналогичную ошибку в windows 10 эмулируемом в wine?
Internal exception happend, Не запускается Quik.
 
Цитата
Sergey Gorokhov написал:
Здравствуйте,
Вопрос к Microsoft так как кэширование папки  Program Files в папку VirtualStore делает операционная система, а не QUIK
В интернете есть куча информации на эту тему.
У меня такая же ошибка, как и у Алексей Дуванов.
Квик под ОС UBUNTU Linux
 
Giekelberri, огромное спасибо, получилось зайти!
Квик под ОС UBUNTU Linux
 
Цитата
новичок написал:
Цитата
Виктор написал:
Работаю через кроссовер Во-первых, запускает с кракозябрами Во вторых, не авторизует по логину и паролю,
работаете? - вы глупостями маетесь. и во-первых, и в-трицатьпервых.
квик это прога для виндовз.
на других ос это не будет работать, только если случайно.
но это уже не работа, не так ли? :)
Да вы ничего не знаете о том, чем я занимаюсь. Так что глупость с вашей стороны писать не по существу и тоже глупость.
К вашему сведению, вине вполне заменяет виндовс. И у многих работает, отсюда и тема.
Думаете, приятно гонять лагающую виртуалку отжирающую львиную долю оперативы, когда вполне можно обойтись без нее?
Квик под ОС UBUNTU Linux
 
Цитата
Виктор написал:
Еще пишет, что шифрование СКЗИ неактивно. Вот такая вот байда.
Квик под ОС UBUNTU Linux
 
У меня не работает квик под линукс.
Версия квика 8.3
.Linux Mint 19
Работаю через кроссовер
Во-первых, запускает с кракозябрами
Во вторых, не авторизует по логину и паролю, пишет "файл не найден".
Брокер Сбербанк
Не дает передвинуть заявку
 
Sergey Gorokhov,попробовал еще раз, теперь пишет,что операции вообще запрещены. Средств хватает.
Не дает передвинуть заявку
 
Sergey Gorokhov, это боевой доступ
Не дает передвинуть заявку
 
Пара USDRUB. Поставил заявку на продажу, цена 67. Пишет: для выбранного финансового инструмента цена должна быть не больше 66.3575. Как это "не больше"? Точнее, почему это? Создал ниже, попытался переместить: то же самое. Что делать, как победить?
Как в Quike подключить инструменты, которых нет в списке.
 
Ну, например, золота тодэй нет в списке у моего брокера, индексов американских и прочее. А видеть их без сторонних приложений оченьхотелось бы. Есть сторонние котировки от Яху, очень хотелось бы их использовать..
Страницы: 1
Наверх