COCO研究院

 找回密碼
 註冊
搜索
查看: 4473|回復: 2

IBController每日正常關閉IBG小工具分享

[複製鏈接]
發表於 16-11-8 09:59 | 顯示全部樓層 |閱讀模式
IBController可用來自動化登入TWS / IBGateway (IBG)
當使用的是IBG時,IBController的設計機制只可以在一周的某一天關閉IBG
(使用TWS,則於TWS內部設定每天關閉時間即可,無須使用此工具)
如果想要每天都能正常關閉IBG(如此,每天都是乾淨的IBG),可使用以下自製的小工具

StopIBController.zip (1.45 KB, 下載次數: 145)

使用方法:
1.編輯StopIBController\StopIBController.bat
2.把TELNET_IP改成自己主機的IP(通常IBG的socket只會綁在外部IP)
3.執行StopIBController\StopIBController.bat即會關閉IBG

註:要安裝Java才能使用


評分

參與人數 3金錢 +6 收起 理由
kevin963028 + 2 感謝分享
TrendRover + 2 感謝分享
toughk + 2 感謝分享

查看全部評分

 樓主| 發表於 21-8-24 14:29 | 顯示全部樓層
本帖最後由 萬年船 於 21-8-24 14:44 編輯

今日IB Gateway被強制要求更新版本(連香港主機尚未被強制要求更新版本,但應該也快了)
換版後,變成舊的IB Controller不相容(無法登入)

而網路上,IB Controller也變成了IBC(舊的IB Controller已不再更新,最後版本是2017年的版本)
新的IBC網址是 https://github.com/IbcAlpha/IBC
基本上相同只是換個Fork而已(切開的版本),有點像WinXP換到Windows 2012

不過裡面的設定名稱些有變化,建議重新安裝

在IBC裡面已經內建Stop.bat程式
此內建程式與這裡分享關閉IBG小工具功能一樣
但此內建的Stop.bat與AutoIt配合時會出問題(跳出找不到telnet的錯誤訊息)
所以仍可繼續使用本文提供的小工具來關閉IBG(本文的小工具與AutoIt配合沒問題)

要繼續使用本文提供的小工具,請進行以下調整以配合新版的IBC
編輯IBC的設定檔config.ini,把
#CommandServerPort=7462
改成
CommandServerPort=7462
去除前面的#,讓此行生效
再來是編輯本工具的C:\StopIBController\StopIBController.bat
把TELNET_IP改成127.0.0.1,如下所示(新版IBC的Socket已經綁定0.0.0.0,無需再使用外部IP)
@set TELNET_IP=127.0.0.1






評分

參與人數 1金錢 +2 收起 理由
tinyding + 2 感謝分享

查看全部評分

 樓主| 發表於 21-8-25 16:25 | 顯示全部樓層
舊的IBController當重複執行時,會自動忽略第二次執行
但新的IBC則會跳出紅色警告視窗,怪嚇人的(如下所示)

2021-8-25 下午 04-08-12.png

要讓新的IBC像舊的IBController一樣自動忽略重複執行
可手動加入補丁程式區塊,如下

編輯C:\IBC\scripts\DisplayBannerAndLaunch.bat,並把此Patch區塊
        :: **************************************************
        :: Patch Block Begins (Ignore duplicate execution)
        if "%INLINE%" == "1" exit /B
        exit
        :: Patch Block Ends (Ignore duplicate execution)
        :: **************************************************


加到以下此區快的相對位置

:: -----------------------------------------------------------------------------
if defined LOG_FILE (
        if "%REDIRECTERROR%" == "1" (
                echo +
                echo + The diagnostics file mentioned above could not be accessed.
        :: **************************************************
        :: Patch Block Begins (Ignore duplicate execution)
        if "%INLINE%" == "1" exit /B
        exit
        :: Patch Block Ends (Ignore duplicate execution)
        :: **************************************************

        ) else (
:: -----------------------------------------------------------------------------




評分

參與人數 1金錢 +2 收起 理由
tinyding + 2 感謝分享

查看全部評分

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-12-23 00:52

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 |