2008年10月9日 星期四

DDE接收即時資料自動化 - marco實做

盤中接收即時資料並畫出即時K線這篇文章提到。

怎樣才可以把即時資料匯入到GS,並在GS中畫K線圖。

這是TS自動交易的第一步,而這個第一步,還真的是很麻煩。

複習一下,日盛和康合DDE為例。

若是要每天都能夠讓GS接收這兩個DDE來源的即時資料,在每天開盤前要先

1.開啟日盛DDE和康合DDE

2.開啟Excel DDE Server

3.打開GS(MetaServer也會跟著被打開)

4.啟動MetaServer

5.打開ProSuite,並開啟Workspace。

6.開啟一個chart接收即時資料畫出K線圖

以上,大概分成6個步驟。

而這6個步驟完成後,等於完成了4000的報價視窗。

是不是很麻煩??不過這是沒辦法的事...

若是只操作台灣商品,日盛HTS真的是不錯的選擇。

但是,有操作國外商品的朋友,在不開美國戶且不購買即時資料的情況下

這方法確實是比較經濟。

好...現在咱就利用Marco Express這軟體,讓以上步驟都自動化吧!!!

首先,先讓電腦能夠每天定時開機,安裝好Marco Express這軟體

Marco Express安裝好後,記得把捷徑放在啟動裡。

這部份請參考搞定自動交易這一系列的文章。

接下來開始Marco Express巨集實做,照著圖走吧!!

對於Marco這軟體有不懂的,可參考Macro Express 簡易教學這篇文章

PS:為了節省版面,設定步驟相同的Marco製作不會重複喔!!

1.開啟日盛DDE和康合DDE

這部份用日盛DDE舉例,日盛會了,康合應該就會,所以沒有康合實做喔。



如圖,在啟動DDE時,在Window工作表上,是新增一個JIHSUN DDE的程式。

而不是直接在HTS內啟動,所以放棄儲存畫面的念頭吧。

首先,先啟動日盛DDE,然後新增一個Marco。



然後會出現下圖,照數字順序做吧。



1 . Schedule:意思是這Marco是有行程的。
2 . 承1,行程為每天。
3 . 取消勾選才可以設定4。
4 . Marco執行時間範圍。
5 . 設定執行Marco時間,圖中為每天早上8點40分
也可以選擇六日不執行Marco。
6 . 1~5都設定好了再點,然後會跳到下圖。



剛剛只是設定好Marco的行程,但是還沒內容

也就是這Marco要做什麼事?? 就是開啟日盛DDE報價。

所以內容就在Script中設定。

啟動DDE的邏輯是這樣的:

假設Windows工作列中沒有啟動DDE,就啟動DDE。

所以,先找到Script裡commands中的logic

然後找到,"If Not Window" 這指令



然後跳出下圖



1 . 如果Window沒有執行...執行什麼呢?? 2以下的步驟會設定
2 . 承1,如果Window沒有執行JIHSUN DDE的話,就..
3 . 選擇JIHSUN DDE,在建立Marco時若沒有開啟DDE
就沒有JIHSUN DDE可以選,所以要先開啟
4 . 點選OK後會出現下圖。



Window Title出現了剛剛選的JIHSUN DDE

再點一次OK,Marco Script已經出現了

If Not Windpw Title " JIHSUN DDE " running 的判斷式

上述的判斷式完成了,If 成立,那成立後要怎樣??

就是執行JIHSUN DDE,要怎麼執行JIHSUN DDE這程式??

要先到該程式所在的資料夾,然後執行。

所以If 成立之後,有兩個動作。

第一:去JIHSUN DDE這程式所在的資料夾,這部份看下圖吧。



1 . Files/Folders
2 . Change Directory/Folder
3 . Change Default Folder
4 . 點下去就對了..
5 . 找到 Jihsun\HTS2 這資料夾
6 . 確定
7 . OK

完成1~7後,表示If成立後,到 Jihsun\HTS2 這資料夾內了

接下來就是啟動JIHSUN DDE這程式。一樣操作方法如圖。



1 . Windows/Programs
2 . Program/Launch
3 . Launch Program Only
4 . 點...
5 . 在HTS2這資料夾下
6 . 選DDEExcel
7 . 開啟
8 . OK

