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

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

Страницы: 1 2 След.
SetUpdateCallback и обнудение стека Lua
 
Вопрос отменяется. Нашел проблему.
SetUpdateCallback и обнудение стека Lua
 
Цитата
TGB написал:
Цитата
Quikos_1 написал:
type:string:1     //Таблица глобальных функций
   Ну, если это таблица, то я сдаюсь и "умываю руки" :: .  Похоже, вы долго будете развлекаться отладкой. Потом, просьба к вам, сообщить конечный результат в этой ветке.
Я некорректно написал - это строка которая помещается после вызова luaL_newlib(L, ls_lib); и до вызова функции "server_run", Вообщем не имеет значение что это. Оно всегда там находится внизу стек.
Где таблица от CreateDataSource я указал.

Ну а вместе с руками и лицо можно "умыть" - так чтобы освежится и быть более внимательным.
Конечного результата походу не будет, потому что это просто не работает, а тех поддержка не отвечает.
SetUpdateCallback и обнудение стека Lua
 
Цитата
TGB написал:

    1) Ошибка:
        Оператор  if (status_lua_pcall != 0) ловит только исключения.
        Функция . CreateDataSource обычно завершается, не выбрасывая исключение, даже если источник не создан.
        Надо анализировать результат выполнения CreateDataSource.
        Если источник не создан, то первое значение результата nil, а второй результат: строка описания ошибки создания источника.
        Похоже, вы запускаете свой скрипт в песочнице, а там класс для SBER не TQBR. У вас не создался источник свечей.

   Далее мне смотреть не интересно.
Более того, вы не внимательны вдвойне - я четко написал, что колбек установленный при вызове SetUpdateCallback вызывается, а значит никаких ошибок при вызове CreateDataSiurce быть не может.
Слишком уж вы не внимательны.
SetUpdateCallback и обнудение стека Lua
 
Цитата
TGB написал:
 1) Ошибка:         Оператор  if (status_lua_pcall != 0) ловит только исключения.        
Функция . CreateDataSource обычно завершается, не выбрасывая исключение, даже если источник не создан.        
Надо анализировать результат выполнения CreateDataSource.        
Если источник не создан, то первое значение результата nil, а второй результат: строка описания ошибки создания источника.          
Похоже, вы запускаете свой скрипт в песочнице, а там класс для SBER не TQBR. У вас не создался источник свечей.    Далее мне смотреть не интересно.
Вы Невнимательны. И из за своего не внимания выделаете вывод, как будто бы это факт.

Посмотрите код из функции my_call_SetUpdateCallback, где я четко написал:

Код
  ckeck_Lua_Stack(L_global);       
//Проверяю что находится на данный момент в стеке Lua.        
 //Находится следующее: 
---------------------------------------- 
Total element is stack:3 
type:string:1     //Таблица глобальных функций 
type:table:      //Это как раз запрошенная таблица CreateDataSource 
type:nil:        //Ошибка при запросе таблицы CreateDataSource - то есть nil - ошибки нет.
----------------------------------------
И тогда не придется фантазировать на тему "Надо анализировать результат выполнения CreateDataSource."
SetUpdateCallback и обнудение стека Lua
 
Цитата
TGB написал:
Цитата
Quikos_1 написал:
Это так не работает, если только Вы монолог сами с собой не ведете.
  Учел вашу критику :: .

1.  
Цитата
Quikos_1 написал:
Ох, Вы явно путаете сборку мусора оперативной памяти и рабочую структура стека Lua. Они ни как не связаны.
          Сначала некоторое утверждение, а затем конкретный вопрос:  
   1) При уборке мусора просматриваются объекты скрипта  и ищутся такие, на которые нет ссылок из среды выполнения скрипта.
   2) Если в стеке скрипта, в момент работы мусорщика, находится ссылка на какую то таблицу и на нее нет других ссылок, то как мусорщик определит, что эта таблица «живая», не обрабатывая стек?
Я знаю это и поэтому и написал про глупость о сборщике мусора, который удаляет мою Рабочую таблицу из стека.
Это рабочая таблица и они используется из колбекка, который указывается при вызове SetUpdateCallback - так что сборщик ни как может и не должен ее удалять. Неужели это не понятно.
SetUpdateCallback и обнудение стека Lua
 
Цитата
TGB написал:
А что вы спрашиваете :: ?:
Цитата
Quikos_1 написал:
ВОПРОС: КТО И ЗАЧЕМ очитстил стек ?? КАК видно из кода, между вызовов SetUpdateCallback и вызовом самой колбек-функции нет ни одной строчки кода, которая бы редактировала стек. Так что происходит тогда ?
   Сами найти не можете?
Вы уже задали достаточно вопросов, но не ответили не на один мой. Это так не работает, если только Вы монолог сами с собой не ведете.
Давайте еще раз: А Вы сами найти не в состоянии ?
SetUpdateCallback и обнудение стека Lua
 
