|  | 
| 之前一直搞不懂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了,小弟暫時先測試到這。
 | 
評分
查看全部評分
 |