AlexGood
AlexGood личный блог
11 марта 2020, 14:19

Индикаторы дельты и горизонтального объема для КВИК

День добрый, друзья и коллеги!
Кому не жалко, cкиньте пожалуйста ссылку на индикатора маркет-дельты и горизонтального объема для КВИК!
26 Комментариев
  • KSN
    11 марта 2020, 14:22
    в втбшном квике есть уже горизонтальный объем, называется «глубина рынка»
    • Феликс Осколков
      11 марта 2020, 14:37
      KSN, это не объем, а количество заявок в пределах стакана
      • KSN
        11 марта 2020, 14:51
        Феликс Осколков, понял, спасибо!
  • Karim
    11 марта 2020, 14:47



  • (1:10) || algo
    11 марта 2020, 15:11

    Settings={}
    Settings.period = 100
    Settings.Name = «xHV»

    ---------------------------------------------------------------------------------------
    function FFF()
        local CC={}
        local LL={}
        local VV={}    
        
        return function(ind,  _p,_N)

            local index = ind
            local MAX = 0
            local MAXV = 0
            local MIN = 0
            local RR = 0
            local jj = 0
            local kk = 0
                    
            if index == 1 then
                VV={}
                CC={}
                LL={}
    ------------------
                VV[index]=V(index)
                CC[1]=0
                return nil
            end
    ------------------------------
                VV[index]=V(index)
            if index < (Size()-2) then return nil end
            
                MAX = H(index)
                MIN = L(index)
            for i = 0, _p-1 do
                MAX=math.max(MAX,H(index-i))
                MIN=math.min(MIN,L(index-i))
            end
            ----------------------------------------
            for i = 1, _N do CC[i]=0 end

            for i = 0, _p-1 do
             jj=math.floor( (H(index-i)-MIN)/(MAX-MIN)*(_N-1))+1
             kk=math.floor( (L(index-i)-MIN)/(MAX-MIN)*(_N-1))+1
                 for k=1,(jj-kk) do
                    CC[kk+k-1]=CC[kk+k-1]+V(index-i)/(jj-kk)
                 end
            end
            --------------------
            MAXV = 0
            for i = 1, _N do MAXV=math.max(MAXV,CC[i])end

            for i = 1, _N do
                CC[i]=math.floor(CC[i]/MAXV*50)
            end
            ---------------------
            for i = 1, _N do
                LL[i]= i/_N*(MAX-MIN)+MIN
                if CC[i]==0 then LL[i]=nil end
            end
            
        for i = 1, 50+1 do
        for j = 1, _N do
            if CC[j]>i then
                SetValue(index-i, j, LL[j])
            else
                SetValue(index-i, j, nil)
            end
        end
        end        

                return unpack(LL)
        end
    end
    ---------------------------------------------------------------------------------------

    function Init()
        Settings.line = {}
        for i = 1, 100 do
            Settings.line[i] = {}
            Settings.line[i] = {Color = RGB(255, 192, 0), Type = TYPE_LINE, Width = 1}
        end
        
        myFFF = FFF()
        return 100
    end
    function OnCalculate(index)
        return myFFF(index, Settings.period, 100)
    end
      • (1:10) || algo
        11 марта 2020, 15:37
        AlexGood, это вот сразу под рукой лежало, а дельту искать нужно без гарантии, что найду :)
    • Mezantrop
      11 марта 2020, 16:06
      (1:10) || algo, 
      А в какую папку и какое расширение файла?
      • (1:10) || algo
        11 марта 2020, 19:35
        AlexGood, я не пользуюсь индикаторами, но этот запускался. как мы выяснили (см. ниже) сработала автозамена при вставке кода на сайт. попробую по-другому.
        Settings={}
        Settings.period = 100
        Settings.Name = "xHV"
        
        ---------------------------------------------------------------------------------------
        function FFF()
                local CC={}
                local LL={}
                local VV={}     
                
                return function(ind,  _p,_N)
        
                        local index = ind
                        local MAX = 0
                        local MAXV = 0
                        local MIN = 0
                        local RR = 0
                        local jj = 0
                        local kk = 0
                                        
                        if index == 1 then
                                VV={}
                                CC={}
                                LL={}
        ------------------
                                VV[index]=V(index)
                                CC[1]=0
                                return nil
                        end
        ------------------------------
                                VV[index]=V(index)
                        if index < (Size()-2) then return nil end
                        
                                MAX = H(index)
                                MIN = L(index)
                        for i = 0, _p-1 do
                                MAX=math.max(MAX,H(index-i))
                                MIN=math.min(MIN,L(index-i))
                        end
                        ----------------------------------------
                        for i = 1, _N do CC[i]=0 end
        
                        for i = 0, _p-1 do
                         jj=math.floor( (H(index-i)-MIN)/(MAX-MIN)*(_N-1))+1
                         kk=math.floor( (L(index-i)-MIN)/(MAX-MIN)*(_N-1))+1
                                for k=1,(jj-kk) do
                                        CC[kk+k-1]=CC[kk+k-1]+V(index-i)/(jj-kk)
                                end
                        end
                        --------------------
                        MAXV = 0
                        for i = 1, _N do MAXV=math.max(MAXV,CC[i])end
        
                        for i = 1, _N do
                                CC[i]=math.floor(CC[i]/MAXV*50)
                        end
                        ---------------------
                        for i = 1, _N do
                                LL[i]= i/_N*(MAX-MIN)+MIN
                                if CC[i]==0 then LL[i]=nil end
                        end
                        
                for i = 1, 50+1 do
                for j = 1, _N do
                        if CC[j]>i then
                                SetValue(index-i, j, LL[j])
                else
                                SetValue(index-i, j, nil)
                end
            end
            end         
        
                                return unpack(LL)
                end
        end
        ---------------------------------------------------------------------------------------
        
        function Init()
                Settings.line = {}
                for i = 1, 100 do
                        Settings.line[i] = {}
                        Settings.line[i] = {Color = RGB(255, 192, 0), Type = TYPE_LINE, Width = 1}
                end
                
                myFFF = FFF()
                return 100
        end
        function OnCalculate(index)
                return myFFF(index, Settings.period, 100)
        end
        
          • (1:10) || algo
            11 марта 2020, 20:09
            AlexGood, а это не скрипт. Вам ниже ответили: 
            AlexGood, как и любой индикатор — ничего не надо запускать, нужно добавлять его на график
              • (1:10) || algo
                11 марта 2020, 20:27
                AlexGood, а какая разница, дельта ли, объем ли, любой другой ли? Все индикаторы одинаково добавляются на график. Либо не туда положили, либо не так указываете. Третьего не дано.
  • Serg
    11 марта 2020, 15:48
    Чего то не видит этот код квик, ошибка что ли там. PS: понял кавычки в Settings.Name не <<>>, а "" должны быть.
    Здесь у меня есть дельта: smart-lab.ru/blog/204994.php
    • (1:10) || algo
      11 марта 2020, 16:32
      Serg, видно, автозамена сработала. не обратил внимания
      • Serg
        11 марта 2020, 17:34
        (1:10) || algo, да, скорее всего так
          • Serg
            11 марта 2020, 18:29
            AlexGood, как и любой индикатор — ничего не надо запускать, нужно добавлять его на график, я использовал в отдельном окне как MACD например, (называется Delta), положив файл .lua в папку quik/LuaIndicators.
            И цитата из моего коммента по ссылке:
            чтобы работал этот индикатор, нужно у брокера включить передачу таблицы всех сделок
            Там еще можно почитать про особенности, например, истории нет для этого индикатора, т.к. у брокера нет истории по этой самой таблице, по которой считается та самая дельта.
              • Serg
                11 марта 2020, 20:27
                AlexGood, не знаю — только проверил все есть, называется «Delta» — такой ищете? Вы вот написали папку как «lua indicators», а надо без пробела, если у Вас с пробелом, то ничего и не увидите.
  • Serg
    11 марта 2020, 21:54
    Скопирую сюда из личной переписки пояснения для всех:
    Во, еще забыл, в свойствах индикатора надо задать инструмент, для текущего ри-3.20 это будет RIH0 (там сейчас стоит SRU5 кажется), также надо включить поток обезличенных сделок по этому инструменту (могут затормаживать квик) — это здесь Система-Заказ данных-Поток обезличенных сделок (по умолчанию у брокера это выключено, нужно звонить ему, чтобы для Вас лично включили), и потом по идее еще нужно создать где нибудь Таблицу обезличенных сделок для этого инструмента: Создать окно-Таблица обезличенных сделок. В обоих эих местах нужно задать фильтр для одного этого инструмента, чтобы не тащить  всю кучу данных.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн