免費論壇 繁體 | 簡體
公告:SCLUB雲端專屬主機己開放租用
分享
MT4程式(Program)專業代寫服務(請email:letgofortrading@gmail.com) 警告:文章內容可能有大便,不喜請勿入。請不要像動物一樣,不歡迎也請勿自行進來找碴和找大便。私人網頁,後果請自行負責~
返回列表 發帖

如何導入MT4的DD​​E數據?

測試時,其實用哪個MT4平台無所謂,只要包含足夠的歷史數據即可。
(metaquotes自己的那個歷史數據服務器就挺好。)
實際交易時最好用live賬號,這樣確保MT4裡面的數據是準確和實時更新的。

導出MT4數據

首先,你連接的MT4平台要有足夠多的歷史數據。
然後,設置MT4把這些數據全部都裝入到內存中,否則它只會導出當前裝入內存中的數據。
MT4設置窗口有一個頁是設定裝入多少bar的,我通常要把它改到最大值,比如9999999,
這樣MT4才會裝入所有的bar,當然佔用內存會比較多。

接著按F2,打開歷史數據窗口,選擇一個貨幣對,選擇時間,如果使用1分鐘bar的話,
下面的統計是導出文件的大概大小。根據你要開發的策略所需要的數據精度,
比如,我通常是倒出5分鐘的bar,這樣導出文件會小很多,10年數據大約50MB以內。

================================================== ======================
Max# BAR in History (1 minute chart)___導出文件大小___數據時間
9999999(900萬)___________________170MB_______至1999年(至1999年的BAR為300多萬)
499999(49萬)_____________________23MB________18-20個月
199999(20萬)_____________________10MB_________6-7個月
99999(9萬)_______________________5MB__________3個月
================================================== ======================

注意: 導出文件名必須和AB裡面設置好的ticker名稱相同。例如: EURUSD.CSV
(我也忘記AB是否能改Ticker的名字,但是為了方便,我每次都是導入前改好)

導入數據到AB

然後打開AB,切換到要導入數據的數據庫,比如你剛才使用的FXCM那個。
以EURUSD為例,先刪除這個ticker。 (菜單 Symbol -> Delete ...)

然後有兩種方法導入,都在菜單File 下面
1) Import Wizard..
2) Import ASCII..

1) 是一個嚮導,一步一步地按照做就可以。最後有個選擇可以保持你導入的設置。
2) 是我常用的,比較方便。它是使用預先設置好的值(這個文件可以由Import Wizard生成)

這裡面有個地方比較tricky,就是MT4數據的時間和你實時數據源的時間可能不一樣!
比如MT4歷史數據和一些實時MT4數據相差7個小時,
下面就是我自己使用的一個Import Wizard生成的文件。

你可以直接拷貝下面的內容,然後在AB的目錄下創建這個文件即可。
注意,你還要同時修改import.types這個文件,在裡面增加一行:
MT4 Export (-7hr) (*.csv)|*.csv|mt4_shift_-7hr.format

這樣就可以在使用“Import ASCII..“這個方法時直接從導入類型裡面選擇"MT4 Export (-7hr)",
然後選擇剛才從MT4裡面導出的那個EURUSD.CSV文件。

導入完成之後,就能從AB裡面看到歷史數據了。
導入這個過程,可以多試幾次,我也是試了很多次才摸索出來。大不了就刪了重新導入。


設置DDE數據源
然後設置DDE,請參照官方的指南,有一段提到和MT4集成。
DDE DATA PLUGIN
http://www.amibroker.com/dde.html


最後關鍵一步

注意!到這裡還沒有完,就算歷史數據進去了,DDE也配置好。你看到右下角顯示“綠色”,表示連接正常。
但是你的EURUSD還是不會被實時更新。

最後一步,選擇菜單View -> Symbol Information,會打開一個窗口,
顯示每個ticker的一些關鍵配置信息。在"General"大類下面裡面有一項叫"Use Only Local Database",
每次刪除Ticker,再導入之後,這個值都是“YES“,即表示只使用local數據。
必須改為”NO”之後,AB才會將實時的tick寫到這個數據庫中,這個時候數據庫是local + real-time混合模式。只有這樣才能同時包括歷史數據,並且接收實時數據。

兩個文件的內容:

