Блог им. AlexGood

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

День добрый, друзья и коллеги!
Кому не жалко, cкиньте пожалуйста ссылку на индикатора маркет-дельты и горизонтального объема для КВИК!
  • обсудить на форуме:
  • QUIK
★7
30 комментариев
в втбшном квике есть уже горизонтальный объем, называется «глубина рынка»
avatar
KSN, это не объем, а количество заявок в пределах стакана
Феликс Осколков, понял, спасибо!
avatar
KSN, Эта глубина рынка и в БКСсовском КВИКе есть, но мне не интересна!

avatar



avatar
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
avatar
(1:10) || algo, спасибо, а дельты нет?
avatar
AlexGood, это вот сразу под рукой лежало, а дельту искать нужно без гарантии, что найду :)
avatar
(1:10) || algo, 
А в какую папку и какое расширение файла?
avatar
Mezantrop, quik/LuaIndicators, .lua
avatar
(1:10) || algo, вы сами этот код запускали? То одну ошибку выдает, то другую, он нуждается в корректировке!
avatar
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
avatar
(1:10) || algo, добавил скорректированный код в LuaIndicators, через Lua скрипты все равно не запускается! Что делать?
avatar
AlexGood, а это не скрипт. Вам ниже ответили: 
AlexGood, как и любой индикатор — ничего не надо запускать, нужно добавлять его на график
avatar
(1:10) || algo, то же я про дельту спрашивал, а у вас гориз объем, как его добавить на график? Автоматом он в списке индикаторов не появился!
avatar
AlexGood, а какая разница, дельта ли, объем ли, любой другой ли? Все индикаторы одинаково добавляются на график. Либо не туда положили, либо не так указываете. Третьего не дано.
avatar
Чего то не видит этот код квик, ошибка что ли там. PS: понял кавычки в Settings.Name не <<>>, а "" должны быть.
Здесь у меня есть дельта: smart-lab.ru/blog/204994.php
avatar
Serg, видно, автозамена сработала. не обратил внимания
avatar
(1:10) || algo, да, скорее всего так
avatar
Serg, как вашу дельту заставить работать? Помещаю Ind_Delta в папку lua indicators, в квике в lua cкрипты нажимаю «запустить» — не реагирует!
avatar
AlexGood, как и любой индикатор — ничего не надо запускать, нужно добавлять его на график, я использовал в отдельном окне как MACD например, (называется Delta), положив файл .lua в папку quik/LuaIndicators.
И цитата из моего коммента по ссылке:
чтобы работал этот индикатор, нужно у брокера включить передачу таблицы всех сделок
Там еще можно почитать про особенности, например, истории нет для этого индикатора, т.к. у брокера нет истории по этой самой таблице, по которой считается та самая дельта.
avatar
Serg, несмотря на то что этот индикатор дельты в нужной папке, квик его не видит, он не появляется среди стандартных КВИКовских индикаторов! Что предпринять?
avatar
AlexGood, не знаю — только проверил все есть, называется «Delta» — такой ищете? Вы вот написали папку как «lua indicators», а надо без пробела, если у Вас с пробелом, то ничего и не увидите.
avatar
Скопирую сюда из личной переписки пояснения для всех:
Во, еще забыл, в свойствах индикатора надо задать инструмент, для текущего ри-3.20 это будет RIH0 (там сейчас стоит SRU5 кажется), также надо включить поток обезличенных сделок по этому инструменту (могут затормаживать квик) — это здесь Система-Заказ данных-Поток обезличенных сделок (по умолчанию у брокера это выключено, нужно звонить ему, чтобы для Вас лично включили), и потом по идее еще нужно создать где нибудь Таблицу обезличенных сделок для этого инструмента: Создать окно-Таблица обезличенных сделок. В обоих эих местах нужно задать фильтр для одного этого инструмента, чтобы не тащить  всю кучу данных.
avatar
Serg, сделал все как вы говорили: на график индикатор Дельта добавил, тикер в коде индикатора заменил на текущий, поток обезличенных сделок и таблица есть, cделки проходят в таблице, но вот на графике в окне этого индикатора ничего не происходит, нарисовалась ваша темно-синяя горизонтальная линия и все!
avatar
AlexGood, при старте индикатора линия показывает последнее значение накопленной дельты (т.е. нет истории), а вот по ходу дальнейшей работы эта линия должна показывать изменение позиций, ну и так же следует учитывать что все это работает только внутри дня, т.к. таблица всех сделок сбрасывается с новым днем. Вроде так работало. Я то уже давно его не использую, как впрочем и саму таблицу всех сделок — уж сильно оно грузит трафик, а толку особо я так и не поимел :)
avatar
Serg, то есть это только кумулятивная дельта?
avatar
AlexGood, да
avatar

теги блога AlexGood

....все тэги



UPDONW
Новый дизайн