Скрипт который выставляет заявку исходя из объема портфеля и предыдущей исполненной заявки

Страницы: 1
RSS
Скрипт который выставляет заявку исходя из объема портфеля и предыдущей исполненной заявки, Возникают непонятные проблемы с запросом информации о портфеле и заявке. Постоянно возвращается nil, что бы не спросил.
 
 Возникают непонятные проблемы с запросом информации о портфеле и заявке. Постоянно возвращается nil, что бы не спросил.  


function main()
   portfolio = getPortfolioInfo("all")
   message(tostring(portfolio))
end

ИЛИ

function main()
   portfolio = getParamEx("all")
   message(tostring(portfolio))
end



Думаю где-то что-то я сильно не понимаю. Мнение такое что getPortfolioInfo и  getParamEx не имеет доступа к портфелю или таблице заявок. Параметры бумаг конкретных могу получать. Например цену последней сделки Лукойла выдает легко. Использую Сберквик. Куда копать?  
 
Посмотрите внимательно на формат вызова функций
TABLE getPortfolioInfo (STRING firm_id, STRING client_code)                        
TABLE getParamEx (STRING class_code, STRING sec_code, STRING param_name)                        

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



Пытаюсь получить название акции из последней заявки, конечно ошибку дает.

-- Получаем последнюю заявку
local lastOrder = getNumberOf("orders") - 1
local orderClass = getClass("orders")
local order = orderClass:sharedClonable()

order:setClassCode("TQBR")
order:setSeccode(getParamEx("orders", lastOrder, "SECCODE").param_value)
order:setPrice(getParamEx("orders", lastOrder, "PRICE").param_value)

-- Получаем название акции из последней заявки
local securityClass = getClass("securities")
local security = securityClass:sharedClonable()

security:setClassCode(order:getClassCode())
security:setSecCode(order:getSecCode())

local securityInfo = security:info()

message("Название акции: " .. securityInfo.name)


Есть какой-нибудь код простенький что бы понять почему не работают эти запросы?  
 
 function main()
  portfolio = getParamEx (STRING class_code, STRING sec_code, STRING param_name)      
  message(tostring(portfolio))
end


Syntax error while compiling C:\Users\без п\Downloads\кнопка.lua: C:\Users\без п\Downloads\кнопка.lua:2: ')' expected near 'class_code'

Чем ему не нравится class_code?  
 
Alexey89, Alexey89, А на кой вообще нужна getPortfolioInfo? Мой скрипт и сам прекрасно всё знает и о своих заявках, и о сделках, и о состоянии портфеля, и обо всём остальном.
 
Я пытался всякие библиотеки подключать, но не одну так и не смог. Слишком много вопросов где их качать в каком виде как к ним обращаться. Думаю на ванильном LUA для квика проще разобраться. Задачка вроде плевая название акции и количество лотов из последней снятой или исполненной заявки. Но не асиливаю, я нуб(((    Где глянуть Ваш скрипт?  
 
Цитата
Alexey89 написал:
getParamEx (STRING class_code, STRING sec_code, STRING param_name)
Это же сигнатура функции. Т.е. надо передать код класса (строка), код бумаги (строка), имя получаемого параметра (строка). Возвращается таблица с данными или nil, в случае неудачи.

Читайте документацию по методам. Можно онлайн - https://luaq.ru/getParamEx.html
 
https://luaq.ru/getParamEx.html


-- Входная точка для скрипта
function main ()
   -- Инициализируем параметры для запроса
   param_name_buy = "BUYDEPO"
   param_name_sell = "SELLDEPO"
   class_code = "SPBFUT"
   sec_code = "SiH9"

   -- Запрошиваем ГО покупателя
   result = getParamEx (class_code, sec_code, param_name_buy)
   -- Выводим результат по ГО покупателя
   message(
       "Гарантийное обеспечение покупателя:\n"..
       "param_value = " .. tostring(result.param_value).. "; \n"
   )
   -- Запрашвиваем ГО продавца
   result = getParamEx (class_code, sec_code, param_name_sell)
   -- Выводим ГО продавца
   message(
       "Гарантийное обеспечение продавца:\n"..
       "param_value = " .. tostring(result.param_value).. "; \n"
   )
end


Мне надо самому получить sec_code, а не задавать его самому. Есть какая-либо возможность получить это название акции? Из заявки или активного графика или стакана открытого? Если глупость говорю простите. Я нуб, побольше бы реальных рабочих примеров  getParamEx  или какого аналога.  
 
Никто же не знает задачи. Алгоритм либо перебирает все бумаги некой коллекции и запрашивает данные, либо фиксируется на одной, двух и т.д.
 
Задача выставить заявку по данным которые взяты из последней заявки (название бумаги и число лотов).

1) Я зашел в бумагу, заявка исполнена.

2) Нажал скрипт с названием купить или скрипт с названием продать. И выставляется заявка с тейк профитом и стопом по бумаге с исполненной заявкой с таким же числом лотов который в исполненной заявке.  

3) профит!

