|
之前一直搞不懂OLE到底是在做什麼,今天終於有點入門的感覺了!!也補足了我心中對Amibroker的最後一個疑問
甚至,驚訝它的強大。
http://www.amibroker.com/guide/objects.html
簡單說,可以寫Script去操作Amibroker中的介面(應該是幾乎所有的)
原廠的範例中,OLE可以用在JScript, VBScript, AFL裡面
JScript: AB = new ActiveXObject("Broker.Application"); VB/VBScript: AB = CreateObject("Broker.Application") AFL: AB = CreateObject("Broker.Application");
但事實上只要有支援COM的程式語言都能用,我利用Autoit的範例做個小修改,初步測試了OLE的功能。
先開啟Amibroker
將下面的Autoit範例編譯後執行,你會先看到Amibroker的Automatic Analysis介面被叫出,
並且出現一個Autoit自訂的圖形介面,
試試上面的按鈕,你可以看到Automatic Analysis的選項被連動操作。
- ; A simple custom messagebox that uses the MessageLoop mode
- #include <GUIConstantsEx.au3>
- Opt('MustDeclareVars', 1)
- _Main()
- Func _Main()
- Local $YesID, $NoID, $ExitID, $msg
- GUICreate("Custom Msgbox", 210, 80)
- GUICtrlCreateLabel("Please click a button!", 10, 10)
- $YesID = GUICtrlCreateButton("All", 10, 50, 50, 20)
- $NoID = GUICtrlCreateButton("N Last", 80, 50, 50, 20)
- $ExitID = GUICtrlCreateButton("Exit", 150, 50, 50, 20)
- Local $AB=ObjCreate("Broker.Application")
- Local $AA=$AB.Analysis
- GUISetState() ; display the GUI
- Do
- $msg = GUIGetMsg()
- Select
- Case $msg = $YesID
- $AA.RangeMode=0
- Case $msg = $NoID
- $AA.RangeMode=1
- Case $msg = $ExitID
- MsgBox(0, "You clicked on", "Exit")
- Case $msg = $GUI_EVENT_CLOSE
- MsgBox(0, "You clicked on", "Close")
- EndSelect
- Until $msg = $GUI_EVENT_CLOSE Or $msg = $ExitID
- EndFunc ;==>_Main
複製代碼
------------------------------
也就是說,我可以利用Autoit或其它程式語言,利用迴圈的語法去重覆呼叫Amibroker執行Scan或Exporation等動作,並指定要執行的AFL,達到只要開啟一個Amibroker的主程式,就可以做到多策略的自動交易的目的。
有興趣進階的人就請自行研究原廠Reference了,小弟暫時先測試到這。 |
評分
-
查看全部評分
|