Tick2Bar

Divides a time series into periods and returns high, low, open, close, volume.

You are now following this Submission

TICK2BAR
[T,H,L,O,C,V]=Tick2Bar(t,p,v,g)
Divides a time series into periods of g days
(may be less than one day).
It is useful in conjunction with HIGHLOW
[T,H,L,O,C,V]=Tick2Bar(t,p,v,g);
highlow(H(:),L(:),C(:),O(:),'k',T(:));

It returns:

T date/time of the period
H high of the period
L low of the period
O open (first datum of the period)
C close (last datum of the period)
V volume of the period

given

t date/time
p price
v volume
g time granularity [days]

USAGE

% test data
N=1e4;
g=1/(24*60*60); % 1 minute granularity
t=([1:N]+rand(1,N)).*g; % time
p=100+rand(1,N).*10; % price
v=1e4.*rand(1,N); % volume
% add some test-NANs
a=randperm(N);
v(a(1:10))=nan;

g=1/(24*60*60); % 1 minute granularity
[T,H,L,O,C,V]=Tick2Bar(t,p,v,g);

subplot(6,1,1:2);
plot(t,p,'k');
datetick;
title('plot(t,p,''k'');')

subplot(6,1,3);
plot(t,v,'k');
datetick;
title('plot(t,v,''k'');');

subplot(6,1,4:5);
highlow(H(:),L(:),C(:),O(:),'k',T(:));
datetick;
title('highlow(H(:),L(:),C(:),O(:),''k'',T(:));');

subplot(6,1,6);
plot(T,V,'k');
datetick;
title('plot(T,V,''k'');');

h=suptitle('[T,H,L,O,C,V]=Tick2Bar(t,p,v,g);');
set(h,'FontSize',get(h,'FontSize').*2, ...
'FontWeight','Bold');

IT'S NOT FANCY BUT IT WORKS

Cite As

Michael Robbins (2026). Tick2Bar (https://www.mathworks.com/matlabcentral/fileexchange/3398-tick2bar), MATLAB Central File Exchange. Retrieved .

Categories

Find more on Financial Toolbox in Help Center and MATLAB Answers

General Information

MATLAB Release Compatibility

  • Compatible with any release

Platform Compatibility

  • Windows
  • macOS
  • Linux
Version Published Release Notes Action
1.0.0.0

Speed increases on the order of 10x (input data with NaN's may produce different output than before change.