人人爽天天爽夜夜爽qc-人人爽天天爽夜夜爽曰-人人天天爱天天做天天摸-人人天天夜夜-色网站在线-色网站在线看

您現(xiàn)在的位置:程序化交易>> 外匯現(xiàn)貨>> MT5>> MT5知識>>正文內容

MT5編程實例課程(阿郎)----第一講:Hello,MT5 [MT4]

  • MT5的推出,實在是廣大匯友之福!新增的眾多強大功能,相信會讓大家在交易時如虎添翼。廢話不多說,沿襲MTx編程實戰(zhàn)開發(fā)系列的慣例,先來個小例子,讓大家感受一下MT5的強大。

    選擇菜單上”Tools->MetaQuotes Language Editor”選項,啟動MQL5編輯器MetaEditor5(以下簡稱ME5),或者在MT5中直接按快捷鍵F4,同樣可啟動。進入ME5后,點擊工具欄上的“New”按鈕
    在彈出的對話框中選擇Expert Advisor選項:

    點擊“下一步”,輸入EA的名稱:

    這里我們將第一個EA例子命名為Lesson1,輸入后點擊“完成”按鈕,即可生成Lensson1.mq5文件,一切與ME4基本一致。
    讓我們來觀察一下Lesson1.mq5的代碼結構,與MT4時代自動生成的EA代碼基本一樣,也是三個函數(shù),其功能也是一樣的,區(qū)別在于名字變了,MT4時代的是init、deinit和start,而MT5中生成的是OnInit、OnDeinit和OnTick。On我們可以理解為“當。。。”的意思,那么這三個函數(shù)就很形象了,分別為:當初始化、當程序結束和當價格跳動。這里作個補充:MT5中雖然增加了Timer機制,但默認仍然是基于Tick驅動事件的,Timer機制需自行啟動(最后這段話看不懂?沒關系,以后再用例子說明,這里不看也罷,呵呵)。
    好了,框架有了,那么我們想讓第一個例子Lesson1實現(xiàn)些什么功能呢?我是這樣打算的:讓Lesson1在圖表上添加一個按鈕,當點擊這個按鈕時,會彈出一個對話框,對話框的內容是“Hello, MT5!”。有了目標就好辦,我們繼續(xù)前進!
    首先我們讓Lessson1具備在圖表上添加按鈕的功能。我們在OnInit函數(shù)中添加如下代碼:

    輸入完畢后,按下編譯快捷鍵F5,如輸入無誤,會自動切換到MT5圖表:

    如圖1-3勾上兩個選項,點“確定”,EA就加載到圖表上了。這時我們可以發(fā)現(xiàn),在圖表中多了個按鈕:

    點擊這個按鈕,什么都沒發(fā)生,那是因為我們還沒有為這個按鈕添加處理代碼。下面,我們繼續(xù)為Lesson1添磚加瓦。
    在OnTick函數(shù)下面添加一個函數(shù)OnChartEvent,并輸入如圖1-5所示代碼:

    輸入完畢,再次按下編譯快捷鍵F5,然后點擊圖表上的按鈕,這時就會彈出個對話框,內容為”Hello,MT5!”:
    至此,我們的Lesson1就完成了!怎樣,MT5的功能不錯吧?
    下面,為大家講解一下上面的代碼含義。首先我們看看在OnInit函數(shù)里面添加的代碼
    如果讀者有MT4編程基礎的話,ObjectCreate函數(shù)就非常熟悉了(如不熟悉請參閱筆者的《MT4編程實戰(zhàn)開發(fā)系列》,創(chuàng)建一個Object(物件),OBJ_BUTTON是MT5新增的參數(shù),意即創(chuàng)建一個Button1(按鈕)。
    ObjectSetInteger(0, "Button1", OBJPROP_XDISTANCE, 250);
    ObjectSetInteger(0, "Button1", OBJPROP_YDISTANCE, 100);
    上面兩句分別設定了Button1的X坐標和Y坐標。注意:在MT4時代,Object的所有屬性都是用ObjectSet函數(shù)來設定的,在MT5中,將其細分為ObjectSetInteger、ObjectSetDouble和ObjectSetString三個函數(shù)了,三權分立,各司其職。
    ObjectSetString(0, "Button1", OBJPROP_TEXT, "Say");
    ObjectSetString函數(shù)功能為設定Object的string類型(字符串類型)屬性,這里設置Button1上面的文字。補充一下:MT5中對中文的支持仍然很差,這里如果設置為中文則無法顯示,希望后續(xù)版本有所改善
    ObjectSetInteger(0, "Button1", OBJPROP_STATE, 0);
    最后,設定OBJPROP_STATE屬性,這個屬性控制著Button1的顯示狀態(tài),設置為0,表示默認顯示為彈起的,大家可將其設為1,看看效果。
    綜述,上面的幾句代碼創(chuàng)建了一個叫做Button1的按鈕,并設置了x,y坐標及按鈕文字、顯示狀態(tài)。
    接著,我們來看看新增的函數(shù)OnChartEvent。如上所述,OnChartEvent顧名思義就是“當圖表上發(fā)生了事情時。。。”,OnChartEvent的參數(shù)比較多,也比較復雜,這里暫時不解釋,后面有機會再細談,這里我們需要知道的是:在MT5中,當圖表上發(fā)生了任何事情,如點擊按鈕、輸入框中輸入文字、拖動Object、按下鍵盤等等,就會調用OnChartEvent函數(shù)。那么,我們只需守株待兔,在OnChartEvent函數(shù)中檢測Button1是否被按下:
    if (id==CHARTEVENT_OBJECT_CLICK && sparam=="Button1")
    這句,意思就是當圖表上發(fā)生了事情,如果是Object被按下,且Object的名字是Button1,則滿足條件,繼續(xù)下面的操作:
    MessageBox("Hello, MT5!", "Button1", MB_OK);
    MessageBox函數(shù)功能是彈出一個對話框,其中參數(shù)這里就不詳述了
    看起來Lesson1似乎工作得不錯,但仔細看看,按鈕在按下之后不會自動彈起來!為了解決這個問題,我們把OnChartEvent函數(shù)改進一下:
    還記得OBJPROP_STATE屬性吧,控制按鈕的顯示狀態(tài),那么這里的意思就是顯示完MessageBox后,再次把按鈕的顯示狀態(tài)恢復為彈起。至此,Lesson1開發(fā)全部結束,敬請關注MT5編程實戰(zhàn)開發(fā)系列第二講!
    作者:阿郎(shawnyau)栽自火線論壇http://www.fx998.cn。
    Lesson1.rar (1 K) 下载次数:257

【字體: 】【打印文章】【查看評論

相關文章

    沒有相關內容
主站蜘蛛池模板: 国产成人精品视频一区 | 一级黄色片免费看 | 大又大又粗又爽又黄毛片女人 | 国产毛片a级 | 成人网mm视频在线观看 | 91视频 88av | 中国一级毛片 | 免费h黄肉动漫在线观看 | 青草国产 | 亚洲国产第一区二区三区 | 2020久久精品亚洲热综合一本 | 成在线人免费视频一区二区三区 | 精品九九人人做人人爱 | free女厕所vedio中国 | 青青草成人影院 | 揉大乳gif动态图 | 永久免费看黄 | 一级黄色在线观看 | 日本免费三级网站 | 色视频免费观看高清完整 | 亚洲视频在线观看免费视频 | 亚洲天堂视频在线免费观看 | 激情综合网五月激情 | 丝袜足控免费网站xx网站 | 欧美日本免费观看αv片 | 中国性成熟xxxxhd | 日韩一区二区三区四区 | www在线观看免费 | 边做边叫床的大尺度床戏欧美 | 免费啪啪社区免费啪啪手机版 | 国产成人经典三级在线观看 | 国产国语一级a毛片高清视频 | 亚洲欧美性视频 | 黄色a级片在线观看 | 国产精品免费久久 | 最近2019中文字幕大全7 | 欧美精品一级 | 成人午夜视频在线播放 | 黄色一级片观看 | 国产91网站在线观看 | 国产成人高清视频免费播放 |