prism

2009-02-09

HTS 免費下單機 autohts.exe

免責申明

autohts.exe 此程式,不保證任何正確性,所有責任使用者自負,程式很短,很髒,沒有設定,沒有視窗,不需 .NET,單一檔案,沒有商品,或是口數的限制,要跑幾個信號,就跑幾個,保證沒後門,哈哈,使用後,很滿意想捐錢贊助,請跟我連絡,下載點 http://autohts.googlecode.com/files/autohts.exe


Why This


好像一直找不到免費的,或是單純一點的,所以自己寫一個,程式沒有幾行,用日盛期貨下單API 下單,執行前,需先執行 C:\JihSun\HTS2\APITradeMgr.exe
然後,要複製 C:\JihSun\HTS2\Dll\HTSAPITradeClient.dll 到下單機程式的目錄,程式執行時,如果抱怨沒有 MSVCP71.dll,自行下載 http://www.dll-files.com/dllindex/dll-files.shtml?msvcp71,如果是XP可放在 C:/WINDOWS/SYSTEM32/ 下面即可

執行方式

autohts.exe 訊號檔名


寫成一個批次檔就可以了 ,要是不知道批次擋怎麼寫,我也有範例

批次檔寫作

http://terryh.tp.googlepages.com/auto.bat,請自己用小作家就可以看內容了,依樣劃葫蘆就好,我的範例是下單機程式,和訊號檔都在 C:\JihSun\ 下面,然後,執行這一個批次檔就可以了
,auto.bat 的內容只有一行,所以我的是 C:\JihSun\autohts C:\JihSun\signal.txt,執行完自己的 auto.bat 後,他會停留在監控的視窗當中,然後,一有訊號,會有下單資料出現

HTS 程式結尾,加上寫訊號的程式碼,我附上我的給您參考

IF date = lastcalcdate and time = LastCalcTime THEN
FileDelete("c:\JihSun\signal.txt")
FileAppend("c:\JihSun\signal.txt",(NumToStr( Date,0)+","+NumToStr(Q_time,0)+",0,0,您的日盛帳戶碼,MXF,0,"+NumToStr(MarketPosition,0)))

END IF



程式不會轉倉,要自己處理

訊號檔格式

Date,time,contractdate,lots,acount,contractname,price,position

Date 日期

time 時間

contracdarte 合約月份,ex: 200902,或是數字 0 代表近月

lots 下單的口數,或是數字 0 代表 1 口

account 您的日盛帳號

contractname 合約名稱 TXF(臺股期貨),EXF(電子期貨),FXF(金融期貨),MXF(小型臺指期貨),也就是 API支援的都可以

price 價位,數字0 就是市價(FOC),0以外的就是限價(ROD)

position 倉位,數字0 空手,1 多,-1 空

訊號檔範例


1090206,134459,0,0,000-1234567,MXF,0,0

這就是 2009-02-06 13:44:59 近月合約 口數預設 帳號000-1234567 小台指 市價單 空手


更新紀錄
2009-03-17 修正沒有訊號檔時,不會跳出程式,只是等待,新增程式版本資訊,再命令列下執行,不給訊號檔,就會列出說明及版本,現為V0.7
2009-03-11 修正程式在沒有訊號檔時候,不自動新建訊號檔,所以訊號檔一致由HTS 產生,請網友重新下載測試
2009-03-03 感謝網友 mmk 測試,發現在 HTS 4000 裡,輸出訊號檔,FileDelete 時,程式判斷錯誤,fixed
2009-03-02 感謝網友 mmk 測試,發現一開始沒有 lock file 的問題還再,已修正,我遜掉了
2009-02-19 修正,近月單,判斷月份錯誤
2009-02-18 修正成每次程式啟動,都會把lock file 清除,所以要執行時,請先同步自己的倉位,合程式同步,這樣更適合當沖
2009-02-10 修正一開始沒有 lock file 的問題
2009-02-09 First upload

Tips


程式會自動產生一個和訊號檔同名附檔名為 lock 的參考檔來紀錄狀態,兩個檔案內容不同,就是倉位改變,只有判斷 position,另產生一個和訊號檔同名附檔名為 log 的紀錄檔

73 則留言:

匿名 提到...

有圖文使用介紹嗎?
不會用耶

新手

匿名 提到...

