skyler 發表於 14-2-8 19:53

請教Amibroker 接eSignal 取得外匯報價

本帖最後由 skyler 於 14-2-8 20:06 編輯

各位先進大家好
想要用eSignal 取得外匯期貨(歐元 日元 瑞朗 加幣)的報價
但順利連線後
一直無法順利在Amibroker的主畫面顯示報價內容
想請教各位
1.我的需求 在eSignal申請的服務是否有錯?
2.eSignal 中 這四種商品的 Symbol

我在eSignal申請的服務如下


在Amibroker 連接eSignal 的畫面
應該是成功的


謝謝大家的幫忙~



kilroy 發表於 14-2-8 20:31

本帖最後由 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 就可以回補資料了


參考看看吧,有問題再發問囉~



skyler 發表於 14-2-8 21:29

感謝 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 22:37

本帖最後由 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,還是用手動換倉比較安心啦~

    好在不是每個商品都是要每個月換一次的


---
大致上是這樣子,大大參考看看,有問題再發問囉~

skyler 發表於 14-2-8 23:19

感謝您這麼詳細的心得經驗分享
這樣我心裡有底了
也知道怎麼做了!

如有問題 再跟您請教了

祝您投資順利 收獲滿滿

skyler 發表於 14-2-9 16:47

kilroy 發表於 14-2-8 22:37 static/image/common/back.gif
Hi,
別客氣,小弟只是把自己的經驗和知道的分享一下而已



Kilroy 大您好
又要來跟您請教一下

今天我想以歐元用之前在版上看到的一個簡單範例來試一下回測
但發現居然 losers 的比率 100%
想請您看一下那裡的設定有問題

回測程式

歐元 symbol 的設定


回測結果


能否分享一下您在 Backtester settings 裡的設定
讓我參考一下

再次感謝您的幫忙

kilroy 發表於 14-2-9 18:52

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 的部分


參考看看了~

skyler 發表於 14-2-9 21:43

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:21

本帖最後由 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,檔案就跑出來了
路徑在語法裡

參考看看了

skyler 發表於 14-2-10 15:52

感謝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:27

本帖最後由 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 文章

有問題再問吧 參考看看了~~

skyler 發表於 14-2-10 16:57

感謝您這麼熱心的解說

跟您確認一下以下這二行
我的理解有沒有錯?

Buy = Cover = ExRem(Buy, Short);
Short = Sell = ExRem(Short, Buy);

當出現多單平倉的訊息
而且目前手上沒有多單
就不會執行
空單亦然
不知對嗎?!

謝謝

kilroy 發表於 14-2-10 17:03

本帖最後由 kilroy 於 14-2-10 17:26 編輯

skyler 發表於 14-2-10 16:57
感謝您這麼熱心的解說

跟您確認一下以下這二行

Hi,

關於進出場這個部分

AB麻煩的地方就在這裡

buy 進場多單 sell 多單平倉
short 進場空單 cover 空單平倉

給大大的例子是直接多空對翻(最簡單的方式)

而範例中 exrem 是用於當買進訊號出現後去慮掉重複的買進訊號直至賣出訊號出現為止

若要寫到停損停利,就要用 for 迴圈來寫

那複雜性就比較高了,所以我的策略沒有停損停利

參考看看了

skyler 發表於 14-2-10 20:55

原來如此~
將自己的操作系統
包含最大的持有口數
停損停利
下單條件
由程式邏輯控制

感謝大大的分享

頁: [1]
查看完整版本: 請教Amibroker 接eSignal 取得外匯報價