[英]DDE: Time series in Excel analysis
摘要:我需要使用 DDE 在 Excel 中存储/分析进入 1 个单元格的实时时间序列。
问题:由于它是 1 个不断变化的单元格,我不知道如何获取更新值的每个实例,以便我可以在其他公式、绘图等中使用它。所以它在 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 解决方案持开放态度,则可以使用Workbook.SetLinkOnData
方法在传入数据更改时调用 Sub。
我建议只响应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 也无法处理太多的数据
我建议你试试FxOne.com这个平台。
您可以免费试用 30 天。 如果您是 FXCM 的客户,则完全免费。
它比excel更强大,因为不使用VBA,而是使用非常适合算法交易的C++。 VBA 非常适合分析,但不适合交易。 每次 Excel 崩溃时,我都试图做正在寻找的事情。 有了这个平台,一切都非常顺利。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.