function Kplot(varargin)
%% fun help
% function cndlv2(O,H,L,C)
% cndlv2(O,H,L,C,date)
% cndlv2(O,H,L,C,date,colorUp,colorDown,colorLine)
% cndlv2(OHLC)
% cndlv2(OHLC,date)
% cndlv2(OHLC,date,colorUp,colorDown,colorLine)
isMat=size(varargin{1},2);%获取传递的第一个参数包含的列数
indexShift=0;
useDate=0;
if isMat==4,%如果第一个参数是四列
O=varargin{1}(:,1);%获取传递的第一个参数,并赋值
H=varargin{1}(:,2);
L=varargin{1}(:,3);
C=varargin{1}(:,4);
else
O=varargin{1};
H=varargin{2};
L=varargin{3};
C=varargin{4};
indexShift=3;
end
if nargin+isMat<7, %nargin 是用来判断输入变量个数的函数
colorDown='g';
colorUp='r';
colorLine='k';
else
colorDown=varargin{3+indexShift};
colorUp=varargin{4+indexShift};
colorLine=varargin{5+indexShift};
end
%%% 用date确定绘图时各点的坐标
if nargin+isMat<6
date=(1:length(O))';
else
if varargin{2+indexShift}~=0
date=varvagin{2+indexShift};
useDate=1;
else
date=(1:length(O))';
end
end
w=.4*min([(date(2)-date(1)) (date(3)-date(2))]);%调整蜡烛图的宽度
d=C-O;%收盘价减去开盘价
l=length(d);
hold on
%%%% draw line from Low to High %%%%
%line([起点横坐标,终点横坐标],[起点纵坐标,终点纵坐标],'属性','属性对应的值')
for i=1:l
line([date(i) date(i)],[L(i) H(i)],'Color',colorLine,'LineWidth',2)
end
%%%% draw white (or user defined) body (down day) %%%%
% fill函数用以填充,(x,y)各坐标点用以构成一个封闭的区域
n=find(d<0);
for i=1:length(n)
x=[date(n(i))-w date(n(i))-w date(n(i))+w date(n(i))+w date(n(i))-w];
y=[O(n(i)) C(n(i)) C(n(i)) O(n(i)) O(n(i))];
fill(x,y,colorDown)
end
%%%% draw black (or use defineed) body(up day) %%%%
n=find(d>=0);
for i=1:length(n)
x=[date(n(i))-w date(n(i))-w date(n(i))+w date(n(i))+w date(n(i))-w];
y=[O(n(i)) C(n(i)) C(n(i)) O(n(i)) O(n(i))];
fill(x,y,colorUp)
end
%%
% if (nargin+isMate>5)&& useDate
% % tlabel('x');
% dynamicDateTicks
% end
hold off