2010年1月7日

利用HTS輸出1分鐘線資料的TXT檔於 09:48

這個程式碼的來源是 APE大,不是我的原創,先行聲明。來源取得還經過 1127 一手 XD。

我說明一下這個程式碼的使用方式與用途。

用途:
用來作為程式交易的軟體平台可不是只有HTS,像是 TS / MC / WL 還有許多。就交易台指這項商品來說,HTS在盤中的資料提供與控制我認為相對於其他需要自己引介資料的軟體來說還是非常的方便的。所以當資料原有發生斷線或是錯價、漏價的時候,可以使用HTS來做為輔助功能,讓HTS輸出TXT的文字檔去餵給軟體使用。

使用方式:
先把隨後的程式碼做成買賣訊號,並且是單獨的買賣訊號,不可以混用在其他的買賣訊號之內。接著打開1分線圖,新增分析工具,把做好的買賣訊號放上1分線圖。


你會發現,什麼事都沒發生 =_= 其實就在把買賣訊號新增上去的時候,事情就已經做好啦。在電腦的硬碟上會在你所指定的位置生好TXT給你使用。


之後你就可以讓 TS 或是 MC 還是其他的軟體來匯入這個文字檔作為報價資料庫的維護使用了。


程式碼:
param: kbar(1);
//vars: atrr(0),arg(1.384),l_atr(4);
vars: mkbar(0),mko(0),mkh(0),mkl(0),mkc(0),mkv(0);
vars: s_prn(""),p_date(""),p_time(""),f_date(""); //{p_date =cdate(date),p_time =ctime(time)}
array: OoD1[84](-1);

//-define data level----------------------------------------
if(barinterval=1 && datacompression=1) then
//--init day change value-----------------------------------
if(date[0]<>date[1]) then
mkv =0; mko =openofd(0,OoD1); s_prn ="";
f_date="20"+midstr(numtostr(date,0),2,2)+midstr(numtostr(date,0),4,2)+midstr(numtostr(date,0),6,2);
end if;
//--main()--------------------------------------------------
//atrr =iff((averagetruerange(l_atr)<>0),truerange/averagetruerange(l_atr),0);
mkbar =mod(strtonum(midstr(numtostr(time,0),iff(strlen(numtostr(time,0))>5,3,2),2)),kbar);
mko =iff(mkbar=1 || kbar=1,o,mko);
mkh =iff(mkbar=0,highest(h,kbar),mkh);
mkl =iff(mkbar=0,lowest(l,kbar),mkl);
mkc =iff(mkbar=0,c,mkc);
mkv =iff(mkbar=1 || kbar=1,v,mkv+v);

//--make printable date and time----------------------------
p_date="20"+midstr(numtostr(date,0),2,2)+"/"+midstr(numtostr(date,0),4,2)+"/"+midstr(numtostr(date,0),6,2);
if(strlen(numtostr(time,0))>5) then
p_time=midstr(numtostr(time,0),1,2)+":"+midstr(numtostr(time,0),3,2);
else
p_time="0"+midstr(numtostr(time,0),1,1)+":"+midstr(numtostr(time,0),2,2);
end if;

if(mkbar=0) then
s_prn =s_prn+(p_date+","+p_time+","+numtostr(mko,0)+","+numtostr(mkh,0)+","+numtostr(mkl,0)+","+numtostr(mkc,0)+","+numtostr(mkv,0)+"|n");
//print(p_date+","+p_time+
// ","+numtostr(mko,0)+","+numtostr(mkh,0)+","+numtostr(mkl,0)+","+numtostr(mkc,0)+","+numtostr(mkv,0));
end if
//--do output-----------------------------------------------
if (f_date<>"") then //lastbaronchart
//print("C:\"+numtostr(kbar,0)+"min_txf"+f_date+".csv",s_prn);
filedelete("R:\TEMP\TXF_1min.txt");
fileAppend("R:\TEMP\TXF_1min.txt",s_prn);
end if
//-end of this indicator------------------------------------
end if



以上程式碼內的「 R:\TEMP\TXF_1min.txt
filedelete("R:\TEMP\TXF_1min.txt");
fileAppend("R:\TEMP\TXF_1min.txt",s_prn);

就是存放所輸出1分鐘線資料的檔案位置與名稱,請自行修改成你所需要的路徑與名稱。


有使用的人請到APE的部落格:http://tw.myblog.yahoo.com/ape-research感謝一下原創吧^^

6 意見:

雄哥 提到...

簡單的輸出值:
就在程式中加上一列
FileAppend("C:\CurveFile.txt",NumToStr(Date,0)+"_"+CTime(Time)+"_"+NumToStr(Open,0)+"_"+NumToStr(High,0)+"_"+NumToStr(Low,0)+"_"+NumToStr(Close,0)+"|r|n")
這樣可得出最近的成交資料

小傑 提到...

我這邊也分享一下如果使hts不傷硬碟的方式
因為我們知道hts會寫入硬碟後,再用下單機去讀取檔案,一天八小時會很傷硬碟,用ramdisk軟體,把ram當硬碟用,可以增加硬碟壽命

虛心求教 提到...

請問一下 阿政大
如果我是要輸出5K data的話
要更改其中哪幾行程式碼呢?

阿政 提到...

虛心求教:

要轉出這資料通常就是要餵給TS或是MC或是其他的程式交易軟體用的,1分線應該是比5分線好用得多,因為這些軟體都會自己用1分線的資料去堆5分線出來。不過這都是廢話,因為沒有回答你的問題^^

實際上是,我不知道耶,直接切到5分線的圖會不會就生5分線的資料出來呢?你試試看吧。再不行的話得問原創作者了,因為光是看到這一大串CODE我的頭就暈了,別叫我解讀...

虛心求教 提到...

阿政大
感謝回覆
我自己再試試看
請問一下政大
可以有你的msn嗎?

阿賓 提到...

直接使用HTS裡面 匯出Excel 的功能 然後轉成 TXT 不是就可以了嗎?

張貼意見

 
Blogger Template Layout Design by [ METAMUSE ] : Code Name BlackCat 2.0.0