Эквивалентный финансовый график в Matlab - PullRequest
0 голосов
/ 23 сентября 2010

Не могу найти где-нибудь код Matlab для построения столбцов Equivolume. http://www.armsinsider.com/education/armsonthemarket/equiv_chart.asp Спасибо, Альберто

Ответы [ 3 ]

1 голос
/ 24 сентября 2010

Вот простая функция, основанная на блокпосте, как предложено zellus :

function hh = equivolumechart(x,w)
% EQUIVOLUMECHART - simple equivolume chart based on barplot
% x - 2xn high/low values, w - volume (box width)

h = boxplot(x,'width',w);
% make median unvisible
for ii=1:size(h,2)
    set(h(6,ii),'visible','off')
end
if nargout>0, hh = h; end 

end

Пример:

a = randi(10,2,10);
w = randi(10,1,10)/10;
equivolumechart(a,w)

Функция может быть переписана с использованием патчей, но эта работает довольно хорошо.

Вы, вероятно, можете использовать функцию CANDLE из ширины Financial Toolbox для установки объектов, но у меня нет набора инструментов.

0 голосов
/ 24 августа 2016
function [ ] = equivolumechart(highs, lows, volumes)
    % calculate pos of each box
    pos = zeros(length(volumes), 1);    
    for i=2:length(volumes)
        pos(i) = pos(i-1) + (volumes(i-1) + volumes(i))/2;
    end

    h = boxplot([highs'; lows'], 'width', volumes', 'positions', pos);
end

Ключ в том, чтобы найти положение каждого ящика.Так как «позиции» определяют вертикальную осевую линию ящиков, расстояние между двумя ящиками должно быть (объемы (i-1) + объемы (i)) / 2

0 голосов
/ 24 сентября 2010

boxplot может быть отправной точкой для создания собственного эквивалента .

...