DDE:Excel分析中的时间序列

简介:我需要使用DDE在Excel中存储/分析进入1个单元格的实时时间序列。

问题:由于它是一个不断变化的单元格,我不知道如何获取更新值的每个实例,所以我可以在其他公式,图表等中使用它。毫秒,我想要得到实际的时间序列(t,t-1,t-2,t-3等)。 我不知道如何作为一个时间序列存储。

详情:我正在使用MetaTrader 4(MT4)开发一些分析。 导入实时价格的代码如下所示:

=MT4|BID!EURUSD =MT4|ASK!EURUSD =MT4|HIGH!EURUSD =MT4|LOW!EURUSD =MT4|TIME!EURUSD 

我希望能够使用各种公式中的时间序列来实时计算和更新图表。 如果我可以将实时数据发送给MATLAB,那也是有帮助的。 但是实时分析必须要有实时的数据。

谢谢你的帮助。

如果您打开VBA解决scheme,则可以使用Workbook.SetLinkOnData方法在传入数据更改时调用Sub。

我build议只响应TIME主题上的更改,并一次性复制所有相关数据

基于这个数据布局

基于这个数据布局

在Open事件中设置监视器(将其放置在ThisWorkbook模块中)

 Sub Workbook_Open() Dim wb As Workbook Dim Links As Variant Dim i As Long Set wb = ThisWorkbook Links = wb.LinkSources(xlOLELinks) For i = LBound(Links) To UBound(Links) If Left$(Links(i), 8) = "MT4|TIME" Then wb.SetLinkOnData Links(i), "MT4_OnUpdate" End If Next End Sub 

并在正常模块中编写您的数据处理程序

 Sub MT4_OnUpdate() ' DDE Updated TIME, copy data Dim ws As Worksheet Dim Source As Range Dim Dest As Range Set ws = Worksheets("Your DDE Data Sheet") With ws Set Source = ws.Range("A2:E2") Set Dest = .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, Source.Columns.Count) End With Dest.Value = Source.Value End Sub 

这会将单元格A2:E2复制到历史数据列表的底部,每次A2 (MT4的时间戳记)发生更改。

注意:你在OP中说你想更新每毫秒。 这不会发生,因为MT4|TIME正在返回分辨率为1秒的DateTime序列。 即使可能发生,Excel也能处理太多的数据

我build议你尝试FxOne.com的平台。
你可以免费试用30天。 如果您是FXCM的客户,那么完全免费。

它比excel更强大,因为不使用VBA,而是适用于algorithm交易的C ++。 VBA非常适合分析,但不适合交易。 我试图做什么,每次Excel崩溃。 有了这个平台,一切都非常顺利。