Цитата
TGB написал:
Цитата
Quikos_1 написал:
Что бы хотели знать ?
    В каких местах исходников Lua (файл/строка), вызывается мусорщик?
А Вы сами найти не в состоянии ?
SetUpdateCallback и обнудение стека Lua
 
Цитата
TGB написал:
Цитата
Quikos_1 написал:
Так эту глупость про сборщик мусора вообще Вам не нужно было писать - дичь конечно эпичная :)
    Поделитесь, пожалуйста, с форумом вашими, интересными знаниями о сборке мусора в QLua. Очень любопытно ::
Что бы хотели знать ?
SetUpdateCallback и обнудение стека Lua
 
Цитата
TGB написал:
Цитата
Quikos_1 написал:
Для индикаторов - однозначно Нет.
  Вопрос задан: как это вы делаете с помощью C-API?
У меня есть готовые функции на С++ которые быстро высчитывают нужные мне индикаторы. На Lua я конечно этого делать точно не собираюсь.
SetUpdateCallback и обнудение стека Lua
 
Цитата
TGB написал:
Цитата
Quikos_1 написал:
Только не открываю,а "заказываю". Просто указывая класс инструмента, имя и интервал.
     И это нельзя сделать в тексте скрипта с помощью CreateDataSource :: ?
Для индикаторов - однозначно Нет.
SetUpdateCallback и обнудение стека Lua
 
Цитата
Nikolay написал:
Цитата
Quikos_1 написал:

Видимо Вы просто не разу не пытались заказывать данные по инстурменту, который у Вас не открыт в Квике.
Нормальный терминал - это тот, где нет ни одного графика, может только таблицы, для оценки взглядом цифр. Все делает сам скрипт. Так что это нормальная практика - заказать данные, рассчитать все данные, принять решения.
SetUpdateCallback - очень неудобный колбек с точки зрения использования.

Во-первых, он вызывается на каждое изменение цены, даже внутри одного и того же бара. Если это необходимо отслеживать, то есть более удобные способы.
А если не надо, то проще самому обрабатывать данные, реагировать только если Size потока изменился.
Во-вторых, после заказа данных, он будет вызван для всех баров, начиная от 1. И опять - это проще сделать самому, перебрав данные в цикле.
Ну и, наконец, - он медленный.

Впрочем, дело вкуса, конечно.
SetUpdateCallback - вполне себе удобный, только перестал работать для Си.

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

