欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 套利价差错位

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2956人关注过本帖树形打印复制链接

主题:套利价差错位

帅哥哟,离线,有人找我吗?
林华强
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:247 积分:0 威望:0 精华:0 注册:2016/11/29 19:18:11
套利价差错位  发帖心情 Post By:2017/4/19 10:01:04 [显示全部帖子]

我做套利,经常会遇到两个品种由于行情推送速度不同导致了计算价差的异常,因为我用的是上一根K收盘价,请问一下怎样才能在两个品种下一根K线都出来时才计算上一根K线的价差?举例:
CU: 前两根K线9:00:59:999  价格46000    上一根K线9:01:59:999  价格46000       当前K线(下一根)K线9:02:00:010   
                                                                                                                 (速度快的,下一根K线第一笔数据先于NI推送过来)

NI: 前两根K线9:00:59:999  价格80500     上一根K线9:01:59:999  价格80000                    当前K线(下一根)9:02:00:500  
                                                                                                                             (速度慢的,下一根K线第一笔数据后于CU推送过来)
此时我计算价差就会出现错误:当CU下一根K线第一笔数据推送过来时由于NI下一根K线第一笔数据还没推送过来,程序运行就导致NI的上一根K线价格80000其实还没走完,那么计算价差就不是46000与80000相减,而是46000-80500,产生错位了!

 回到顶部
帅哥哟,离线,有人找我吗?
林华强
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:247 积分:0 威望:0 精华:0 注册:2016/11/29 19:18:11
  发帖心情 Post By:2017/4/19 10:27:03 [显示全部帖子]

VBA的,有什么可行的解决办法吗?

 回到顶部
帅哥哟,离线,有人找我吗?
林华强
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:247 积分:0 威望:0 精华:0 注册:2016/11/29 19:18:11
  发帖心情 Post By:2017/4/19 11:18:21 [显示全部帖子]

嗯嗯我要计算的价差是两个品种上一根K线的收盘价相减,但是由于有时候有个品种行情数据推送速度不一样,下一根K线出现有先后,会出现品种1的上一根K线减品种2上上根K线的这种错位情况!

 回到顶部
帅哥哟,离线,有人找我吗?
林华强
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:247 积分:0 威望:0 精华:0 注册:2016/11/29 19:18:11
  发帖心情 Post By:2017/4/20 9:45:09 [显示全部帖子]

老师你好,我把两个品种的行情数据推送速度不同的这个问题处理完后,发现避免了这个问题仍然会有价差计算异常的问题。最后发现金字塔在获取历史数据时也存在问题!
2017/4/20  9:32:00这一秒内的两笔数据不一样,正确的应该是第二笔78810,获取到的上一根收盘价,但是第一笔数据却是78840,这是上上根的收盘价。我获取的是行情时间2017/4/20  9:32:00,就是说下一根K线出来了,这两笔应该是一样的。请问这是什么原因呢?而且出现的概率不低,都是在00秒,这样也会带来价差计算的异常!
图片点击可在新窗口打开查看此主题相关图片如下:历史数据.png
图片点击可在新窗口打开查看
private HistoryData1, HistoryData2,diff
Sub TLStart()
    '"""注册品种"""
  call marketdata.RegReportNotify("NI09","SQ")
    call marketdata.RegReportNotify("AL06","SQ")
End Sub
''###########################################################################     
Sub MARKETDATA_ReportNotify(ReportData)
  '"""处理行情推送"""
Set Report_NI = marketdata.GetReportData("NI09","SQ")
Set Report_AL = marketdata.GetReportData("AL06","SQ")
if ReportData.Label="NI09" then

    marketdata.HistoryDataMode = 1 '不同品种为独立的缓冲区
    set HistoryData1 = marketdata.GetHistoryData("NI09","SQ",0,50)
    set HistoryData2 = marketdata.GetHistoryData("AL06","SQ",0,50)
    diff = HistoryData1.close(HistoryData1.Count-2) - HistoryData2.Close(HistoryData2.Count-2)
    application.MsgOut Report_NI.date&"   "&HistoryData1.Close(HistoryData1.Count-2)&"   "&Report_AL.date&"   "&HistoryData2.Close(HistoryData2.Count-2)&"   "&diff
    
    
end if
end sub 

 回到顶部