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

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

MT5中的調(diào)試功能應(yīng)用(Debug) [MT4]

  • MetaTrader發(fā)展到MT5版本后,雖然相比起專業(yè)化的開發(fā)工具還有一定距離,但終于初具一個(gè)現(xiàn)代化軟件開發(fā)工具的雛形了,這其中在MetaEditor5中提供的Debug功能(調(diào)試功能)就是一個(gè)巨大的進(jìn)步。涉足過(guò)MT4編程的朋友可能都有過(guò)痛苦的經(jīng)歷:對(duì)照著網(wǎng)上的眾多代碼,東抄西湊,經(jīng)過(guò)一番天昏地暗的折騰后,終于弄出了一個(gè)頗為得意的EA或指標(biāo),好了,掛到圖表上開始享受高科技的便利吧!興沖沖的等了半天,就是沒啥反應(yīng)!抓狂吧,還不知道抓哪里。。??赡苁悄硞€(gè)變量忘記賦值了,或者把應(yīng)該賦給B變量的數(shù)值賦給A變量了,怎么辦?從頭開始慢慢檢查,代碼少的還能扳著手指頭算一下程序運(yùn)行到哪里了,變量該是多少了,如果成百上千行的代碼,那就哭吧。。。
    廢話少說(shuō)(都說(shuō)了那么多。。。),還是用一個(gè)例子來(lái)介紹一下Debug的使用方法吧,沒有接觸過(guò)Debug概念的朋友也可藉此機(jī)會(huì)學(xué)習(xí)這個(gè)強(qiáng)大的功能。
    首先我們來(lái)設(shè)想一下:假設(shè)現(xiàn)在代碼中有一個(gè)循環(huán),循環(huán)中每一次都會(huì)給一個(gè)變量加1,那么如何知道這個(gè)加1的操作是否正確的執(zhí)行了呢?借助MetaEditor5提供的Debug功能,我們來(lái)窺視一下MT5的內(nèi)部運(yùn)作吧。新建一個(gè)EA,名字隨便起,這里姑且叫作DebugDemo吧,其它屬性保持默認(rèn),確定。生成DebugDemo的代碼框架后,首先添加一個(gè)int類型的全局變量sum:
    1. int sum = 0;
    1. for (int i=0; i<100; i++)
    2. {
    3. sum += 1;
    4. }
    復(fù)制代碼
    上面這段代碼如具有一定編程基礎(chǔ)的朋友應(yīng)該都能看懂了,就是循環(huán)100次,每次給sum這個(gè)變量+1。那么,我們現(xiàn)在希望EA運(yùn)行的時(shí)候是逐遍地運(yùn)行循環(huán),每次循環(huán)我們都能觀察到sum這個(gè)變量里面的數(shù)據(jù)變化,該怎么做呢?首先,我們給這段代碼加入一個(gè)斷點(diǎn)(BreakPoint)。什么是斷點(diǎn)呢?這里作個(gè)簡(jiǎn)單的解釋:斷點(diǎn)是程序開發(fā)中的一個(gè)專業(yè)術(shù)語(yǔ),通俗來(lái)說(shuō)就是告訴MT5運(yùn)行到這個(gè)斷點(diǎn)的時(shí)候,就打住了,別往下走了,聽候上級(jí)吩咐吧!那么,我們的斷點(diǎn)放在哪里好呢?(大家往下看之前可以自己想想這個(gè)問(wèn)題的答案)答案是:放在sum被賦值的地方。好了,目標(biāo)有了,領(lǐng)導(dǎo)發(fā)話了那就干活吧,但是,還有個(gè)問(wèn)題,怎么添加斷點(diǎn)呢?把鼠標(biāo)放到希望加入斷點(diǎn)的地方(以行為單位),單擊右鍵,選擇"Toggle Breakpoint"選項(xiàng),或直接按快捷鍵F9,就會(huì)在這行的行號(hào)位置出現(xiàn)一個(gè)藍(lán)色的圓圈,這就表明在當(dāng)前位置添加了一個(gè)斷點(diǎn),當(dāng)EA代碼運(yùn)行到這個(gè)斷點(diǎn)位置時(shí),就會(huì)停下來(lái)了。
    加入斷點(diǎn)后,編譯代碼,運(yùn)行EA。這時(shí)會(huì)自動(dòng)切換到MT5軟件上去了,我們這時(shí)切換回MetaEditor5,大家可以看到在下方的輸出窗口:
    我們?cè)?quot;Expression"下方輸入變量名sum:

    按下回車:

    好了,我們剛才干了些什么呢?嗯,我們把變量sum加入了監(jiān)視列表,從現(xiàn)在起,只要變量sum里面的數(shù)據(jù)發(fā)生任何變化,這里都會(huì)即時(shí)更新的,通過(guò)這種方式,我們就可以實(shí)時(shí)跟蹤變量sum的數(shù)值變化,從而達(dá)到所謂的調(diào)試目的了。
    現(xiàn)在,我們看到"Value"一列中,數(shù)值為0,這表明目前為止,sum里面的數(shù)據(jù)是0,還是我們初始化時(shí)候賦的值。但我們這個(gè)EA的功能不是讓sum循環(huán)100遍的+1么?怎么沒完成任務(wù)就開始休息了呢?呵呵,這就是斷點(diǎn)的作用了,由于這行存在斷點(diǎn),所以程序運(yùn)行到sum第一次賦值之前就停下來(lái)了,領(lǐng)導(dǎo)不發(fā)話,誰(shuí)敢動(dòng)啊。。。
    這時(shí)候,我們看看工具欄,有3個(gè)本來(lái)是灰色的按鈕變成可用狀態(tài)了:

    我們點(diǎn)擊一下第一個(gè)按鈕"Setp into",這時(shí)就會(huì)發(fā)現(xiàn)value一欄的數(shù)值發(fā)生了變化,從0變?yōu)?了,這是因?yàn)槌绦蚺芰艘槐檠h(huán),給變量sum進(jìn)行+1了。顧名思義,setp into,就是步進(jìn),也就是一步步的來(lái)運(yùn)行。舉個(gè)例子,大家應(yīng)該都參加過(guò)軍訓(xùn)吧?在練習(xí)正步走的時(shí)候,教官通常都會(huì)進(jìn)行分解動(dòng)作練習(xí)(不堪回首的記憶啊。。。),教官喊“一”,大家踢左腳,喊“二”,大家踢右腳。。。我們這里也大概是那么回事了,每按一下"Setp into"按鈕,EA就動(dòng)一下,由于這里總共要循環(huán)100遍,所以每次EA就循環(huán)一遍,變量sum就被+1一次,如此往復(fù)循環(huán)。。。
    好了,至此就結(jié)束了關(guān)于Debug功能的簡(jiǎn)單介紹,由于筆者能力所限,只能起個(gè)拋磚引玉的作用,希望有經(jīng)驗(yàn)的朋友能在論壇上不吝分享關(guān)于Debug的使用心得,或來(lái)人來(lái)函來(lái)電以及來(lái)而不往非禮也之進(jìn)行關(guān)于MQL5開發(fā)方方面面之熱烈洽談。。。
    作者:阿郎(shawnyau)栽自火線論壇http://www.fx998.cn。

