awg_position_price

Страницы: 1
RSS
awg_position_price
 
Доброго времени суток. Хотелось бы узнать из за чего происходит следущее:

я стараюсь узнать цену открытия по акциям, но вместо этого получаю в ответ цену деленную на 100. То есть, 1621,5 =  16,215.
Это был тест на демке Арки, на реале не проверял. Это только с демо счетом актуально ? или же на реале так же будет ?
 
Андрей,

Здравствуйте,
Проблема не воспроизводится.
Просьба предоставить код скрипта.
 
Цитата
Sergey Gorokhov написал:
Просьба предоставить код скрипта.

Код работает верно сейчас, но если убрать умножение на 100 (там где у меня стоит комментарий " -- Уточнить нужно ли умножать на 100") и попробовать достучаться до цены открытия позиции по акциям, то тогда описанная мною проблема как раз и всплывает (без этого умножения у меня цена возвращается деленная на 100).
Код
select_CurrentDeals = function(account,class_code,sec_code,limit_kind)
      
      isPosition = false;
      T_position={};
      T_position.class_code = class_code;
      T_position.sec_code = sec_code;
      T_position.account = account;
            
      close_price = getParamEx(class_code,sec_code,"last").param_value;
      
      if class_code == "SPBFUT" then
      
      T_position.position_type = 0;
      
         for i = getNumberOf("futures_client_holding")-1,0,-1 do
            T = getItem("futures_client_holding",i);
            
            if T.sec_code == sec_code and
               T.totalnet ~= 0 then
               
               if T.totalnet > 0 then
                  T_position.position_type = 1;
               else
                  T_position.position_type = -1;
               end;
               
               T_position.qty = math.abs(T.totalnet);
               T_position.price = T.avrposnprice;
               
               if T_position.position_type > 0 then
                  T_position.current_PL = close_price - T_position.price;
               else
                  T_position.current_PL =  T_position.price - close_price;
               end;
               
               break;
            end;
         end;
      else
      T_shares = {};
         for i = getNumberOf("depo_limits")-1,0,-1 do
            T = getItem("depo_limits",i);
            
            if T.sec_code == sec_code and 
               T.limit_kind == limit_kind and
               T.trdaccid == account and
               T.currentbal ~= 0 then
               
               isPosition = true;
               T_shares = T;
               break;
            end;
         end;
      
         if isPosition then
            lotSize = 1;
            for i = getNumberOf("securities")-1,0,-1 do
               T = getItem("securities",i);
               if T.code == sec_code and T.class_code == class_code then
                  lotSize = T.lot_size;
                  break;
               end;
            end;
            
            T_position.price = (T_shares.awg_position_price*100); -- Уточнить нужно ли умножать на 100
            T_position.qty = math.abs(T_shares.currentbal/lotSize);
            
            if T_shares.currentbal > 0 then
               T_position.position_type = 1;
            else
               T_position.position_type = -1;
            end;
         
            if T_position.position_type > 0 then
               T_position.current_PL = close_price - T_position.price;
            else
               T_position.current_PL =  T_position.price - close_price;
            end;
         else
            T_position.position_type = 0;
         end;
      end;
      
      return T_position;
   end;
 
Андрей,
Уточните еще по какому инструменту Вы смотрите данные.
 
Цитата
Sergey Gorokhov написал:
Уточните еще по какому инструменту Вы смотрите данные

BANEP
MTLR
 
Цитата
Sergey Gorokhov написал:
Уточните еще по какому инструменту Вы смотрите данные.
Однако жто как я понял на всех акциях так получается (повторюсь, что я на демке смотрел). и повторюсь что для того что бы описанная проблемма имела место, нужно убрать в функции умножение на 100.
 
Проблема изучается. Постараемся в ближайшее время дать ответ.
 
Sergey Gorokhov,

Есть ли новости по заданному мною вопросу ?
 
Андрей,
Пока нет.
Как только новости появятся, они в обязательном порядке будут здесь озвучены.
 
Андрей, Добрый день,
     
      Ошибка будет исправлена в одной из следующих версий терминала.
 
Zoya Skvorcova, здравствуйте!

В руководстве по QLua для версии QUIK 7.16.3.14 в описании параметров Таблицы лимитов по бумагам, получаемых по событию OnDepoLimit, цена приобретения указана как wa_position_price, но не awg_position_price.
Будет ли в новых версиях QUIK поддерживаться параметр awg_position_price?
Спасибо!
 
