2016年6月25日 星期六

MultiCharts ADE 資料傳送與接收(1)

今天看來介紹如何使用ADE來傳送與接收資料,ADE全名All Data Everywhere,它可以作為在2張圖表視窗之間傳送資料的橋梁,至於該怎麼做呢?請看以下的介紹。
ADE可以用在 不同圖表視窗或工作底稿之間的訊號或指標傳遞,以下在同一份工作底稿中,不同圖表視窗,一個用訊號將資料丟出來,一個用指標去接收畫圖。
首先我們先安裝ADE元件,請注意ADE的元件有分x86、x64,請依照自己所使用的專業版MultiCharts版本來選得對應的ADE元件安裝。

請先至連結下載ADE元件:ADEx86ADEx64 (x64僅需換ELCollections.dll 64位元的版本即可)
Step 1. 將 ELCollections.rar 資料夾的 ELCollections.dll 放到 MC 的安裝資料夾內,如下路徑:
Windows x86 + MC x86
C:\Program Files\TS Support\MultiCharts

Windows x64 + MC x86
C:\Program Files (x86)\TS Support\MultiCharts

Windows x64 + MC x64
C:\Program Files\TS Support\MultiCharts64

PS:如有變更安裝路徑為C:\MC的朋友,請ELCollections.dll放置C:\MC。

Step 2. 打開 PowerLanguage 並匯入 ELCollections.ELD 函數,記得匯入時重新編譯。

Step 3. 在 C:\ 下建立 ADE資料夾  與 Data 和 Classes 和 Code 四個資料夾 。
C:\ADE\Data
C:\ADE\Classes
C:\ADE\Code

Step 4. 將 ADE.rar 解壓縮出來的檔案放到 C:\ADE 資料夾。

Step 5. 把 C:\ADE 資料夾內的 OHLCV.txt 檔案移到 C:\ADE\Classes 資料夾。

Step 6. 打開 PowerLanguage 並匯入 AllDataEverywhere.ELD函數,記得匯入時重新編譯。

至此安裝ADE的過程就完成了。

使用以下的程式來做說明
資料發送端:可寫在訊號或指標裡。
Vars: Class("Amin"), InfoMap(MapSN.New);

Value1 = MapSN.Put(InfoMap, "ADX", ADX(14));

Value1 = ADE.PutBarInfo(Class, GetSymbolName, ADE.BarInterval, ADE.BarID, InfoMap);
程式碼說明:
第3行:Put是ADE將資料放進容器的函數。
第5行:PutBarInfo是ADE容器傳送出去的函數。

資料接收端:可寫在訊號或指標裡。
Vars: Class("Amin"), InfoMap(MapSN.New), AminADX(0);

Value1 = ADE.GetBarInfo(Class, GetSymbolName, 1, ADE.BarID, InfoMap);

AminADX = MapSN.Get(InfoMap, "ADX");

plot1(AminADX , "ADX", green);
程式碼說明:
第3行:GetBarInfo是ADE接收容器進來的函數。
PS:第3個參數帶的值要與實際圖表視窗所用的週期要相同,不然會發生無法抓到資料問題,如週期為1分鐘就要帶1,5分鐘就要帶5。
第5行:Get是ADE從容器取出資料的函數。

Put與Get傳送架構圖。


開啟新工作底稿,並開啟兩張圖表視窗,第一張圖表視窗當作資料發送端,第二張圖表視窗當作資料接收端。


 PS:請記住圖表視窗要先開啟第一張後,在開啟第二張,這樣的順序不能變,錯了ADE就無法正常執行,不然會出現以下錯誤訊息。

最後感謝陳立偉老師,以及阿政指點。

參考資料: