[TS懶人包] [保險服務]

2010年4月30日 星期五

DKT 自動下單機使用的 Auto IT 原始碼

最近剛好有朋友來信提到要這二個 Auto IT 的原始碼,方便自行修改,所以就順便放上來讓大家參考了。
這兩個 Auto IT 用到一些參數,是直接由下單機送進參數的方式去執行,包含了 hts 的登入密碼、hts api 的登入密碼和下單選擇條件等。


如需自行修改者,請注意參數需保留,否則下單機在呼叫時會有錯誤產生。

首先是 DKTHTS.au3 這個檔案的程式碼內容:(直接使用 HTS 的程式碼側邊圖啦~)

$passwd = $CmdLine[1]
$HTSpath = $CmdLine[2]
$SleepTime = $CmdLine[3]

while 1

IF not ProcessExists("JSCOM.EXE") or not WinExists("JIHSUN HTS", "") Then
WinClose("JIHSUN HTS", "")
ProcessClose("JSCOM.exe")
WinClose("API Trade Manager","")
WinActivate("訊息", "")
Sleep(1000)
ControlFocus("訊息", "是(&Y)","[CLASS:Button; INSTANCE:1]")
ControlClick("訊息", "是(&Y)","[CLASS:Button; INSTANCE:1]")
Sleep(1000)
ProcessClose("APITradeMgr.exe")
Sleep(1000)
ProcessClose("JSHTSMain.exe")
Sleep(1000)
Run($HTSpath & "\JSCOM.EXE", $HTSPath,"")
WinWait("Connetor")
WinActivate("Connetor", "")
ControlSend( "Connetor", "", "[CLASS:TEdit; INSTANCE:1]", $passwd)
ControlSend( "Connetor", "", "[CLASS:TEdit; INSTANCE:1]", "{Enter}")
WinWait("Version Update","",3)
if WinExists("Version Update") Then
WinWaitClose("Version Update")
WinClose("Connetor", "")
Sleep($mousestoptime)
ProcessClose("JSCOM.exe")
Sleep($mousestoptime)
ProcessClose("JSHTSMain.exe")
endif
Sleep(20000)
Endif
IF WinExists("訊息") THEN
WinActivate("訊息")
Sleep(1000)
ControlFocus("訊息", "再次連線(倒數30秒後自動執行)","[CLASS:TButton; INSTANCE:2]")
ControlClick("訊息", "再次連線(倒數30秒後自動執行)","[CLASS:TButton; INSTANCE:2]")
ENDIF

sleep($SleepTime*60*1000)
wend


接著是 DKTHTSAPI.au3 的程式碼內容:

$TradeMode = $CmdLine[1]
$passwd = $CmdLine[2]
$HTSpath = $CmdLine[3]
$SleepTime = $CmdLine[4]

while 1

IF not ProcessExists("APITradeMgr.exe") or not WinExists("API Trade Manage", "") Then
IF ProcessExists("JSCOM.exe") and WinExists("JIHSUN HTS", "") Then
ProcessClose("APITradeMgr.exe")
Run($HTSpath & "\APITradeMgr.exe", $HTSpath,"")
WinWait("API Trade Manager")
WinActivate("API Trade Manager")
IF $TradeMode = 0 Then
ControlFocus("API Trade Manager", "模擬下單 ->","[CLASS:TRadioButton; INSTANCE:1]")
ControlClick("API Trade Manager", "模擬下單 ->","[CLASS:TRadioButton; INSTANCE:1]")
Sleep(1000)
EndIf
IF $TradeMode = 1 Then
ControlFocus("API Trade Manager", "正式下單 ->","[CLASS:TRadioButton; INSTANCE:2]")
ControlClick("API Trade Manager", "正式下單 ->","[CLASS:TRadioButton; INSTANCE:2]")
Sleep(1000)
EndIf
ControlSend( "API Trade Manager", "", "[CLASS:TEdit; INSTANCE:7]", $passwd)
Sleep(1000)
ControlFocus("API Trade Manager", "關閉確認視窗","TCheckBox1")
ControlClick("API Trade Manager", "關閉確認視窗","TCheckBox1")
Sleep(1000)
EndIf
EndIf

sleep($SleepTime*60*1000)
wend


有興趣對這兩個 auto it 自行修改的就參考看看吧。

8 則留言:

  1. 謝謝你!我已經收到回信,也很感謝你不吝的分享。
    插入一些程式碼,記錄整天自動下單系統的運作過程,對於整個自動流程所可能發生的風險進行預防及除錯,真的對系統的穩定有很大的幫助。

    回覆刪除
  2. DK大您好,有幸拜讀您的書及站上的文章,是受益良多,
    因為是程式交易的新手,有一些問題想請教您

    以台灣期交所來說,並不支援stop單的交易方式,我看很多市面上的下單機都要求避免使用stop單的語法,
    可是在TS上若不用stop單的話,不是會有慢一根k棒的狀況,當快市行情出現時,成交價位與預期落差不是會很大嗎,
    不知您是如如何處理這部份的問題
    謝謝

    回覆刪除
  3. 法律狂:不客氣,不過我的下單機會每天自動記錄 log 的訊息喔。

    回覆刪除
  4. mars: 並不會啊,哪一家下單機說要避免用 stop 單的?用 stop 單沒什麼影響的,就直接用吧!

    回覆刪除
  5. DK大大,不才也有在程式交易,如果看到不錯的文章不知可否在部落格上引用?會在上面加入連結說明出處及網站的,謝謝你了! 努力交易的交易狂 拉拉留

    回覆刪除
  6. 拉拉的家:可以,請注意 CC 版權宣告的部份。Blog 右下方有。

    回覆刪除
  7. DK大:主要是再針對一些細節,比如某些視窗是否有出現及出現的時間,該視窗的出現與上一個程式執行完畢間,是否有不正常的時間落差等。
    現在正在寫:如何在出現問題時,自動print screen儲存。畢竟有時仍然不方便在外使用遠端桌面。

    回覆刪除
  8. 法律狂:不太懂…你是要用 auto it 寫這些東西?也許用 marco express 的 control 會比較容易一點…

    回覆刪除

請留下您的大名…匿名者恕不回應…

Related Posts Plugin for WordPress, Blogger...