 ## 用户名 Email 自动登录 找回密码 密码 注册账号
 搜索

# [提问] 本书P125的程序问题，fill函数与dynamicDateTicks怎么使用，求指导 发表于 2018-4-12 16:16:16 | 显示全部楼层 |阅读模式
 function Kplot(varargin) %% fun help % function Kplot(O,H,L,C) %          Kplot(O,H,L,C,date) %          Kplot(O,H,L,C,date,colorUp,colorDown,colorLine) %          Kplot(OHLC) %          Kplot(OHLC,date) %          Kplot(OHLC,date,colorUp,colorDown,colorLine) % % To use colors without a date, put '0' as date %     i.e. Kplot(OHLC,0,'b','r','k'); % % required inputs: column vectors of O(pen), H(igh), L(ow) % and C(lose) prices of commodity. % Alternative: OHLC matrix of size [rowsx4] % % optional inputs [default]: % - date: serial date number (make with 'datenum') [no dates, index#] % - colorUp: Color for up candle                   ['w'] % - colorDown: Color for down candle               ['k'] % - colorLine: Color for lines                     ['k'] % % Note: identical inputs as required for barChartPlot except for colors % See if we have [OHLC] or seperate vectors and retrieve our % required variables (Feel free to make this code more pretty ;-) %% 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,     colorDown = 'k';     colorUp = 'w';     colorLine = 'k'; else     colorUp = varargin{3+indexShift};     colorDown = varargin{4+indexShift};     colorLine = varargin{5+indexShift}; end if nargin+isMat < 6,     date = (1:length(O))'; else     if varargin{2+indexShift} ~= 0         date = varargin{2+indexShift};         useDate = 1;     else         date = (1:length(O))';     end end % w = Width of body, change multiplier to draw body thicker or thinner % the 'min' ensures no errors on weekends ('time gap Fri. Mon.' > wanted % spacing) w=.3*min([(date(2)-date(1)) (date(3)-date(2))]); %%%%%%%%%%%Find up and down days%%%%%%%%%%%%%%%%%%% d=C-O; l=length(d); hold on %%%%%%%%draw line from Low to High%%%%%%%%%%%%%%%%% for i=1:l    line([date(i) date(i)],[L(i) H(i)],'Color',colorLine) end %%%%%%%%%%draw white (or user defined) body (down 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,colorDown) end %%%%%%%%%%draw black (or user defined) 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+isMat > 5) && useDate, %     tlabel('x');     dynamicDateTicks end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% hold off 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)  %此处是将x,y填充，为什么XY会是5个向量的坐标，不是只要4个就行了吗？ end dynamicDateTicks   %这个是什么意思呢？做什么用的？
 您需要登录后才可以回帖 登录 | 注册账号 本版积分规则 回帖后跳转到最后一页 |网站地图|MATLAB技术论坛|Simulink仿真论坛 ( 蜀ICP备19014457号

GMT+8, 2019-9-20 11:21 , Processed in 0.076129 second(s), 12 queries , Gzip On, MemCache On.