Тут проблем нет - это все работало, это все уже было написано на С++. Но это просто перестало работать из за описанной мной проблемы. :(
SetUpdateCallback и обнудение стека Lua
 
Цитата
TGB написал:
[
Цитата
Quikos_1 написал:
Видимо Вы просто не разу не пытались заказывать данные по инстурменту, который у Вас не открыт в Квике
   Интересно,  как вы открываете с помощью C-API "данные по инстурменту, который у Вас не открыт в Квике"?

Только не открываю,а "заказываю". Просто указывая класс инструмента, имя и интервал.
SetUpdateCallback и обнудение стека Lua
 
Цитата
TGB написал:
[
Цитата
Quikos_1 написал:
Ох, Вы явно путаете сборку мусора оперативной памяти и рабочую структура стека Lua. Они ни как не связаны.
   Это без комментария ::

Так эту глупость про сборщик мусора вообще Вам не нужно было писать - дичь конечно эпичная :)
SetUpdateCallback и обнудение стека Lua
 
Цитата
TGB написал:
1.   Это ваш вопрос?:
Цитата
Quikos_1 написал:
ВОПРОС: КТО И ЗАЧЕМ очитстил стек ??
  Это мой ответ:
Цитата
TGB написал:
Мусорщик работает по всем таблицам и стекам lua_State и что-то там делает.
Ох, Вы явно путаете сборку мусора оперативной памяти и рабочую структура стека Lua. Они ни как не связаны.



Цитата

2. Для меня некоторое открытие  :: , что в QLua:
Цитата
Quikos_1 написал:
вы не можете вызвать SetUpdateCallback - ЕСЛИ у вас не открыт график.


Видимо Вы просто не разу не пытались заказывать данные по инстурменту, который у Вас не открыт в Квике.
SetUpdateCallback и обнудение стека Lua
 
Цитата
TGB написал:
Цитата
Quikos_1 написал:
ВОПРОС: КТО И ЗАЧЕМ очитстил стек ?? КАК видно из кода, между вызовов SetUpdateCallback и вызовом самой колбек-функции нет ни одной строчки кода, которая бы редактировала стек. Так что происходит тогда ?
   1. На форуме много раз отмечалось, что если нужен результат, а не развлечение отладкой, то писать скрипты надо просто. Что-то использовать кроме QLua, надо в крайнем случае (в том числе C-API), если, действительно, QLua и многочисленных пакетов Lua не хватает для реализации задуманного.
  2. Зачем вы используете C-AP?  Что вам не хватает в Qlua?
  3. В Qlua, как известно, автоматическая память и сборка мусора может быть запущена как внутри вызова C-API, так и при вызове коллбека, в основном отдельном параллельном потоке QUIK. Мусорщик работает по всем таблицам и стекам lua_State и что-то там делает.
Для примера: обычным скриптом вы не можете вызвать SetUpdateCallback - ЕСЛИ у вас не открыт график.
Соответсвенно если вы хотите вызвать SetUpdateCallback для одного и того же инструмента но с разными временными интервалами, вам нужно их открыть на графике.
Соответвенно, если выхотите ообратится к индикаторам - васм ОПЯТЬ нужно настроить их на графике. Это просто знатная  *  вам скажу.
SetUpdateCallback и обнудение стека Lua
 
Цитата
TGB написал:
Цитата
Quikos_1 написал:
ВОПРОС: КТО И ЗАЧЕМ очитстил стек ?? КАК видно из кода, между вызовов SetUpdateCallback и вызовом самой колбек-функции нет ни одной строчки кода, которая бы редактировала стек. Так что происходит тогда ?
   1. На форуме много раз отмечалось, что если нужен результат, а не развлечение отладкой, то писать скрипты надо просто. Что-то использовать кроме QLua, надо в крайнем случае (в том числе C-API), если, действительно, QLua и многочисленных пакетов Lua не хватает для реализации задуманного.
  2. Зачем вы используете C-AP?  Что вам не хватает в Qlua?
  3. В Qlua, как известно, автоматическая память и сборка мусора может быть запущена как внутри вызова C-API, так и при вызове коллбека, в основном отдельном параллельном потоке QUIK. Мусорщик работает по всем таблицам и стекам lua_State и что-то там делает.
Зачем вы спрашиваете почему я использую Lua C API и зачем пишите про сборщик мусора ?? Как это все отвечает на мой вопрос или проблему ?
SetUpdateCallback и обнудение стека Lua
 
Я точно знаю, что у меня работало. Может это быть из за перехода от USB-ключа, к двухфакторной аутентификации по смс и паролю ?? Я не вижу никаких других причин.
Я тупо не понимаю че происходит, потому что у меня 100% работало.
SetUpdateCallback и обнудение стека Lua
 
Цитата
nikolz написал:
Цитата
Quikos_1 написал:
 
Цитата
nikolz  написал:
все верно, в стеке ее нет, так как колбек вызывает QUIK .
А в момент вызова в стеке может быть все что угодно - т е то что делает VMLua в данный момент.
При выходе из функции стек всегда очищается.
Надо иначе передавать таблицу.
 А как тогда можно передать таблицу ? Я же не могу ее куда то скопировать. Я должен же работать со стеком Lua, причем с тем стеком, который первоначально создал Quik.
Я покажу Вам фрагмент моего скрипта. Подробно объяснять лень.
Но из собственного опыта могу сказать что для тиков это плохая затея. Тормоз ужасный. Кроме того тиков есть уже колбек OnAllTrade и лучше него вы не сделаете.
У меня есть различные варианты, вот один из фрагментов:
Код
   while  d =  =  nil   and  k >  0   do  d,err =  CreateDataSource (clas,sec,m);  sleep ( 1 ); k = k -  1 ;  end 
     if  d  then    --d[1]=sec; d[2]=clas; d[3]=ts; d[3]=tc; d[4]=m; d[1] 
    --   if m>0 then  d:SetUpdateCallback(function(index) cbCandle(index,d);end); 
 --   else 
   d[ 1 ] =  0 ;      d: SetEmptyCallback () ;
 --   end 
   ds[j] = d;
    end 
      ds[ 0 ] = j;
  
 
Спасибо. Но вы используете обычный Lua, с обычным Lua проблем то нет. Проблемы именно с LUA C API.
SetUpdateCallback и обнудение стека Lua
 
Цитата
nikolz написал:
все верно, в стеке ее нет, так как колбек вызывает QUIK .
А в момент вызова в стеке может быть все что угодно - т е то что делает VMLua в данный момент.
При выходе из функции стек всегда очищается.
Надо иначе передавать таблицу.
А как тогда можно передать таблицу ? Я же не могу ее куда то скопировать. Я должен же работать со стеком Lua, причем с тем стеком, который первоначально создал Quik.
SetUpdateCallback и обнудение стека Lua
 
Здравствуйте,

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

Использую LUA C API - для вызова SetUpdateCallback, вот такой просто С++ код:  да понимаю, что вероятность, что кто-то будет смтреть код стремится к нулю, поэтому срезюмирую поведение кода:

С помощью QLua C API:

-1:Я вызываю CreteDataSorce: вызов происходит успешно, мне возвращается таблица и нулевая ошибка.
-2:Я подтверждаю это проверкой стека Lua: на вершине стека находится таблица и нулевая ошибка.


-3:Затем я вызываю SetUpdateCallback и передаю вв него саму колбек функцию, которая будет вызыватся при каждой совершенной сделке.  Так же дополнительно я связываю по типу лямбды любое значение, чтбы предать для последующего ивзлечения его в самом колбеке.

-4:Вызыва SetUpdateCallback, убеждаюсь, что вызов SetUpdateCallback прошел успешно и опять проверяю стек на наличие ранее заказанной таблицы CreateDataSource - ОНИ НА МЕСТЕ!
.
-5: И наконец на рынке совершается сделка по заказанному инстурменту и вызывается колбек "my_callback__for__SetUpdateCallback". Все что я делаю в данном примере в этом колбеке это проверяю наличие моей таблицы CrateDataSourc в стеке Lua. ИИИИИИ ее там нет!!!! Весь стека кромер первого элемента был "кем-то" очищен!

ВОПРОС: КТО И ЗАЧЕМ очитстил стек ?? КАК видно из кода, между вызовов SetUpdateCallback и вызовом самой колбек-функции нет ни одной строчки кода, которая бы редактировала стек. Так что происходит тогда ?


Код
lua_State* L_global;
int static nummer_table_from_stack;

Код
void SetUpdateCallcak_wrapper(lua_State* L)
{

    L_global = L;
    std::cout << "L_global_adress:" << &L_global << std::endl;


    //-----------------------------------------------------------------1-Вызовем функцию CreateDataSource:Начало--------------------------------------------
    lua_getglobal(L, "CreateDataSource");                 

    lua_pushstring(L, "TQBR");       //Добавим первый параметр функции CreateDataSource на вершину стека
    lua_pushstring(L, "SBER");          //Добавим второй параметр функции CreateDataSource на вершину стека
    lua_pushnumber(L, 1);            //Добавим третий параметр функции CreateDataSource на вершину стека

    int status_lua_pcall = lua_pcall(L, 3, 2, 0);    //Так как все необходимые параметры добавлены в стек, то вызываем функцию lua_pcall - которая использя доабвенные параметры в правильном порядке - реализует вызов функции CreateDataSource: 2-ой параметр - это число аргументов, которые мы добаили в стек и которая принимает функция CreateDataSource; 2-ой: параметр - это число параметров, которое возвращает функция CreateDataSource. После успешного выполнения lua_pcall удаляет и значение функции и переданные аргменты со стека в кол-во указанном во втором параметре(не велючая функцию) и доабвляеи результат на стек в кол-во указанном во втором параметре.
    //-----------------------------------------------------------------1-Вызовем функцию CreateDataSource:Конец--------------------------------------------



    //-------------------------------------------------------------------5-Проверка на ошибку lua_pcall:Начало---------------------------------------------------------------------
    if (status_lua_pcall != 0)
    {
        //Ошибка произошла при вызове функции lua_pcall при вызове CreateDataSource:
        std::cout << "ERROR CreateDataSource" << std::endl;
        return;
    }
    //-------------------------------------------------------------------5-Проверка на ошибку lua_pcall:Конец---------------------------------------------------------------------
    else
    {

         nummer_table_from_stack = lua_gettop(L) - 1;   //Это номер элемента в стеке L - в котором теперь размещается полученная от CreateDataSource таблица. "-1" - потому что CreateDataSource поместила на вершину стека две перменные: таблицу и переменную об ошибке. То есть таблица находить на предпоследнем месте с вершины стека.

         my_call_SetUpdateCallback(L);     //Вызываем SetUpdateCallback wrapper
    }

}

Код
static void ckeck_Lua_Stack(lua_State* L)
{

    std::cout << "----------------------------------------" << std::endl;

    int top = lua_gettop(L);
    std::cout << "Total element is stack:"<< top << std::endl;

    for (int i = 1; i <= top; i++) 
    {
        int type = lua_type(L, i);

        const char* type_name = lua_typename(L, type);

        std::cout << "type:" << type_name << ":";


        if (type == LUA_TSTRING || type == LUA_TNUMBER) 
        {
            std::cout << lua_tostring(L, i) << std::endl;
        }
        else
        {
            std::cout << std::endl;
        }
    }
    std::cout << "----------------------------------------" << std::endl << std::endl;


    //std::this_thread::sleep_for(std::chrono::milliseconds(100000));

}
Код
static int my_callback__for__SetUpdateCallback(lua_State* L)
{

//Значит произошла сделка!

    std::cout << "Number_candle:"<< lua_tonumber(L, -1) << std::endl;

    ckeck_Lua_Stack(L_global);         //Проверяем стек Lua!!! И теперь в нем находится сдедующее:

----------------------------------------
Total element is stack:1                          //Куда черт возьми делать моя ранее заказанная таблица CreateDataSource ?????
type:number:1
----------------------------------------


    return 0;

}

Код
static void my_call_SetUpdateCallback(lua_State* L)
{

    
    //--------------------------------------------------------
    lua_getfield(L_global, nummer_table_from_stack, "SetUpdateCallback");                       //"Извлекаем" из "таблицы" функцию SetUpdateCallback.
     
    lua_pushvalue(L_global, nummer_table_from_stack);                                                       //Помещаем копию обьекта таблицы CreateDataSource на вершину стека.
    //--------------------------------------------------------


    lua_pushnumber(L_global, 555);  //Просто для примера связываю какое то любое значение для передачи в колбек. 

    lua_pushcclosure(L_global, my_callback__for__SetUpdateCallback, 1);       //Захватываем.


    //--------------------------------------------------------
    int status_lua_pcall = lua_pcall(L_global, 2, 0, 0);                  //Реализауем вызов функции SetUpdateCallback с аргументом таблицы, которую поместили на вершину стека 
    //--------------------------------------------------------
    

    if (status_lua_pcall != 0)
    {
        std::cout << "lua_pcall__ERROR" << std::endl;
        return; 
    }
    else
    {
        std::cout << "SetUpdateCallback Success Call" << std::endl;
        
        ckeck_Lua_Stack(L_global);       //Проверяю что находится на данный момент в стеке Lua.

       //Находится следующее:

 ----------------------------------------
Total element is stack:3
type:string:1     //Таблица глобьальный функций
type:table:        //Это как раз запрошенная таблица CreateDataSource
type:nil:            //Ошибка при запросе таблицы CreateDataSource - то есть nil - ошибки нет.
----------------------------------------

        return;
    }


}
SetUpdateCallback Опять косячит ?
 
Цитата
Nikolay написал:
В теории да. Но меня прямо коробит (без обид) такая запись. Переменная ds глобальная, объявляется где-то там.
В первом варианте анонимная функция хотя бы видит ее как up-value, а во втором - вся надежда на то, что она объявлена и инициализирована.

Хотя бы объявите переменную в самом начале кода.
Да рукожоп я. Я забыл зону видимости. Передал "ds" в колбек через замыкание.
SetUpdateCallback Опять косячит ?
 
Здравствуйте,

Развейте пожалуйста мои сомнения насчет того, что Quik и в частности SetUpdateCallback() - опять работают, какбудто бы их написал через %опу, и что руки их %опы, растут, как раз таки у меня.

Использую такой простейший код для теста: просто вывожу последнюю цену сделки и обьем по последней минутной свече:

Код
function main()
    local class_code = "TQBR" -- Код класса
    local sec_code = "SBER" -- Код бумаги

    ds = CreateDataSource(class_code, sec_code, INTERVAL_M1)
    ds:SetUpdateCallback(function(index)
        local last_price = ds:C(index)
        local volume = ds:V(index) -- Получение объема по свече
        message("Last Price of " .. sec_code .. ": " .. tostring(last_price) .. ", Volume: " .. tostring(volume)) -- Вывод цены и объема по свече
    end)

    while true do
        sleep(1000)
    end
end

Данный код исправно работает.
НО, как только я вывожу код SetUpdateCallback в отдельный колбек, то ничего более не работает. Ошибок также в скрипте нет, но он не сообщает ни о каких измененениях, то есть колбек функция указанная в качестве параметра для SetUpdateCallback - тупо не вызывается при изменнеии цены:
Код
function updateCallback(index)
    local last_price = ds:C(index)
    local volume = ds:V(index) -- Получение объема по свече
    message("Last Price of " .. sec_code .. ": " .. tostring(last_price) .. ", Volume: " .. tostring(volume)) -- Вывод цены и объема по свече
end

function main()
    local class_code = "TQBR" -- Код класса
    local sec_code = "SBER" -- Код бумаги

    ds = CreateDataSource(class_code, sec_code, INTERVAL_M1)
    ds:SetUpdateCallback(updateCallback)

    while true do
        sleep(1000)
    end
end
Кто из нас рукожоп ? Я или разрабы Квика ? Надеюсь, что я.
Quik не запрашивает PIN-код по СМС, Quik не запрашивает PIN-код по СМС
 
Здравствуйте,

После аварийного завершения Quik и повторного запуска Quik - аутентификация происходит только через пароль без PIN кода в СМС.

Это корректное поведение или косяк ?
CreateDataSource иногда возвращает ошибку - "TQBR - unknown class code"
 
Цитата
Anton Belonogov написал:
Quikos_1, добрый день.

Уточните, пожалуйста, что понимается под сбоем ДФА? Правильно понимаем, что в этот момент соединение с сервером не установлено?
Есть ли возможность записать видео с воспроизведением эффекта?
Я бы записал видео, но этот эффект проявляется произвольно.
В момент вызова CreateDataSource - подключения к серверу нет. Но это не мешает CreateDataSource - выдавать корректный результат.
Но иногда бывает Квике появляется сообщение, что то типа "цепочка сертификатов обработана, но обработка прервана на стороне сервера".

Я не уверен гарантировано, что с эти связано, так как этот "эффект" проявляется не часто - отследить трудно.
CreateDataSource иногда возвращает ошибку - "TQBR - unknown class code"
 
Сркипт простой, это просто вызов CreateDataSource.
Такое немного не ожидаемый результат CreateDataSource похое выдает, когда происходит "сбой" в двухфакторной аутентификации.
CreateDataSource иногда возвращает ошибку - "TQBR - unknown class code"
 
Собственно вопрос: Почему CreateDataSource иногда возвращает ошибку: "TQBR - unknown class code" ??
Это еще блин че такое на графике Яндекса (YNDX) ???
 
Цитата
Constantin написал:
Цитата
Quikos_1 написал:
Зачем ?
Может в вашем Quick данные сборные, скачаются от брокера по новой. Удалить только по этому инструменту.
Мне важно понять почему это произошло, потому что, если произошло один раз, то произойдет и два...
Это еще блин че такое на графике Яндекса (YNDX) ???
 
Цитата
Constantin написал:
Для начала надо у себя архив с данными по этому инструменту удалить в Quik в папке archive. Потом посмотреть график.
Зачем ?
Это еще блин че такое на графике Яндекса (YNDX) ???
 
Цитата
Constantin написал:
Цитата
Quikos_1 написал:
А как точно можно узнать на чьей стороне косяк ?
Обычный график вывести на экран и посмотреть свечи. Если есть проблемы, то данные у брокера испорчены.  
Что за обычный график ?
Это еще блин че такое на графике Яндекса (YNDX) ???
 
Цитата
nikolz написал:
Это у меня щас тоже нормально. А вот вчера вечером и сегодня днем было, то, что на скриншоте.
Это еще блин че такое на графике Яндекса (YNDX) ???
 
Заметил, что по Яндексу CreateDataSource выдает какую  * .

Решил  посмотреть на реальный месячный график в самом Квике, вот скрин  месячного-интервального графика: на скрине подробное описание проблемы:





По другим интервалам Яндекса - проблем нет. По другим месячным  интервалам других инструментов - проблем нет. Но это явная извините  херня какая то.
Это еще блин че такое на графике Яндекса (YNDX) ???
 
А как точно можно узнать на чьей стороне косяк ?
Это еще блин че такое на графике Яндекса (YNDX) ???
 
Заметил, что по Яндексу CreateDataSource выдает какую  * .

Решил посмотреть на реальный месячный график в самом Квике, вот скрин месячного-интервального графика: на скрине подробное описание проблемы:




КУ

По другим интервалам Яндекса - проблем нет. По другим месячным интервалам других инструментов - проблем нет. Но это явная извините херня какая то.
CreateDataSource и SetUpdateCallback - по разным интервалам
 
Цитата
nikolz написал:
Quikos_1 ,
Хочу пояснить,
сжатие данных их тиков в свечи мы делаем не для того чтобы меньше передавать с сервера данных,
а для того, чтобы делать прогноз движения рынка.
-----------------------
Поэтому , если мощности компа хватает можете считать свечи сами из тиков, а если нет желания считать можно получать их с сервера биржи.
-----------------
прикол лишь в том, что сервер на бирже раньше вас рассчитает свечи и пришлет их Вам.  

Для анализа я использую свечи с интервалами. Но сами интервалы формирую из тиков.
И когда я это делал, я руководствовался именно предположением о производительности, то есть, чтобы снизить поток по сути одни и тех же данных Инструмента, но по разным свечным интервалом, но теперь я задумался, а нужно ли мне было так делать и не переделать бы. Вот поэтому и решил уточнить.
CreateDataSource и SetUpdateCallback - по разным интервалам
 
Цитата
nikolz написал:
я тоже делал расчет свечей по таблицам обезличенных сделок.
Для этой цели и чтобы тестировать запаздывание данных относительно времени сделок на бирже я синхронизирую компьютер с сервером точного времени ,
что обеспечивает погрешность относительно биржи в пределах 10 мs
Не понимаю зачем синхронизировать ? Если Вам приходит тик с конкретной датой и временем вплоть до секунды - просто складируейте его в минутную, трехминутную, 5-и мутную и так далее Свечу и все.
Или я что то не правильно понимаю.
CreateDataSource и SetUpdateCallback - по разным интервалам
 
Цитата
nikolz написал:

Кроме того, как вы решаете вопрос обнаружение попущенных интервалов, если у вас просто нет никаких тиков?
Сначала я загружаю в память свечи или с дика, то есть сохраненную историю или загружаю доступные на сервере через CreateDataSource, и после этого складирую пришедшие Тики в этот предварительно загруженный массив.
Теоретически пропущенных интервалов быть не должно.
CreateDataSource и SetUpdateCallback - по разным интервалам
 
Цитата
nikolz написал:

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

Я просто рассчитываю свечи именно таким образом. А дату и время беру из пришедшего Тика.
CreateDataSource и SetUpdateCallback - по разным интервалам
 
Цитата
nikolz написал:
Цитата
Quikos_1 написал:
 
Цитата
nikolz  написал:
 
Цитата
 Quikos_1   написал:
Подскажите, я правильно понимаю, что когда я вызваю:

-CreateDataSource и потом SetUpdateCallback по одному инструменту, но с разными интервалами, для примера:

-"TQBR" ,"SBER",  "INTERVAL_M1"
"TQBR" ,"SBER",   "INTERVAL_M3"
"TQBR" ,"SBER",   "INTERVAL_M5"
"TQBR" ,"SBER",   "INTERVAL_M10"

То на сервер при SetUpdateCallback - идет по сути только один запрос по интервалу - "INTERVAL_TICK", а уже пришедшая цена с датой раскидывается по интервалу силами Квика ?
  Нет,
на сервер идет запрос для каждого интервала,
так как свечи формирует не терминал, а сервер.
------------------
Поток свечей на 1-2 порядка  меньше, чем поток тиков.
 А как поток свечей может быть меньше - да еще и на порядок, если, TICK он один, а интервалов свечей несколько ?
Если я выбираю дневную свечу - это же не значит - что колбек по ней будет вызываться один раз в день ? Он же будет вызываться ровно столько - сколько же и Тиковый интервал.
Поясняю, следите за руками.
Тик - это сделка.  
Свеча - это способ сжатия информации о сделках путем вычисления  четырех индикаторов на заданном интервале времени.
--------------------------------
Если текущая сделка изменила значение какого-либо индикатора, то сервер пошлет это значение терминалу.
Предположим у нас тайм 1 час.
1 индикатор - это первый тик в текущем часе. - 1 значение на интервал.
2 индикатор - это максимальная цена сделки на текущем часе. Этот индикатор изменится лишь при превышении цены текущей сделки максимальной цены предыдущих.
3 индикатор -это  минимальная цена сделки на текущем часе.
4 индикатор - это текущая цена сделки, если она отличается от цены предыдущей сделки.
=================
Теперь рассмотрим случаи когда тики будут пропускаться без создания новых значений индикаторов.
Вот некоторые из них.
1) Если в сделке участвует айсберг или большой пакет, то цена сделок не будет меняться, следовательно значения свечей тоже не меняются
2) Если сделки совершаются внутри тела текущей свечи, то изменяется  лишь 1 индикатор при условии , что цена сделки меняется
=================
В итоге количество значений в свечах всегда меньше, чем число сделок.
==============
Вы можете это проверить сами. Для этого напишите вычисление свечей по тикам и посчитайте количество полученных данных.
Давайте упростим ситуацию и у нас не будет индикаторов, а только свечной график.