autohts.exe 下載只有這一個耶
按下去,沒東西,不知道怎嗎使用
可以圖解,說明嗎?
感謝

新手

TerryH 提到...

要執行時,就是用文中說的訊號格式
然後,另外用寫一個批次檔,執行器起來
像我的批次檔名
auto.bat
內容就只有這樣
C:\JihSun\autohts C:\JihSun\signal.txt

signal.txt 就是我的訊號檔
然後,這一個 auto.bat 也用 windows 的排程去執行就可以了
不過,這個程式可能還有問題,我也是邊用,才發現,所以風險很大,可以看我的這一篇文章下面,有更新的說明,有更新記得要重新下載

匿名 提到...

請問一下
日盛帳號是指什麼??
是只台灣期交所交易帳號嗎?!
還是只是代表性的文字而已?!

mmk 提到...

感謝大大!!
明天小弟要來首次實驗程式交易
希望用HTS+大大的程式能順利成功!!^^

有什麼試用結果在跟大大交流~~
感謝大大!!

TerryH 提到...

匿名的這一位大哥

日盛帳號是指,在執行

C:\JihSun\HTS2\APITradeMgr.exe

後,在右上角,你可以選那一個日盛的期貨帳號,一般人只有一個,不過,你可以在您的下單程式裡指定,所以這一個程式,才完全不需要視窗去設定,可以把所以的設定,都寫在訊號檔裡,要下不同的商品,記得輸出的訊號檔,要改,文裡有提到,MXF,是小臺,TFX,是大台

mmk 提到...

大大您好!!
今天我早上開啟HTS=>4000程式交易=>執行程式=>APITradeMgr=>選擇正式下單=>輸入密碼=>勾選關閉確認視窗=>執行AutoHts
會出現一個畫面閃過去就沒了?!
並且看常駐程式也無AutoHts
這樣是否正常?!
因為本日三個訊號進出,signal.txt有記錄到,但卻沒有送單給APITradeMgr
可以幫小弟說明一下哪裡錯誤嗎?!
另外下單機資料夾下面有兩個signal.txt是否正常?!
麻煩您了!!<(_ _)>

mmk 提到...

signal兩個分別為
signal.log
signal.txt

TerryH 提到...

mmk 您好

我文中有的到,直接執行 autohts ,程式並不知道,要讀哪一個訊號檔

你必須,把他寫成一個批次檔,文中有一個 auto.bat 的範例,直接下載去看看,直接用文字檔修改的工具,改成符合您的情形,我執行完,auto.bat 以後,他會停留在監控的視窗當中,然後,一有訊號,會有下單資料出現

mmk 提到...

Terry大
我有執行BAT檔
並且有指向正確的位置
不過他只會執行完立即關閉CMD視窗
我會在找尋什麼原因!!
謝謝大大說明
相信有些人也為此感到困擾~
如有新的消息再跟大大請教!

P.S今天要是真的有下單會虧快50點= =

mmk 提到...

搜尋網路資料
說明需要先執行XP在執行程式
才不會執行完自動關閉
以下為執行後的敘述內容

"
C:\>C:\JihSun\trading\autohts C:\jihSun\trading\signal.txt
Traceback <most recent call last>:
File "autohts.py", line 185, in <module>
File "autohts.py", line 175, in dellock
WindowsError: [Error 2] The system cannot find the file specified: 'c:\\JihSun\\trading\\signal.lock'

C:\>
"
感覺起來好像不是正確的結果>"<
還請大大說明!!

mmk 提到...

大大您好~
目前得到的結論為
因為找不到signal.lock
導致autohts判斷錯誤
是否與您之前修正每次開啟皆清除lock檔有關?!
請問大大平常下單機資料夾中是否有signal.lock檔?!

TerryH 提到...

mmk 您好,

你可以看一下,文裡的更新紀錄,很早就修正了,請重新下載新的 autohts.exe 檔案,您可以 APITradeMgr.exe,先用測試的模式,然後,手動改訊號檔的倉位,1,0,或是 -1,看會不會下單,就知道有沒有問題了

mmk 提到...

大大好~
經實驗證明
剛剛下載的檔案Autohts.exe
首次執行後
並不會在下單資料夾中產生signal.lock
因此執行後才會產生找不到檔案的現象