C:\Program Files\AmiBroker\Formats\mt4_shift_-7hr.format
Code:
# Format definition file generated automatically
# by AmiBroker's ASCII Import Wizard
$FORMAT Date_YMD, Time, Open, High, Low, Close, Volume
$SKIPLINES 0
$SEPARATOR ,
$CONT 1
$GROUP 1
$AUTOADD 1
$DEBUG 1
$TIMESHIFT -7

C:\Program Files\AmiBroker\Formats\import.types
Code:
Default ASCII (*.*)|*.*|default.format
MT4 Export (-7hr) (*.csv)|*.csv|mt4_shift_-7hr.format
MT4 Export (*.csv)|*.csv|mt4.format
Yahoo's CSV (*.csv)|*.csv|yahoo.format
AmiQuote Historical (*.aqh)|*.aqh|aqh.format
!qqconnect:connect_viewthread_share_title!: !qqconnect:connect_viewthread_share_to_qzone!!qqconnect:connect_viewthread_share_to_qzone! !qqconnect:connect_viewthread_share_to_weibo!!qqconnect:connect_viewthread_share_to_weibo! !qqconnect:connect_viewthread_share_to_pengyou!!qqconnect:connect_viewthread_share_to_pengyou!
LMAX 顛覆外匯交易經驗/擊敗所有外匯經紀商

1,設置了9999999的數字,但下載只有65000根ticks?
===========================================
設置99999999這個數字只是表示允許MT4可以在內存中裝入這麼多bar而已。你連接的MT4服務器上首先要有足夠的bar,如果它只有65000,那你最多就只能下載到這麼多。

還有,MT4似乎是使用類似lazy read的算法,就是只有等你真的需要某個時間段數據時,它才會去讀。所以,最好是打開對應貨幣的圖,盡量地往回顯示老的bar,這樣強制MT4去服務器上讀老的數據。當然了,這還是取決於你連接的MT4服務器上的歷史數據量。


2,時間確實差7小時,但感覺似乎應該+7h,而不是-7h?
===========================================
AB接收實時數據時(至少DDE是這樣的),是使用本地電腦上的時間而不是交易所的。這個值和你所在時區有關係,需要自己多試幾次,反正就是修改一下“$TIMESHIFT -7” 這一行。也許+7 或者+6 才能對應你的本地時間。

3,.format和.types文件應該如何打開和創建?
===========================================
這兩個文件都是簡單的文本文件,用notepad就可以。
import.types是AB自己的文件,已經存在。你只是需要在裡面增加一行(見我上面貼的例子,紅色)
mt4_shift_-7hr.format是你運行​​之後Import Wizard之後生成的,文件名隨意,只要以.format結尾即可。注意,在import.types裡面增加的一行就是引用這個文件,所以名字要對應。
LMAX 顛覆外匯交易經驗/擊敗所有外匯經紀商

TOP

mt4_shift_-7hr.format 這個文件是自己創建的。
然後修改import.types 裡面增加一行對上面這個文件的引用:
MT4 Export (-7hr) (*.csv)|*.csv|mt4_shift_-7hr.format

導入前把AB裡面對應ticker的老數據先刪除。

之後就開始File -> import ASCII,在窗口裡面選擇導入的文件,然後"files of type"就選:
“MT4 Export (-7hr) (*.csv)”,其實就是我們剛才增加的那一行,
然後import ascii 這個工具就會根據你在mt4_shift_-7hr.format這個文件中設置的信息去導入數據了。

實在不行,你先使用import wizard,使用成功之後,讓它幫你生成這個.format 文件吧。
估計需要手工增加這個參數:$TIMESHIFT -7
LMAX 顛覆外匯交易經驗/擊敗所有外匯經紀商

TOP

24點之後沒更新這種問題,可以看看這裡的設置:
File -> Database Settings... -> Intraday Settings
裡面有一些關於時間,過濾週末數據等方面的設置。

DDE最大的缺點就是沒有回補,所以必須一直開機,特別對於FX這種24小時交易的品種。否則的話,就得重複上面的過程,刪除老數據,再次導入。

我現在都是星期六重啟服務器,然後開一個星期,不過是運行在VPS上面。
LMAX 顛覆外匯交易經驗/擊敗所有外匯經紀商

TOP

返回列表