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

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

Страницы: Пред. 1 ... 23 24 25 26 27 28 29 30 31 32 33 ... 72 След.
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
Цитата
Дмитрий Б. написал:
Цитата
СергейК написал:
 
Цитата
nikolz  написал:
сохраняли историю многих параметров
 Это где настраивается?
350Мб пока самое большое.
Выкладываю картинки с настройками
Так как не знаю как у Вас настроено.
Установите как на них. Потом, если что-то не хватит выложу еще.






Потом удалите все log и data и содержимое arxive и снова подключитесь к серверу.
Надеюсь, что станет еще лучше.
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Цитата
Konstantin777 написал:
Цитата
Konstantin777 написал:
я не понимаю чем Ваш пример от моего отличается.
понял, у Вас getCandlesByIndex вызывается в OnCalculate, а моем примере в Init. Однако  
Цитата
Konstantin777 написал:
Я также тестировал пример с постоянными попытками забора значений свечей(как первых так и последних), и он также криво работает, тупо не видит цены, ни одной, однако если переставить индикатор все идет как по маслу.
я такой же пример сам писал, и все так же плохо работает
Странный Вы человек.
Вместо того, чтобы задавать вопросы и высказывать недовольство,
просто надо было бы привести результат теста, а не рассказывать мне что вы делали что-то не работающее.
Я же не должен за вас все проверять,
написал же вам выше , проверьте если что не так напишите поправлю.
Но в любом случае Я делаю это если у меня есть желание Вам помогать.
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
еще заметил, что у ВТБ все файлы с расширением dat почему-то 65536 байт т е 2 в 16 степени, а у меня т е сбербанка есть и 1024 байта.
------------------
Если вы не удаляли эти файлы как я писал ранее, то удалите их тоже.
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
Рекомендую в дальнейшем их не сохранять, будет память как у меня.
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
Предположу, что вы сохраняли историю многих параметров.  
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
Цитата
Дмитрий Б. написал:
Мне системные файлы ничго не говорят. Не знаю куда смотреть.

По дате так:
убейте файлы info.log
У вас они 74776765 байт и 24646913 байт
а у меня 1024 байта
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Konstantin777,
Выкладываю пример, если что не так, напишите, поправлю.
Код
Settings={
sec ="ind2",  --идентификатор инструмента 2-го графика
Name = 'nk_ind',
}
-------
function OnCalculate(i)
   if i==Size() then
      local N=getNumCandles (Settings.sec) ;
      if N>3 then
         local t=getCandlesByIndex(Settings.sec,0,N-3,3); --последние 3 свечи 2-го графика
         local Hi2,Hi1,Hi0=t[0].high,t[1].high,t[2].high;
      --------------------------
         t=getCandlesByIndex(Settings.sec,0,0,3);   --первые 3 свечи 2-го графика
         local H1,H2,H3=t[0].high,t[1].high,t[2].high;

         message("1="..H(1)..",2="..H(2)..",3="..H(3).."....,i-2="..H(i-2)..",i-1="..H(i-1)..",i="..H(i).."\n"..
         "1="..H1..",2="..H2..",3="..H3..",i-2="..Hi2..",i-1="..Hi1..",i="..Hi0.."\n");
      end
   end
   return
end
-----
function Init()
 Settings.line={};
   Settings.line[1] =    {Name = "C",Color = RGB(0,255,0),      Type =2,Width = 2   };
   return 1;
end
 
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
это файл курса , не важно есть или нет.
Вы отсортируйте по дате, чтобы можно было сравнивать
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Konstantin777,
Позже выложу для Вас пример  
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Цитата
Konstantin777 написал:
Цитата
   s_mike@rambler.ru написал:
Надо понимать, что при загрузке терминала варианты 1,2 и 3 имеют гораздо более высокую вероятность, чем вариант 4. А вот в устоявшемся варианте, когда все данные терминалом прогружены, вы скорее всего будете получать вариант 4
Цитата
Konstantin777 написал:
Я также тестировал пример с постоянными попытками забора значений свечей(как первых так и последних), и он также криво работает, тупо не видит цены, ни одной, однако если переставить индикатор все идет как по маслу.
 
Цитата
nikolz написал:
посмотрите скрипт который я выложил на этом форуме для арбитража
если это скрипт, то в скрипте у меня тоже все работает нормально, проблема именно в индикаторе, где то была тема что функция getCandlesByIndex плохо работает именно в инидикаторах
это индикатор.  Там я даже картинку выложил.
Но называется он скриптом, потому что написан языке Lua.
https://habr.com/ru/post/196272/
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
У меня так:
 
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
можно еще сравнить размер файлов в папке QUIK ВТБ и СБЕРБАНК
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
Цитата
Дмитрий Б. написал:
Цитата
nikolz написал:
 
Цитата
У Вас Win7 у меня Win10.
Сравним память для demo версии
Установил демо. Ничего в демо не настраивал. Запустил сразу три квика. Демо версия память почти не забирает.
У меня подобное.
Ну остается Вам  сменить брокера ВТБ на Сбербанк.
Будет как у меня.
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
Цитата
Дмитрий Б. написал:
Цитата
nikolz написал:
для чистоты эксперимента надо удалить содержимое папки arxive и все файлы с расширением dat
Эксперимент завершил. Отсутствие файлов dat не повлияло на память.
Сегодня ВТБ обновил версию до 9.8.0.11. А память забирают все столько же - 2Гб.
попробуйте установить демо с сайта QUIK, чтобы сравнить как влияет OS.
У Вас Win7 у меня Win10.
Сравним память для demo версии
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
Цитата
Дмитрий Б. написал:
Цитата
У вас  почти тысяча инструментов.  Зачем?
--------------------------
Вы физически не сможете за ними следить.
---------------------
Рекомендую оставить лишь ликвидные
--------------------
Потом если будет мало и будете круто торговать добавите неликвид.
--------------------
Начните с  не более 100 инструментов.
Полагаю что  память уменьшится раз в 10.
Да, мне столько не нужно интрументов. Оказалось они тоже не влияют на память. Запустил пустой квик без вкладок и без любых котировок, всё отключил. Изменений нет.
и последнее,
для чистоты эксперимента надо удалить содержимое папки arxive и все файлы с расширением dat
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
Цитата
Дмитрий Б. написал:
" NoneB  возможная причина - вкладки и окна, созданные в ранних версиях Quik."

Юрий в первом сообщении проверял в пустом квике без вкладок. Я тоже проверил. Получается вкладки не влияют.

nikolz  инструменты оставил только российские акции МБ. Тоже не повлияло память.
У вас почти тысяча инструментов. Зачем?
--------------------------
Вы физически не сможете за ними следить.
---------------------
Рекомендую оставить лишь ликвидные
--------------------
Потом если будет мало и будете круто торговать добавите неликвид.
--------------------
Начните с не более 100 инструментов.
Полагаю что память уменьшится раз в 10.
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
Цитата
Дмитрий Б. написал:
Karina Dmitrieva  спасибо за помощь. Все заработало. Запустил пустой квик и уже в нем открыл сохранненые настройки.

nikolz  вам с памятью везет. Но я пока тоже не жалуюсь. Торговать оно не мешает, ничего не зависает.

Для интереса:

   

Роботов, скрипты и индикаторы не использую. Только чистый график и стакан.
возможно у Вас много инструментов подключено особо если опционы по умолчанию,
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
у меня кушает так:
 
Съедается оперативная память, Пустой запуск съедает 2ГБ памяти
 
Цитата
Karina Dmitrieva написал:
Дмитрий Б., добрый день.

