MT4編程入門(十一):MT4的報警 [MT4]
作者:
MT4 來源:
cxh99.com 發(fā)布時間:2012年05月15日 點擊數(shù):
【
收藏到本網(wǎng)的會員中心】
- 報警功能是MT4的一大特色。它可以在預(yù)定的條件達到時,發(fā)出警報。

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