作者:William
當涉及到編程和數據處理時,了解和理解數據結構是非常重要的。數據結構是組織和存儲數據的方式,它決定了數據的訪問、操作和管理方式。
在MQL4編程中,數據結構可以幫助我們以有序、高效和靈活的方式處理各種交易中的數據。常用的幾種數據結構包括:數組、結構體、枚舉。每種數據結構都有其特定的特點和用途。例如,數組适用于存儲和訪問有序的元素集合。
了解和理解數據結構的好處包括:
在MQL4編程中,掌握數組、結構體和枚舉等基本數據結構是至關重要的。在數據組織和管理、輕松地訪問和操作數據、實現複雜的EA或者指标、應對不同的交易策略等場景中非常有效。
上期知識回顧:
enum類型通常用于自定義某個屬性相同的數據集,相對于bool型的使用方式,enum具有更高的靈活性,簡單理解就是可以自定義多種情況出現,從外部參數中理解就是一個多選選的下拉列表,在列表成員中以小寫逗号分割列表成員。
需要注意的是,在枚舉成員中未分配數值的情況下,從首位以0開始依序遞增自動形成(在前一位成員的基礎上增加1個單位);而對于已分配數值的情況下,則會以預分配的值爲準,而後續的成員也會在此基礎上自動增加1個單位
定義枚舉結構:
首先我們定義一段枚舉類型的數據結構,
1、以SelectWeek命名一個枚舉結構(不帶配值),該結構由7個不帶配值的成員組成,我暫且用來表示一周中的每一天。枚舉成員不帶配值命名,因此默認情況下,每個枚舉常量的值将會從0開始自動遞增。0代表了周日以此類推。
然後我們使用了該枚舉結構來關聯并聲明了一個名爲useSelectWeek的變量,并将其初始化爲SelectWeek枚舉結構中的Monday,表示選擇星期的初始值爲周一(實際值爲1,因爲排在了第二個)。
2、再以SelectRisk命名一個枚舉結構(帶配值),該結構在枚舉成員中我們用三個枚舉成員表示不同風險級别。注意:與不帶配值的枚舉不同,帶配值的枚舉可以通過手動指定常量的值來定義枚舉成員;
通過爲枚舉成員指定配值,我們可以将特定的數值與枚舉成員關聯起來,從而在代碼中使用這些枚舉成員時,可以直接引用它們的配值。
使用枚舉結構參與邏輯編寫:
這裏我們再回顧一下OnTimer()函數,OnTimer()爲定時器事件函數,當定時器觸發時被調用。
1、我提前在初始化函數中,設置了毫秒級計時器爲500毫秒(0.5秒),這意味着接下來這段代碼會以0.5秒的時間間隔不斷執行。代碼中我們首先定義一個字符串變量用于存放訂單注釋,一個整型變量用于存放手數值,并将其初始化。
2、使用switch語句進行多分支條件運算判斷,據外部選擇的日期類型,定義Cmt變量的實際值。
3、然後再使用布爾運算(條件運算)的方式來根據useSelectRisk的值定義lot的值。
4、這裏我們使用了Comment()函數來把一些關鍵信息顯示到圖表上,關于這個函數,我會在之後的章節(終端信息輸出)中詳細解讀,以下是顯示結果。
5、經過一番判斷,此時我們得到了注釋和手數的值,在這一段語句中,我先手判斷了手數值是否不等于0(等于或者小于,圈定的作用域中的代碼都不會被執行),然後再使用OrdersTotal()函數判斷持倉單是否小于5。在這兩個條件中我使用到了“和”運算符&&,說明必須兩個條件同時成立,才會繼續執行内部代碼塊。
if(lot!=0 && OrdersTotal()<5)
6、使用訂單發送函數根據剛剛的手數和訂單注釋下達訂單。
*本期使用到的源碼片段可私信客服獲取。
删除后无法恢复
删除后无法恢复