Судя по скриншоту ресурсов на Вашем ПК достаточно.
В таком случае рекомендуем запустить Рабочее место QUIK без файла настроек (т.е. убрать использующийся *.wnd файл, по умолчанию это info.wnd), после чего откройте терминал QUIK и поработайте в нём.
Обращаем внимание, что после запуска терминала QUIK в рабочей области не будет вкладок и таблиц, их необходимо будет создать заново или же загрузить конфигурацию окон из ранее сохранённого файла настроек (файлы настроек сохраняются в каталоге WNDSAV, который находится в корневой директории с QUIK).
При этом в случае загрузки ранее сохранённого файла нужно выбрать гарантированно тот, на котором данной проблемы не было.
Чтобы диагностировать , желательно  посмотреть:
1) число инструментов и их параметров в заказе данных
2) объем занятой памяти каждым квиком
3) наличие запущенных скриптов и самопальных индикаторов
Глюк в программе Quik после обновления, Нужна помощь
 
Цитата
e2e4 написал:
Раньше не приходилось откатывать Quik.
Так понимаю, копирования с заменой всех файлов из папки SBERBANK\QUIK_x64\backup\20220927 в SBERBANK\QUIK_x64 достаточно будет?
да.
Вынесенные окна
 
Увлечение зверинцем давно прошел.  
Вынесенные окна
 
Цитата
Roman Koledin написал:
Цитата
nikolz написал:
 
Цитата
Roman Koledin  написал:
 
Цитата
Вы что никогда не торговали на Ninja,ATAS И ТД - и не понимаете что такое работа с несколькими мониторами - и для чего нужна линковка окон ВСЕХ окон - как внешних так и не открепленных - банальный обзор рынка с удобством - а так приходится растягивать терминал на 2 монитора - чтобы линковались нужные окна
 
 понял, что речь идет о якоре.
----------------------
Рассмешили Вопросом о зверинце торговых терминалов.
Вы что считаете это каким-то достижением?
Или просто собираете коллекцию?  
Скорее всего я не такой профи ка вы - имхо мне удобнее (как и многим другим) - два открытых окна старшего и младшего тф , залинкованых с воч листом - пробегая по старшему тф проводим анализ (что куда торговать) - а на младшем точки входа - и во многих случаях нужна мобильность и удобство - а не каждый раз вбивать тикер заново на младшем тф - PS я рад за вас что вы не не бегаете по активам - имхо я бегаю и хорошо 10-12 активов отслеживать - каждому свое - и чем вам этот зверинец не нравится - чем плохи эти терминалы которые по уму сделаны ?
У меня по активам бегает робот.
 
Глюк в программе Quik после обновления, Нужна помощь
 
после кувыркания с версией 9 от сбербанка
я вернул версию 8.7 и нет проблем.
-----------------------
Рекомендую вернуть из архива старую версию и отключить в квике сообщение о новой версии.
----------------------
В следующем году смените версию на очередную новую, если старая не будет устраивать.
-----------------
"Что важнее -"шашечки" на двери или ехать ?"
Вынесенные окна
 
У меня нет проблем так как уже давно не бегаю по всему списку  инструментов.
Вынесенные окна
 
Цитата
Roman Koledin написал:
Цитата
Вы что никогда не торговали на Ninja,ATAS И ТД - и не понимаете что такое работа с несколькими мониторами - и для чего нужна линковка окон ВСЕХ окон - как внешних так и не открепленных - банальный обзор рынка с удобством - а так приходится растягивать терминал на 2 монитора - чтобы линковались нужные окна
понял, что речь идет о якоре.
----------------------
Рассмешили Вопросом о зверинце торговых терминалов.
Вы что считаете это каким-то достижением?
Или просто собираете коллекцию?  
Вы уже работаете в системе, Достаёт при смене точки доступа этот глюк!
 
Цитата
green_X5 написал:
Предложение навскидку - сервер видит попытку подключения "со второго места", проверяет - откликается ли "первое", если нет - закрывает "старую сессию", открывает новую. А не тупо отказывает в соединении, как сейчас.
это предложение плохое.
Если сервер реализует такой алгоритм, то его легко положить  DDS атакой.  
Вынесенные окна
 