Илья,

Это одно и тоже, только называется по разному и добавлять ничего не будем ибо нет смысла дублировать одну цифру два раза.
 
Сегодня 11.05.2018 проблема ( цена / 100 ) повторилась. На всех акциях. Возможно после обновления QUIK до 7.16.3.14.
sec_code=VTBR entry_price=0.00051057 lotsize=10000
entry_price=myFuncGet ("depo_limits", "sec_code", sec_code, "limit_kind", 2, "awg_position_price")
.... getItem(table_name, i)[key3]
 
Goodchild,
Здравствуйте,
Описанная в данном посте ошибка еще не была устранена.
Как уже было сказано она будет исправлена в одной из следующих версий терминала, а не в текущей версии.
 
Цитата
Андрей написал:
Цитата
Sergey Gorokhov   написал:
Просьба предоставить код скрипта.
Код работает верно сейчас, но если убрать умножение на 100 (там где у меня стоит комментарий " -- Уточнить нужно ли умножать на 100") и попробовать достучаться до цены открытия позиции по акциям, то тогда описанная мною проблема как раз и всплывает (без этого умножения у меня цена возвращается деленная на 100).
Код
  select_CurrentDeals  =   function (account,class_code,sec_code,limit_kind)
      
      isPosition  =   false ;
      T_position = {};
      T_position.class_code  =  class_code;
      T_position.sec_code  =  sec_code;
      T_position.account  =  account;
            
      close_price  =   getParamEx (class_code,sec_code,"last").param_value;
      
       if  class_code  =  =   "SPBFUT"   then 
      
      T_position.position_type  =   0 ;
      
          for  i  =   getNumberOf ( "futures_client_holding" ) -  1 , 0 , -  1   do 
            T  =   getItem ( "futures_client_holding" ,i);
            
             if  T.sec_code  =  =  sec_code  and 
               T.totalnet ~ =   0   then 
               
                if  T.totalnet  >   0   then 
                  T_position.position_type  =   1 ;
                else 
                  T_position.position_type  =   -  1 ;
                end ;
               
               T_position.qty  =   math.abs (T.totalnet);
               T_position.price  =  T.avrposnprice;
               
                if  T_position.position_type  >   0   then 
                  T_position.current_PL  =  close_price  -  T_position.price;
                else 
                  T_position.current_PL  =   T_position.price  -  close_price;
                end ;
               
                break ;
             end ;
          end ;
       else 
      T_shares  =  {};
          for  i  =   getNumberOf ( "depo_limits" ) -  1 , 0 , -  1   do 
            T  =   getItem ( "depo_limits" ,i);
            
             if  T.sec_code  =  =  sec_code  and  
               T.limit_kind  =  =  limit_kind  and 
               T.trdaccid  =  =  account  and 
               T.currentbal ~ =   0   then 
               
               isPosition  =   true ;
               T_shares  =  T;
                break ;
             end ;
          end ;
      
          if  isPosition  then 
            lot Size   =   1 ;
             for  i  =   getNumberOf ( "securities" ) -  1 , 0 , -  1   do 
               T  =   getItem ( "securities" ,i);
                if  T.code  =  =  sec_code  and  T.class_code  =  =  class_code  then 
                  lot Size   =  T.lot_size;
                   break ;
                end ;
             end ;
            
            T_position.price  =  (T_shares.awg_position_price *  100 );  -- Уточнить нужно ли умножать на 100 
            T_position.qty  =   math.abs (T_shares.currentbal/lot Size );
            
             if  T_shares.currentbal  >   0   then 
               T_position.position_type  =   1 ;
             else 
               T_position.position_type  =   -  1 ;
             end ;
         
             if  T_position.position_type  >   0   then 
               T_position.current_PL  =  close_price  -  T_position.price;
             else 
               T_position.current_PL  =   T_position.price  -  close_price;
             end ;
          else 
            T_position.position_type  =   0 ;
          end ;
       end ;
      
       return  T_position;
    end ;
  
Добрый день,
     
      Описанная ошибка исправлена в версии 7.18.1       терминала QUIK.
      Рекомендуем вам обновить версию программы.
     
      Приносим извинения за причиненные неудобства.
Страницы: 1
Читают тему
Наверх