MQL4的程序結(jié)構(gòu)
MQL4 程序由以下幾大部分組成:
代碼執(zhí)行順序在主窗(貨幣對K線窗)中開啟程序,最先執(zhí)行的是頭部代碼。 接著執(zhí)行特別函數(shù) init(),并且只執(zhí)行這一次。 程序的主要操作,是運行特別函數(shù) start()。 start() 完成操作任務后,把控制交還MT4。在新的報價(tick)到來時,MT4再次把控制交給 start(),由其運行。 啟動后的程序,可以這樣循環(huán)運行幾個星期至幾個月。 如果匯客把在主窗中的程序移除,MT4會一次性執(zhí)行特別函數(shù) deinit()。 這對于正確終止操盤手的操作,是必要的。 ·特別函數(shù) init(), start() 和deinit() 它們是由MT4內(nèi)部調(diào)用的,程序中沒有對其調(diào)用的語句。 函數(shù) init() 操盤手的init() 調(diào)用執(zhí)行,是在MT4啟動并裝入歷史數(shù)據(jù)之后;或者,更換貨幣對之后;或者,更換K線圖時間周期之后;或者,程序重新編譯之后;或者,改變操盤手設置參數(shù)之后;以及,變更用戶賬號之后。 腳本的 init() 調(diào)用執(zhí)行,是在腳本置入主窗口之際。 外建指標 的init() 調(diào)用執(zhí)行,是在MT4啟動之后;或者,更換貨幣對之后;或者,更換K線圖時間周期之后;或者,程序重新編譯之后;或者,改變外建函數(shù)設置參數(shù)之后。 函數(shù) start()操盤手的start() 調(diào)用執(zhí)行,是在新報價(tick)到來之際。如果在start()執(zhí)行時,有新報價到來,則其被忽略,不予處理。 腳本的 start() 一次性調(diào)用執(zhí)行,是在腳本由init()初始化之后。 外建指標的 start() 調(diào)用執(zhí)行,是在其被置入主窗之后,新報價到來之際;或者,改變了主窗大小;或者,更換幣種、更換K線圖時間周期之后。 函數(shù) deinit() 可譯為“善后函數(shù)”,處理程序結(jié)束時的事務。系統(tǒng)調(diào)用它的原因是:MT4關(guān)閉、主窗關(guān)閉、更換貨幣對、改變K線周期、程序重新編譯、改變輸入?yún)?shù)、改變用戶賬號等。 操盤手和腳本結(jié)束時引起的deinit()執(zhí)行,發(fā)生在新的同類程序置入主窗,替換前者時。外建函數(shù), 在新指標加入主窗時,并不引起的deinit() 的執(zhí)行。 函數(shù)deinit()執(zhí)行限于2.5秒內(nèi)完成。若超時則被系統(tǒng)強行終止。
·程序的運行
·
幾個例子 |
|
|
來自: 分界交易 > 《金融編程技術(shù)》