Цитата
Roman Koledin написал:
Сделайте ПОЖАЛУЙСТА связь терминала с вынесенными окнами, что бы была возможность линковать вынесенные (открепленные окна) с программмой - без этой функции нет возможности работать с несколькими мониторами  
не понял.
У меня два монитора.
проблем не возникает.
Пример в студию.
ACCESS VIOLATION в Quik 9.3.3.3 при запуске скрипта без сторонних DLL
 
Цитата
Сергей написал:
Цитата
Полный код:

 
Код
  dofile( getScriptPath ()  ..   "\\dll_test_crash.lua" )
is_run  =   true                   

 function   OnInit ()                                                   

   KomCentrID  =   AllocTable ()                                       
    AddColumn  (KomCentrID,  10 ,  "Описание/Действие" ,  true , QTABLE_STRING_TYPE, 60 )   
    AddColumn  (KomCentrID,  20 ,  "Результат" ,  true , QTABLE_STRING_TYPE, 20 )   
    CreateWindow (KomCentrID)   
    SetWindowPos (KomCentrID, 1100 , 250 , 400 , 500 )
   
 end 

 function   main ()                                             
    while  is_run  do                                           
      Body()                                             
    end 
 end 


 function   OnStop ()                                 
    is_run  =   false             
 end   
 
Код
   function   Body ()                  

 sleep ( 100 )

 InsertRow (KomCentrID, 1 )
 SetCell (KomCentrID,  1 ,  10 ,  "COMPLETE")
 SetCell (KomCentrID,  1 ,  20 ,  "COMPLETE")
 SetColor (KomCentrID, 1 , 20 , RGB ( 217 , 255 , 217 ), RGB ( 1 , 1 , 1 ), RGB ( 220 , 220 , 220 ), RGB ( 0 , 0 , 0 ))  --зеленый 

 end   
    Через примерно 100-200 вызовов Body(), QUIK либо закрывается, либо ошибка ACCESS VIOLATION  Посмотрите плиз, дампы также могу выслать.      
Ошибка возникает потому, что Вы создали таблицу с дырками
Если у Вас максимальный номер 20, то надо создать все столбцы с номерами от 1 до 20.
------------------
Пример как надо, чтобы не было мучительно больно
Код
is_run = true

function OnInit()
   KomCentrID = AllocTable()
   for i=1,20 do  AddColumn (KomCentrID,i, "столб."..tostring(i), true, QTABLE_STRING_TYPE,8)  end --надо так
 --  AddColumn (KomCentrID, 10, "столб.10", true, QTABLE_STRING_TYPE,8)   AddColumn (KomCentrID, 20, "столб.20", true, QTABLE_STRING_TYPE,8)    -- а не так
   CreateWindow(KomCentrID)
   SetWindowPos(KomCentrID,110,250,1100,500)
   InsertRow(KomCentrID,-1)
end

function main()

   while is_run do
      Body()
     sleep(100)
   end
end

function OnStop()
    is_run = false
end

function Body()
InsertRow(KomCentrID,1)
SetCell(KomCentrID, 1,10,  "COMP")
SetCell(KomCentrID, 1,20,  "COMP")
SetColor(KomCentrID,1,20,RGB(217,255,217),RGB(1,1,1),RGB(220,220,220),RGB(0,0,0))
SetColor(KomCentrID,1,10,RGB(255,255,0),RGB(1,1,1),RGB(220,220,220),RGB(0,0,0))
end


если вы закомментируете строку for i=1,20..
и удалите коммент в следующей, то получите ваш результат.
Успехов
Как фильтровать график, чтобы избежать перерасхода оперативной памяти?
 
