Как получить код клиента если известна Фирма и Счёт?

Страницы: 1
RSS
Как получить код клиента если известна Фирма и Счёт?, Как получить код клиента если известна FIRMID и ACCOUNT?
 
FIRMID и ACCOUNT для спотового рынка мне получить удалось из таблички фьючерсов
Код
function set_ACCOUNT_FIRMID()
if gACCOUNT~='' then return gACCOUNT end
if gSpot==true then
   local TableName='trade_accounts' -- https://luaq.ru/getItem.html#param_table_26
   local rows_total=getNumberOf(TableName);
   for r=rows_total-1, 0, -1  do
      local table_row=getItem(TableName,r);
      if tonumber(table_row.firmuse)==1 and tonumber(table_row.trdacc_type)==4 then
         gFIRMID=table_row.firmid
         gACCOUNT=table_row.trdaccid
         if gCLIENT_CODE=='' then gCLIENT_CODE=gACCOUNT end         
         if gACCOUNT~='' then return; end
      end
   end
   stop();
end
end
Как получить CLIENT_CODE?
В какой таблице он лежит?
 
Он лежит в таблице
client_codes* Коды клиентов
Чтобы узнать какой Ваш  ищите  клиента, у которого есть деньги или акции
Если это не Вы, то компьютер чужой..  
 
В документации ошибка: сказано, что возвращается строка, а на самом деле таблица.
https://euvgub.github.io/QLua/?page=22
Код
function set_ACCOUNT_FIRMID()
if gACCOUNT~='' then return gACCOUNT end
if gSpot==true then
   local TableName='trade_accounts' -- https://luaq.ru/getItem.html#param_table_26
   local rows_total=getNumberOf(TableName);
   for r=rows_total-1, 0, -1  do
      local table_row=getItem(TableName,r);
      if tonumber(table_row.firmuse)==1 and tonumber(table_row.trdacc_type)==4 then
         gFIRMID=table_row.firmid
         gACCOUNT=table_row.trdaccid
         --if gCLIENT_CODE=='' then gCLIENT_CODE=gACCOUNT end         
         local TableName=getNumberOf('client_codes') --функция getNumberOf(«client_codes») возвращает количество доступных кодов клиента в терминале, 
         for i=rows_total-1, 0, -1  do
            local string_row=getItem(TableName,i) -- а функция getItem(«client_codes», i) –строку, содержащую клиентский код с индексом i, где i может принимать значения от 0 до getNumberOf(«client_codes») -1

            message(tostring(i)..'client_code1= '..tostring(string_row)) -- результат table: 000000001A1F2C10

            message(tostring(i)..'client_code2= '..tostring(string_row[i])) -- результат nil

            message(tostring(i)..'client_code3= '..tostring(string_row.client_code)) -- результат nil

         end
         stop();
         if gACCOUNT~='' then return; end
      end
   end
   stop();
end
Как понять, что за структура этой таблицы клиентов?
 
Разобрался. Действительно строка возвращается.

Код клиента получен.
 
По причине того, что каждый брокер делает настройки, кто во что горазд, то код нерабочий.
Наверно проще делать свой файл настроек для каждого брокера, где ручками прописывать три ключевых параметра торговли FIRMID, ACCOUNT, CLIENT_CODE
Код
function set_ACCOUNT_FIRMID_Spot()
  if gACCOUNT == '' then
    return gACCOUNT
  end
  
  if gSpot then
    local TableName = 'trade_accounts'
    local rows_total = getNumberOf(TableName)
    
    for r = rows_total - 1, 0, -1 do
      local table_row = getItem(TableName, r)
      
      if tonumber(table_row.firmuse) == 1 and tonumber(table_row.trdacc_type) == 4 then
        gFIRMID = table_row.firmid
        gACCOUNT = table_row.trdaccid
        
        if gCLIENT_CODE == '' then 
          local TableName2 = 'client_codes' --функция getNumberOf(«client_codes») возвращает количество доступных кодов клиента в терминале, 
          local rows_total2 = getNumberOf(TableName2)
          
          for i = 0, rows_total2 - 1 do
            local str_CLIENT_CODE = getItem(TableName2, i) --, а функция getItem(«client_codes», i) –строку, содержащую клиентский код с индексом i, где i может принимать значения от 0 до getNumberOf(«client_codes») -1
                  --Срок расчётов. Возможные значения:положительные целые числа, начиная с «0», 
         --соответствующие срокам расчётовиз таблицы «Позиции по деньгам»: «0» –T0, «1» –T1, «2» –T2 и т.д.;
         --отрицательные целые числа –технологические лимиты(используются для внутренней работы системы QUIK)
            MoneyExTable = getMoneyEx(gFIRMID, str_CLIENT_CODE, 'EQTV', 'SUR', 2)
            
            if MoneyExTable ~= nil then
              if tonumber(MoneyExTable.currentbal) > 0 and tonumber(MoneyExTable.leverage) > 0 then
                gCLIENT_CODE = str_CLIENT_CODE
              end
            end
          end
          
          if gCLIENT_CODE == '' then 
            gCLIENT_CODE = gACCOUNT 
          end
        end
        
        message(gCLIENT_CODE)
        if gACCOUNT ~= '' then 
          return 
        end
      end
    end
    
    return
  end
end
Последнюю версию кода прилагаю, может у кого возникнет мысль как автоматизировать получение ключевых параметров для торговли.
 
делаю это автоматом.
------------------------
код клиента связан не только с фирмой и счетом, но и с биржей
--------------------
Надо выбирать те коды, у которых есть либо деньги либо позиции либо оба признака.
-----------------------
Торговый счет тоже связан с классами
------------------
В итоге надо выбрать для каждого класса  фирму счет и клиента.
----------------------
Т е собирать 4 параметра вместе, а не три как у Вас.
 
Страницы: 1
Читают тему
Наверх