分享

EA入門系列十二:MT4的報警

 rogerliu57 2018-04-04
報警功能是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時,說明已經對下穿報過警了,就不能再次對下穿報警。

這樣就起到了消除重複報警的作用。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多