在matlab中等待异步函数调用的结果

时间:2017-02-15 19:13:07

标签: matlab function asynchronous

所以我正在尝试从IQFeed获取历史股票数据。我有一个我想要获取数据的符号列表。问题是IQFeed timeseries函数异步返回数据,所以我不能只使用一个简单的for循环来获取所有数据。

我假设有一种方法可以使用事件处理程序来执行此操作,但是查看默认处理程序,它会超出我的想象。

1 个答案:

答案 0 :(得分:0)

尝试使用IQML(Matlab连接器到IQFeed),它在Matlab中运行并直接连接到IQFeed。 IQML支持阻塞(同步快照)和非阻塞(异步流)查询。

为回答OP问题,下面是使用IQML将历史IQQFeed数据同步(即阻塞)取入Matlab的示例:

>> data = IQML('history', 'symbol','IBM', 'dataType','day')
data = 
  100×1 struct array with fields:
    Symbol
    Datestamp
    Datenum
    High
    Low
    Open
    Close
    PeriodVolume
    OpenInterest

>> data(1)
ans = 
          Symbol: 'IBM'
       Datestamp: '2017-10-10'
         Datenum: 736978
            High: 148.95
             Low: 147.65
            Open: 147.71
           Close: 148.5
    PeriodVolume: 4032601
    OpenInterest: 0

IQML支持整个IQFeed API,包括:

  • 阻塞式(同步快照)和非阻塞式(异步流)数据查询
  • 实时Level1顶级市场数据(报价和交易)
  • Live Level2市场深度数据
  • 历史,日内和实时市场数据(单个报价或间隔条)
  • 有关资产的基本信息
  • 期权和期货链查询(带有最新的市场数据和希腊数据)
  • 符号和市场代码查询
  • 新闻标题,故事计数和完整的新闻故事,并带有用户指定的过滤器
  • 将用户定义的Matlab回调函数附加到IQFeed消息和市场事件的能力
  • 有关流媒体市场事件的用户定义的自定义警报(新闻/报价/时间间隔栏/区域触发器)
  • 连接状态和程序化连接/断开连接

用户可以使用普通的Matlab将上述所有功能组合在一起,形成一个完善的端到端自动交易系统。

IQML在所有最新的Matlab / IQFeed版本和平台(Windows,Linux,Mac)上均可使用。 它可靠,易于使用且闪电般快速(包括可选的并行化)。 IQML随附了详细的User Guide,其中包含用法示例,示例Matlab脚本和实现技巧。

IQML仅需要核心Matlab即可运行-不需要工具箱(并行化使用Parallel Computing Toolbox,但是IQML即使没有它也可以很好地运行)。

Yair Altman

IQML.nethttps://UndocumentedMatlab.com/IQMLhttps://github.com/altmany/IQML