Как Вы и написали - Тик это сделка.

У свечи есть такой параметр, как цена закрытия, которая постоянно меняется при совершении сделки - то есть с каждым Тиком.

НО цена сделки может не меняться, то есть несколько сделка прошли по одной и той же цене, НО в и этом случае - есть параметр Volume, который увеличивается с каждым Тиком в не зависимости от цена Тика.

На основании этого я могу сделать вывод, что поток Тиков будет пропорционально в разы меньше заказанных интервалов свечей.
CreateDataSource и SetUpdateCallback - по разным интервалам
 
Цитата
nikolz написал:
Цитата
Quikos_1 написал:
Подскажите, я правильно понимаю, что когда я вызваю:

-CreateDataSource и потом SetUpdateCallback по одному инструменту, но с разными интервалами, для примера:

-"TQBR" ,"SBER",  "INTERVAL_M1"
"TQBR" ,"SBER",   "INTERVAL_M3"
"TQBR" ,"SBER",   "INTERVAL_M5"
"TQBR" ,"SBER",   "INTERVAL_M10"

То на сервер при SetUpdateCallback - идет по сути только один запрос по интервалу - "INTERVAL_TICK", а уже пришедшая цена с датой раскидывается по интервалу силами Квика ?
Нет,
на сервер идет запрос для каждого интервала,
так как свечи формирует не терминал, а сервер.
------------------
Поток свечей на 1-2 порядка  меньше, чем поток тиков.
А как поток свечей может быть меньше - да еще и на порядок, если, TICK он один, а интервалов свечей несколько ?
Если я выбираю дневную свечу - это же не значит - что колбек по ней будет вызываться один раз в день ? Он же будет вызываться ровно столько - сколько же и Тиковый интервал.
CreateDataSource и SetUpdateCallback - по разным интервалам
 