Брокер Сбербанк.
свечей 6488
торговля сейчас.
QUIK версия 8.7.1.3

 
Эмуляция крон внутри lua
 
https://forum.quik.ru/messages/forum17/message65896/topic7644/#message65896
старт скрипта по расписанию
 
Код
isRun=0;  --флаг завершения функции main
fstop=true;  -- флаг остановки скрипта при запуске по расписанию
local Ts={"12:53:00","12:54:00","12:55:00","12:56:00","12:57:00","12:58:00","12:59:00",}  -- расписание
for i=1,#Ts do local x=Ts[i] Ts[i]=60*(60*string.sub(x,1,2)+string.sub(x,4,5))+string.sub(x,7,8); end
------------
function main()
   local jT,x=0,0;
--------------------------
   while isRun do
      if #Ts>jT then  local dt=-1;
         if fstop then fstop=false;  -- в колбеках первой строкой поставить if fstop then return end
            x= getInfoParam("SERVERTIME");
            local z=60*(60*string.sub(x,1,2)+string.sub(x,4,5))+string.sub(x,7,8);
            while #Ts>jT and 0>dt do jT=jT+1; dt=Ts[jT]-z; end
         end
         if dt>=0 then message(x.." до старта "..dt.."сек"); sleep(1000*dt); else sleep(1); end
      end
------------
      if fstop==false then  x= getInfoParam("SERVERTIME");    message("старт "..x.." fstop="..tostring(fstop) ); end
 -- код скрпита
      fstop=true;  --- остановить скрипт
      if fstop then    x= getInfoParam("SERVERTIME");  message("стоп  "..x.." fstop="..tostring(fstop) ); end
   end
end
Поясняю:
-------------------
Данный скрипт позволяет запускать исполняемый код в main и колбеки по расписанию Ts
---------------------
Остановка исполнения кода скрипта и колбеков осуществляется путем установки флага fstop=true.
---------------------
Чтобы не тратить время на колббеки когда скрипт не исполняется надо
поставить в начале колбека
if fstop then return end
старт скрипта по расписанию
 
Добрый день,
Пример запуска скрипта по расписанию.
Если есть вопросы - пишите
Код
local isRun=0;  --флаг завершения функции main
local fstop=true;  -- флаг остановки скрипта при запуске по расписанию
local Ts={"12:53:00","12:54:00","12:55:00","12:56:00","12:57:00","12:58:00","12:59:00",}
for i=1,#Ts do local x=Ts[i] Ts[i]=60*(60*string.sub(x,1,2)+string.sub(x,4,5))+string.sub(x,7,8); end
------------
function main()
   local jT,x=0,0;
   while isRun do
      if #Ts>jT then  local dt=-1;
         if fstop then fstop=false;  -- в колбеках первой строкой поставить if fstop then return end
            x= getInfoParam("SERVERTIME"); --      local x=os.date("%X");
            local z=60*(60*string.sub(x,1,2)+string.sub(x,4,5))+string.sub(x,7,8);
            while #Ts>jT and 0>dt do jT=jT+1; dt=Ts[jT]-z; end
         end
         if dt>=0 then message(x.." до старта "..dt.."сек"); sleep(1000*dt); else sleep(1); end
      end
      if fstop==false then  x= getInfoParam("SERVERTIME");    message("старт "..x.." fstop="..tostring(fstop) ); end
  -- исполнение скрпита
      fstop=true;  --- остановить скрипт
      if fstop then    x= getInfoParam("SERVERTIME");  message("стоп  "..x.." fstop="..tostring(fstop) ); end
   end
end

Эмуляция крон внутри lua
 
если знаете, что такое системный event и timer, то можно использовать их.
Эмуляция крон внутри lua
 
Цитата
BlaZed написал:
Цитата
nikolz написал:
 
Цитата
BlaZed  написал:
Можно в основном цикле сравнивать локальное время компа с вашими требованиями к работе скрипта по времени.
При соответствии выполнять функционал, при несоответствии крутить пустой цикл.
 вместо пустого цикла используйте
