網頁

2019年2月12日 星期二

台指期自動當沖交易程式下單問題及解決方法

我的程式交易系統是使用 C# 寫的 , 在撰寫的過程中遇到很多問題 , 不過幾乎所有的問題都能夠上網Google找到答案 , 只有一個問題找不到 , 當我的程式要實際下單的時候就出錯 , 錯誤訊息如下 :



RCV Error Code[19] Content [Place Order failed : 拒絕存取]
從 Log 檔中查到的訊息如下 :
E 20181122 140315950 FutureSingleOrder failed, idNo[A123456789] CertFileName[c:\honsec\HONSEC_0_0_42097_13.pfx] ex:System.Security.Cryptography.CryptographicException: 拒絕存取。
    HONSEC.HSCertification.GetCertificate(String idno, CPCPKCER pkcer, String certpath)
   HONSEC.HSCertification..ctor(String idno, String certPath, String certTag)
   HONSEC.TradeAPI.FutureSingleOrder(ORDER_TYPE orderType, MARKET_FLAG marketFlag, Int64 RequestId, Int32 brokerId, Int32 tradeAccount, String SubAccount, String Symbol, SIDE_FLAG BS, PRICE_FLAG PriceFlag, Decimal Price, TIME_IN_FORCE TIF, UInt16 Qty, POSITION_EFFECT PF, OFFICE_FLAG officeFlag, Int32 taAccountMode)
I 20181122 140315955 Show ClientRequestId[19] FunctionClass[Place order failed, 拒絕存取。
問題原因 : 
交易程式必須具有系統管理員的權限才能存取憑證檔 .

解決方法如下 :
1. 每次要開啟交易程式時都要用 [以系統管理員身分執行] 的方式來執行交易程式 . 
 
2. 從 [交易程式.exe] => [內容] => [相容性] , 勾選 [以系統管理員身分執行此程式] .

另外 , 昨天遇到券商更改交易主機 IP , 我直接從我的交易程式的使用者介面修該交易主機的 IP 參數 , 還是一樣無法連上交易主機 , 解決方法如下 :
從檔案系統編輯交易程式的 app.config 檔 , 直接修改裡面交易主機的 IP 參數 , 然後用編輯軟體打開 [主程式.cs] 檔 , 在內容中空白處按一下 [空白鍵] (目的只是要讓編譯軟體知道我們有修改了程式 , 不是真的修改程式)  , 最後用編譯軟體重新編譯一次 C# 的專案就可以了 , 不過修改 app.config 檔重新編譯 C# 專案 , 你之前的參數設定會回復到最原始 app.config 中的設定 . 

沒有留言:

張貼留言