Подскажите, я правильно понимаю, что когда я вызваю:

-CreateDataSource и потом SetUpdateCallback по одному инструменту, но с разными интервалами, для примера:

-"TQBR" ,"SBER",  "INTERVAL_M1"
"TQBR" ,"SBER",   "INTERVAL_M3"
"TQBR" ,"SBER",   "INTERVAL_M5"
"TQBR" ,"SBER",   "INTERVAL_M10"

То на сервер при SetUpdateCallback - идет по сути только один запрос по интервалу - "INTERVAL_TICK", а уже пришедшая цена с датой раскидывается по интервалу силами Квика ?
Ограничения Квик на однорвеемнные вызовы CreateDataSource
 
Цитата
nikolz написал:
Цитата
Quikos_1 написал:
 
Цитата
nikolz  написал:

напоминает DDOS атаку на сервер QUIK.
Могут и отключить нафиг.
 Просто скриншот не удачно прикрепился, никаких атак :)
я имел ввиду Ваши интенсивные посылки   my_ CreateDataSource __HISTORY__wrapper( "TQBR" ,"SBER",  "INTERVAL_M1" )
это очевидно Ваша функция создание источника и так 200 раз и без пауз между посылками.
---------------------
Так делают DDOS атаку. КУЧУ посылок в один порт чтобы сервер лег.
Безусловно, Вы сервер брокера  не положите, но все равно выглядит  не комильфо.
Рекомендуете поставить небольшую задержку между вызовами ?
Ограничения Квик на однорвеемнные вызовы CreateDataSource
 