手動自行建立signal.lock
再手動改變signal.txt後
確實可以成功丟到APITradeMgr進行下單

因此,小弟的結論是
1. 大大可能要再試一下,是否首次執行會出現signal.lock這個檔案
2. 或者在使用說明中告知下載者,需要再下單機資料夾中,自行建立signal.lock

以上是目前試用心得!!
請問是否與大大的認知有落差?!
還是很感謝大大提供免費下單機!!!
<(_ _)>

TerryH 提到...

我了解了,這是一個 bug ,我會修正他,修好,會在更新資料

你自己值準備好了後,就要靠自己的交易策略了,一切保重,要加油

TerryH 提到...

mmk,您好

你說的bug,我已經修好了,可以下載最新的了,謝謝啦

mmk 提到...

感謝大大!!
現在可能先做空氣單

請問大大,
我在一開盤
先使用最原本signal.txt的內容
當作signal.lock的內容
這樣交易會不會出現錯誤?!

也祝大大順利賺錢喔!!

TerryH 提到...

每一次重新執行 autohts.exe,他都會重新同步,signal.lock 和 signal.txt 一樣,所以你的程式倉位要跟實際的一樣

mmk 提到...

大大您好:
我今天有新發現

mmk 提到...

大大您好:
我今天有新發現
當我用非股市時間在測試軟體時
我改變Singal.txt檔的確可以正常送出信號至APITradeMgr進行買賣
不過今天早上我同樣使用此程式
放著執行
卻發現他會出現錯誤
錯誤訊息如下
Traceback <most recent call last>:
File "autohts.py", line 189, in <module>
File "autohts.py", line 93, in run
File "autohys.py", line 93, in checksignal
ValueError: invalid literal for int<> with base 10: ''

這種現象..會出現於只要HTS4000更新訊號
送至singal.txt時
就會發生
並且不再監控
可能還要請大大研究看看
以上是什麼問題
麻煩您了<(_ _)>

TerryH 提到...

mmk 您輸入的訊號格式有問題?

我內文有範例

mmk 提到...

大大您好
我是直接複製您的範例
貼到我程式最後面
並且若是非股市運作時間
產生檔案也都正常!
只有HTS4000一直再更新的時候
才會出現這些問題

請問大大在一般股市上線時間執行都正常嗎?!

mmk 提到...

我又來打擾大大了= =
剛剛我幫您做了Debug
我開啟autohts監控
當我在此時將signal.txt刪除
馬上程式就會出現剛才打的那些
意思就是大大提供的檔案
會一直監控signal.txt的改變
由於寫在交易程式中的
FileDelete("c:\JihSun\signal.txt")
會瞬間產生錯誤導致終止

因此大大可能要想一下..
是不是能直接覆寫前一個signal.txt
或者是在autohts中加入
判斷signal.txt不存在時
忽略而不進行動作
這樣應該可以避免這個問題產生!!

mmk 提到...

大大好
經下午的試驗
如果大大不改程式(忽略FileDelete)
那麼有一個可以修正的辦法
就是將加在程式最後語法變成
IF date = lastcalcdate and time = LastCalcTime THEN
FileAppend("c:\JihSun\signal.txt",(NumToStr( Date,0)+","+NumToStr(Q_time,0)+",0,0,XXX-XXXXXXXX,MXF,0,"+NumToStr(MarketPosition,0)) + "|n")

少了FileDelete
多了 + "|n"
看起來就可以正常工作
只是要等明天線上試看看

TerryH 提到...

mmk,

我執行都正常耶,我是跑五分鐘K線,一般五分鐘 HTS 4000 才會去更新才對,不過你說的我會想想

TerryH 提到...

mmk,

我已經更新程式了,問題應該可以解決了,謝謝您的分析,還有幫忙 debug

;-)

mmk 提到...

剛剛下載來用~
已經沒有問題囉!!
明天早上再來跑看看就知道了!

我才要感謝大大
如果沒有大大就沒有免費的下單機>"<

如果真的可以用我的程式賺到錢
我一定會贊助大大^^

再次感謝大大提供這麼好用的軟體<(_ _)>

MMK 提到...

大大..今早試驗
出現以下訊息

Traceback <most recent call last>:
File "autohts.py", line 194, in <module>
File "autohts.py", line 188, in run
File "autohys.py", line 75, in checksignal
IOError: [Errno 13] Permission denied: 'C:\\JihSun\\signal.txt'