【字體: 】【打印文章】【查看評(píng)論

相關(guān)文章

    沒有相關(guān)內(nèi)容
主站蜘蛛池模板: 国产欧美大片 | 天堂网资源 | 国产亚洲女在线线精品 | 亚洲欧洲日产国码 最新 | 国产麻豆a一级毛片爽爽影院 | 成人激情在线 | hdⅹvideos成人 | 5252色欧美在线男人的天堂 | 久久夜夜肉肉热热日日 | 日日摸夜夜欧美一区二区 | 有哪些免费的毛片可以看 | 日韩欧美精品在线 | 91成人抖音 | 中文欧美日韩 | 国产精品天天操 | 成人免费黄色小视频 | 亚洲a在线观看 | 777艳片 | 日韩天堂在线观看 | 男女午夜特黄毛片免费 | 欧美一区二区二区 | 亚洲欧美日韩中文字幕在线不卡 | 成人欧美日韩视频一区 | 大黄免费网站 | www.成人av.com | 欧美日韩国产免费一区二区三区 | 五月天久久婷婷 | 98在线视频噜噜噜国产 | 羞羞视频免费观 | 妞干网这里只有精品 | 中文字幕二区三区 | 成年人在线免费网站 | 一级特黄录像播放 | 国产在线视频一区二区三区 | 毛片网在线观看 | 午夜影院免费 | 成人欧美一区二区三区视频xxx | 精品一区二区三区在线观看 | 欧美亚洲综合在线 | 欧美成人免费网在线观看 | 黄色一级大片儿 |