Цитата
none2 написал:
Добавлю, что крашится случайным образом (и не всегда), но в начале торговой сессии. Если файлы в папке archive всё таки обновились до вчерашних значений (после перезапуска quik), то больше не крашится.
У меня крашится тоже случайным образом, но зависимость от обновления archive - не заметил.
Ограничения Квик на однорвеемнные вызовы CreateDataSource
 
Цитата
nikolz написал:

напоминает DDOS атаку на сервер QUIK.
Могут и отключить нафиг.
Просто скриншот не удачно прикрепился, никаких атак :)
Ограничения Квик на однорвеемнные вызовы CreateDataSource
 
Ограничения Квик на однорвеемнные вызовы CreateDataSource
 
Подскажите пожалуйста, я правильно понимаю, что у Квика есть лимит по вызовам CreateDataSource ?

Запускаю простой скрипт:
Код
my_status = my_CreateDataSource__HISTORY__wrapper("TQBR","SBER", "INTERVAL_M1")
my_status = my_CreateDataSource__HISTORY__wrapper("TQBR","GAZP", "INTERVAL_M1")
my_status = my_CreateDataSource__HISTORY__wrapper("TQBR","ZILL", "INTERVAL_M1")
my_status = my_CreateDataSource__HISTORY__wrapper("TQBR","YRSBP", "INTERVAL_M1")
my_status = my_CreateDataSource__HISTORY__wrapper("TQBR","YRSB", "INTERVAL_M1")
my_status = my_CreateDataSource__HISTORY__wrapper("TQBR","YNDX", "INTERVAL_M1")
my_status = my_CreateDataSource__HISTORY__wrapper("TQBR","YKENP", "INTERVAL_M1")
...
и так штук 200-300