一切在離線都很正常..
但是進入線上就不行了>"<
另外我發現我的訊號
不是一次分鐘K才跳一次
我看過訊號輸入是每秒都有資料寫進去!

PS 我的blogger有我的MSN

TerryH 提到...

mmk,您好,

看起來像是權限的問題,,程式必須對你的 signal.txt 有讀寫的權限,我倒是沒有觀察是不是每一秒都改變,理論上,輸出時用,這個條件包住,不就是要在目前時間到了 this bar 完成的時候,才輸出嗎?

IF date = lastcalcdate and time = LastCalcTime THEN
輸出訊號

END IF

不過,這些問題,我都沒有耶,你先看看權限是不是有什麼問題,也許是 HTS 你安裝的時候,選擇只有那一個安裝者可以用,所以權限上,由 HTS 4000 寫入的訊號檔,別人不能讀,讀不到的話,程式會試著建立一個新檔

jeff 提到...

大大你好,
想下當沖單,程式碼要怎麼改?

TerryH 提到...

jeff,您好

下當沖單,不用改壓

jeff 提到...

大大你好,
我想把DayTrade設成Y,保證金就可以減少了。

jeff 提到...

大大你好,
不知道程式碼如何改?才能把DayTrade設成Y?

jeff 提到...

大大你好,
我同時開啟二個下單機,在收盤時間測試模擬單很正常,可是在今天早上開盤後,發現有一個下單機的dos視窗關閉,另一個下單機正常,該如何查詢問題?

MMK 提到...

jeff大..
先用cmd執行
再輸入bat裡面的指令
他如果錯誤就會出現出錯誤訊息
看看你的錯誤訊息是不是跟我一樣
目前看起來好像是因為權限問題!

jeff 提到...

MMK大大
權限問題的話,該如何處理?

MMK 提到...

如果是的話...
我還沒想到辦法= =
實驗各種辦法中

TerryH 提到...

Jeff,您好

現在程式沒有辦法下當沖單,我當設計的時候,就不想讓人下當沖單,減少保證金了,我的用意是,已經期貨交易了,風險已經不小了,所以沒有把這個設計近程式裡,請見諒

mmk,您好

我有照您的觀察去看,確實是每一秒都有在改變,不過,我想你的問題,應該還是權限的問題,要不要先把原本的 signal.txt 砍了,用執行 HTS 的程式,按 F7 去產生

TerryH 提到...

jeff,您號

不同的策略,訊號檔一定要不同名字,不一定要叫 signal.txt,可以隨你高興,只是執行的 bat 檔,要對應

匿名 提到...

期待 圖文 說明檔 中
感謝

jeff 提到...

大大你好
我二個策略有各別的訊號檔,不知道問題在哪?

TerryH 提到...

jeff,您好

你可以進入 cmd 的模式,直接執行,有錯誤,也不會跳出來,就可以看到錯誤訊息了

jeff 提到...

大大你好
我要run二個訊號,是否需要二個不同的autohts.exe,例如autohts1.exe 、autohts2.exe ?

TerryH 提到...

Hello Jeff

一般跑兩個策略,就是兩個批次檔,我舉例

一個用 auto1.bat,一個 auto2.bat

auto1.bat 的內容是

auto2.bat是

C:\JihSun\autohts C:\JihSun\signal_1.txt

auto2.bat 的內容是
C:\JihSun\autohts C:\JihSun\signal_2.txt

然後兩個 auto1.bat 和 auto2.bat 都執行,就是跑兩個策略了

不過,你個策略程式,要產生這兩個訊號檔 signal_1.txt 和 signal_2.txt

MMK 提到...

請問一下jeff大
您可以順利使用此程式嗎?!
因為我在使用上會出現一些問題
因此想要確認是否為個人因素>"<

MMK 提到...

Terry大大~
目前使用會出現
Sorry, no signal file xxx.txt
但是確認檔案存在..
不知道其他人有沒有同樣問題
還是都執行正常>"<

TerryH 提到...

MMK,您好
依你的訊息來看,你真的是少了訊號檔,請完全複製我的 bat 檔去試,程式的訊息說你少了 xxx.txt,就是他不到,可以在命令列,用下面的指令直接執行嗎?

