【问题标题】:Plotting Candle-chart from csv file从 csv 文件绘制蜡烛图
【发布时间】:2013-11-28 01:17:13
【问题描述】:

我有一个包含亚马逊股票信息的 .csv 文件

date,       closePrice, volume,  openPrice, highPrice, lowPrice
=============================================================== 
30/10/2013  361.08      4500014  362.62     365         358.65
29/10/2013  362.7       2184755  358.96     362.89      356.29
28/10/2013  358.16      3602497  359.92     362.75      357.2
25/10/2013  363.39      12034820 358.6      368.4       352.62
24/10/2013  332.21      5699188  329.63     332.6499    326.75

我已将此文件加载到 Matlab 中,现在我想从该文件中读取数据以生成烛台图。这就是我所做的:

clear;
close all;

file = '/Users/Documents/MATLAB/Candlestick Chart/Amazon.csv';

candle (file(:,2), file(:,3),file(:,4),file(:,5), 'b', file(:,1))

 set(file(:,5), 'FaceColor', 'g')
 set(file(:,6), 'FaceColor', 'r')

运行 .m 文件时出现错误提示:

Error using dlmread (line 139)
Mismatch between file and format string.
Trouble reading number from file (row 1u, field 2u) ==>
/10/2013,361.08,4500014,362.62,365,358.65\n

Error in csvread (line 48)
    m=dlmread(filename, ',', r, c);

我知道该软件无法将日期转换为矢量,谁能帮我将日期转换为矢量并绘制蜡烛图。因此,在 X 访问中,我想显示日期并根据最高价、最低价、收盘价、开盘价绘制蜡烛图。

【问题讨论】:

    标签: matlab csv candlestick-chart


    【解决方案1】:

    您可以使用textscan

     fid = fopen(filename, 'r')
     C = textscan(fid, '%s%f%f%f%f%f', 'Headerlines', 2);
     fclose(fid)
    

    然后使用C{2}C{3}、...中的向量作为您的绘图。

    【讨论】:

    • It(C) 创建了类似 {2516x1 cell}{2516x1 cell}{2516x1 cell}{2516x1 cell}{2516x1 cell}的东西。第一个单元格包含日期,其他单元格写了“Nan”?我想要我文件中的所有数据,而不仅仅是日期。
    • 您可能想要选择新的文本扫描选项(如分隔符、行号),或更改为 %s 而不是 %f 以查看读取的内容。 Textscan 在无法读取时停止,因此您的长度必须为 Cs = csv 行数。
    • 实际上上面的代码工作正常,但它将所有数据添加到第一列,所以 {2516x1 cell}{2516x1 cell}...如果我双击第一个单元格,我会得到这样的结果:28 /10/2013,358.16,3602497,359.92,362.75,357.2 从这里我想知道我可以绘制一个烛台图表,所以我知道每个数据都用逗号分隔,所以我可以在此基础上绘制图表吗??
    • DATE = C{1}; DATA1 = C{2}; DATA2 = C{3}; ....
    • 我设法通过执行以下操作来解决问题: textscan(fid,'%s %s %s %s %s %s',1, 'delimiter',',');我创建了另一个读取小数的数组。然后它将所有内容都存储在 outCell 中。 :,4), 'b', outCell(:,1))。它首先给了我两个错误:使用 vertcat 的错误和蜡烛中的第二个错误(第 76 行)。你能帮我解决这个问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    相关资源
    最近更新 更多