sleep(время ожидания до следующего запуска)
Естественно пустой цикл со слипом, я просто не стал очевидные вещи расписывать
естественно, если в цикле что-то исполняется то это уже не пустой.
------------------
более того, нет надобности еще в одном цикле в main.
Эмуляция крон внутри lua
 
Цитата
BlaZed написал:
Можно в основном цикле сравнивать локальное время компа с вашими требованиями к работе скрипта по времени.
При соответствии выполнять функционал, при несоответствии крутить пустой цикл.
вместо пустого цикла используйте
sleep(время ожидания до следующего запуска)
Эмуляция крон внутри lua
 
простейший вариант:  sleep +  текстовый файл с расписанием
После вызова ds:Close() не работает callback при перезаказе данных
 
все верно, не работает.
----------------
добавьте в цикл sleep(1)
загрузка процессора снижается в  30 раз.
Получение данных о выставленных заявках из таблицы "Состояние счета"
 
Цитата
Игорь написал:
Добрый день,

Подскажите есть ли возможность получить данные о выставленных заявках по инструменту из таблицы "Состояние счета". Столбцы "В покупке", "В продаже"
При опросе таблицы "заявки" в конце дня из за большого количества строк скрипт начинает дико тормозить.
читайте из таблицы заявок лишь активные, тормозить никогда не будет
например у меня в тесте за 4 часа было выставлено и снято  200 тысяч заявок
никаких тормозов.
----------------------
ещ можно читать из таблицы  Позиции по инструментам

ПараметрТипОписание
sec_code STRING Код инструмента
trdaccid STRING Счет депо
firmid STRING Идентификатор фирмы
client_code STRING Код клиента
openbal NUMBER Входящий остаток
openlimit NUMBER Входящий лимит
currentbal NUMBER Текущий остаток
currentlimit NUMBER Текущий лимит
locked_sell NUMBER В продаже. Количество инструментов, заблокированное под исполнение заявок  клиента на продажу
locked_buy NUMBER В покупке. Количество инструментов в активных заявках клиента на  покупку
locked_buy_value NUMBER Стоимость инструментов, заблокированных под покупку
locked_sell_value NUMBER Стоимость инструментов, заблокированных под продажу
wa_position_price NUMBER Цена приобретения
limit_kind NUMBER Срок расчётов. Возможные значения:  
  • положительные целые числа, начиная с «0», соответствующие срокам расчётов из
    таблицы «Позиции по инструментам»: «0» – T0, «1» – T1, «2» – T2 и т.д.;
  • отрицательные целые числа – технологические лимиты (используются для
    внутренней работы системы QUIK)

Индикаторы и скрипты, Получение данных с индикаторов
 
вообще-то, ответ на ваш вопрос в начале темы:
МОЖНО.
--------------------
вопрос скорее всего в том,
почему Вам бы самому не написать эту функцию,
если она Вам нужна.
Индикаторы и скрипты, Получение данных с индикаторов
 
Цитата
Дмитрий написал:
Цитата
nikolz написал:
 
Цитата
Дмитрий  написал:
   Можно и так через скрипт получить код инструмента с графика, но лучше, конечно, чтобы была функция встроенная в quik, без всяких редактирований таблицы tool как в скрипте:

 
Код
      is_run    =       true   

chart_tag    =       "tag"   

   local    tool    =    {
    [  "Сбербанк [Price]"  ]    =       "SBER"   ,
    [  "ГАЗПРОМ ао [Price]"  ]    =       "GAZP"   ,
    [  "ЛУКОЙЛ [Price]"  ]    =       "LKOH"   ,
    [  "Роснефть [Price]"  ]    =       "ROSN"   
}

   function     candle ()
    allcandles    =       getNumCandles   (chart_tag)
    tab, count, leg    =       getCandlesByIndex   (chart_tag,    0   ,    0   , allcandles)
       for    key, val    in    pairs(tool)    do   
           if    key    =      =    leg    then   
            codeSec    =    val
           end   
       end   
       return    codeSec
   end   

   function     main ()
       while    is_run    do   
        candle()
           message   (tostring(codeSec),    1   )
           sleep   (   1000   )
       end   
   end         
 
 Вы что-то путаете  или невнимательно читали документацию qLua.