-------------------------
while not stopped do 
sleep(1)
end 
-------------------------


Квик падает с ошибкой:


[img]data:image/png;base64,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[/img]
По некотрым акциям - формируются не все интервалы свечи
 
Перезапустил Квик - заработало.
Что ж за странность такая.
По некотрым акциям - формируются не все интервалы свечи
 
Цитата
nikolz написал:
А у меня до сих пор пусто. :(
Странно все это.
По некотрым акциям - формируются не все интервалы свечи
 
Цитата
Karina Dmitrieva написал:
Здравствуйте, Quikos_1.

В моменте не наблюдаем описываемое Вами поведение, информация на графике отображается (см. скриншоты: М60, Н4).
Обращались ли Вы по данному вопросу к Вашему брокеру?
Также просьба приложить скриншот как именно отображается информация в настоящий момент на Вашей стороне и какую версию Рабочего места QUIK Вы используете.
Вот скриншоты:



к брокеру не обращался, так как не понял на чьей стороне проблем в итоге.
По некотрым акциям - формируются не все интервалы свечи
 
Кто нибудь их тех.поддержки мог бы оперативно проверить эту ошибку сразу по мере ее отлавливания ?
По некотрым акциям - формируются не все интервалы свечи
 
Похоже это ошибка Квика плавающая.
ПРЯМО сейчас на момент - 08.02.2023 в 16:32 по москве - на графике Яндекс(TQBR:YNDX) не отображаются свечи - Часового и 4 часового интервалов.
Причем это ошибка распространяется и на API: CreateDataSource - так же не получает данные по указанным интервалам.

Это очень плохо, так как нет возможности отслеживать параметры и даже просто заказать историю. В чем может быть дело ?
Страницы: 1 2 След.
Наверх