MT4編程入門(十一):MT4的報(bào)警
作者:MT4 來(lái)源:cxh99.com 發(fā)布時(shí)間:2012年05月15日
- 報(bào)警功能是MT4的一大特色。它可以在預(yù)定的條件達(dá)到時(shí),發(fā)出警報(bào)。

與指標(biāo)畫線相比,報(bào)警語(yǔ)句顯得非常簡(jiǎn)單,
只要在判斷語(yǔ)句中加一個(gè)報(bào)警語(yǔ)句即可
報(bào)警方式有:彈出窗口報(bào)警、音樂(lè)報(bào)警、郵件報(bào)警等。
如果郵箱開通了手機(jī)短信通知,則郵件報(bào)警的內(nèi)容會(huì)即時(shí)轉(zhuǎn)發(fā)到手機(jī)上。
1、彈出窗口報(bào)警:
當(dāng)(條件達(dá)到)執(zhí)行此語(yǔ)句時(shí),以彈出窗口警告。
格式:Alert(內(nèi)容1,內(nèi)容2,內(nèi)容3,內(nèi)容4);
報(bào)警內(nèi)容為字符串型,內(nèi)容之間加逗號(hào)
例如:
Alert( Symbol(),"4小時(shí)圖MACD上穿零軸");
2、音樂(lè)報(bào)警:
當(dāng)(條件達(dá)到)執(zhí)行此語(yǔ)句時(shí),播放一段音樂(lè)。
格式:PlaySound("音樂(lè)文件名.wav");
文件類型為wav格式,并且保存在C:\Program Files\MetaTrader4\sounds目錄中
文件名加引號(hào)
3、郵件報(bào)警:
當(dāng)(條件達(dá)到)執(zhí)行此語(yǔ)句時(shí),發(fā)送一個(gè)郵件。
(收發(fā)件人地址在MT4系統(tǒng)中設(shè)置詳見《MT4編程實(shí)例1:一個(gè)簡(jiǎn)單的小程序,讓你的手機(jī)搖身變成外匯行情接收機(jī)》)
格式:SendMail(標(biāo)題1+標(biāo)題2, 內(nèi)容1+內(nèi)容2);
標(biāo)題之間以加號(hào)連接,內(nèi)容之間也以加號(hào)連接
郵件標(biāo)題和郵件內(nèi)容以逗號(hào)間隔
下面是《價(jià)格穿越某均線報(bào)警》舉例
+---------------------------------
#property indicator_chart_window
extern int 警戒均線=20;
int mark=0;
int start()
{
if( iHigh(0,0,0) >= iMA(0,0,警戒均線,0,MODE_SMA,PRICE_CLOSE,0)
&& iHigh(0,0,1) <iMA(0,0,警戒均線,0,MODE_SMA,PRICE_CLOSE,1)
&& mark != 1 )
{
Alert(Symbol(),"向上觸及30均線");
mark = 1;
}
if( iLow(0,0,0) <= iMA(0,0,警戒均線,0,MODE_SMA,PRICE_CLOSE,0)
&& iLow(0,0,1) >iMA(0,0,警戒均線,0,MODE_SMA,PRICE_CLOSE,1)
&& mark != 2 )
{
Alert(Symbol(),"向下觸及",警戒均線,"均線");
mark = 2;
}
return(0);
}
+---------------------------------
部分語(yǔ)句說(shuō)明:
#property indicator_chart_window
此句是把程序放在主圖,當(dāng)然這此例中放在副圖也一樣
extern int 定義一個(gè)外部參數(shù)變量,整數(shù)型,允許外部值修改
int 定義一個(gè)整數(shù)型變量
int start() 定義觸發(fā)函數(shù)
if() 判斷
iHigh() 最高價(jià)值函數(shù)
iLow() 最低價(jià)值函數(shù)
iMA() 移動(dòng)平均線值函數(shù)
Alert() 報(bào)警函數(shù)
Symbol() 商品名稱函數(shù)
&& 邏輯運(yùn)算符“并且”
!= 邏輯運(yùn)算符“不等于”
MODE_SMA 簡(jiǎn)單移動(dòng)平均模式
PRICE_CLOSE以收盤價(jià)計(jì)算
再說(shuō)一下自定義變量mark的作用:
mark的初值是0,當(dāng)上穿報(bào)警時(shí)給mark賦值1,當(dāng)下穿報(bào)警時(shí)給mark賦值2。
這樣當(dāng)mark的值為1時(shí),說(shuō)明已經(jīng)對(duì)上穿報(bào)過(guò)警了,就不能再次對(duì)上穿報(bào)警;
當(dāng)mark的值為2時(shí),說(shuō)明已經(jīng)對(duì)下穿報(bào)過(guò)警了,就不能再次對(duì)下穿報(bào)警。
這樣就起到了消除重復(fù)報(bào)警的作用。