棒的 發表於 14-10-26 00:21

AUTOIT、EXCEL DDE開啟問題

本帖最後由 棒的 於 14-10-26 00:23 編輯

哈囉,各位先進大家好呀!!本人是最近一個月
瘋狂的自學程式交易
發現這裡有好多很利害的人
所以就請各位先進多指教囉!!

想開發一套無人守值現股交易系統
架構大概就是
EXCEL DDE-->出訊號-->AUTOIT下單


但一開始就遇到個不知如何解決的情況
就是電腦自動開機後用AUTOIT腳本如下:

----程式碼start----
......
RUN("C:\BTS\daqBTS.exe")
WinWait("系統公告")
WinClose("系統公告")
WinActivate("臺銀證E點贏")
WinWait("臺銀證E點贏");等輸入帳密Windows出來
   sleep(30000)
ControlSetText("","","","XXXX");密碼
   sleep(1000)
ControlClick("","","", "left", "1")
WinWait("臺銀證E點贏 [版本 2.69][已登入] [報價 : 已連線] [主動回報 : 已連線] - [臺銀證E點贏精選]")

Sleep(2000)
$oExcel = _Excel_Open()

......
----程式碼end----
以上是我測到最穩定的版本,但還是會有失敗的時候
有時停在輸入完密碼就不動、有時excel開出來了但DDE(現價的欄位)未到,......等失敗的情況

也就是說如果券商看盤軟體+EXCEL DDE沒正常開起來,就算出現我想交易的股票出現訊號
交易程式就不會執行,這部份有辦法解決嗎?



n3538 發表於 14-10-26 08:36

If not ProcessExists("daqKGIAP.exe") Then
   run("D:\KGIAP\daqKGIAP.exe")
   WinWait("凱基全球理財王")
   Sleep(10000)
   WinActivate("凱基全球理財王","")
   ControlSend("凱基全球理財王", "", "Edit5", "密碼")
   Sleep(1000)
   ControlClick("凱基全球理財王", "", "Button15")
EndIf

這是我使用凱基全球理財王程式碼試著改改看{:4_663:}

zaqimon 發表於 14-10-26 08:59

偶而會遇到明明登入視窗就在那邊但是AutoIt就是找不到
最簡單的方式用ProcessClose之後再重來一次

keymaker 發表於 14-10-26 12:06

可否請問您使用的 AutoIT 是那個版本?

棒的 發表於 14-10-26 17:24

TO n3538 :感謝您提供的語法,我有試過還是會失敗。
TO zaqimon:請教一下ProcessClose要用什麼樣的條件去觸發?謝謝
TO keymaker :v3.3.12.0

我有加個條件測,目前好像OK了如下:
----程式碼start----
......
if not WinExists("臺銀證E點贏 [版本 2.69][已登入] [報價 : 已連線] [主動回報 : 已連線] - [臺銀證E點贏精選]") then
          ProcessClose("daqBTS.exe")
          sleep("2000")
          run("tai_login.exe")
   EndIf
   WinWait("臺銀證E點贏 [版本 2.69][已登入] [報價 : 已連線] [主動回報 : 已連線] - [臺銀證E點贏精選]")
   sleep("2000")
......
----程式碼end----
謝謝大家。{:7_420:}
頁: [1]
查看完整版本: AUTOIT、EXCEL DDE開啟問題