以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  请教,怎样将行情四价写入一个二进制文件中  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=15373)

--  作者:zjfuwen
--  发布时间:2012/8/21 22:30:51
--  请教,怎样将行情四价写入一个二进制文件中
怎样将行情数据:时间,open,high,low,close,vol实时写入一个二进制的数据文件中呢?望各位指教!!!
--  作者:zjfuwen
--  发布时间:2012/8/21 22:33:21
--  

要用到array函数吗

取数据用minutedata对象,是吗?写文件用哪个函数呢?


--  作者:rushtaotao
--  发布时间:2012/8/22 8:42:40
--  
输出到文件可以用DEBUGFILE
--  作者:guotx2010
--  发布时间:2012/8/23 8:23:53
--  

debugfile是用在后台策略上的,在vba策略中,只能使用filesystemobject对象了,这是我从网上搜索的代码,你自己参照代码就能搞定吧。

 

Dim fsObj, file

\'写

Set fsObj = CreateObject("Scripting.FileSystemObject")

Set file = fsObj.CreateTextFile("c:\\test.txt", True)

file.WriteLine ("test" )

file.Close

\'读

Const ForReading = 1, ForWriting = 2, ForAppending = 8

Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0

Dim fileObj, fileInfo, retObj, strInfo, strPath As String

Set fileObj = CreateObject("Scripting.FileSystemObject")

strPath = "c:\\test.txt"

Set fileInfo = fileObj.GetFile(strPath)

Set retObj = fileInfo.OpenAsTextStream(ForReading, TristateUseDefault)

strInfo = retObj.ReadLine

retObj.Close


 


--  作者:zjfuwen
--  发布时间:2012/8/23 15:24:11
--  
不是c:\\test.txt这类文件,要写到二进制的文件,比如sz000001.day之类的,应该要涉及到循环和数组等的吧,变量有open、high、low、close、vol等
--  作者:guotx2010
--  发布时间:2012/8/23 16:13:38
--  
去搜一下,vba读写二进制文件,应该有的,变量有open、high、low、close、vol等可以通过对象histroydata返回。
--  作者:zjfuwen
--  发布时间:2012/8/23 20:23:13
--  

由于金字塔不支持type,所以不知道如何建立struct啊

版主有什么好的思路吗????


--  作者:zjfuwen
--  发布时间:2012/8/23 20:25:24
--  
 

读取MT4历史数据的范例 

struct HistoryHeader

 { 

int version; // 基础版本 

char copyright[64]; // 版权信息 

char symbol[12]; // 证券 

int period; // 周期类型 

int digits; // 小数位数 

time_t timesign; // 基础报时的创建 

time_t last_sync; // 同步时间 

int unused[13]; // 将来应用 

}MTHSTHEAD;


#pragma pack(push,1) 

struct RateInfo

 { 

time_t ctm; 

double open; 

double low; 

double high; 

double close; 

double vol; 

}MTHST; 


#pragma pack(pop)


MTHSTHEAD hsthead; 

MTHST kline; 

CArray<MTHST, MTHST > akline; 

CFile file; 

if( file.Open( _T("USDCHF1440.hst"), CFile::modeRead ) )

 { 

file.SeekToBegin(); 

file.Read( &hsthead, sizeof(MTHSTHEAD) ); 

while( sizeof(MTHST) == file.Read( &kline, sizeof(MTHST) ) )

 {

akline.Add(kline);

 } 

file.Close();

 }



--  作者:zjfuwen
--  发布时间:2012/8/23 20:27:13
--  
以上是希望写入的二进制数据文件的结构