Вопрос-ответ

Автор записи: Дмитрий (Admin)
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 9, среднее: 5,00 из 5)
Загрузка...
LogoNew
Если Ваш вопрос не имеет отношения к какой-то определенной статье на данном сайте, то, пожалуйста, задавайте его в комментариях здесь.

Добавить комментарий

Вопрос-ответ: 2 403 комментария

  1. Здравствуйте, нашел ошибку интерпретатора, может можно как-то забороть?

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    
     -- lua 5.3 - это компилируется
    function getParameters(class)
    	if class == nil then
    		return getAllUsedParameters()
    	elseif class == "SPBFUT" then
    		return getFuturesParameters()
    	elseif class == "TQBR"   then
    		return getSharesParameters()
    	elseif class == "RTSIDX" then
    		return getIndexesParameters()
    	elseif class == "CETS"   then
    		return {  -- в lua 5.3. приходится оставлять так
    			"OHLCV";
    		}
    	else 
    		errorMessage("Неправильно указано имя класса: " .. tostring(class))
    	end
    end
     
     
    -- lua 5.3 - а это НЕТ  (в 5.1 собирается)
    function getParameters(class)
    	if class == nil then
    		return getAllUsedParameters()
    	elseif class == "SPBFUT" then
    		return getFuturesParameters()
    	elseif class == "TQBR"   then
    		return getSharesParameters()
    	elseif class == "RTSIDX" then
    		return getIndexesParameters()
    	elseif class == "CETS"   then
    		return getСurrenciesParameters()
    	else 
    		errorMessage("Неправильно указано имя класса: " .. tostring(class))
    	end
    end
      1. Написаны мной, возвращают таблички строк с названиями параметров. Да не, это точно ошибка интерпретатора, собраться-то оно должно и в 5.1 собирается, а в 5.3 нет - проверял и в квике и в zerobrain studio, сейчас взял переписал просто все по другому.

            1. ошибки луа? почитайте доки и посмотрите какие есть ошибки в версиях,
              я больше, чем уверен - вы не используете код для генерации ошибки.
              гадать на кофейной гуще - не моё, без кода ваших самописных функций вам никто ничего не скажет.

  2. Здравствуйте, подскажите, как узнать цену открытия дня или цену первой сделки сессии без data source . В таблице текущих торгов есть, а в справочнике getparamex не нашел . Спасибо

    1. Здравствуйте.
      описание параметров для getParamEx находится в info.chm -> 8-й раздел -> Функции для получения значений Таблицы текущих торгов.
      В самом низу будет ссылка на значения параметров функций. Вам пригодится.

  3. Здравствуйте. Возможно ли добавлять в файл .dat с котировками из папки \archive больше котировок за предыдущие периоды из текстового файла ? Т.е. есть текстового файл с котировками и его можно было загнать QUIK для анализа?

  4. Здравстсвуйте.
    Почему иногда происходит покупка по 1 лоту , когда в заявке стоит несколько лотов по рыночной цене и условие робота подразумевает совершение сделки только в тот момент , когда в стакане есть даже большее количество лотов ?

      1. Но получается так , что 60 человек по 1 лоту поставили по одной цене одновременно? Именно с 60 тью лотами такое происходило в моем примере и не один раз.
        Или как формируется сделка по заявке в тонком механизме - не совсем понятно, объясните пожалуйста и как можно избежать таких ситуаций, как подстраховаться?

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

            1. Никто с вас не будет брать комиссию за отдельную сделку, если эти сделки вызваны исполнением одной заявки.
              Никто не может знать - сколько сделок пройдет по заявке - никто.

  5. Добрый день.
    Пытаюсь использовать функцию AddLabel. В хепле написано, что дату и время метки нужно передавать в виде числа:
    DATE DOUBLE Дата в формате «ГГГГММДД», к которой привязана метка
    TIME DOUBLE Время в формате «ЧЧММСС», к которому будет привязана метка
    Не пойму как записать в указанном формате дату и время в вещественное число. Пробовал передавать сроки типа "20211020" и "180000" - метка не добавляется. Как правильно сформировать эти параметры?

  6. Здравствуйте.
    Подскажите какой ноут по характеристикам процессора и оперативки выбрать для оптимальной работы Quik c одновременным включением 10-20 роботов , не сложного уровня ( открыто будет 10-20 таблиц одновременно, несколько математических выражений, 1-2 функции коллбэка, и 3 последовательных заявки на сделку). Какой минимум выбрать ?

  7. Здравствуйте.
    Подскажите ,если не работают функции обратного вызова , просто не обрабатываются, что делать???
    пример скрипта :

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    is_run = true
    function main()
        while is_run do
            sleep(50)
        end;
    local depo={}
         function go()
    						local y=1
    						local depo = getDepoEx ("MC0003300000","10KXAX","VTBE","L01-00000F00",2)
    						if  type(depo)~="table"  then
    						message( "Таблицы  НЕТ, есть только..  "..type(depo),1)
    						else
    						y = depo.currentbal
                           end
    						return  y
    					end
    message("количество акций     "..tostring (y),1)
    end
     
     
    function OnStop()
    is_run = false
    end
    1. Привет!
      У вас ЛОКАЛЬНАЯ функция go() стоит ниже цикла поддержания работы потока main(). И у вас из функций обратного вызова только OnStop.
      Предполагаю, что подразумевается обработка события

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      
      local is_run = true
      function OnDepoLimit(dlimit)
        message( "OnDepoLimit\n" ..
         "Счет депо: " .. dlimit.trdaccid .. "\n" ..
          "Код клиента: " .. dlimit.client_code .. "\n" ..
          "Код инструмента: " .. dlimit.sec_code .. "\n" ..
          "Текущий остаток : " .. dlimit.currentbal .. "\n" , 2)
      end
       
      function main()
          while is_run do
              sleep(1)
          end;
      end
       
       
      function OnStop()
      is_run = false
      end
      1. Да, необходимо отследить результат сделки, поступление акций на счет, чтобы дальше выставить заявку на следующую сделку. Здесь фрагмент робота .

      2. Понял идею. Попробую сделать. Просто в самом начале по учебнику так пытался сделать , не получилось, может ошибся тогда. Проверю Спасибо.

    1. Привет!

      1
      2
      3
      4
      5
      6
      7
      8
      
      function main()
        while is_run do
          --тут код по обработке события исполнения стоп заявки, лучше сделать функцию и вызывать ее по необходимости
          while is_run do
            if стоп заявка исполнена then break end
          end
        end
      end