2008年12月29日 星期一

歷史資料更新 - 比較不蠢的方法

簡單講就是像下單機文字輸出一樣,寫成程式。

利用一些指令輸出我們需要的歷史資料

所以在輸出程式的時候,格式就可以先排好了。

不需要在Excel改來改去,很方便的。

程式碼如下:

Vars:DataOutput("")

if time[0] < > time[1] then
DataOutput=NumToStr(Year(Date)+1900,0)+"/"+NumToStr(Month(Date),0)+
"/"+NumToStr(DayofMonth(Date),0)+","+MidStr(ctime(Time),1,5)+

","+NumToStr(open,0)+","+Numtostr(high,0)+
","
+
NumToStr(low,0)+","+NumToStr(close,0)+","+NumToStr(V,0)+",0|n"
FileAppend("C:\DataOutput.txt",DataOutput)
end if


上述程式碼中,粗體在HTS內是同一行

FileAppend那一行是檔案輸出位置,自行修改。

DataOutput是一開始定義的變數,內容就是歷史資料。

格式是:2008/12/29,10:35,4335,4337,4331,4334,397,0

NumToStr:恩,應該是數字轉成字串...

NumToStr(AAA,數字)

AAA看要放什麼就放什麼

數字0的話,恩...數字取到整數位??是這樣嗎??還是有其他意思~

Year(Date),就是把Date中的"年"抓出來的意思。

加上1900,是因為Date的格式是1081229

108就是2008年,所以加1900,讓數字變成2008

Month(Date),和Year(Date)意思一樣,抓月份出來

所以得到的值是12

DayofMonth(date),就是抓日期了

"/" 這個意思是,在年月日之間用 / 這符號區隔

當然在""內,要用什麼符號都可以。記得前後要有 + 這符號就好

MidStr:恩...忘記在哪邊看到的了。

主要是抓一串字元某部份的值。

MidStr(AAA,數字1,數字2)

AAA一樣,要放什麼就放什麼

數字1,指的是,從第幾個字元開始。

數字2,指的是,讀取幾個字元。

所以MidStr(ctime(time),1,5)

就是抓ctime(time)的第一個字元到第五個字元

ctime(time)的格式是,13:45:00

所以抓到的是值是,13:45

再來是輸出,開高低收量,這邊沒什麼好說的。

最後是 0|n

0就是一般的0,|n 是換行的意思。

程式寫完驗證完後。

匯入到任何一個週期的K線都可以。

不過遇到一個問題。

就是在盤中用這程式,同時間的資料會有很多筆。

會出現

2008/12/29,10:35,4335,4337,4331,4334,97,0
2008/12/29,10:35,4335,4337,4331,4334,100,0
2008/12/29,10:35,4335,4337,4331,4334,107,0
.......

之類的,感覺是照著Tick輸出。

就算用了time[0] < > time[1] 也沒辦法。

所以盤後在用吧。

老屎阿~ 這方法是不是比較好阿(茶~)
HEMiDEMi Technorati Del.icio.us MyShare?犖?貊惜 Yahoo