請教Amibroker 接eSignal 取得外匯報價
本帖最後由 skyler 於 14-2-8 20:06 編輯各位先進大家好
想要用eSignal 取得外匯期貨(歐元 日元 瑞朗 加幣)的報價
但順利連線後
一直無法順利在Amibroker的主畫面顯示報價內容
想請教各位
1.我的需求 在eSignal申請的服務是否有錯?
2.eSignal 中 這四種商品的 Symbol
我在eSignal申請的服務如下
在Amibroker 連接eSignal 的畫面
應該是成功的
謝謝大家的幫忙~
本帖最後由 kilroy 於 14-2-8 20:44 編輯
Hi,
你要下 6E, 6C, 6J, 6S 的話
只要訂閱
eSignal Premier + CME Group fee-wavied globex data 就可以了
步驟流程
1) 進入 eSignal 官網,申請帳號的步驟還有結帳的步驟小弟跳過囉
2) 選擇商品 <- 訂閱 eSignal Premier 就可以了
3) 加訂 CME Group fee-waived globex data
點開 REAL-TIME EXCHANGE DATA -> E-Minis 就可以看到
4) 加訂 extended historical data
點開 ADDITIONAL SERVICES -> Extended Intraday History
5) 確認一下訂閱項目
你提到的商品,都在 CME Group 裡
而且訂閱 CME Group fee-waived 有兩個好處
不會收 exchange fee ($79~$95/mo)
也不會收 futures fee ($25/mo)
但上述前提是你必須要有與 eSignal 合作的 broker 才符合資格
Ex. interactive brokers (IB)
---
eSignal 與 Amibroker 的連接
就小弟看到大大提供的截圖,連線狀況看起來是沒問題的
小弟這邊再幫大大跑一次設定流程
1) database settings
照圖上設定既可
2) Intraday settings
照著上面設定既可
這樣不管冬令夏令電子人工都沒問題的~
也不用管交易所時間
3) Configure
這裡是輸入你 eSignal 帳密的地方
其他照著設定既可
4) 安裝 eSignal 11
請至官網下載
5) database 設定為 eSignal data plugin 時,開啟 AB 會出現這個視窗
同時會開啟 eSignal data manager
若連線成功,在 AB 右下角會出現
出現上述視窗就表示 OK 啦!
6) 新增商品 symbol
輸入 symbol
在 eSignal 裡的各商品 symbol 可以到官網查
小弟這邊提供連續月份報價的 symbol
歐元 6E #F
加幣 6C #F
日圓 6J #F
瑞朗 6S #F
回補資料的方式就是到右下角 OK 圖示,按滑鼠右鍵
點一下 Force backfill 就可以回補資料了
參考看看吧,有問題再發問囉~
感謝 kilroy大 您的解說
我真的感動到快要哭了
目前申請 eSignal 主要想要取得
歷史資料做回測
暫時下單會接國內期貨商
等過一陣子再考慮接IB
再跟您請教一下
1.如果我沒有申請eSignal 配合的券商(如:IB)
是否就需要加訂
Chicago Mercantile Exchange (includes CME Globex & CMEE)
如同我在開版的第一個圖一樣
2.想請教一下關於(歐元 日元 加幣 瑞朗) 這四種貨幣的Symbol
3.
不知到您是否有做外匯期貨的回測
想跟您請教一下我的想法
例如做日元期回測好了
合約規格的關係
日元期貨報價 約等於 1/日元現貨 X 1000000
我是不是以日元現貨來做回測比較好
會這麼想的原因是
(1).eSignal 能給到10年前的某個連續月份交易資料?
(2).即使有 Amibroker 沒法自動換月因此用現貨來換算是否比較好
如果您有做過外匯期的回測
能否請您分享經驗給我
3.您在程式交易時是手動去處理換月嗎? 還是特別在程式中判斷月日做呢?
最後感謝大大的幫忙
本帖最後由 kilroy 於 14-2-8 23:17 編輯
skyler 發表於 14-2-8 21:29 static/image/common/back.gif
感謝 kilroy大 您的解說
我真的感動到快要哭了
Hi,
別客氣,小弟只是把自己的經驗和知道的分享一下而已
1. 暫時只考慮下在國內期貨商的話
那就是要訂 Chicago Mercantile Exchange 了
這樣每個月多了 $95+$20 的費用
2. 上面已回覆囉,在 eSignal 裡的連續月 symbol
歐元 6E #F 日圓 6J #F 加幣 6C #F 瑞朗 6S #F
3. 談到回測的部分,首先先看看你所拿到的資料
資料有好多種來源呀~
a. TradeStation 號稱資料最完整(可以人工、電子、人工+電子)
b. MutilCharts 群益、元大券商版,可以不用開戶,下載安裝後匯出既可取得
c. NijaTrader (請參考本帖)
d. eSignal
e. Intreactive Broker
f. 其他
如果你是做程式交易,就直接測電子盤的回測資料就可以了
a) TS 的話,可以訂閱一個月($249.95) 去把資料都下載下來
或是開 TS 戶(報價、下單、程式交易平台一次搞定),下滿口數就可以免費使用了
但因為大大說目前只考慮下國內期貨,那這個方案可以考慮訂一個月
等於是用 $249.95 去買資料
b) 群益和元大的十年海外期貨歷史資料可以測測看,資料正確性不保證
c) NijaTrader 提供的資料是將各月合約串在一起變成連續月份的
也就是沒有換約(rollover)調整的,且有些收盤數據略有不同
d) eSignal 提供的資料多為 2007/Mar 至今
你說回測到底要用多長的資料才好,這沒人可以說一個準
不過,做電子盤的話,沒有每個商品一開始就是電子盤時
那就看手邊資料可以拿到多少啦
eSignal 提供的連續月份是有 rollover 的
因小弟是下在 IB,所以收盤價還有對照過 IB US futures bundle 的資料
對照上是沒有太大差異的
只是 IB 的 physical delivery 規則,會與 eSignal 的 rollver rule 不同
就是換月做換倉的地方比較麻煩
e) IB 自己也有提供歷史資料,不過要把它搞成連續月份
那是很累的事情,小弟覺得很麻煩所以也沒有研究
f) 其他,小弟沒列到的都算其他嚕
像是 touchance 的,我就還沒用過,這可能要請有用過的大大來分享一下哩
上述說這麼多,整理一下幾個重點
1. 人工盤、電子盤之分
2. rollover 與 rollover rules 之分
3. 連續月份與當月之分
4. 開高低收的資料正確性...
但我也不能跟你說哪一個資料才是最正確的
小弟這邊的作法是...
eSignal 報價源 對 IB 的報價源,比對兩個即時資料是一樣的,我就這樣用了
畢竟是下單到 IB 嘛
而我是用什麼資料來跑回測的呢? 上述提到的,除了"其他" 我都有拿來測過
至於是否要拿現貨資料來測,這點我不是這麼清楚
因為我不知道你的策略是依據什麼來進出的
只要掌握一個重點,就是你的策略盡量去做到同週期、同參數
跑不同商品,都能大致相同的結果
那它就是個好策略,聽起來簡單 ^^"
跑程式交易一定要往 portfolio 的方向去做,這樣就對了
4. 換倉這個部分,是小弟的痛,因為我是手動
有試過寫在語法裡去做自動換倉
但因為那個要算日子的,還有就是上面提到 eSignal 連續月份報價因 rollover rules
與 IB 的 physical delivery,還是用手動換倉比較安心啦~
好在不是每個商品都是要每個月換一次的
---
大致上是這樣子,大大參考看看,有問題再發問囉~
感謝您這麼詳細的心得經驗分享
這樣我心裡有底了
也知道怎麼做了!
如有問題 再跟您請教了
祝您投資順利 收獲滿滿 kilroy 發表於 14-2-8 22:37 static/image/common/back.gif
Hi,
別客氣,小弟只是把自己的經驗和知道的分享一下而已
Kilroy 大您好
又要來跟您請教一下
今天我想以歐元用之前在版上看到的一個簡單範例來試一下回測
但發現居然 losers 的比率 100%
想請您看一下那裡的設定有問題
回測程式
歐元 symbol 的設定
回測結果
能否分享一下您在 Backtester settings 裡的設定
讓我參考一下
再次感謝您的幫忙
skyler 發表於 14-2-9 16:47 static/image/common/back.gif
Kilroy 大您好
又要來跟您請教一下
Hi,
小弟這邊給大大一個範例
SetPositionSize(1, spsShares);
SetOption("InitialEquity", 50000);
SetOption("FuturesMode", 1);
SetOption("CommissionMode", 3);
SetOption("CommissionAmount", 2.5);
RoundLotSize = 1;
TickSize = 0.0001; PS = 10000; PointValue = 10*PS;
MA_short=MA(C,5);
MA_long=MA(C,21);
Buy=Ref(Cross(MA_short, MA_long), -1);
Short=Ref(Cross(MA_long, Ma_short), -1);
Buy = Cover = ExRem(Buy, Short);
Short = Sell = ExRem(Short, Buy);
BuyPrice = CoverPrice = O;
ShortPrice = SellPrice = O;
---
backtest settings 的部分
參考看看了~
kilroy 發表於 14-2-9 18:52 static/image/common/back.gif
Hi,
小弟這邊給大大一個範例
感謝kilroy 大的分享
以您的測試範例測試就OK了
另想請問一下
在您圖中的設定內
Positions 內的 long 跟 short 代表的意義是什麼
另外您程式中
最後將價位設成 O不是 0
這個O是內建的變數?
代表下單的價位 對吧?
另外想將報價匯出到別台電腦使用時
參考這篇
[教學] AmiBroker匯出K線及技術指標數據的方法
在 O H L C 的報價都顯示1
推測原因為報價匯出為0.XX 因此四捨五入就變成1了
能請您分享一下
匯出報價的方式嗎?
再次感謝~
本帖最後由 kilroy 於 14-2-9 22:34 編輯
skyler 發表於 14-2-9 21:43 static/image/common/back.gif
感謝kilroy 大的分享
以您的測試範例測試就OK了
Hi,
backtest settings 裡,positions 設定為 long and short 是要讓回測時跑多單和空單的回測
buyprice, shortprice, sellprice, coverprice 是設定進場出場價格
匯出歷史資料的部分,請參考下列範例
/*
Export intraday and EOD data to TXT files
One file for each stock
In the first line insert the directory you want to save them to, make sure the
directory exists
Select your charts to export with the "Apply to" filter in AA window
Select the timeframe period you want to save as using the AA "Settings"
Press Scan button
by Graham Kavanagh 05 Feb 2004
*/
fh = fopen( "C:\\"+Name()+".txt", "w");
if( fh )
{
fputs( "Date,Time,Open,High,Low,Close,Volume \n", fh );
y = Year();
m = Month();
d = Day();
r = Hour();
e = Minute();
n = Second();
for( i = 0; i < BarCount; i++ )
{
//fputs( Name() + "," , fh );
ds = StrFormat("%02.0f-%02.0f-%02.0f,",
y[ i ], m[ i ], d[ i ] );
fputs( ds, fh );
ts = StrFormat("%02.0f:%02.0f:%02.0f,",
r[ i ],e[ i ],n[ i ] );
fputs( ts, fh );
qs = StrFormat("%.4f,%.4f,%.4f,%.4f,%.0f\n",
O[ i ],H[ i ],L[ i ],C[ i ],V[ i ] );
fputs( qs, fh );
}
fclose( fh );
}
Buy = 1;
選好你要匯出的週期,按 scan,檔案就跑出來了
路徑在語法裡
參考看看了
感謝K大的範例
已成功轉出自己要的資料
原來是透過程式跑整個的BarChart
然後一個一個轉出
而非透過工具
另外想請教一下
之前在回測範例的code
SetOption("CommissionMode", 3);
SetOption("CommissionAmount", 2.5);
這裡是指單邊 2.5USD 還是來回 2.5USD
另外
真的在做程式交易時
我需要透過券商的API
來取得目前自己持有的倉位口數
還是能透過
Amibroker 的這個設定
限定自己最大同時持有的數在10口
SetOption("MaxOpenPositions", 10);
還是說這個設定只限於在做回測時用
正式交易時是沒有作用的
感謝您的分享
本帖最後由 kilroy 於 14-2-10 16:47 編輯
skyler 發表於 14-2-10 15:52
感謝K大的範例
已成功轉出自己要的資料
Hi,
SetOption("CommissionMode", 3);
SetOption("CommissionAmount", 2.5);
這個是設定為扣單邊交易手續費,單邊2.5
而
SetOption("MaxOpenPositions", 10);
是做 portfolio backtesting 時
控制最大持倉商品部位為10個商品
比如說我的策略跑15個商品,但設定為10時
最多就是做滿 10個商品的部位
而部位不一定,可能一個商品是10口
一個商品是5口,所以這功能是局限於回測
實際程式交易下單是用不到的
____
若要取得帳號部位,要看該券商的API有提供否
而AB連結IB的下單機 可以透過TWS API
抓取IB賬戶的資料,如倉位、賬戶價值等
而且AB作者有釋放出原始碼
雖然小弟現在還用不到客製功能
因為這個下單機的功能已經很強了
以後有機會小弟再寫一篇AB下IB TWS
以 portofolio 形式的 position sizing 文章
有問題再問吧 參考看看了~~ 感謝您這麼熱心的解說
跟您確認一下以下這二行
我的理解有沒有錯?
Buy = Cover = ExRem(Buy, Short);
Short = Sell = ExRem(Short, Buy);
當出現多單平倉的訊息
而且目前手上沒有多單
就不會執行
空單亦然
不知對嗎?!
謝謝
本帖最後由 kilroy 於 14-2-10 17:26 編輯
skyler 發表於 14-2-10 16:57
感謝您這麼熱心的解說
跟您確認一下以下這二行
Hi,
關於進出場這個部分
AB麻煩的地方就在這裡
buy 進場多單 sell 多單平倉
short 進場空單 cover 空單平倉
給大大的例子是直接多空對翻(最簡單的方式)
而範例中 exrem 是用於當買進訊號出現後去慮掉重複的買進訊號直至賣出訊號出現為止
若要寫到停損停利,就要用 for 迴圈來寫
那複雜性就比較高了,所以我的策略沒有停損停利
參考看看了
原來如此~
將自己的操作系統
包含最大的持有口數
停損停利
下單條件
由程式邏輯控制
感謝大大的分享
頁:
[1]