Если вы хотите получить данные по инструментам в скрипте (как в вашем примере), а не в индикаторе,
то для этого уже есть функции
-----------------------
CreateDataSource
и O, H, L, C, V, T -  Функции в качестве параметра принимают индекс свечи и возвращают  соответствующее значение.
-----------------------------
и tag вообще не нужен для этого.
Нужно получить код инструмента графика в скрипт, а не через индикатор. В этой функции такого нет. И в других функциях тоже нет. Поэтому хорошо бы было, чтобы такая функция была. А в примере выше показан способ получения кода через имеющуюся функцию, но в нём есть недостаток - нужно вручную вписывать названия подписей инструментов.
Возможно, я не понял, но Ваш вопрос в тексте все время разный.
-------------------
Я вообще-то говорю о получении значений параметров свеч, т е цены инструмента
и это же Вы получаете в своем примере.
---------------------
Но Вы хотите получить нечто иное, а именно:
В начале темы это
" получать данные переменных индикаторов".
а теперь
"получить код инструмента графика "
Первое понятие  "данные переменных индикаторов"  - вообще ваше ноу-хау.
--------------------
Если хотите получить в скрипт код инструмента на графике, например SBER
то как Вы будете выбирать с какого графика, открытого в терминале  вы хотите получить код инструмента?


Size()
 
Цитата
Alexey написал:
Прошу помощи у знающих:
Кто-нибудь может сказать в чем ошибка:
Код условный, суть в том, что когда в качестве второго оператора цикла используется Size индиктор пропадает из вкладки добавления индикатора терминала Quik. Я так понимаю идет какая-то ошибка...

Size = Size()

function Q()
dVal = {};
for i = 1, Size, 1 do
     dVal = 100*i;
end
     return dVal
end

dVal = Q()
без полного кода сказать трудно.
Но у Вас куча дыр в этом условном коде,
которые могут привести к сюрпризам  при выходе из этой функции.
--------------------
бесплатный совет.
------------------
Не надо писать условных кодов, если проблема реальная.
Т к суть проблемы в том, что вы реально, а не условно,  не понимаете как писать индикаторы.
И это видно из вашего условного кода,
-----------------
Индикаторы и скрипты, Получение данных с индикаторов
 
Цитата
Дмитрий написал:
Цитата
Можно и так через скрипт получить код инструмента с графика, но лучше, конечно, чтобы была функция встроенная в quik, без всяких редактирований таблицы tool как в скрипте:

Код
  is_run  =   true 

chart_tag  =   "tag" 

 local  tool  =  {
    [ "Сбербанк [Price]" ]  =   "SBER" ,
    [ "ГАЗПРОМ ао [Price]" ]  =   "GAZP" ,
    [ "ЛУКОЙЛ [Price]" ]  =   "LKOH" ,
    [ "Роснефть [Price]" ]  =   "ROSN" 
}

 function   candle ()
    allcandles  =   getNumCandles (chart_tag)
    tab, count, leg  =   getCandlesByIndex (chart_tag,  0 ,  0 , allcandles)
     for  key, val  in  pairs(tool)  do 
         if  key  =  =  leg  then 
            codeSec  =  val
         end 
     end 
     return  codeSec
 end 

 function   main ()
     while  is_run  do 
        candle()
         message (tostring(codeSec),  1 )
         sleep ( 1000 )
     end 
 end   
