1. 程式人生 > >在通達信公式及股票池中實現程式化自動下單的方法

在通達信公式及股票池中實現程式化自動下單的方法

有很多朋友們基於通達信的公式系統,開發了很多技術指標,形成了一些預警訊號或股票池出票,但無法直接自動執行程式化交易。另外自動交易還需要關聯交易賬號、實現風控及倉位管理,在通達信公式系統中實現這些就太複雜了。那麼有沒有更簡單有效的方法呢?答案當然是有的,只需要在通達信公式裡輸出買賣訊號就可以了。我們先來看看如何實現在公式中呼叫輸出買賣訊號。

輸出買賣訊號,自然是需要依靠通達信提供的外掛開發介面了,下面是寬客幫通達信下單外掛的介面說明:

外掛(ZMOrder.dll)的交易函式序號為策略的ID編號,最多支援9個策略(1-9),支援3個自定義引數,呼叫形式為: TDXDLL8(1,引數1, 引數2, 引數3):

1、引數1為需要交易的股票程式碼,比如600000,每次呼叫只能針對一個股票進行操作,滬市及創業板股票程式碼必須傳6位,深市中小板股票程式碼如收到的位數不夠6位,外掛會自動在前面補0;

2、引數2為交易的數量,單位是股,買入時正常是100的倍數(100股為1手),賣出是可以是碎股。需要注意的是買入是正數,賣出是負數,比如500是買入5手,-500是賣出5手;

3、引數3為交易價格,主要用於限價委託,市價委託時無效,是否限價委託由寬客幫系統針對策略進行設定;

為了方便統計交易收益,需要對每個交易行為進行策略歸類,每個類別代表一個策略,策略描述需要在寬客幫系統中提前設定好,請務必確保指定的策略編號已經在寬客幫系統中配置好。

舉例:

條件: DYNAINFO(20) > REF(HIGH,1);  {委買價大於昨天最高價}

If (條件,TDXDLL8(1,600000,1000,10.0),0);

解釋:

條件為盤中當某個股(舉例為“浦發銀行”)委買價大於昨天最高價時,執行買入1000股,價格10塊,使用編號為1的策略名稱:

舉例: If (條件,TDXDLL8(2,0001,-1000,9.0),0);

條件為盤中當某個股(舉例為“平安銀行”)委買價大於昨天最高價時,執行賣出1000股,價格9塊,使用編號為2的策略名稱

舉例:TDXDLL8(1,STR2CON(CODE),1000,10.0) 通過程式碼STR2CON(CODE)可以自動傳入當前視窗的股票程式碼,具體數量和價格可以根據演算法生成,這樣就是動態的策略下單實現了。

需要注意的是,同一股票相同數量、相同價格的買單或賣單會被系統認為是重複下單,所以同一只股票,當天如果要多次買入,請確保數量或價格是有差異的。

如遇到不正常情況,請檢查寬客幫程式所在的Data子目錄,檢視TdxW.txt和QuantService.txt執行日誌提示的錯誤描述。

您可能很奇怪,這麼簡單的交易介面,沒有指定交易賬號也沒有登入過程是如何實現的呢?奧妙就在寬客幫策略交易執行系統(https://download.csdn.net/download/quanthelper/10800430)了,這裡的交易介面對接的只是您的策略買賣訊號。在寬客幫系統中,您可以指定交易賬號訂閱這裡的策略訊號即可,多個賬號支援同時訂閱您的某個策略,單個交易賬號也可以同時訂閱多個策略訊號進行程式化自動交易。意味著通過這個下單介面,可以實現多賬號的自動交易哦。