S__17965070   

 

MQL4 MQL5 

 

 

新語言不包括函數start()init() deinit()

 

指標緩衝區數量不限制

 

在下載EA程式後(或者其他MQL5程式),dll立即被載入

 

檢測縮寫的邏輯條件

 

當數組超過限制時,結束當前操作(緊急的-錯誤輸出)

 

C++一樣運算子優先

 

該語言提供隱式類型(甚至從字串到數位)

 

局部變數不能自動初始化(除了字串)

 

普通本地陣列自動刪除。

 

 

特殊函數 init, start and deinit 

 

MQL4語言只包括3個預定函數可以操作指標,腳本或者EA交易(不包括files *.mqh和資料庫檔)。

MQL5中沒有那樣的函數,但有與之相類似的函數,圖表表明了近似函數。

MQL4中,函數 OnInit OnDeinit 在 init 和 deinit 程式中執行了相同的任務-他們是為本地代碼設計的,

一定在MQL5程式的初始化過程中執行,可以因此重命名函數,或者以他們本身的形式呈現,但是在類似位置這些函數可以添加調用。 

 

舉例  

1482987004286  1482987078515   

 

 

開始函數只在腳本中被OnStart代替,在EA交易和指標中應該分別重命名成OnTickOnCalculate

在MQL5程式操作過程中,這些代碼可以執行,並保存3個函數中:

如果指標或者代碼不包括主函數,或者函數名稱與要求的不相符,該函數的調用就不能執行。

這表示了,如果腳本的資原始程式碼不包括OnStart,該代碼會以一個EA交易編輯。

如果指標代碼不包括OnCalculate函數,該指標的編輯不能完成。 

 

1482987109118   

 

 

預定義變數

 

在MQL5中有諸如Ask, Bid, Bars的預定義變數,變數點和數位的拼寫有稍許不同: 

1482987493192   

 

存取時間序列

MQL5中沒有像Open [], High [], Low [], Close [], Volume [] and Time []這樣預定義的時間序列。時間序列必要的深度能用相關訪問時間序列函數來設定

 

EA交易

MQL5EA交易不需要強制存在處理新訂單號收據事件的函數-OnTick,如在MQL4中一樣(當接收新訂單時執行MQL4的啟動函數),因為在MQL5EA交易可以包含幾種類型的預定義處理器函數。 

 

OnTick  C 新訂單號收據
OnTimer C時間資料
OnTrade - 交易事件
OnChartEvent  C 鍵盤滑鼠輸入事件,圖解物件移動事件,完成文本編輯事件輸入LabelEdit物件領域中的
OnBookEvent  C 市場深度狀態更改事件 
   
自訂指標  
MQL4中,指標緩衝區的數量是有限的,不能超過8
而在MQL5中則沒有這個限制,但是要記得每個指標緩衝區需要在程式端分配部分記憶體,所以,這個新功能也不能濫用。 
MQL4只提供了6種自訂指標繪圖;而MQL5現在提供了18種繪畫類型。繪畫類型的名稱不變,但是指標的圖解表示意義卻顯著變化。 
指標緩衝區中索引趨勢也並不相同。預設情況下,在MQL5中,所有指標緩衝區都有常用陣列行為,
例如 0索引元素是歷史記錄中最古老的一個,隨著指數增加,資料也從舊的換成新的。 
 
MQL4保護的工作自定義指標的唯一函數是SetIndexBuffer
但是調用改變;現在應該指定存儲在陣列中的資料類型,連接指標緩衝區。 
自定義指標屬性也已更改並發展。添加了訪問時間序列的新函數,所以全部演算法需要重新審議。 
 
圖解物件 
 
MQL5中圖解物件的數量顯著增加。
此外,圖解物件現在可以及時置於時間表的圖表中且可精確到秒-現在物件定位點不會四捨五入到當前價格圖表 開盤時間柱上。
對於箭頭物件,可以指定文本和標籤綁定方式,並且對於標籤,可以設置按鈕,圖表,點陣圖標籤和編輯定位定位物件的圖表角。 
  
 
arrow
arrow

    群益期貨林郁馨 發表在 痞客邦 留言(0) 人氣()