MT5 / MQL5新功能新函數首次大曝光 [MT4]
作者:
MT4 來源:
cxh99.com 發布時間:2012年05月08日 點擊數:
【
收藏到本網的會員中心】
- 我只能進行一下簡短的描述。
MetaTrader 5 和 MQL5的高水準讓大多數人感興趣。
MQL5中根本的改變是面向對象編程的出現。我不會在面向對象編程方面走得更深,那只是給資深程序員提供了更多的可能性。對于那些喜歡MQL4并且不懂得面向對象編程方法的人來說,在MQL5里仍然可以用MQL4的方式編程,而不使用面向對象功能。區別只是如果你要使用這個功能,就必須重新學習。
讓我們看一個簡單的例子:Ask和Bid變量沒有了。為了取得賣出價,需要調用以下函數:
復制代碼- SymbolInfoDouble(Symbol(),SYMBOL_BID);
不需要頻繁使用Low[0] 或 iLow ( Symbol(), PERIOD_D1, 0 ),但你可以很容易重建他們,新函數把歷史數據逐個讀入內存,從某一K線到另一K線,或從一個選定的時間到另一個選定的時間。通過預讀數據,整個可見的變化范圍都被讀入內存。不管你是否需要,它已經被讀入內存了;比如你需要讀入一分鐘的數據,那么從1999年(如果存在有效歷史數據的話)到此時此刻的一分鐘數據都會被讀入內存。
下面的例子只讀入必要范圍的數據。極大的節省了時間和內存。
復制代碼-
- MqlRates rates_arrayG[];
- Int Bar=30; // 從當前K線開始只讀入30個K線的數據
- iCopBar=CopyRates(Symbol(),PERIOD_M1,0,Bar,rates_arrayG);
這個功能既節省時間又節省內存。
這樣的功能性變化并不嚇人,我們只需要花點時間學習一下函數指針。
我等待已久MQL的一些有用的創新:
OnTimer() – 處理時間事件的函數(可以使EA的工作不再單純依賴tick數據的觸發);
OnTrade()-處理交易事件函數-交易倉位的開立、關閉或數量的變化。
OnChartEvent() – 處理來自鼠標和鍵盤的消息。
讓我們仔細研究一下這些功能:
要調用OnTimer()函數,需在OnInit()函數(EA初始化事件處理器)里初始化計時器。
例如:
復制代碼-
- //+------------------------------------------------------------------+
- //| |
- //+------------------------------------------------------------------+
- int OnInit()
- {
- EventSetTimer(1); //每一鈔鐘將會提交給 OnTimer()函數
- }
- //+------------------------------------------------------------------+
- //| |
- //+------------------------------------------------------------------+
- void OnDeinit()
- {
- EventKillTimer(); // 退出時必須調用取消時間基準
- }
- //+------------------------------------------------------------------+
- //| |
- //+------------------------------------------------------------------+
- void OnTimer()
- {
- MqlDateTime str1;
- TimeGMT(str1); // 新函數取得 GMT 時間
- Comment(str1.hour
- ,str1.min
- ,str1.sec
- ,str1.day
- ,str1.mon
- ,str1.year
- ,str1.day_of_year
- ,OrdersTotal()
- ,PositionsTotal()
- );
- }
因此,控制不只象早先那樣能夠在收到tick數據時得到,還可以從時鐘控制器上得到,這樣可以編寫實時的易處理程序,有了這個功能,更復雜的系統可以創建。
我喜歡OnTrade()函數,這個函數在下列交易事件被觸發時調用:訂單放置、止損或止盈被激活、改變止損或止盈數值、放置/刪除一個待辦定單。
現在監視事件與交易操作之間的關系更容易了。現在不用在每個tick發生或K線產生時循環檢查定單狀態了。這樣的循環檢查在MQL4中被使用,這極大地削弱了程序的性能。因此,在優化過程中特別重要。
讓我們仔細研究一下OnChartEvent()函數。這個函數在以下幾個事件發生時調用。我沒有逐個測試,但這個目錄給人印象深刻:
CHARTEVENT_KEYDOWN — 鍵盤按下事件;
CHARTEVENT_OBJECT_CLICK —在一個圖表上繪制的物件被鼠標點擊事件;
CHARTEVENT_OBJECT_DRAG —在一個圖表上繪制的物件被鼠標移動事件;;
CHARTEVENT_OBJECT_ENDEDIT — 文本編輯結束事件;
CHARTEVENT_CUSTOM+n — 定制事件的識別;
CHARTEVENT_CUSTOM_LAST —定制的最后一個事件的識別.
高水平管理交易和圖表的能力-這是開發者事先承諾過的
新的圖表物件、按鈕、進入域出現了。圖表管理變得非同尋常,甚至可以插入來自于文件的圖片-這個選項給那些喜歡特別設計的人提供了很多可能性。這不是Photoshop,這是MQL5 和 MetaTrader 5的結果。通過這些功能,你可以創建自己的按鈕或添加進入域,例如,一個關閉所有打開訂單的按鈕或預先設定好止損止盈的快速買入和賣出按鈕。
有一個另人不愉快的事實:那就是指標里不能創建物件,這是為了使指標執行得更快。好消息是他們知道了這一點,可能會讓一個圖表上可以執行多個EA。這樣我們可以創建一個帶有物件的“EA指標”,這個EA不交易,象指標一樣操作。現在,問題是這樣解決的:在一個圖表上運行一個交易EA,這個EA在可以在第二個圖表上創建物件,二者可以互換。
我試著把我的一個MQL4突破指標轉換成MQL5的,用了好幾個小時,大部份時間用在學習函數和調試上了。不過MQL5的程序代碼已經變得很短了。
至于終端方面,讓我印象最深的是數據周期的數目。在我看來,已經過多了。但是,大量的時間周期對一些交易者可能有用。現在創建任意時間周期只需要一步。所有的數據都是以一分鐘周期存儲的,因此轉換成任何不同的周期都沒有問題-這是一個重要的技術解決方案。
在歷史數據目錄里,現在沒有不同時間周期的文件了。
另一個另人愉快的新功能是現在我們可以清除日志文件了。
這只是MetaTrader 5簡短的評價。在這么短的時間內我無法描述系統全部的新功能。2009年9月9日開始測試,這是一個象征性的日子,我確信它將是一個幸運數字。自從我得到MetaTrader 5 終端 和 MQL5的測試版,幾天過去了,還沒能試遍它的所有功能,但我已經印象非常深刻了。
來自METAQUOTES的魔術師們創造了一個不可思議的產品。我是一個有25年經驗的開發者,我看到了很多項目的開始并一定能夠完成。
獻上最好的祝福
Yuriy Zaytsev
Skype: yurazyuraz
翻譯者:bcsunwww
MetaQuotes 官方網站英文原文地址:http://articles.mql4.com/854
主站蜘蛛池模板:
免费在线观看中文字幕|
国产精品永久在线观看|
国产在线播放你懂的|
jizz18高清视频|
欧美综合图区亚欧综合图区|
国产午夜成人AV在线播放|
99RE6在线视频精品免费|
欧美一区二区三区婷婷月色|
再来一次好吗动漫免费观看|
成人福利在线视频|
永久看一二三四线|
国产精品夜夜爽范冰冰|
久久婷婷五月综合97色一本一本|
老司机亚洲精品影院在线|
国产精品久久久久9999高清|
а√最新版在线天堂|
日本尹人综合香蕉在线观看|
亚洲女人初试黑人巨高清|
精品久久久久久中文字幕无码软件|
国产超爽人人爽人人做|
两个人看的视频www在线高清|
曰批全过程免费视频网址|
亚洲第一综合色|
精品国产三级a在线观看|
国产精品美女一区二区视频|
久久精品午夜福利|
欧美香蕉爽爽人人爽|
又湿又紧又大又爽a视频|
高清男的插曲女的欢迎你老狼|
婷婷丁香六月天|
久久亚洲精品中文字幕|
第九色区AV天堂|
国产人澡人澡澡澡人碰视频|
writeas朱志鑫|
欧美jizzhd精品欧美|
又黄又粗又爽免费观看|
黄色毛片在线看|
国产精品成人一区无码|
久久久久久曰本av免费免费|
欧美三级免费观看|
亚洲精品国产精品国自产观看|