C:\JihSun\autohts C:\JihSun\signal.txt


C:\JihSun\autohts 就是下載我的 autohts.exe

C:\JihSun\signal.txt 就是你的訊號

記得完全照抄,要給完整路徑,可否

MMK 提到...

Terry大~
我解決問題了!!!
我將FileDelete砍掉後
發現他寫入的時候是只要有資料進來
就會進行一次程式判讀
因此每一秒大概都會有三五筆資料以上
到至一分鐘內就會有上百筆資料刪除與寫入

因此我同樣有FileDelete
並將前面的條件Time = LastCalcTime
改成 Time != LastCalcTime
他就不會每一秒都寫入,而改在每分鐘末寫入
這樣執行大大的程式下模擬單都就可以正常
並且沒有再出現任何錯誤訊息
並且本來判讀就是以每分鐘結束才合理

以上是我個人經驗
有錯也請給予指正!!
給其他人參考看看!!^^

TerryH 提到...

MMK,您好

可以解決最好,不過別人的訊號檔,也都是這樣產生,應該不會有問題,我是日上收費以後,就自己寫來用,也都沒有讀訊號的問題,所以你的問題,才比較難 debug,因為,我無法複製錯誤,不過,可以用就好

jeff 提到...

大大你好
我今天測試模擬單,在log檔裡發現下多單後又馬上平倉耶?
2009-03-13 12:21:00 倉位改變 => 買進
2009-03-13 12:21:01 倉位改變 => 多單平倉
2009-03-13 12:22:04 倉位改變 => 買進
2009-03-13 12:22:05 倉位改變 => 多單平倉

Position Change
BUY
Market=F,Account=000-1234567,ContractName=MXF,ContractDate=200903,OpenCloseAuto=
A,BuySell=B,Lots=1,OrderType=M,Price=0,FokIocRod=I,DayTrade=N
Position Change
EXITLONG
Market=F,Account=000-1234567,ContractName=MXF,ContractDate=200903,OpenCloseAuto=
A,BuySell=S,Lots=1,OrderType=M,Price=0,FokIocRod=I,DayTrade=N
Position Change
BUY
Market=F,Account=000-1234567,ContractName=MXF,ContractDate=200903,OpenCloseAuto=
A,BuySell=B,Lots=1,OrderType=M,Price=0,FokIocRod=I,DayTrade=N
Position Change
EXITLONG
Market=F,Account=000-1234567,ContractName=MXF,ContractDate=200903,OpenCloseAuto=
A,BuySell=S,Lots=1,OrderType=M,Price=0,FokIocRod=I,DayTrade=N

帳號已經被我改過。

TerryH 提到...

Jeff,您好

近期會再有新的更新檔,會修改為更嚴謹的判斷,有時間會更新

MMK 提到...

Terry大大~
好久沒來留言
你的程式已經完全沒有問題了!!
只要照著你上面的指示
不需變更
完全可以正常運作
非常感謝!!!!!

不過我一天下來大概會跳出三四十個no file
但不影響交易^^

再次感謝您<(_ _)>

台灣部落格協會 提到...

還記得去年329療傷網聚的種種感動嗎?
一群關心台灣的部落客因而能相互扶持、鼓勵並向前邁進。
今年328,邀請所有關心台灣的部落客再聚首,
一起參與這場跨越虛擬實境的盛會,用愛與熱情相挺台灣、繼續前行!

活動內容請上 台灣部落格協會http://tba.tw/news/?newsinfo&id=51

jeff 提到...

我也趕緊測試一下

Sam 提到...

版主您好

我有下載您的下單作使用測試
目前有個問題 就是 訊號出現後
送單至API會出現
[抱歉 請輸入商品年月]的錯誤訊息
(送單狀態0999)
在signal.txt出現的signal為
1090409,93033,200904,1,000-0996665,TFX,0,1

而我在交易策略中使用的產生訊號格式為
FileAppend("c:\JihSun\signal.txt",(NumToStr( Date,0)+","+NumToStr(Q_time,0)+",200904,1,000-0996665,TFX,0,"+NumToStr(MarketPosition,0)))

可否請您協助我看一下是否有何設定不妥之處? 感謝!

TerryH 提到...

SAM, 您好
我有試你的訊號,也可以直接下耶

