MT4編程入門(十一):MT4的報警
作者:MT4 來源:cxh99.com 發布時間:2012年05月15日
- 報警功能是MT4的一大特色。它可以在預定的條件達到時,發出警報。

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