

下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、目錄MT4編程入門(一):MT4自定義指標(biāo)的基本操作指標(biāo)源碼中的常用符號說明自定義變量自定義函數(shù) 自定義數(shù)組市場數(shù)據(jù)取值判斷語句 循環(huán)MT4自定義指標(biāo)的結(jié)構(gòu)MT4編程入門(十):畫一條指標(biāo)線MT4編程入門(一):MT4的報警& indicatorff文件匹 錦矩 查看 收障 工具 幫助QPQ 后退-保存目錄yMT4自定義指標(biāo)的保存目錄、指標(biāo)編緝器與指標(biāo)調(diào)用一、MT4自定義指標(biāo)保存在C:Program FilesMetaTrader 4expertsindicators這個目錄中,該目錄中主要有二種類型的文件,一種是mq4文件,這是MT4自定義指標(biāo)的源碼文件,是一種高級語言文件,可以人工
2、編寫修改,機器不能直接執(zhí)行, 但能在MT4啟動時自動編譯為ex4可執(zhí)行文件。另一種就是ex4文件,這是MT4自定義指標(biāo)的可執(zhí)行文件,由mq4文件編譯得到。mq4文件必須編譯為ex4文件才能被MT4執(zhí)行。但ex4文件是機器碼文件,人工不可修改另外還有一個文件是mqlcache.dat,它用來保存目錄中的文件信息,如果MT4無法自動編譯,只要刪除此文件即可解決問題mq4文件編譯為ex4可執(zhí)行文件有兩種方法:1、MT4啟動時,會自動把此目錄中的mq4文件編譯為ex4文件。MT4編程入門(一) :MT4自定義指標(biāo)的基本操作MT4編程入門(二)MT4編程入門(三)MT4編程入門(四)MT4編程入門(五)
3、MT4編程入門(六)MT4編程入門(七)MT4編程入門(八)MT4編程入門(九)A.c mnrul at i. on. nt q可執(zhí)行不可編牡mAwe some. ex4地扯文件和文件妄豐其它僅置口 曬PMtEQ我的文襠 口共拿文襠J毯的電腦J冏上郭居口旬健一傘新U將遠(yuǎn)個文件7 并拿此文f宅IC:Frogr am F ilesMetalrader 4exptrtsindi cators源碼文件可執(zhí)行文件frnii IHMmuIWII|:Ac curaul all on. ex4 :2、用MQ語言編輯器打開mq4文件,點一下“編寫”按鈕,即可生成ex4文件、下載保存mq4文件、ex4文件在論壇上
4、我們經(jīng)常看到有mq4文件、ex4文件可供下載,我們只要把它們保存到C:Program FilesMetaTrader4expertsindicators這個目錄,也就是下面這個目錄中,就可以了。如果下載的是ex4文件,那可以直接調(diào)用;如果是mq4文件,則需要重啟動MT4,讓系統(tǒng)自動編譯生成ex4可執(zhí)行文件。如果下載的是rar、zip等類型的壓縮文件,還必須下載后解壓到此目錄才能使用。在論壇上,我們也經(jīng)常能看到指標(biāo)源碼貼在網(wǎng)頁上,但沒有mq4、ex4等文件可以下載,只能復(fù)制源碼。此時需要我們自己動手將源碼保存為源碼文件,那也沒關(guān)系,非常地簡單,多點幾下鼠標(biāo)就搞定。1、打開MQ語言編輯器2、在MQ
5、語言編輯器中新建一個文件,文件名一定要輸,別的隨便操作都沒關(guān)系。另有為:存保存蠱(X):Accel It i?Alligat* :ATR.呻 Im1文件名 a): 戻存類型 d):取消保存目錄不要搞錯jLIkdlG at中斗弓菽的宣檔d我的電腦亠本地磁盤 CC:)Program F 訂 esNattTr iitr 4己 tstperts負(fù)|世CD. m陰矽 Mcvi r .1 ) mdi c ai&r gMemory Sti ck (J : 本地磁盤 CF ) B SD / MHC(G Jni nvn.pAiicu-1三、將源碼保存為源碼文件4 let aEdit or -報警文件 褊
6、輯 顯示電)工具 窗口妣)幫助-5 S IfO I + b購|GP|酚 z 舀終端RS:交製抿譬亠 g *回之/ /-1- 4H交叉報警剛| |/ / | Cop yright. ?2D07fMscaQuotses SoitTjare Corp ,|/ / |http: /DTFJW.metaquotes . ne c |/ ,-十a(chǎn)per t-y cropytrrCopytigiit 72007 Mee;# ptaperty LinEp;/ /uwvx aquct ea netrr/ /- - - - -“-_/ | expert inivlligat;iQxiruncp.口n/ / !-
7、- -int liiit-()/z女牛中扭石甚部請、4、接著我們就可以將網(wǎng)頁上源碼復(fù)制粘貼進(jìn)來試著點一下“編寫”,如果左下角出現(xiàn)“0錯誤,0警告”,那說明源碼沒問題,編譯通過了,成功生成了 件O letaEditor3、刪除新文件里面的所有內(nèi)容,成為一個空文件,ex4可執(zhí)行文MetaEditor - RST交叉很警-口1文件電)備輯 顯示班)謚明錯誤|在立件中查找丨在線資料 幫勛| 幫肘請按保存后,再點一下編寫。到此,源碼保存完成。當(dāng)然,我們也還有另的辦法: 可以打開一個原已存在的mq4文件,然后另存為你需要的文件名,再刪除文件中的所有內(nèi)容成為空文件,把網(wǎng)頁上的 源貼到文件中保存即可eopet
8、ty lndlcaraf extern intPSI1=14; eKteun int RSI2=28;int ALertmarkO; i_nc start f)indcvI復(fù)制網(wǎng)頁上的源寸 牯貼到此處十丿iCAlettmsck!=10&iRSI(NULLrO,RSIEjPRICE_GLQSZ0)-60IRSI(NULLnR3I1,PRICE2CLOSEZO) iRS. (Alert (Synibol (), Period ()y 60_t ZTH?文件岀現(xiàn)這仝說明編譯成功II右-卩錯諜I在丈件中查找I在幾資料I幫購Ir-O MetnFditor - q血匚叵岡麗莎|編揖顯示世)工員_
9、3 X即新立件Ctrl+NE$ ffif.Ctrl+D收盤價IM保存Ctrl+S(另存九辭2PRIC_CL0EriRSI(NULL,ORSIlFRICECLOSE.vII出廠JI潢.u警告說明空寫的說即交熨赧啓.皿 “也可以在記事本中新建一個文件,把網(wǎng)頁上的源碼貼進(jìn)記事本,然后取個文件名保存到上面提到的目錄,不過文件后 綴必須輸入mq4,保存類型選擇“所以文件”四、mt4程序調(diào)用自定義指標(biāo)這非常簡單MT4編程入門(二):指標(biāo)源碼中的常用符號說明一、注釋符:單行注釋“ ”、多行注釋“/*/程序不執(zhí)行注釋,注釋內(nèi)容僅供閱讀或保留不用的語句 在MQ語言編輯器中,注釋內(nèi)容以灰色顯示二、分號“;”表示一
10、個語句結(jié)束三、逗號“,”表示一個語句內(nèi)部間隔,不結(jié)束語句。四、等于號“=”賦值語句,把等號后面的值賦給等號前的變量中五、加號“+”整數(shù)或小數(shù),則表示值相加;字符串,則表示前后連接。六、加加“+”表示把符號前的變量值加1,例如:“i+;”這實際上就是:“i=i+1;”的簡寫,表示i的值加1七、加等于“+=”表示把符號后的值加到符號前的變量中。例如“i+=2;”,實際上就是“i=i+2;”的簡寫,表示i的值加2十、“&”邏輯符“并且”邏輯符“或者”十二、大括號“”表示函數(shù)體。內(nèi)部為函數(shù)體語句。MT4編程入門(三):自定義變量一、自定義變量在使用前,必須先創(chuàng)建(定義),設(shè)定變量的類型和名稱。
11、創(chuàng)建時可同時賦值,也可以不賦值。名稱可以使用中文字符。例:int mark;創(chuàng)建一個整型變量,變量名為“mark”。bool是否報警=true; 創(chuàng)建一個邏輯型變量,變量名為“是否報警” ,同時,賦初值“true”二、類型和類型定義詞 自定義變量的基本類型有:1、 整形(int):就是整數(shù),包括負(fù)整數(shù)2、 雙精度小數(shù)(double):可以簡單地理解為帶小數(shù)位的數(shù)3、 字符串型(string)。4、 邏輯型(bool):其值分別為“true、false”,即“真、假”,也可以寫成“1、0”(1真,0假)。類型定義詞僅在創(chuàng)建變量時使用,后面使用變量時,就不能再加類型定義詞了三、附加變量 附加變量就
12、是在程序投入使用后,變量值允許用戶自由更改的變量,一般用作程序參數(shù)。一般指標(biāo),例如MACD(12,26,9)參數(shù)輸入就是通過附加變量實現(xiàn),(12,26,9)分別為三個附加變量的默認(rèn)值。定義附加變量只需在變量定義語句前加“extern”例:extern int周期=9; 創(chuàng)建一個整型附加變量,變量名為“周期” ,默認(rèn)值為9,允許用戶在程序外部修改參數(shù)值MT4編程入門(四):自定義函數(shù)自定義函數(shù)與數(shù)學(xué)函數(shù)在本質(zhì)上是一致的 例如:數(shù)學(xué)函數(shù)ft(x,y)=3x+2y (x,y為正整數(shù))寫成程序語句就是:int ft(int x,int y)等于號。 用于邏輯判斷, 雙等號前后值相等,則返回邏輯值“真t
13、rue”;雙等號前后值不相等,則返回邏輯值“假false”九、嘆號等號“!=不等于號。 用于邏輯判斷,不等號前后值不相等,則返回邏輯值“真true”;不等號前后值相等,則返回邏輯值“假false”int temp;temp=3*x+2*y; return(temp);一、和自定義變量一樣,自定義函數(shù)在使用前,也必須先設(shè)立,以定義其類型、名稱、參數(shù)和運算語句。 函數(shù)類型、名稱、參數(shù)位于函數(shù)頭部(參數(shù)間以逗號分隔),大括號中的是運算語句,也就是函數(shù)體部分。return語句為函數(shù)結(jié)束語句,return后面括號中的值為函數(shù)返回值,即函數(shù)運算結(jié)果。上例中,int為函數(shù)類型,表示該函數(shù)的返回值(運算結(jié)果)
14、是整數(shù);(x,y)為參數(shù),由于自定義變量使用之前都必須先創(chuàng)建,所以要加上類型定義詞intft為函數(shù)名,有了函數(shù)名,我們就可以在別處用ft(2,1)的形式來調(diào)用此函數(shù); 函數(shù)體部分有三句:第一句,定義一個整形變量temp第二句,計算temp的值 第三句,函數(shù)結(jié)束,返回調(diào)用點,以temp的值作為本函數(shù)返回值。此函數(shù)也可以簡寫為:int ft(int x,int y) return(3*x+2*y);二、函數(shù)類型與類型符 函數(shù)類型就是函數(shù)返回值(運算結(jié)果)的類型,與自定義變量類型差不多 有整型(int)、雙精度型(double)、字符串型(string)、邏輯型(bool)等,還有一種函數(shù)是以函數(shù)運
15、行為目的,運行結(jié)束后不需要返回值也沒有返回值的,則函數(shù)類型可以寫成void(無值型)三、函數(shù)中如果定義了自定義變量,那么此變量僅在本函數(shù)內(nèi)部存在,函數(shù)運行結(jié)束時,自定義變量也就自動注銷。上例中,有x、y、temp三個自定義變量,在函數(shù)運行時創(chuàng)建,在函數(shù)運行結(jié)束時自動消失,僅在函數(shù)內(nèi)部有效,與 函數(shù)外部無關(guān)。四、函數(shù)的調(diào)用 函數(shù)調(diào)用非常簡單,只要函數(shù)名正確、參數(shù)個數(shù)一致、類型相同就能正確調(diào)用如我們前面創(chuàng)建了ft(x,y)函數(shù),則別處我們可以用ft(4,5)等樣式來調(diào)用ft(x,y)函數(shù)求值。調(diào)用時,傳遞參數(shù)值給ft(x,y)函數(shù)(按順序把4傳給x,把5傳給y),返回結(jié)果22后繼續(xù)執(zhí)行主程序。MT
16、4編程入門(五):自定義數(shù)組一、數(shù)組是一系列同類型變量的集合,可以同時存儲多個數(shù)值。例:int aa4=4,3,2,1;這是一個數(shù)據(jù)名為aa、包含了4個元素的整數(shù)型數(shù)組(即數(shù)組長度為4),可以同時存儲4個數(shù)值。二、自定義數(shù)組也必須“先建立,后使用” 創(chuàng)建(定義)時,必須設(shè)定類型和名稱。創(chuàng)建(定義)時,數(shù)組的元素個數(shù)也可以設(shè)定,也可以不設(shè)定 數(shù)組中第一個元素的編號為0,第二個為1,以此類推。編號使用方括號括起來在這上例中aa0的值為4、aa1的值為3、aa2的值為2、aa3的值為1創(chuàng)建(定義)數(shù)組的同時,可以賦初值,也可以不賦初值。 例:int bb;創(chuàng)建數(shù)組bb,不設(shè)定數(shù)組元素個數(shù)int cc
17、8;創(chuàng)建數(shù)組cc,設(shè)定數(shù)組元素為8個,不賦初值int dd3=9,8,7;創(chuàng)建數(shù)組dd,設(shè)定數(shù)組元素為4個,并賦初值賦值后,dd0的值為9、dd1的值為8、dd2的值為7int ee9=0,1,2,3;創(chuàng)建數(shù)組ee,設(shè)定數(shù)組元素為9個,但只給前4個元素賦初值三、數(shù)組使用時的賦值數(shù)組的賦值必須指定明確的賦值對象,除了新建數(shù)組時可以批量賦值外,數(shù)組元素必須一個一個賦值 例如:dd2=1;這是對數(shù)組dd的第3個元素dd2(0是第1個,2表示第3個)重新賦值為1在這里,沒有整數(shù)型變量定義符int,這樣,數(shù)組dd原有三個值9,8,7就變?yōu)?,8,1四、數(shù)組的引用 數(shù)組只是一系列變量的集合,所以每次只能使
18、用數(shù)組中的一個元素。數(shù)組的引用必須指定明確的引用對象,一次只能引用一個。如果需要使用整列數(shù)組,則必須逐個使用。例如:數(shù)組aa4的值為4,3,2,1我們用aa來引用數(shù)組aa中的值當(dāng)i=0時,aai的值為4當(dāng)i=1時,aai的值為3當(dāng)i=2時,aai的值為2當(dāng)i=3時,aai的值為1MT4編程入門(六):市場數(shù)據(jù)取值一、預(yù)定義數(shù)組(MT4已經(jīng)定義好的,可以直接使用)開盤價、最高價、最低價、 收盤價、成交量等歷史數(shù)據(jù),每根K線蠟燭都各有一個,所以必須用數(shù)組來解決問題,MT4有幾個預(yù)定義數(shù)組:開盤價Open、最高價High、最低價Low、收盤價close、成交量Volume、所屬時間Time類型為雙精
19、度double型(即精確小數(shù))這里有一個位置的問題,右邊第一根K線蠟燭(即最新的蠟燭)的編號為0,第二根蠟燭編號1,第三根蠟燭編號2,也就是說從右向左倒著數(shù)過去。Open、High、Low、close,表示第i+1根K線蠟燭的開盤價、最高價、最低價、收盤價 以此類推。注意:這些是數(shù)組,用的是方括號。二、預(yù)定義變量買入價、賣出價是實時價格,MT4用預(yù)定義變量Ask和Bid表示,數(shù)值類型為double雙精度還有一些預(yù)定義變量,如:Bars表示圖表中的蠟燭數(shù),類型為int整數(shù)型Digits表示當(dāng)前貨幣對的小數(shù)位,類型為int整數(shù)型,無日元幣對為4,有日元幣對為2,黃金石油等一般也為2Point表示當(dāng)
20、前貨幣對的點值,類型為雙精度double型,無日元幣對為0.0001,有日元幣對為0.01。與Digits正好相反。Open0、Open1、Open2、Open3、High0、High1、High2、High3、Low0、Close0,表示最新的開盤價、最高價、最低價、收盤價Low1、Low2、Low3、close1,表示第close2,表示第close3,表示第2根K線蠟燭的開盤價、最高價、最低價、3根K線蠟燭的開盤價、最高價、最低價、4根K線蠟燭的開盤價、最高價、最低價、收盤價收盤價收盤價三、指標(biāo)函數(shù)1、價格、成交量、時間它們都有三個參數(shù):貨幣對名、K線周期、位置序號開盤價:iOpen(s
21、ymbol,timeframe,shift)收盤價:iClose(symbol,timeframe,shift)最高價:iHigh(symbol,timeframe,shift)最低價:iLow(symbol,timeframe,shift)成交量:iVolume(symbol,timeframe,shift)所屬時間:iTime(symbol,timeframe,shift)K線周期為:1分鐘圖(PERIOD_M1)、5分鐘圖(PERIOD_M5)、15分鐘圖(PERIOD_M15)、30分鐘圖(PERIOD_M30)、1小時圖(PERI0D_H1、4小時圖(PERI0D_H4、日線圖(PE
22、RI0D_D1)周線圖(PERI0D_W1)、周線圖(PERI0D_W1)、月線 圖(PERI0D_W1)例:iOpen(USDJPY,PERIOD_H1,0)表示美元兌日元1小時圖最新K線蠟燭的開盤價iClose(EURUSD,PERIOD_H4,2)表示歐元兌美元4小時圖第3根K線蠟燭的收盤價iClose(GBPUSD,PERIOD_H1,i)表示英磅兌美元1小時圖第i+1根K線蠟燭的收盤價iHigh(NULL,0,0)既不指定商品,也不指定K線周期,用在誰就是誰,用在哪就是哪2、移動平均值。雙精度double型iMA(symbol, timeframe, period, ma_shift
23、, ma_method, applied_price, shift)參數(shù)共7個,分別為:商品名稱、K線周期、均線周期、均線偏移、平均模式、價格種類、位置均線周期:10天平均線的均線周期為10,20天均線的均線周期為20均線偏移:均線位置整體左右移動的位置偏移量平均模式:簡單移動平均(MODE_SMA)、指數(shù)移動平均(MODE_EMA)、平滑移動平均線(MODE_SMMA)、線性加權(quán)移動 平均線(MODE_LWMA)價格種類:收盤價(PRICE_CLOSE開盤價(PRICE_OPEN)最高價(PRICE_HIGH)最低價(PRICE_LOW)中值(PRICE_MEDIAN)5(PRICE_TYP
24、ICAL、) 6(PRICE_WEIGHTED)例1:iMA(EURUSD,PERIOD_H1,20,0,MODE_SMA,PRICE_CLOSE,0)表示:歐元1小時圖上,以收盤價計算的,20小時簡單移動平均線,最新K線所對應(yīng)位置的值例2:iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,2)表示:在當(dāng)前商品、當(dāng)前K線周期圖表上,以收盤價計算的,20(天)指數(shù)移動平均線 第3根K線所對應(yīng)位置的值 其他如MACD指標(biāo)、威廉指標(biāo)、RS、SAR布林線等指標(biāo)取值都與移動平均線指標(biāo)相類似3、在數(shù)組中求元素的移動平均值。雙精度double型iMAOnArray(數(shù)組名,總數(shù),平均
25、周期,均線偏移,平均模式,位置)這也與iMA函數(shù)差不多,不過數(shù)據(jù)源變?yōu)閿?shù)組從數(shù)組中不但可以求得移動平均值,還可以求得RSI等指標(biāo)值4、求自定義指標(biāo)的值我們經(jīng)常自己編一些自定義指標(biāo),可用iCustom函數(shù)來取得自定義函數(shù)的值iCustom(商品名,K線周期,自定義指標(biāo)名稱,自定義指標(biāo)參數(shù)1,參數(shù)2,參數(shù)3,自定義指標(biāo)線編號,位置)如果自定義指標(biāo)只有一根指標(biāo)線,則自定義指標(biāo)線的編號為0。雙精度double型 雙精度double型 雙精度double型 雙精度double型雙精度double型 日期時間datetime型如果自定義指標(biāo)有多根指標(biāo)線,則第一條自定義指標(biāo)線的編號為0,第二條為1,第三條為
26、2。例如:iCustom(NULL,0,mymacd,12,26,9,2,0) (12,26,9)為自定義指標(biāo)mymacd的三個參數(shù) 表示:求當(dāng)前圖表中,自定義指標(biāo)mymacd(12,26,9)的第3條指標(biāo)線在最新位置的值 拋磚引玉,這里只是有代表性地列了幾個函數(shù),詳細(xì)請查閱MT4編程手冊MT4編程入門(七):判斷語句一、if語句if語句很常用,也比較簡單。規(guī)則:如果小括號中的條件成立,則執(zhí)行大括號中的語句;如果不成立,則跳過大括號 例如:if(a=1)b=c+1;我們在編寫報警指標(biāo)的時候,就經(jīng)常用到這一語句: 如果“價格向上達(dá)到指定價位” ,則“報警” 如果“MACD上穿”,則“報警”如果“
27、均線金叉” ,則“報警” 。等等例:int mark=0;if( High1=1.0000 & mark!=1)Alert(symbol(),價格向上觸及1.0000); mark=1;if( Low11.0000 & Low0=1.0000 & mark!=2)Alert(symbol(),價格向下觸及1.0000); mark=2;這是一個價格上、下穿1.0000時報警的判斷語句:上穿報警條件:當(dāng)?shù)诙鵎線最高價小于1.0000,并且最新K線最高價大等于 下穿報警條件:當(dāng)?shù)诙鵎線最低價大于1.0000,并且最新K線最低價小等于這里,mark是用作報警標(biāo)記,mark
28、的初值是0,當(dāng)上穿報警后,mark的值就改為1;當(dāng)下穿報警后,mark的值就改為2;當(dāng)mark=0時,說明從未報過警,上、下穿都能報警;當(dāng)mark=1時,說明已經(jīng)上穿報過警了,不能再上穿報警了,但仍可下穿報警;當(dāng)mark=2時,說明已經(jīng)下穿報過警了,不能再下穿報警了,但仍可上穿報警。二、if . else語句 規(guī)則:如果小括號中的條件成立,則執(zhí)行if下大括號中的語句1;如果不成立,則執(zhí)行else下大括號中的語句2。if(條件)語句1;else語句2;1.00001.0000三、注意事項1、 只有語句后面才用到語句結(jié)束符“;” 條件、大、小括號后面都不用“; ”2、 語句用大括號括起來,但如果只
29、有一行語句,則大括號可以省略if(條件)語句1;MT4編程入門(八):循環(huán)一幅K線圖有幾千上萬條K線,每根K線又各有開收盤價、最高低價等數(shù)值,而且還有很多移動平均線、MACD、RSI等指標(biāo)值。面對海量數(shù)據(jù),我們必須用循環(huán)來實現(xiàn)數(shù)據(jù)的取值和賦值。一、while循環(huán)while(條件)語句1語句2。規(guī)則:當(dāng)小括號中的條件成立時,就執(zhí)行大括號中的語句,執(zhí)行完了再判斷條件是否成立,如果條件成立就繼續(xù)執(zhí)行 大括號中的語句。只要條件成立,程序就不停地運行大括號中的語句(循環(huán)體),直到小括號中的條件不再成立時結(jié)束循環(huán)。它與if語句的區(qū)別是:if語句是當(dāng)條件為真時運行一次;而while語句則是只要條件為真,循環(huán)
30、體語句就不停地運行, 直到條件為假時結(jié)束循環(huán)。例:extern int快線=12;extern int慢線=26;double buffer;int i=0;while(i1000)buffer= iMA(NULL,O,快線,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,慢線,0,MODE_EMA,PRICE_CLOSE,i);i+;這里,循環(huán)執(zhí)行條件是i1000,循環(huán)體中有兩個語句,一句是把兩條均線的差值賦給數(shù)組buffer,另一句i+;”是每運行一次,i的值在原有基礎(chǔ)上增加1。 這樣, 隨著循環(huán)的不斷運行,i的值逐漸增加, 循環(huán)1000次后,i的值也就從0變?yōu)?
31、000,此時“i1000”就不再成立,循環(huán)結(jié)束。這樣,數(shù)組buffer中也就有了1000個值。二、for循環(huán)for循環(huán)與while循環(huán)在原理上是一致的,只是書寫格式上有所區(qū)別把上面的例子改成for語句:extern int快線=12;extern int慢線=26;double buffer;for(int i=0; i1000; i+)buffer= iMA(NULL,0,快線,0,MODE_EMA,PRICE_CLOSE,i) -iMA(NULL,0,慢線,0,MODE_EMA,PRICE_CLOSE,i);與前面相比,我們注意到:“int i=0;”語句從“while(i1000)”上方
32、移到循環(huán)條件“i1000”的前面;“i+;”語句從循環(huán)體中移到了循環(huán)條件“i1000”的后面;循環(huán)執(zhí)行順序與while循環(huán)一致:第一步、先執(zhí)行小括號中的第1句:int i=0;(此語句用來定義初始變量,在循環(huán)中僅執(zhí)行一次,可以為沒有任何表達(dá)式的空操作符“;”)第二步、再判斷小括號中的第2句是否成立:i1000;如果不成立,則循環(huán)結(jié)束;如果成立,則循環(huán)繼續(xù)運行,執(zhí)行第三步第三步、按順序執(zhí)行大括號中的語句第四步、執(zhí)行小括號中的第1句:i+ (此語句即:每執(zhí)行一次,i的值增加1)然后回到第二步繼續(xù)執(zhí)行循環(huán)。 再補充一點:如果循環(huán)體中(大括號中)只有一行語句,大括號可以省略MT4編程入門(九):MT4
33、自定義指標(biāo)的結(jié)構(gòu)MT4自定義指標(biāo)一般由四個部分構(gòu)成:(1)文件頭部(2)參數(shù)、變量和數(shù)組的定義(3)初始化函數(shù)init()(4)主函數(shù)start()弓匸arv()int J-iuLit-jinL uULUIUt J_baLB IiidJ.uaLu LCuuriUtil();l(c0iuiceSBu&ri=iM&OnLray(Bu.f一、文件頭部,也稱為預(yù)處理程序預(yù)處理程序以“#”開頭,行尾無語句結(jié)束符“;”常用的預(yù)處理程序有:1、#propertyindicator_chart_window把指標(biāo)顯示在主圖。如:均線、SRA等類指標(biāo)用到此語句2、#property indica
34、tor_separate_window把指標(biāo)顯示在副圖。如:MACD、RSI、威廉等類指標(biāo)用到此語句3、#property indicator_buffers 3顯示3根指標(biāo)線4、#property indicator_color1 Red第1根指標(biāo)線的顏色為Red例:MACD指標(biāo)源碼(ptepetuyproperty(ipropeEtY#ptcpertyptpertyi ndi c a to r _s ep at ate. vindcwindicator_Lufers indiea匸口rcolanl indicato r_color2:indicacocuidchl文件頭部分 霧書處理程序x
35、 ternrx tern*xtrnintintintFHA=12;加誑;定義參數(shù)變量弼 MAT:&jo utileacuble器盤畫丄宦義數(shù)組二)Tnit()初始化函數(shù)SetlndexStyle (0fDRAW HISTOCPAH詵置指標(biāo)縷型SetlndeM Sryle1,DRA7_LIME)* SetlndejiDiawBegin1;IndicatorDii匸露( (Eigits+JJ ;3總匸TiiclExFuffmrIOFuffmi:); SetlndexBuffer(1SEufter);ItldLGatcEShottJUajiie(,lIACD(*t+n!A+Sir4-5?IA
36、-+設(shè)賣指棕名稱j+gHAU,Setindex Label (0, MACDr,);設(shè)冒指標(biāo)線標(biāo)Setlndex Label(1,Signal);return(0);設(shè)首劃級起殆吐 E設(shè)宣小數(shù)位設(shè)買指標(biāo)頻俎zeturn(0);主函數(shù)5、#property indicator_width1 1第1根指標(biāo)線的粗細(xì)分別為16、#property indicator_level10.00在0.00值位置橫劃1條虛線二、參數(shù)、變量和數(shù)組的定義全局性的參數(shù)、變量、數(shù)組在此定義,局部變量可在start()函數(shù)中定義三、初始化函數(shù)init() init()在自定義指標(biāo)加載時運行一次。初始化函數(shù)的功能是“設(shè)置”
37、 。如果自定義指標(biāo)需要劃線,則必然用到此函數(shù)四、主函數(shù)start()當(dāng)數(shù)據(jù)有變動時,start()就被觸發(fā)。數(shù)據(jù)變動一次,start()就運行一次。 自定義指標(biāo)的編程主要依靠此函數(shù)進(jìn)行。start()函數(shù)的作用主要是取值和給指標(biāo)線賦值,報警也在此函數(shù)內(nèi)發(fā)起。另外,還有一個反初始化函數(shù)deinit()deinit()在自定義卸載時運行一次,可用以去除指標(biāo)加載時init()所做的初始化操作。MT4編程入門(十):畫一條指標(biāo)線要畫指標(biāo)線,只要在程序中寫明以下幾點就可以了: 第一、明確指標(biāo)線所在窗口,是主圖還是副圖 第二、要建立數(shù)組,用以保存指標(biāo)線在各個位置的值。 第三、要建立指標(biāo)線與數(shù)組的對應(yīng)關(guān)系,
38、哪個數(shù)組對應(yīng)哪條指標(biāo)線 第四、要明確指標(biāo)線的線型,是曲線還是柱線或者是箭頭 第五、如果指標(biāo)線是箭頭,還要說明是哪種箭頭第六、給數(shù)組賦值其中: 第一、二條寫在文件頭部中, 第三、四、五條寫在init()函數(shù)中(init函數(shù)僅在指標(biāo)加載時運行一次) 第六條寫在start()函數(shù)中(start函數(shù)在數(shù)據(jù)發(fā)動變動時運行,變動一次運行一次)下面以MACD為例說明我們知道,MACD指標(biāo)由二條曲線和一組紅綠柱線組成。 (下圖一) 其中:白線是二根均線的差;F面是全部語句:#property in dicator_separate_w indow#property in dicator_color1White
39、#property in dicator_level10extern int FMA=12;extern int SMA=26; double buf;int in it()SetI ndexBuffer(O,buf);SetI ndexStyle(O,DRAW_LINE); return(O);int start()int limit=Bars-IndicatorCounted();for(int i=0; ilimit; i+)buf= iMA(NULL,0,FMA,0,1,0,i) -iMA(NULL,0,SMA,0,1,0,i); return(0);紫線是白線的移動平均線;紅綠柱線則
40、是白線和紫線的差,白線上穿紫線,出現(xiàn)紅柱,下穿則出現(xiàn)綠柱。我們從簡單入手,先去除紫線和紅綠柱線,僅保留其中的那根白線,來看白線是怎樣畫出來的。0.0014-40.004)0011仙1說明如下:單線MACD指標(biāo)程序語句說明#proj) )ery 1 rud 1 c at-o r _s e par ar e_ window_指標(biāo)放在制圖#proi) )erty indicator colorl Wtiite指標(biāo)線為口色#proi) )srry irud.icat-or丄eve 110在零軸曲一條水平線extern int FHA=1,2;sytern int SKk=2 6;定義參數(shù)變Ltdouki丄己buf ;定義數(shù)組ntstart函數(shù)int 1 ixnit; = Bar3-IudicatoECcunted ( for (int iO;i+j(循環(huán)語句jtin! i =JiHA(NULSUFFT!釦6 lr0r1)-iMAfNITLLO, SHA, lr0, 1):將兩條均線的盞值賦值給數(shù)組
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專利導(dǎo)航分析師崗位面試問題及答案
- 知識產(chǎn)權(quán)運營師崗位面試問題及答案
- 河南廣東聯(lián)考2025年高一化學(xué)第二學(xué)期期末調(diào)研模擬試題含解析
- 廣西賀州市桂梧高級中學(xué)2025屆高一化學(xué)第二學(xué)期期末質(zhì)量跟蹤監(jiān)視試題含解析
- 甘肅省慶陽市長慶中學(xué)2025年高二下化學(xué)期末調(diào)研模擬試題含解析
- 北京集體資產(chǎn)管理辦法
- 公司出國證件管理辦法
- 智慧手環(huán)使用管理辦法
- 晉中市健康碼管理辦法
- 內(nèi)貿(mào)船舶衛(wèi)生管理辦法
- 設(shè)備部管理制度范文(2篇)
- 《機械員培訓(xùn)資料》課件
- 裝配式圍擋施工方案
- 風(fēng)電項目安全專業(yè)監(jiān)理實施細(xì)則
- 01J925-1壓型鋼板、夾芯板屋面及墻體建筑構(gòu)造
- 高一化學(xué)會考知識點
- 醫(yī)院信息機房運維服務(wù)項目需求
- 有趣的漢字甲骨文演變完整模板
- (完整版)曲臂式高空作業(yè)車安全技術(shù)交底
- 2024年民族宗教政策法規(guī)宣傳月知識競賽考試題庫(含答案)
- 《3-6歲兒童學(xué)習(xí)與發(fā)展指南》考試參考題庫120題(含答案)
評論
0/150
提交評論