ADE 是一個 TS 論壇上的高手開發出來的…能用到的功能實在太多…這邊就算單的講一下二個 Charts 間傳參數的方式~整個流程有點複雜,算是很進階的一課了,真的有需要的人再來玩會比較好。
首先,需要先下載兩個壓縮檔: ADE 和 ELCollection
下載完後,先解壓縮吧!
接下來的安裝步驟:
1. 將 ELCollections 資料夾內的 ELCollections.dll 放到 MC 的安裝資料夾內… (ex: C:\Program Files\TS Support\MultiCharts)
2. 打開 PowerLanguage 並把 ELCollections.ELD 匯入 (會匯入很多 Functions)
3. 在 C:\ 底下建立一個資料夾…該資料夾名稱為 ADE
C:\ADE
4. 在 C:\ADE 底下建立 Data 和 Classes 和 Code 三個資料夾
C:\ADE\Data
C:\ADE\Classes
C:\ADE\Code
5. 把剛剛從 ADE.rar 解壓縮出來的檔案放到 C:\ADE 資料夾內
6. 把 C:\ADE 資料夾內的 OHLCV.txt 檔案移到 C:\ADE\Classes 資料夾內
7. 打開 PowerLanguage 並匯入 AllDataEverywhere.ELD (一樣會匯入很多 Functions)
安裝流程就到這裡完畢了…如果你還想繼續走下去的話~那看來很有決心想要用一下 ADE…
再來就是程式碼了…首先,用到 ADE 主要是要在兩個 Charts 間傳遞參數…那簡單的說…就是 A, B 兩個 Charts 要傳參數,如果是 A 要傳給 B 的話,那就是要在 A 程式碼內把值「寫入」,然後在 B 程式碼內把值「讀出」。
先來看看「寫入」的程式碼:
Vars: Class("DK"), InfoMap(MapSN.New);
vars: var5( 0 ), var6( 0 ), var7( 0 ), var8( 0 ) ;
Value2 = Stochastic( High, Low, Close, StochLength, SmoothingLength1, SmoothingLength2, 1, var5, var6, var7, var8 ) ;
Value1 = MapSN.Put(InfoMap, "KDR", var7);
Value1 = MapSN.Put(InfoMap, "KDB", var8);
Value1 = ADE.PutBarInfo(Class, "DK-Day", ADE.BarInterval, ADE.BarID, InfoMap);
首先,第一行的 Vars 是變數宣告,這裡面宣告了 Class("DK") 和 InfoMap(MapSN.New)
InfoMap 的部份就照著用吧,而 Class 內的名稱則可以自己修改,你可以把這個名稱當成一個容器。
接下來兩行是計算 Stochastic Slow 用的,也就是慢速 KD 值。
再來的兩行 Value1 開頭的程式碼是把要的值丟進容器裡… MapSN.Put <-- 看到 Put 應該可以理解…就是把資料放進去的意思… 而後面帶的參數第一個就照著用…
第二個參數(比如說上面的 "KDR") 你可以看成在大容器內的小箱子…,而第三個參數就是要丟進去的值。
最後一行則是把 BarInfo 也放進去…這樣在拿資料的時候才不會拿錯…當然…第二個參數的 "DK-Day" 也可以自行修改名稱 寫入的部份大概就這樣了…應該是已經可以滿足大部份的使用需求。
接下來看一下拿資料的程式碼:
Vars: Class("DK"), InfoMap(MapSN.New);
Vars: DayKDR(0), DayKDB(0);
Value1 = ADE.GetBarInfo(Class, "DK-Day", 0, ADE.BarID, InfoMap);
DayKDR = MapSN.Get(InfoMap, "KDR");
DayKDB = MapSN.Get(InfoMap, "KDB");
首先,第一行的宣告是跟寫入時用的一樣的…要注意的是,Class 大容器的名稱需要和寫入那邊宣告的一樣。
第二行的宣告我是拿來記錄數值用的…
接下來的 Value1 是拿取資料用的程式碼…在寫入時我們最後寫入了 BarInfo, 而這邊就是先判斷一下 BarInfo ,再把相對應的資料拿出來
所以第三行程式碼這邊的第二個參數,就是要和上面寫入 BarInfo 的第二個參數一樣囉…比較要注意的是第三個參數…這個參數我們在寫入時用的是 ADE.BarInterval
如果你寫入時是開 5 分 K…那這邊讀取時的第三個參數就是 5,如果是 30 分K,那就是 30,因為我寫入時是用日線資料…所以這邊代入的參數就放上了 0。
最後兩行的 MapSN.Get (Get…很明顯的就是拿了…) 代進的參數就是小箱子的名子囉…
這樣就把參數從一個 Charts 傳到另一個 Charts 囉!很簡單吧~~~~(其實難的要死…)
想要做 Pair Trade、想要跑多週期、想要在程式內參考一些其它的市場資料的…都建議來用 ADE 比較好。
最後的成果就會像這樣啦: