以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  高级功能研发区  (http://222.73.7.161/bbs/list.asp?boardid=5)
----  跨周期  (http://222.73.7.161/bbs/dispbbs.asp?boardid=5&id=49128)

--  作者:chinagaox
--  发布时间:2013/3/2 22:52:18
--  跨周期

VBA编程:测试过去的数据,2013.3.1这根日K线用GetHistoryData 可以调用,我想在这根K线上调取当天的60分钟K线,如果亏损就要止损,怎么调用当天的四要K线中的某一要呢?  跨周期

 


--  作者:admin
--  发布时间:2013/3/3 0:52:58
--  

VBA中遇到这种跨周期是比较麻烦,因为GetHistoryData 只能对一个品种对象调用,如果你需要同时处理2个品种,那么你就必须要用数组先保存一个,然后再调用另一个。

然后在用自己保存的之前的数组数据与第二个品种的数据进行处理。

至于你说的跨周期的问题,就必须要你自己用算法来对另一个周期的数据进行快速查找了。


--  作者:chinagaox
--  发布时间:2013/3/3 10:30:00
--  

第一次提问,没想到版主在周末能回答问题,金字塔公司该发给你奖金了啊。

 

  Set HistoryDay = marketdata.GetHistoryData( "rb10","sq", 5)  \'得到日线数据  

         History.date(History.Count-i)   \'得到历史日K线的日期,比如得到2013.3.1

                JinShou=History.Close( History.Count-   i )  \'得到历史K结的收盘价

 

Set HistoryHour = marketdata.GetHistoryData( "rb10","sq", 4)  \'得到60分钟线数据

 我要得到在2013.3.1这天60分钟的第二根K线收盘价,我要在这根K线上判断是否止损,怎么得到这指定的K线收盘价啊?

  好象没有指定日期得到指定K线的功能呢

 

(有一种变通方案,就是测试在收盘后进行,每根日K线对应四根1小时K线,回朔去找对应的1小时K线,但我在测试时确实见到数据不全的情况,不一定对应四根呢)

(另外一个问题,我测试是用螺纹钢连续合约还是用螺纹钢指数合约,两者有好大区别呢)

(此方案是用历史K线数据测试盈利情况,写报告之用,非常急用)

 

[此贴子已经被作者于2013-3-3 10:31:11编辑过]

--  作者:admin
--  发布时间:2013/3/3 10:55:10
--  

摘抄编程帮助中的信息给你

GetPosFromDate(DateData)

得到得到指定日期时间DateData的数据的基于0索引的序号。
如果指定日期超过数据范围返回-1。

示例:
\'得到上期所指定品种的日线数据
Set History = marketdata.GetHistoryData("rb00","sq",5)
\'显示指定日期的数据所在位置
MSGBOX HISTORY.GetPosFromDate("2010/12/28")

 

提醒一下,你二次调用GetHistoryData后,第一次的调用就失效了,也就是你不能再Set HistoryHour 这个句话后再来用HistoryDay对象的数据。

解决问题请参考

http://www.weistock.com/bbs/dispbbs.asp?BoardID=5&ID=12404&skin=0 4楼的处理方法