




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上目錄MT4編程入門(一):MT4自定義指標的基本操作MT4編程入門(二):指標源碼中的常用符號說明MT4編程入門(三):自定義變量MT4編程入門(四):自定義函數(shù)MT4編程入門(五):自定義數(shù)組MT4編程入門(六):市場數(shù)據(jù)取值 MT4編程入門(七):判斷語句 MT4編程入門(八):循環(huán) MT4編程入門(九):MT4自定義指標的結構 MT4編程入門(十):畫一條指標線MT4編程入門(十一):MT4的報警MT4編程入門(一):MT4自定義指標的基本操作 MT4自定義指標的保存目錄、指標編緝器與指標調(diào)用一、MT4自定義指標保存在C:Program FilesMetaTra
2、der 4expertsindicators這個目錄中,該目錄中主要有二種類型的文件,一種是mq4文件,這是MT4自定義指標的源碼文件,是一種高級語言文件,可以人工編寫修改,機器不能直接執(zhí)行,但能在MT4啟動時自動編譯為ex4可執(zhí)行文件。另一種就是ex4文件,這是MT4自定義指標的可執(zhí)行文件,由mq4文件編譯得到。mq4文件必須編譯為ex4文件才能被MT4執(zhí)行。但ex4文件是機器碼文件,人工不可修改另外還有一個文件是mqlcache.dat,它用來保存目錄中的文件信息,如果MT4無法自動編譯,只要刪除此文件即可解決問題mq4文件編譯為ex4可執(zhí)行文件有兩種方法:1、MT4啟動時,會自動把此目錄
3、中的mq4文件編譯為ex4文件。2、用MQ語言編輯器打開mq4文件,點一下“編寫”按鈕,即可生成ex4文件二、下載保存mq4文件、ex4文件在論壇上我們經(jīng)??吹接衜q4文件、ex4文件可供下載,我們只要把它們保存到C:Program FilesMetaTrader 4expertsindicators這個目錄,也就是下面這個目錄中,就可以了。如果下載的是ex4文件,那可以直接調(diào)用;如果是mq4文件,則需要重啟動MT4,讓系統(tǒng)自動編譯生成ex4可執(zhí)行文件。如果下載的是rar、zip等類型的壓縮文件,還必須下載后解壓到此目錄才能使用。三、將源碼保存為源碼文件在論壇上,我們也經(jīng)常能看到指標源碼貼在網(wǎng)
4、頁上,但沒有mq4、ex4等文件可以下載,只能復制源碼。此時需要我們自己動手將源碼保存為源碼文件,那也沒關系,非常地簡單,多點幾下鼠標就搞定。1、打開MQ語言編輯器2、在MQ語言編輯器中新建一個文件,文件名一定要輸,別的隨便操作都沒關系。3、刪除新文件里面的所有內(nèi)容,成為一個空文件,4、接著我們就可以將網(wǎng)頁上源碼復制粘貼進來試著點一下“編寫”,如果左下角出現(xiàn)“0錯誤,0警告”,那說明源碼沒問題,編譯通過了,成功生成了ex4可執(zhí)行文件5、還有很重要的一點,就是要把源碼文件保存到正確的目錄中保存后,再點一下編寫。到此,源碼保存完成。當然,我們也還有另的辦法:可以打開一個原已存在的mq4文件,然后另
5、存為你需要的文件名,再刪除文件中的所有內(nèi)容成為空文件,把網(wǎng)頁上的源貼到文件中保存即可也可以在記事本中新建一個文件,把網(wǎng)頁上的源碼貼進記事本,然后取個文件名保存到上面提到的目錄,不過文件后綴必須輸入mq4,保存類型選擇“所以文件”四、mt4程序調(diào)用自定義指標這非常簡單MT4編程入門(二):指標源碼中的常用符號說明 一、注釋符:單行注釋“/”、多行注釋“/* */”程序不執(zhí)行注釋,注釋內(nèi)容僅供閱讀或保留不用的語句在MQ語言編輯器中,注釋內(nèi)容以灰色顯示二、分號“;”表示一個語句結束三、逗號“,”表示一個語句內(nèi)部間隔,不結束語句。四、等于號“=”賦值語句,把等號后面的值賦給等號前的變量中五、加號“+”
6、整數(shù)或小數(shù),則表示值相加;字符串,則表示前后連接。六、加加“+”表示把符號前的變量值加1,例如:“i+;” 這實際上就是:“i=i+1;”的簡寫,表示i的值加1七、加等于“+=”表示把符號后的值加到符號前的變量中。例如“i+=2;”,實際上就是“i=i+2;”的簡寫,表示i的值加2八、雙等號“=”等于號。用于邏輯判斷,雙等號前后值相等,則返回邏輯值“真true”;雙等號前后值不相等,則返回邏輯值“假false”九、嘆號等號“!=”不等于號。用于邏輯判斷,不等號前后值不相等,則返回邏輯值“真true”;不等號前后值相等,則返回邏輯值“假false”十、“&&”邏輯符“并且”十一、
7、“|”邏輯符“或者”十二、大括號“”表示函數(shù)體。內(nèi)部為函數(shù)體語句。MT4編程入門(三):自定義變量 一、自定義變量在使用前,必須先創(chuàng)建(定義),設定變量的類型和名稱。創(chuàng)建時可同時賦值,也可以不賦值。名稱可以使用中文字符。例:int mark; 創(chuàng)建一個整型變量,變量名為“mark”。bool 是否報警=true; 創(chuàng)建一個邏輯型變量,變量名為“是否報警”,同時,賦初值“true” 二、類型和類型定義詞自定義變量的基本類型有:1、整形(int):就是整數(shù),包括負整數(shù)2、雙精度小數(shù)(double):可以簡單地理解為帶小數(shù)位的數(shù)3、字符串型(string)。4、邏輯型(bool):其值分別為“tru
8、e、false”,即“真、假”,也可以寫成“1、0”(1真,0假)。類型定義詞僅在創(chuàng)建變量時使用,后面使用變量時,就不能再加類型定義詞了三、附加變量附加變量就是在程序投入使用后,變量值允許用戶自由更改的變量,一般用作程序參數(shù)。一般指標,例如MACD(12,26,9)參數(shù)輸入就是通過附加變量實現(xiàn),(12,26,9)分別為三個附加變量的默認值。定義附加變量只需在變量定義語句前加“extern”例:extern int 周期=9; 創(chuàng)建一個整型附加變量,變量名為“周期”,默認值為9,允許用戶在程序外部修改參數(shù)值MT4編程入門(四):自定義函數(shù) 自定義函數(shù)與數(shù)學函數(shù)在本質(zhì)上是一致的例如:數(shù)學函數(shù)ft(
9、x,y)=3x+2y (x,y為正整數(shù)) 寫成程序語句就是:int ft(int x,int y) int temp; temp=3*x+2*y; return(temp); 一、和自定義變量一樣,自定義函數(shù)在使用前,也必須先設立,以定義其類型、名稱、參數(shù)和運算語句。函數(shù)類型、名稱、參數(shù)位于函數(shù)頭部(參數(shù)間以逗號分隔),大括號中的是運算語句,也就是函數(shù)體部分。return語句為函數(shù)結束語句,return后面括號中的值為函數(shù)返回值,即函數(shù)運算結果。上例中,int為函數(shù)類型,表示該函數(shù)的返回值(運算結果)是整數(shù);(x,y)為參數(shù),由于自定義變量使用之前都必須先創(chuàng)建,所以要加上類型定義詞intft為
10、函數(shù)名,有了函數(shù)名,我們就可以在別處用ft(2,1)的形式來調(diào)用此函數(shù);函數(shù)體部分有三句:第一句,定義一個整形變量temp第二句,計算temp的值第三句,函數(shù)結束,返回調(diào)用點,以temp的值作為本函數(shù)返回值。此函數(shù)也可以簡寫為:int ft(int x,int y) return(3*x+2*y);二、函數(shù)類型與類型符函數(shù)類型就是函數(shù)返回值(運算結果)的類型,與自定義變量類型差不多有整型(int)、雙精度型(double)、字符串型(string)、邏輯型(bool)等,還有一種函數(shù)是以函數(shù)運行為目的,運行結束后不需要返回值也沒有返回值的,則函數(shù)類型可以寫成void(無值型)三、函數(shù)中如果定義
11、了自定義變量,那么此變量僅在本函數(shù)內(nèi)部存在,函數(shù)運行結束時,自定義變量也就自動注銷。上例中,有x、y、temp三個自定義變量,在函數(shù)運行時創(chuàng)建,在函數(shù)運行結束時自動消失,僅在函數(shù)內(nèi)部有效,與函數(shù)外部無關。四、函數(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),返回結果22后繼續(xù)執(zhí)行主程序。MT4編程入門(五):自定義數(shù)組 一、數(shù)組是一系列同類型變量的集合,可以同時存儲多個數(shù)值。例:int aa4=
12、4,3,2,1;這是一個數(shù)據(jù)名為aa、包含了4個元素的整數(shù)型數(shù)組(即數(shù)組長度為4),可以同時存儲4個數(shù)值。二、自定義數(shù)組也必須“先建立,后使用”創(chuàng)建(定義)時,必須設定類型和名稱。創(chuàng)建(定義)時,數(shù)組的元素個數(shù)也可以設定,也可以不設定數(shù)組中第一個元素的編號為0,第二個為1,以此類推。編號使用方括號括起來在這上例中aa0的值為4、aa1的值為3、aa2的值為2、aa3的值為1創(chuàng)建(定義)數(shù)組的同時,可以賦初值,也可以不賦初值。例:int bb; 創(chuàng)建數(shù)組bb,不設定數(shù)組元素個數(shù)int cc8; 創(chuàng)建數(shù)組cc,設定數(shù)組元素為8個,不賦初值int dd3=9,8,7; 創(chuàng)建數(shù)組dd,設定數(shù)組元素為4
13、個,并賦初值賦值后,dd0的值為9、dd1的值為8、dd2的值為7int ee9=0,1,2,3; 創(chuàng)建數(shù)組ee,設定數(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ù)組只是一系列變量的集合,所以每次只能使用數(shù)組中的一個元素。數(shù)組的引用必須指定明確的引用對象,一次只能引用一個。如果需要使用整列數(shù)組,則必須逐個使
14、用。例如:數(shù)組aa4的值為4,3,2,1我們用aa來引用數(shù)組aa中的值當i=0時,aai的值為4當i=1時,aai的值為3當i=2時,aai的值為2當i=3時,aai的值為1MT4編程入門(六):市場數(shù)據(jù)取值 一、預定義數(shù)組(MT4已經(jīng)定義好的,可以直接使用)開盤價、最高價、最低價、收盤價、成交量等歷史數(shù)據(jù),每根K線蠟燭都各有一個,所以必須用數(shù)組來解決問題,MT4有幾個預定義數(shù)組:開盤價Open、最高價High、最低價Low、收盤價close、成交量Volume、所屬時間Time類型為雙精度double型(即精確小數(shù))這里有一個位置的問題,右邊第一根K線蠟燭(即最新的蠟燭)的編號為0,第二根蠟
15、燭編號1,第三根蠟燭編號2,也就是說從右向左倒著數(shù)過去。Open0、High0、Low0、Close0,表示最新的開盤價、最高價、最低價、收盤價Open1、High1、Low1、close1,表示第2根K線蠟燭的開盤價、最高價、最低價、收盤價Open2、High2、Low2、close2,表示第3根K線蠟燭的開盤價、最高價、最低價、收盤價Open3、High3、Low3、close3,表示第4根K線蠟燭的開盤價、最高價、最低價、收盤價Open、High、Low、close,表示第i+1根K線蠟燭的開盤價、最高價、最低價、收盤價以此類推。注意:這些是數(shù)組,用的是方括號。二、預定義變量買入價、賣出
16、價是實時價格,MT4用預定義變量Ask和Bid表示,數(shù)值類型為double雙精度還有一些預定義變量,如:Bars 表示圖表中的蠟燭數(shù),類型為int整數(shù)型Digits 表示當前貨幣對的小數(shù)位,類型為int整數(shù)型,無日元幣對為4,有日元幣對為2,黃金石油等一般也為2Point 表示當前貨幣對的點值,類型為雙精度double型,無日元幣對為0.0001,有日元幣對為0.01。與Digits正好相反。三、指標函數(shù)1、價格、成交量、時間它們都有三個參數(shù):貨幣對名、K線周期、位置序號開盤價:iOpen(symbol,timeframe,shift) 雙精度double型收盤價:iClose(symbol,
17、timeframe,shift) 雙精度double型最高價:iHigh(symbol,timeframe,shift) 雙精度double型最低價:iLow(symbol,timeframe,shift) 雙精度double型成交量:iVolume(symbol,timeframe,shift) 雙精度double型所屬時間:iTime(symbol,timeframe,shift) 日期時間datetime型K線周期為:1分鐘圖(PERIOD_M1)、5分鐘圖(PERIOD_M5)、15分鐘圖(PERIOD_M15)、30分鐘圖(PERIOD_M30)、1小時圖(PERIOD_H1)、4小
18、時圖(PERIOD_H4)、日線圖(PERIOD_D1)、周線圖(PERIOD_W1)、周線圖(PERIOD_W1)、月線圖(PERIOD_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線周期,用在誰就是誰,用在哪
19、就是哪2、移動平均值。雙精度double型iMA(symbol, timeframe, period, ma_shift, ma_method, applied_price, shift)參數(shù)共7個,分別為:商品名稱、K線周期、均線周期、均線偏移、平均模式、價格種類、位置均線周期:10天平均線的均線周期為10,20天均線的均線周期為20均線偏移:均線位置整體左右移動的位置偏移量平均模式:簡單移動平均(MODE_SMA)、指數(shù)移動平均(MODE_EMA)、平滑移動平均線(MODE_SMMA)、線性加權移動平均線(MODE_LWMA)價格種類:收盤價(PRICE_CLOSE)、開盤價(PRICE_
20、OPEN)、最高價(PRICE_HIGH)、最低價(PRICE_LOW)、中值(PRICE_MEDIAN)、5(PRICE_TYPICAL)、6(PRICE_WEIGHTED)例1:iMA("EURUSD",PERIOD_H1,20,0,MODE_SMA,PRICE_CLOSE,0) 表示:歐元1小時圖上,以收盤價計算的,20小時簡單移動平均線,最新K線所對應位置的值例2:iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,2)表示:在當前商品、當前K線周期圖表上,以收盤價計算的,20(天)指數(shù)移動平均線 第3根K線所對應位置的值其他如MACD指標、威
21、廉指標、RSI、SAR、布林線等指標取值都與移動平均線指標相類似3、在數(shù)組中求元素的移動平均值。雙精度double型iMAOnArray(數(shù)組名, 總數(shù), 平均周期, 均線偏移, 平均模式, 位置)這也與iMA函數(shù)差不多,不過數(shù)據(jù)源變?yōu)閿?shù)組從數(shù)組中不但可以求得移動平均值,還可以求得RSI等指標值4、求自定義指標的值我們經(jīng)常自己編一些自定義指標,可用iCustom函數(shù)來取得自定義函數(shù)的值iCustom(商品名,K線周期,自定義指標名稱,自定義指標參數(shù)1,參數(shù)2,參數(shù)3,自定義指標線編號,位置)如果自定義指標只有一根指標線,則自定義指標線的編號為0。如果自定義指標有多根指標線,則第一條自定義指標線
22、的編號為0,第二條為1,第三條為2。例如:iCustom(NULL,0,"mymacd",12,26,9,2,0) (12,26,9)為自定義指標mymacd的三個參數(shù)表示:求當前圖表中,自定義指標mymacd(12,26,9)的第3條指標線在最新位置的值拋磚引玉,這里只是有代表性地列了幾個函數(shù),詳細請查閱MT4編程手冊MT4編程入門(七):判斷語句 一、if語句if語句很常用,也比較簡單。規(guī)則:如果小括號中的條件成立,則執(zhí)行大括號中的語句;如果不成立,則跳過大括號。例如:if(a=1) b=c+1; 我們在編寫報警指標的時候,就經(jīng)常用到這一語句:如果“價格向上達到指定價位
23、”,則“報警”如果“MACD上穿”,則“報警”如果“均線金叉”,則“報警”。等等例:int mark=0;if( High1<1.0000 && High0>=1.0000 && mark!=1) Alert(symbol(),"價格向上觸及1.0000"); mark=1; if( Low1>1.0000 && Low0<=1.0000 && mark!=2) Alert(symbol(),"價格向下觸及1.0000"); mark=2; 這是一個價格上、下穿1.0
24、000時報警的判斷語句:上穿報警條件:當?shù)诙鵎線最高價小于1.0000,并且最新K線最高價大等于1.0000下穿報警條件:當?shù)诙鵎線最低價大于1.0000,并且最新K線最低價小等于1.0000這里,mark是用作報警標記,mark的初值是0,當上穿報警后,mark的值就改為1;當下穿報警后,mark的值就改為2;當mark=0時,說明從未報過警,上、下穿都能報警;當mark=1時,說明已經(jīng)上穿報過警了,不能再上穿報警了,但仍可下穿報警;當mark=2時,說明已經(jīng)下穿報過警了,不能再下穿報警了,但仍可上穿報警。二、if . else語句規(guī)則:如果小括號中的條件成立,則執(zhí)行if下大括號中的語句
25、1;如果不成立,則執(zhí)行else下大括號中的語句2。if(條件) 語句1; else 語句2; 三、注意事項1、只有語句后面才用到語句結束符“;” 條件、大、小括號后面都不用“;”2、語句用大括號括起來,但如果只有一行語句,則大括號可以省略 if(條件) 語句1;MT4編程入門(八):循環(huán) 一幅K線圖有幾千上萬條K線,每根K線又各有開收盤價、最高低價等數(shù)值,而且還有很多移動平均線、MACD、RSI等指標值。面對海量數(shù)據(jù),我們必須用循環(huán)來實現(xiàn)數(shù)據(jù)的取值和賦值。一、while循環(huán)while(條件) 語句1 語句2 。 規(guī)則:當小括號中的條件成立時,就執(zhí)行大括號中的語句,執(zhí)行完了再判斷條件是否成立,如
26、果條件成立就繼續(xù)執(zhí)行大括號中的語句。只要條件成立,程序就不停地運行大括號中的語句(循環(huán)體),直到小括號中的條件不再成立時結束循環(huán)。它與if語句的區(qū)別是:if語句是當條件為真時運行一次;而while語句則是只要條件為真,循環(huán)體語句就不停地運行,直到條件為假時結束循環(huán)。例: extern int 快線=12; extern int 慢線=26; double buffer; int i=0; while(i<1000) buffer= iMA(NULL,0,快線,0,MODE_EMA,PRICE_CLOSE,i) -iMA(NULL,0,慢線,0,MODE_EMA,PRICE_CLOSE,i
27、); i+; 這里,循環(huán)執(zhí)行條件是i<1000,循環(huán)體中有兩個語句,一句是把兩條均線的差值賦給數(shù)組buffer,另一句“i+;”是每運行一次,i的值在原有基礎上增加1。這樣,隨著循環(huán)的不斷運行,i的值逐漸增加,循環(huán)1000次后,i的值也就從0變?yōu)?000,此時“i<1000”就不再成立,循環(huán)結束。這樣,數(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; i&l
28、t;1000; i+) buffer= iMA(NULL,0,快線,0,MODE_EMA,PRICE_CLOSE,i) -iMA(NULL,0,慢線,0,MODE_EMA,PRICE_CLOSE,i); 與前面相比,我們注意到:“int i=0;”語句從“while(i<1000)”上方移到循環(huán)條件“i<1000”的前面;“i+;”語句從循環(huán)體中移到了循環(huán)條件“i<1000”的后面;循環(huán)執(zhí)行順序與while循環(huán)一致:第一步、先執(zhí)行小括號中的第1句:int i=0;(此語句用來定義初始變量,在循環(huán)中僅執(zhí)行一次,可以為沒有任何表達式的空操作符“;”)第二步、再判斷小括號中的第2句
29、是否成立:i<1000;如果不成立,則循環(huán)結束;如果成立,則循環(huán)繼續(xù)運行,執(zhí)行第三步第三步、按順序執(zhí)行大括號中的語句第四步、執(zhí)行小括號中的第1句:i+ (此語句即:每執(zhí)行一次,i的值增加1)然后回到第二步繼續(xù)執(zhí)行循環(huán)。再補充一點:如果循環(huán)體中(大括號中)只有一行語句,大括號可以省略MT4編程入門(九):MT4自定義指標的結構 MT4自定義指標一般由四個部分構成:(1)文件頭部(2)參數(shù)、變量和數(shù)組的定義(3)初始化函數(shù)init()(4)主函數(shù)start()一、文件頭部,也稱為預處理程序預處理程序以“#”開頭,行尾無語句結束符“;”常用的預處理程序有:1、#property indicat
30、or_chart_window把指標顯示在主圖。如:均線、SRA等類指標用到此語句2、#property indicator_separate_window把指標顯示在副圖。如:MACD、RSI、威廉等類指標用到此語句3、#property indicator_buffers 3顯示3根指標線4、#property indicator_color1 Red第1根指標線的顏色為Red5、#property indicator_width1 1第1根指標線的粗細分別為16、#property indicator_level1 0.00在0.00值位置橫劃1條虛線二、參數(shù)、變量和數(shù)組的定義全局性的參
31、數(shù)、變量、數(shù)組在此定義,局部變量可在start()函數(shù)中定義三、初始化函數(shù)init()init()在自定義指標加載時運行一次。初始化函數(shù)的功能是“設置”。如果自定義指標需要劃線,則必然用到此函數(shù)四、主函數(shù)start()當數(shù)據(jù)有變動時,start()就被觸發(fā)。數(shù)據(jù)變動一次,start()就運行一次。自定義指標的編程主要依靠此函數(shù)進行。start()函數(shù)的作用主要是取值和給指標線賦值,報警也在此函數(shù)內(nèi)發(fā)起。另外,還有一個反初始化函數(shù)deinit()deinit()在自定義卸載時運行一次,可用以去除指標加載時init()所做的初始化操作。MT4編程入門(十):畫一條指標線 要畫指標線,只要在程序中寫
32、明以下幾點就可以了:第一、明確指標線所在窗口,是主圖還是副圖第二、要建立數(shù)組,用以保存指標線在各個位置的值。第三、要建立指標線與數(shù)組的對應關系,哪個數(shù)組對應哪條指標線第四、要明確指標線的線型,是曲線還是柱線或者是箭頭第五、如果指標線是箭頭,還要說明是哪種箭頭第六、給數(shù)組賦值 其中:第一、二條寫在文件頭部中,第三、四、五條寫在init()函數(shù)中(init函數(shù)僅在指標加載時運行一次)第六條寫在start()函數(shù)中(start函數(shù)在數(shù)據(jù)發(fā)動變動時運行,變動一次運行一次)下面以MACD為例說明我們知道,MACD指標由二條曲線和一組紅綠柱線組成。(下圖一)其中:白線是二根均線的差;紫線是白線的移動平均線
33、;紅綠柱線則是白線和紫線的差,白線上穿紫線,出現(xiàn)紅柱,下穿則出現(xiàn)綠柱。我們從簡單入手,先去除紫線和紅綠柱線,僅保留其中的那根白線,來看白線是怎樣畫出來的。下面是全部語句:#property indicator_separate_window#property indicator_color1 White#property indicator_level1 0extern int FMA=12;extern int SMA=26;double buf;int init() SetIndexBuffer(0,buf); SetIndexStyle(0,DRAW_LINE); return(0);
34、int start() int limit=Bars-IndicatorCounted(); for(int i=0; i<limit; i+) buf= iMA(NULL,0,FMA,0,1,0,i) -iMA(NULL,0,SMA,0,1,0,i); return(0); 說明如下:=以下為上述語句的簡要說明#property indicator_separate_window指標放在副圖#property indicator_color1 White第一條指標線為白色#property indicator_level1 0在副圖中零值位置上畫一條水平橫線,extern int FM
35、A=12;extern int SMA=26;設立二個整數(shù)型變量,默認值為12和26,允許外部修改值double buf;設立一個數(shù)組int init()初始化函數(shù)。該函數(shù)在指標加載時只運行一次。init是系統(tǒng)默認的函數(shù)名,但使用時仍需要進行創(chuàng)設,所以要加定義符int SetIndexBuffer(0,buf); 設置數(shù)組buf為第一條指標線 SetIndexStyle(0,DRAW_LINE); 設置第一條指標線線型為連續(xù)曲線 return(0); 函數(shù)結束語句 int start()指標觸發(fā)函數(shù)。與init函數(shù)不同,該函數(shù)在有數(shù)據(jù)變化時被觸發(fā),如果數(shù)據(jù)被不斷更新,則該函數(shù)將不斷執(zhí)行。sta
36、rt也是系統(tǒng)默認的函數(shù)名,但使用時也仍然需要進行創(chuàng)設,所以也要加定義符int int limit=Bars-IndicatorCounted(); 自定義一個變量limit,并賦值 Bars是圖表中的柱數(shù) IndicatorCounted()緩存中的柱數(shù),就是已經(jīng)計算過的有值的柱數(shù) 這樣limit的值就是未經(jīng)計算的柱數(shù),這樣就可以起到優(yōu)化程序的作用。 for(int i=0; i<limit; i+) 循環(huán)語句。 循環(huán)從i=0開始,每循環(huán)一次i值增加1,一直循環(huán)到i<limit不滿足時結束循環(huán) 由于循環(huán)變量i為一個新變量,所以要先定義,加上整型變量定義符int 下面大括中為循環(huán)體,
37、此例中只一條語句 buf= iMA(NULL,0,FMA,0,1,0,i) -iMA(NULL,0,SMA,0,1,0,i); 給數(shù)組buf賦值,其值分別為相應位置上兩條均線的差 i是水平位置序號值,即燭柱從右到左的序號,右邊第一個燭柱序號為0 return(0); start函數(shù)結束 MT4編程入門(十一):MT4的報警 報警功能是MT4的一大特色。它可以在預定的條件達到時,發(fā)出警報。與指標畫線相比,報警語句顯得非常簡單,只要在判斷語句中加一個報警語句即可報警方式有:彈出窗口報警、音樂報警、郵件報警等。如果郵箱開通了手機短信通知,則郵件報警的內(nèi)容會即時轉(zhuǎn)發(fā)到手機上。1、彈出窗口報警:當(條件達到)執(zhí)行此語句時,以彈出窗口警告。格式:Alert(內(nèi)容1,內(nèi)容2,內(nèi)容3,內(nèi)容4);報警內(nèi)容為字符串型,內(nèi)容之間加逗號例如:Alert(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 頂旺新材料有限公司年產(chǎn) 氣柱袋 1000 萬件異址擴建項目環(huán)評報告表
- 2025年碳硫分析儀合作協(xié)議書
- 四川學校人造草坪施工方案
- 張家口自建輕鋼房施工方案
- ?;髽I(yè)危險源辨識與控制方案
- 工程建設領域信息化與廉政風險防控策略
- 數(shù)字化轉(zhuǎn)型的關鍵技術
- 高中化學大單元教學策略的運用探討
- 污染防治違規(guī)施工方案
- 四級人力資源管理師-2019年5月四級人力資源管理師考試《理論知識》真題
- 《校園景觀案例》課件
- 中醫(yī)科運用PDCA循環(huán)縮短出院患者離院時間品管圈QCC持續(xù)質(zhì)量改進成果匯報
- 老年人的溝通交流護理課件
- SEER數(shù)據(jù)庫的申請及數(shù)據(jù)提取方法與流程
- 2022礦產(chǎn)地質(zhì)勘查規(guī)范鹽類第2部分:現(xiàn)代鹽湖鹽類
- 自然環(huán)境及特征(考向3:自然環(huán)境的地域差異(雪線、林線)) 【知識精講精研】 高考地理二輪核心考點突破課堂
- GB/T 43200-2023機器人一體化關節(jié)性能及試驗方法
- 紅樓夢第二回極好課件
- 混凝土回彈數(shù)據(jù)自動計算表格
- 家庭節(jié)約用水
- 《材料性能學》教案
評論
0/150
提交評論