COCO研究院

 找回密碼
 註冊
搜索
樓主: kilroy

[教學] [分享] 用AB踏入外期程式交易

  [複製鏈接]
發表於 14-6-25 00:15 | 顯示全部樓層
kilroy 發表於 14-6-24 23:44
你的 IB TWS 看起來是舊版的,先更新一下
---
更新好之後,進入 configure -> API -> Settings -> Enable ...

OK~
成功了!

另外 TWS 似乎有一個設定是自動會退出
可是退出後應該不會再自動登入了
我找了許久
不知那裡要闗掉
2014-06-25_001359.png

 樓主| 發表於 14-6-25 00:18 | 顯示全部樓層
skyler 發表於 14-6-25 00:15
OK~
成功了!

http://www.coco-in.net/thread-32137-1-1.html

參考此帖

評分

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

查看全部評分

 樓主| 發表於 14-6-25 01:00 | 顯示全部樓層
skyler 發表於 14-6-25 00:15
OK~
成功了!

可是我好奇...

每個月多收  $12 算是 eSignal 與 IB 有合作關係的 "優惠價格" 嗎

應該是如此,我看名稱改了
以前是 CME Data Fee Waiver Bundles

現在是 CME Group Broker Program

還是要每個月至少將 eSignal 11 與 IB TWS 連線一次

---
或許在 2014 之前的訂閱戶,還可以享有 CME Group fee-waived Globex data 的訂閱

2014 之後只能訂閱 CME/CBOT/NYMEX/COMEX 的方式吧...


發表於 14-6-25 09:50 | 顯示全部樓層
kilroy 發表於 14-6-25 01:00
可是我好奇...

每個月多收  $12 算是 eSignal 與 IB 有合作關係的 "優惠價格" 嗎

我猜測是改規則
由完全不收費改成小收一點
而且將四個交易所拆開來賣每個每月3USD

但以前訂購 CME Group fee-waived Globex data
只要沒有取消訂購應該都能一直用下去
發表於 14-6-25 11:24 | 顯示全部樓層
本帖最後由 skyler 於 14-6-25 12:54 編輯

k大
請教一下
我資料回補好像只能補到 2012/12/12
是否是因為我的datasetting 設定 1分鐘  50W 筆的關係

2014-06-25_112239.png


感謝~~


 樓主| 發表於 14-6-25 15:04 | 顯示全部樓層
skyler 發表於 14-6-25 11:24
k大
請教一下
我資料回補好像只能補到 2012/12/12

設定 5min 才能回補全部資料
這個我跟 AB 反應過

但就是如此

評分

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

查看全部評分

發表於 14-6-25 15:49 | 顯示全部樓層
kilroy 發表於 14-6-25 15:04
設定 5min 才能回補全部資料
這個我跟 AB 反應過

原來如此~
了解了!
-----
另外您在 116樓中有提到如何查詢
IB中當月的商品
只是我不太懂這樣查是否是對的
所以PO出了圖如下

以 6E #F 為例

2014-06-25_153453.png

2014-06-25_153525.png

2014-06-25_154023.png

2014-06-25_154437.png

到這裡 我要怎確定那一個才是我要的呢?

感謝~


 樓主| 發表於 14-6-25 16:05 | 顯示全部樓層
skyler 發表於 14-6-25 15:49
原來如此~
了解了!
-----

貨幣類的,都看(globex) 6E, 6C, 6B, 6J, 6S... etc.

不過在IB TWS 要輸入 eur, cad, aud, jpy, chf... etc.

---
其實你用 IB TWS 找最快,包含在 IB 的 symbol, expired date 等

ex.  IB TWS 欄位輸入 eur 找 futures -> 月份

可以參考這個網站,也可以很快找出要做的月份
http://www.capitalfutures.com.tw/product/finalday_us.asp?xy=6&xt=2



評分

參與人數 1金錢 +2 收起 理由
skyler + 2 好文章,我推薦

查看全部評分

發表於 14-6-25 16:16 | 顯示全部樓層
kilroy 發表於 14-6-25 16:05
貨幣類的,都看(globex) 6E, 6C, 6B, 6J, 6S... etc.

不過在IB TWS 要輸入 eur, cad, aud, jpy, chf...  ...

我原先也是先用 IB TWS來查
但顯示出來的資料
讓我無法理解
所以才又回歸您給的網址去查
不知是我查錯了嗎?!

2014-06-25_161158.png

2014-06-25_161413.png

 樓主| 發表於 14-6-25 16:20 | 顯示全部樓層
skyler 發表於 14-6-25 16:16
我原先也是先用 IB TWS來查
但顯示出來的資料
讓我無法理解