一樣,動作完成後,這時Macro Script內已經搞定了。

在把End If加到最後就大功告成。



完成後記得Test Run一下,看看DDEExcel有沒有被開啟

有的話就成功了,先把Marco儲存一下。


還沒完喔,我們可以看到,當日盛DDE啟動時,報價是加權指數。

要得到期貨報價,要把商品點到期貨那邊,如下圖。



若是沒有把商品轉到那邊,是顯示不出期貨報價的。

這部份用"滑鼠移動"和"按下滑鼠左鍵"這兩個指令就可以了。

下滑鼠指令的方法下面有敘述。


當設定好商品後,再加一個動作,就是把DDE報價畫面最小化。

最小化主要是怕自己不小心把他關了,所以最小化比較保險。

最小化步驟如下:

1.Delay 1秒:DDE才剛開起沒多久,等一下比較好



如圖,設定完成後多了一個Delay 1 Seconds的指令。

2.滑鼠移到最小化的按鈕:一樣,跟著下圖走



然後加一個按下滑鼠左鍵的指令,如圖



以上,大功告成,一樣Test Run一下,儲存Marco。

PS:在啟動DDE前,要先登入HTS喔。沒有登入HTS就啟動DDE是收不到資料的

2.開啟Excel DDE Server

這步驟有兩個動作。

第一:判斷確認Office Excel沒執行 -> 執行Office Excel

這個用啟動日盛DDE的方式去完成就可以了。

第二:開啟Excel DDE Server。

這裡可先建立Excel DDE Server的捷徑,然後把捷徑放在一個"不會亂跑"的位置

像下圖。



然後下滑鼠移動的指令去點捷徑



出現要不要更新的對話視窗,更新吧,不然怎麼接資料

一樣也是滑鼠弄一弄就好了。

都設定好後,一樣Test Run看看吧,然後記得儲存。

最後的Marco Script內容如下。



PS:若是用日盛DDE,盤後點選更新會造成Excel當機

今天開盤前幾分鐘有做過測試,正常,所以盤後設定時Excel當機就不管啦!!



3.打開GS(MetaServer也會跟著被打開)

4.啟動MetaServer

這兩個步驟可以一起弄,所以就一起講。

一樣新增一個Marco,請注意啟動Marco時間,要在1 & 2完成之後。

先手動啟動GS,看看Window會發生什麼事。如圖



啟動GS後,MetaServer也被啟動,且MetaServer會出現在視窗上。

這樣就很簡單了!!

首先,新增一個Marco,利用啟動日盛DDE的方式啟動GS

然後Delay個10秒左右,在利用滑鼠指令去點紅色框起來處。

全部都弄好後,Marco Script長這樣,如圖。



一樣,Teat Run -> 儲存 -> 搞定 (喔!!這段落篇幅很少喔XD)


5.打開ProSuite,並開啟Workspace。

6.開啟一個chart接收即時資料畫出K線圖

最後兩個步驟也是可以寫在一起的。

在新增Marco之前,先把ProSuite設定好。

首先,開啟ProSuite並新增一個Workspace

這個Workspace就讓他專門負責即時方面的資料吧

現在就在這Workspace中畫出即時K線圖

設定請參考盤中接收即時資料並畫出即時K線

再來請把Workspace儲存。然後再開...

開啟時選擇,Open Workspace from the last session



檢查一下Workspace內的東西跟上次啟動時是否相同。

Remember this option and do not prompt ma again 要記得勾選

這樣下次開啟ProSuite時,就不會再出現上圖的對話框了。

沒問題的話,OK!!ProSuite這沒問題,可以新增Marco了

這部份跟啟動DDE一樣,用If ... then ... 去啟動ProSuite

不說明了,直接秀出Marco Script吧!!




以上...全部搞定!!

新增的Marco一共有5個,如圖 ( 也可以弄成4個 或許更少 )



都弄好以後,就等開盤測試了。

呼~終於寫完了,文章還真長

到底是我廢話多呢?還是本來就需要長篇福?

若是搞不定的朋友,Mail給我吧,我再把Marco匯出給你們。

不過可不要什麼都沒試就伸手跟我要阿,總要練習一下嘛( 煙~ )
HEMiDEMi Technorati Del.icio.us MyShare?犖?貊惜 Yahoo