#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时,说明已经对下穿报过警了,就不能再次对下穿报警。 这样就起到了消除重复报警的作用。 |