kilroy 發表於 14-1-30 23:05

[分享] AutoIT 控制 IB TWS 不關閉的方式

本帖最後由 kilroy 於 14-1-30 23:07 編輯

Hi,

上回有大大問為何 complie 成執行檔後,還是不能使用
小弟這邊貼一下使用方式

還有可能的問題是...

1. 真實帳戶與 paper account 的 windows title 不一樣
2. lock and exit 設定裡,不要將時間設定為 12:00


---
將 以下 script 裡,紅字部分改成你的帳號

Opt("TrayAutoPause", 0)
Opt("MouseCoordMode", 0)
Opt("WinTitleMatchMode", 2)

TraySetIcon("Shell32.dll", 180)

; Live mode
Do

    WinWaitActive("U8888888 Exit Session Setting")
    WinMove("U8888888 Exit Session Setting", "", Default, Default, 320, 170)

    ; Switch from AM to PM & PM to AM
    If @HOUR > 12 Then
      MouseClick("left", 157, 63, 1)
    Else
      MouseClick("left", 208, 63, 1)
    EndIf

    MouseClick("left", 120, 148, 1)
    Sleep(500)

    WinClose("U8888888 Exit Session Setting")
    Sleep(2000)

Until 1 = 2

; Never exit


如果你是用 IB 的 paper account

Opt("TrayAutoPause", 0)
Opt("MouseCoordMode", 0)
Opt("WinTitleMatchMode", 2)

TraySetIcon("Shell32.dll", 180)

; Live mode
Do

    WinWaitActive("DU888888 Exit Session Setting (Simulated Trading)")
    WinMove("DU888888 Exit Session Setting (Simulated Trading)", "", Default, Default, 320, 170)

    ; Switch from AM to PM & PM to AM
    If @HOUR > 12 Then
      MouseClick("left", 157, 63, 1)
    Else
      MouseClick("left", 208, 63, 1)
    EndIf

    MouseClick("left", 120, 148, 1)
    Sleep(500)

    WinClose("DU888888 Exit Session Setting (Simulated Trading)")
    Sleep(2000)

Until 1 = 2

; Never exit

---
將上述 script 丟到 autoIT 去 complie 成執行檔




執行時,會在狀態列出現這個 icon (常駐的方式在背景執行)

接著到 IB TWS 的設定裡改一下,建議跟圖片裡時間一樣 am 或 pm 皆可
(不要設定為 12:00)



---

之前有人問為何不直接用 IBG

那是因為 AB 提供的下單機是對應 IB TWS API

當然,如果你的下單機可以連 IBG

那就用 IBG 吧 ~

*解析度到 1920x1080 也可正常使用

參考看看了


kilroy 發表於 14-2-2 19:36

小弟再補充一下

如果你的語言是選擇 "非" 英語的時候

windows title 也會不一樣

要一致才可以正常使用

謝謝

lansrotim 發表於 14-2-9 11:51

太感謝了 !小弟搞定了 我發現除了把介面改成英文之外 就可以看到他執行了
不過可能是解析度的問題  他都點不到那個小圓框,   我把他調整成(157,64,1 & 208,64, 1 )就解決了  

glaxo 發表於 14-2-9 18:05

請問這樣執行auto it之後
是TWS斷線之後會自動重連嗎?
還是說跟6.00有蛇模關係呢?

kilroy 發表於 14-2-9 18:38

glaxo 發表於 14-2-9 18:05 static/image/common/back.gif
請問這樣執行auto it之後
是TWS斷線之後會自動重連嗎?
還是說跟6.00有蛇模關係呢? ...

Hi,
用這個腳本的用意是不要讓 TWS 關閉

若 TWS 不關閉的情況,斷線時,TWS本身會自己重新連線

參考看看了~~

glaxo 發表於 14-2-9 18:45

版大請問一下 IB的帳號不是都是U開頭的嗎?
WinWaitActive("DU888888 Exit Session Setting (Simulated Trading)")

我記得主帳號登入需要2組密碼
paper account不用
那若需要手動key 密碼 autoit還能用嗎
不是很了解

kilroy 發表於 14-2-9 18:58

本帖最後由 kilroy 於 14-2-9 19:00 編輯

glaxo 發表於 14-2-9 18:45 static/image/common/back.gif
版大請問一下 IB的帳號不是都是U開頭的嗎?
WinWaitActive("DU888888 Exit Session Setting (Simulated Trad ...
Hi,

autoIT 是要抓 windows title 來做動作

這個腳本不是自動執行 TWS

只是讓 TWS 不要自行關閉 (見TWS 設定裡 lock and exit 的 auto logoff timer)

所以首次開啟 TWS 我們還是要手動輸入帳密登入它

只要 TWS 不關閉,若斷線它會自動重連線

除非程式或是作業系統當掉、斷電

---
TWS 有一個 auto logoff 的功能,但是沒有辦法關閉這個功能

所以我們用 autoIT 去控制它,不要讓它自己關閉了

而 windows title 會跟你的帳號有關係

U開頭是真實帳戶的帳號,DU開頭是 paper account 的帳號

最主要是 windows title 要對,這樣這個腳本才可以正確抓到視窗
並執行我們要做的動作




參考看看了~~




jodo 發表於 14-2-9 19:00

glaxo 發表於 14-2-9 18:45 static/image/common/back.gif
版大請問一下 IB的帳號不是都是U開頭的嗎?
WinWaitActive("DU888888 Exit Session Setting (Simulated Trad ...

第二層手動的部分 因為需要肉眼辨識查詢再輸入
當然不可能自動
大大可以把驗證的安全機制關掉 就不會問了 但卻也會失去帳戶的安全性了

glaxo 發表於 14-2-9 19:05

真是豁然開朗~謝謝兩位大大了~
要熟悉這些些工具真是不容易
謝謝兩位帶我摸索~
馬上試試看去

glaxo 發表於 14-2-9 23:46

autoit 裝了
時間也改為6.00
接下來就看會不會登出了

glaxo 發表於 14-2-10 07:19

到現在為止TWS還沒被關掉~繼續!

lansrotim 發表於 14-2-10 14:34

哈哈 換我有問題了   autoit 成功按掉一次之後第二次又按不到了   再來研究看看...

TrendRover 發表於 14-2-12 10:17

pm==> am 可以按到 . am ===>pm 不行 ,按的位置比button約低兩個button距離.

howard2c 發表於 14-2-14 10:28

IBGateway 其實有兩個選項, 一個是IB API, 另一個是FIX.要選擇IB API, 登入IBGateway之後還需要改Port Number.把Port從 4001 改成 7496 就可以了.我的程式也是寫一次兩邊都可以跑, 不需要特別為IBGateway做更改.

我倒是面臨了另一個問題.開兩到三禮拜後, 有時IB會卡價.讀進來的價格一直不變.你們會發生嗎?

kilroy 發表於 14-2-14 13:16

howard2c 發表於 14-2-14 10:28
IBGateway 其實有兩個選項, 一個是IB API, 另一個是FIX.要選擇IB API, 登入IBGateway之後還需要改Port Nu ...

感謝大大分享IBG

小弟用TWS有遇過該商品有部位

可是報價連顯示都沒有顯示的情況

重開又好了
頁: [1] 2
查看完整版本: [分享] AutoIT 控制 IB TWS 不關閉的方式