期貨量化軟件:赫茲量化晉升為一款智能交易系統(tǒng)
計(jì)劃
我們已經(jīng)有了自定義指標(biāo),也就是說(shuō),我們的對(duì)象類(lèi)已經(jīng)功能齊備,而且由于這是一個(gè)對(duì)象類(lèi),我們可以輕松地將其轉(zhuǎn)換到其它模型。 然而,在我們的 EA 中簡(jiǎn)單地聲明并嘗試使用這個(gè)類(lèi),并不能讓事情如同我們?cè)谧远x指標(biāo)中一樣工作,原因是我們的 EA 中未提供子窗口功能。 但又冒出了這樣一個(gè)想法:“如果我們用一個(gè)已經(jīng)編譯過(guò),且可工作的自定義指標(biāo),然后用 iCustom 命令從 EA 調(diào)用它,會(huì)怎么樣? 好吧,這也許是可行的,因?yàn)檫@樣不需要子窗口,命令如下所示:
#property copyright "Daniel Jose" //+------------------------------------------------------------------+ input string user01 = ""; ? ? ? ? ? ? ? ?//Used indicators input string user02 = ""; ? ? ? ? ? ? ? ?//Assets to follow //+------------------------------------------------------------------+ int OnInit() { ? ? ? ?int m_handleSub; //... Expert Advisor code ... ? ? ? ?if ((m_handleSub = iCustom(NULL, 0, "Chart In SubWindows\\Chart In SubWindow.ex5", user01, user02)) == INVALID_HANDLE) return INIT_FAILED; ? ? ? ?if (!ChartIndicatorAdd(ChartID(), 0, m_handleSub)) return INIT_FAILED; //... Expert Advisor code ... ? ? ? ?ChartRedraw(); ? ? ? ? ? ? ? ?return(INIT_SUCCEEDED); } //...The rest of the Expert Advisor code ...
這個(gè)簡(jiǎn)單的代碼片段能夠加載我們的自定義指標(biāo),然而它還不能正常工作,因?yàn)槲覀儧](méi)有子窗口。 在這種情況下,當(dāng)代碼在 EA 里執(zhí)行時(shí),EA 將直接在主窗口中應(yīng)用我們的指標(biāo),這意味著圖表會(huì)被指標(biāo)加載的模板掩蓋,這絕對(duì)不是我們想要的。
因此,我們真正的主要問(wèn)題是創(chuàng)建一個(gè)可用的子窗口,以便我們可以使用已經(jīng)功能齊備的指標(biāo)。 但為何我們要為隨后啟動(dòng)的指標(biāo)創(chuàng)建一個(gè)子窗口呢? 這沒(méi)有意義,最好直接往 EA 里添加功能,從而克服可能出現(xiàn)的任何限制。
有基于此,我們需要執(zhí)行若干個(gè)任務(wù):
任務(wù)
目的
1 => 創(chuàng)建一個(gè)通用指標(biāo)。
它允許在不污染圖表的情況下創(chuàng)建和使用 iCustom 命令。
2 => 在 EA 里以某種方式包含該指標(biāo)。
這令您能夠毫無(wú)問(wèn)題地將其轉(zhuǎn)換為具有完整功能的智能交易系統(tǒng)。
3 => 針對(duì)子窗口生成通用對(duì)象類(lèi)
允許經(jīng)由 EA 添加子窗口
4 => 獲取已綁定到 window 類(lèi)的 C_TemplateChart 類(lèi)。
這允許我們管理子窗口的內(nèi)容,而無(wú)需更改功能齊備的代碼中的任何內(nèi)容。
雖然這看起來(lái)很難,但困難很簡(jiǎn)單就解決了。 那好,我們來(lái)逐點(diǎn)處理。