拍謝,沒說清楚
你要在 USD.JPY 那排欄位,任一空白欄位上直接輸入 eur 按 enter 就可以看到了
發表於 14-6-25 16:53 | 顯示全部樓層
kilroy 發表於 14-6-25 16:20
拍謝,沒說清楚
你要在 USD.JPY 那排欄位,任一空白欄位上直接輸入 eur 按 enter 就可以看到了
...

原來如此
我PO出我如下的操作
請您幫我確認一下是否正確

2014-06-25_164723.png

2014-06-25_164809.png

2014-06-25_165153.png

感謝您的幫忙!

 樓主| 發表於 14-6-25 16:58 | 顯示全部樓層
skyler 發表於 14-6-25 16:53
原來如此
我PO出我如下的操作
請您幫我確認一下是否正確

是的,這樣做無誤

評分

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

查看全部評分

發表於 14-6-26 13:40 | 顯示全部樓層
本帖最後由 skyler 於 14-6-26 15:08 編輯

k大 您好請教一下
您在一樓提供的範例
無論是開15個圖表或是scan這二種方式
只要有訊號就會進場
因此在同一個時點下會持有不同商品的倉位的可能

假設極端情況下
已經持有14種商品了
第15種商品下單時保證金不足
因此 orderID 也就不會有值了
就不理他了對吧?

如果我想要控制
在每個時點都只會持有單一種商品
是否檢查檢查15種商品的
ibc.GetPositionSize( ContractMonth )

是否有值
如果有值表示目前有單在手

不知我的理解對不對?
-----
假設停止scan 是 14:56
但在上一根小時線 13:00 有買訊
也已經送單成交了
我再次重新啓動scan時間是 14:58
是否會再次送出多單呢?
-----


我以scan 的方式啓動
2014-06-26_144830.png

需要再點 Transmit 這個按鈕嗎?

謝謝指導



 樓主| 發表於 14-6-26 15:28 | 顯示全部樓層
本帖最後由 kilroy 於 14-6-26 15:33 編輯
skyler 發表於 14-6-26 13:40
k大 您好請教一下
您在一樓提供的範例
無論是開15個圖表或是scan這二種方式

Hi,

有送單(transmit, pending)都會有 orderID
ex. cancel, error 如保證金不夠、商品到期或已經進入 IB 的 physical delievery rules

保證金不夠一樣會送單,也是送單才會告訴你保證金不夠的訊息是窗

想控制每個時點只會持有一種商品的話...

可能的問題就是會與回測不符合

---
查部位的語法沒錯,都會有值 0,-1,1.. etc.

---
scan 避免重覆送單可以參考這個網站

使有 StaticVarGetText 有暫存的 OrderID 卡位之後就不會重覆送單了


5.7 版之後新增功能,可以避免 AB 關閉後再開啟時,暫存不見了又重複送單


語法範例:    StaticVarSetText("BuyOrderID"+Name(),BuyOrderID,true);

---
AFL 裡使用 ibc = GetTradingInterface("IB");

呼叫出 IB Controller

這個工具就是 AB 與 IB TWS API 溝通的介面

送單語法裡中
BuyOrderID = ibc.PlaceOrder(ContractMonth, "BUY", Shares, "MKT", 0, 0, "DAY", True);

transimt = true 時,就不用手動送單了,會自動送單出去

IB Controller 可以監控 portfolio (部位組合),當中包含該商品到期日、未平倉損益等資訊

messages 可以觀察與 IB TWS 連線的狀況,以及IB TWS 與 IB 伺服器的連線狀況都會記錄下來

很方便

也提供緊急處理,將手上所有部位平倉



參考看看了
發表於 14-6-26 17:02 | 顯示全部樓層
kilroy 發表於 14-6-26 15:28
Hi,

有送單(transmit, pending)都會有 orderID

K大您好
在回測時加上這二行
SetPositionSize( 1 , spsShares );
SetOption( "MaxOpenPositions" , 1 );
應該就能確保在當下持有的單
只有會 單一商品 1口
scan 應該是依照商品在
AB 中 symbol 視窗內的順序再scan
所以與回測應該是相同

-----

您原先在一樓的範例中
StaticVarSetText("BuyOrderID"+Name(),BuyOrderID);
StaticVarSetText("SellOrderID"+Name(),SellOrderID);

是否應改成
StaticVarSetText("BuyOrderID"+Name(),BuyOrderID,true);
StaticVarSetText("SellOrderID"+Name(),SellOrderID,true);

才比較正確呢?!

-----
原來如此
等於是直接下單到市場

感謝大大的分享


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

本版積分規則

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

GMT+8, 24-12-23 18:50

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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