Вы что-то путаете  или невнимательно читали документацию qLua.
Если вы хотите получить данные по инструментам в скрипте (как в вашем примере), а не в индикаторе,
то для этого уже есть функции
-----------------------
CreateDataSource
и O, H, L, C, V, T -  Функции в качестве параметра принимают индекс свечи и возвращают  соответствующее значение.
-----------------------------
и tag вообще не нужен для этого.
Индикаторы и скрипты, Получение данных с индикаторов
 
Цитата
Дмитрий написал:
Цитата
nikolz написал:
если это индикатор в окне на графике,
то можно прочитать значения через идентификатор
Каким образом через идентификатор можно получить значения scd и cld в примере выше? Например, можно через следующий код получить имя линии индикатора:
is_run = true

chart_tag = "code"
numcandles = 3

-- получение всех свечей
function candle()
   allcandles = getNumCandles(chart_tag)
   -- диапазон свечей, по которым идёт поиск
   tab, count, leg = getCandlesByIndex(chart_tag, 0, 0, allcandles)
   message(tostring(leg), 1)
end

function main()
   while is_run do
       candle()
       sleep(1000)
   end
end
здесь выкладывал примеры:
https://forum.quik.ru/forum17/topic7630/
https://forum.quik.ru/forum10/topic7578/
Проблема с подпиской на событие новой свечи в QuikSharp
 
идите к автору QuikSharp
Индикаторы и скрипты, Получение данных с индикаторов
 
если это индикатор в окне на графике,
то можно прочитать значения через идентификатор
Индикаторы и скрипты, Получение данных с индикаторов
 
можно.
самое простое - запишите в файл в одном скрипте и прочитайте из него в другом.
Добавление вкладки и графика, Добавление вкладки и графика
 
https://www.script-coding.com/AutoIT.html
Добавление вкладки и графика, Добавление вкладки и графика
 
эту проблему я решаю используя AutoIT
Просьба сделать в LUA работу со вкладками QUIK
 
Цитата
Sergey Denegin написал:
Здравствуйте!

Просьба к разработчикам: добавить в LUA функции для определения вкладок в QUIK
Это нужно для того, чтобы одного и того же робота можно было запускать для разных инструментах, в разных вкладках.
Тогда в названии вкладки можно было бы писать код инструмента.

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

Заранее спасибо!  
Я решаю эту проблему так:
Идентификатор вкладки пишите по имени инструмента
В индикаторе делает tag по имени инструмента которое читаете в индикаторе(роботе)
-------------
В итоге робот-индикатор будет автоматически настраивать на тот инструмент, в окно которого вы установите этот робот-индикатор
Комиссия брокера и московской биржи.
 
Цитата
Andrey написал:
Цитата
Цитата
Спасибо большое. Теперь мне понятно, что такое сбор за адресную сделку и клиринговая комиссия, жаль что московская биржа так же ловко как вы не могут этого объяснить.
Остался небольшой вопрос по сбору за регистрацию сделки. Ответьте пожалуйста ответ цифрой сколько с меня снимут сбор за регистрацию сделки при покупки 10 лотов и продаже 10 лотов на примере индекса РТС.
1) (купил 10 лотов РТС и продал эти 10 лотов через 5 мин (внутри дня)) = ?
2) (купил 10 лотов РТС и продал эти 10 лотов через 5 дней)  = ?
Добавлю к предыдущему ответу.
Чтобы ответить на Ваш вопрос, вам надо взять регламент брокера и там есть приложение - тарифы
В этом приложении находите свой тариф и считаете.
Как ранее сказал если торгуете внутри дня то тариф обычно меньше, все расчеты делаются в клиринг по сальдо всех сделок брокером.
----------------
Обращаю ваше внимание на тот факт, что на самом деле торгуете не вы, а брокер.
Вы лишь даете поручение ему, а он их либо выполняет либо нет, но за ваши деньги.
Страницы: Пред. 1 ... 23 24 25 26 27 28 29 30 31 32 33 ... 72 След.
Наверх