Но как взять название бумаги и число лотов из последней заявки?  
 
Цитата
Alexey89 написал:
https://luaq.ru/getParamEx.html


-- Входная точка для скрипта
function main ()
   -- Инициализируем параметры для запроса
   param_name_buy = "BUYDEPO"
   param_name_sell = "SELLDEPO"
   class_code = "SPBFUT"
   sec_code = "SiH9"

   -- Запрошиваем ГО покупателя
   result = getParamEx (class_code, sec_code, param_name_buy)
   -- Выводим результат по ГО покупателя
   message(
       "Гарантийное обеспечение покупателя:\n"..
       "param_value = " .. tostring(result.param_value).. "; \n"
   )
   -- Запрашвиваем ГО продавца
   result = getParamEx (class_code, sec_code, param_name_sell)
   -- Выводим ГО продавца
   message(
       "Гарантийное обеспечение продавца:\n"..
       "param_value = " .. tostring(result.param_value).. "; \n"
   )
end


Мне надо самому получить sec_code, а не задавать его самому. Есть какая-либо возможность получить это название акции? Из заявки или активного графика или стакана открытого? Если глупость говорю простите. Я нуб, побольше бы реальных рабочих примеров  getParamEx  или какого аналога.  
Три вопроса, чтобы понять как Вам помочь:
1) На каком языке программирования умеете писать работающие программы?
2) Сколько времени Вы затратили на изучение программирования на Lua?
3) Сколько раз Вы прочитали документацию на QLua от начала до конца?
 
1) Весь опыт пара калькуляторов на джавсакрипте и пара простеньких батников.
2) Пару недель пытаюсь что-то делать на Lua, и продолжаю, через полгода думаю буду знать больше. Недавно понял в  main () слип не тормозит весь квик сразу, это был прорыв!  
3) Ни разу, смотрю несистемно, кусками, скорее всего это неправильно, но заставить себя систематически штудировать я не в силах. У меня много вопросов, но ответов нет в документации, примеров там мало, нужной информации мало. Интерпритация почему произошла какая ошибка там нет, как LUA работает под квиком. Думаю что важнее понимать спецификацию работы квика с LUA (куча прог где LUA работает, но ведь код для каждой конкретной проги будет разный? или все везде одинаково? вот где в документах ответ на этот вопрос? только опытный тут ответит), у меня сберквик думаю под ним свои ньюансы работы и куча кода из примеров просто не работает под ним, надо напильником его дорабатывать.

У меня вроде простая задачка "Нажал скрипт с названием купить или скрипт с названием продать. И выставляется заявка с тейк профитом и стопом по бумаге с исполненной заявкой с таким же числом лотов который в исполненной заявке."   Стоит ли от корки до корки все пройти что бы ее решить? Или это таки сложная задача?

Кстати она вообще выполнима средствами LUA на квике?  
 
Цитата
Alexey89 написал:
1) Весь опыт пара калькуляторов на джавсакрипте и пара простеньких батников.
2) Пару недель пытаюсь что-то делать на Lua, и продолжаю, через полгода думаю буду знать больше. Недавно понял в  main () слип не тормозит весь квик сразу, это был прорыв!  
3) Ни разу, смотрю несистемно, кусками, скорее всего это неправильно, но заставить себя систематически штудировать я не в силах. У меня много вопросов, но ответов нет в документации, примеров там мало, нужной информации мало. Интерпритация почему произошла какая ошибка там нет, как LUA работает под квиком. Думаю что важнее понимать спецификацию работы квика с LUA (куча прог где LUA работает, но ведь код для каждой конкретной проги будет разный? или все везде одинаково? вот где в документах ответ на этот вопрос? только опытный тут ответит), у меня сберквик думаю под ним свои ньюансы работы и куча кода из примеров просто не работает под ним, надо напильником его дорабатывать.

У меня вроде простая задачка "Нажал скрипт с названием купить или скрипт с названием продать. И выставляется заявка с тейк профитом и стопом по бумаге с исполненной заявкой с таким же числом лотов который в исполненной заявке."   Стоит ли от корки до корки все пройти что бы ее решить? Или это таки сложная задача?

Кстати она вообще выполнима средствами LUA на квике?  
У меня тоже брокер сбер.
Все работает нормально.
--------------------------
Ликбез:
-------------------
Все скрипты для QUIK пишутся почти по шаблону одинаково.
-----------------------
Для написания скриптов надо изучить две книжки:
-----------------
1) https://eligovision.ru/media/upload/lua.pdf
Примеры, а затем и скрипты на луа, лучше писать и тестить в редакторе SciTe.
-----------------
2) документация на библиотеку функций QLUA.
для тестирования функций QLUA установите демо версию QUIK  и подключитесь к демо серверу,
 
и еще...
на рынке быстро можно лишь слить депозит.  
Рынок (брокеры) любят Буратин.  
 
Спасибо. Начинаю чтение
Страницы: 1
Читают тему
Наверх