期貨量化軟件:赫茲量化手工制圖表和交易工具箱-- 優(yōu)化和全新工具
主文件是 Shortcuts.mqh。 該文件存儲擊鍵處理邏輯。 甚而,這是唯一直接包含在智能交易系統(tǒng)或指標(biāo)中的文件。 相應(yīng)地,它包含其余文件,并對其進(jìn)行初始化。
文件 GlobalVariables.mqh 則包含所有全局變量。 這些設(shè)置主要用于設(shè)置線條顏色、線條厚度、線條延伸系數(shù)、等等。
文件 Mouse.mqh 包含處理鼠標(biāo)移動的類定義。 它存儲當(dāng)前光標(biāo)坐標(biāo),含像素和“價(jià)格-時間”坐標(biāo),以及當(dāng)前主線編號。
Utilites.mqh 包含輔助函數(shù)。 它計(jì)算柱線圖極值、指標(biāo)線交點(diǎn)和其它有用參數(shù),這些參數(shù)也許與繪圖沒有直接關(guān)系,但可判斷圖形的所有方面。
文件 Graphics.mqh 負(fù)責(zé)依據(jù)其它文件中的數(shù)據(jù)進(jìn)行繪圖。 來自該文件中的主要函數(shù)調(diào)用 Shortcuts.mqh 文件。
我并不總是嚴(yán)格地將函數(shù)分組。 某些計(jì)算是在繪圖函數(shù)中進(jìn)行的。 到目前為止,于我來講,開發(fā)和維護(hù)這個結(jié)構(gòu)還很方便。 也許有一天我會改進(jìn)總體布局。
此實(shí)現(xiàn)展示了如何在指標(biāo)中運(yùn)用函數(shù)庫代碼。
優(yōu)化函數(shù)庫性能
此處這是略微有點(diǎn)修改。
為什么我在最初的函數(shù)庫版本中選擇采用智能交易系統(tǒng),而非指標(biāo)? 這很簡單。 每個智能交易系統(tǒng)都在自己的執(zhí)行線程中運(yùn)行。 理想情況下,它們不會相互影響,因此,如果我們需要在多個圖表上處理鍵盤快捷鍵,終端不會變慢太多。
不過,智能交易系統(tǒng)的目的是交易,而該程序并不執(zhí)行任何交易操作。 甚而,當(dāng)一個指標(biāo)附加到圖表上時,在圖表上運(yùn)行另一個智能交易系統(tǒng)也更容易一些。 因此,我決定實(shí)現(xiàn)一款指標(biāo)。 這里會浮現(xiàn)一個性能速度的問題。 如果用戶有多個打開的窗口,這一點(diǎn)尤其重要。 例如,如果用戶有 40 個打開的選項(xiàng)卡(可以有更多),那么若所有圖表同時處理擊鍵,則很難進(jìn)行擊鍵檢查。
然后我就悟了:為什么我們要處理所有的圖表? 所有檢查只需在活動窗口中執(zhí)行。
代碼非常簡單。
/* Shortcuts.mqh */ void CShortcuts::OnChartEvent( ?const int id, ?const long &lparam, ?const double &dparam, ?const string &sparam ) { //... ?if(ChartGetInteger(0,CHART_BRING_TO_TOP)==false) ? { ? ?return; ? } //...