如果你是當沖單的話
要不要直接用我的文章的訊號程式去改就好

IF date = lastcalcdate and time = LastCalcTime THEN
FileDelete("c:\JihSun\signal.txt")
FileAppend("c:\JihSun\signal.txt",(NumToStr( Date,0)+","+NumToStr(Q_time,0)+",0,0,000-0996665,TFX,0,"+NumToStr(MarketPosition,0)))

END IF

catalog 提到...

Terry兄

感謝您的下單機 簡單 好用.

匿名 提到...

請教一下...多口單要怎麼設定?

Sam 提到...

版主您好

我是上面留過言的SAM 承蒙你的指導
不過還是會出現一樣的錯誤訊息...

想請教您
您是怎樣去對我所PO上的訊號作測試?
也許你我一些環境設定有所差異
我在我這端作測試也許會是比較有效的方式
也節省你的時間 如果可以的話
能請您讓我知道一下如何在非交易時段
對傳到API的訊號作測試嗎??

感謝!

TerryH 提到...

匿名,您好,
訊號檔的第四欄,lots 就是口數,

Date,time,contractdate,lots,acount,contractname,price,posit

預設給零時,就會下一口,其他的數字,是多少就是幾口,產生訊號時,指定就好,只要帳戶的錢夠

TerryH 提到...

Sam,您好

我是把日剩下單的api 選成模擬單後,直接把你的訊號,複製,貼到我的訊號檔,改帳號為我的帳號,然後按儲存,就可以看到,API 送出訊號,也可以先不要勾,關閉確認視窗,然後真實下單時間,測試,日盛彈出確認視窗,再按取消就好

匿名 提到...

不會用怎嗎打開autohts那個檔案,
黑色畫面,一下就會消失了.
沒打開api,請問該如何使用

Sam 提到...

了解~ 感謝版主的指導!

TerryH 提到...

SAM,您好

不好意思,台指期的 contractname 應該是 TXF

MMK 提到...

Terry大您好~
最近有網友問我
他在使用加碼單的時候
(HTS程式交易設定多口進出)
只有非加碼單會送到API
加碼單不會
請問您有這樣的狀況嗎?!
或者有沒有什麼地方需要注意?!

TerryH 提到...

MMK,

下單機單純只有下單而已,不會判斷口數的增減,只有多空,當時訊號給的口數是多少,就下幾口

Tim.H 提到...

版主你好,感謝你提供這麼好用的工具,非常感謝!
有個問題想請教,您提供的下單機是抓取position 倉位,數字0空手,1多,-1空的變化配合lots來下單,未來是否有機會改成position可以為-n,...-3,-2,-1,0,1,2,3,4,5....,n
改為直接抓position的數量跟正負來下單謝謝!!

Date,time,contractdate,lots,acount,contractname,price,position

TerryH 提到...

Tim.H 您好

我想這樣的修改在加減碼的程式非常好用,
但也會增加出錯的機會,
我會考慮一下,

可能是我的交易程式太肉腳了,
我還沒有想到比較好的加減碼方法

謝謝您的建議

catalog 提到...

雲大你好 請問您這下單機相容康和的HTS相容嘛?
有想從日盛換到康和煩請解惑,感謝.

TerryH 提到...

catalog 我是沒有用過康和,不過我也有點想換倒別的地方

如果,康和的可以像HTS一樣寫程式,我也想去開戶試試看,不然日盛新的規定是一個月50口,雖然我也是有超過很多,不過,不滿的時候,不出聲,日盛會更得寸進尺

catalog 提到...

TerryH 版大:
是阿 一個月50口平均已經超過一天一趟 到時後不足可能要下些小台來補口數, 康和也是HTS叫做康和e閃電, 我到時後來試試看好了. 目前日盛給的手續費還算便宜,不過朋友的朋友再拉客,手續費更便宜一些. 雖然有省但是要是不能程式下單那也只是省錢但是沒得到方便. 日盛那個50口下個月開始實施. 也許還有變數吧....

祝操作順利.

Steve 提到...

您好, 我最近也想來研究自動下單, 不知是否可以提供原始程式碼讓小弟學習一下? 謝謝.

匿名 提到...

請問,如果要下選擇權,商品代號是什麼呢 買方賣方 買權賣權 與履約價怎麼表示,
感謝您~~