| 这是在论坛中的一个双均线穿越的指标,可以自定义均线周期和类型。但是警报触发的时候会一直不停地更随价格变动而发出报警,也会一直不停地发邮件,我看程序内部的全局变量“flagalert”应该已经是做了控制的,不知道为什么还会出现这样的情况。请高手完善一下源代码或者指点一下思路。 原帖地址:http://www.520fx.com/thread-6798-1-1.html
 源代码如下:<div class=\"blockcode\"><div id=\"code_Lo2\"><ol>
 #property indicator_chart_window
 #property indicator_buffers 4
 #property indicator_color1 Yellow
 #property indicator_color2 White
 #property indicator_color3 Yellow
 #property indicator_color4 White
 
 //---- input parameters
 extern int 均线周期1=10;
 extern int 均线周期2=130;
 extern int 类型1=1; //类型: 0-SMA; 1-EMA; 2-SMMA; 3-LWMA
 extern int 类型2=1; //类型: 0-SMA; 1-EMA; 2-SMMA; 3-LWMA
 extern string 类型说明=\"0-SMA; 1-EMA; 2-SMMA; 3-LWMA\";
 extern int 文字水平=0;
 extern int 文字垂直=0;
 extern int 文字大小=14;
 extern string 文字标识=\"1\";
 extern color 文字颜色=Yellow;
 extern int 是否报警=1;
 extern int 是否发邮件=1;
 //---- buffers
 double Ma10[];
 double Ma130[];
 double Up[];
 double Down[];
 int TimeInMinute;
 int FlagAlert=0;
 //+------------------------------------------------------------------+
 //| Custom indicator initialization function |
 //+------------------------------------------------------------------+
 int init()
 {
 //---- indicators
 IndicatorBuffers(4);
 SetIndexStyle(0,DRAW_LINE);
 SetIndexStyle(1,DRAW_LINE);
 SetIndexStyle(2,DRAW_ARROW);
 SetIndexStyle(3,DRAW_ARROW);
 SetIndexBuffer(0,Ma10);
 SetIndexBuffer(1,Ma130);
 SetIndexBuffer(2,Up);
 SetIndexBuffer(3,Down);
 SetIndexArrow(2,233);
 SetIndexArrow(3,234);
 TimeInMinute=0;
 //----
 return(0);
 }
 
 int start()
 {
 int i;
 int limit;
 string Signal;
 int counted_bars=IndicatorCounted();
 //---- check for possible errors
 if(counted_bars0) counted_bars--;
 limit=Bars-counted_bars;
 for (i=limit-1;i>=0;i--)
 {
 Ma10=iMA(NULL,0,均线周期1,0,类型1,PRICE_CLOSE,i);
 Ma130=iMA(NULL,0,均线周期2,0,类型2,PRICE_CLOSE,i);
 if ((Ma10[i+1]Ma130)&&(Close>Ma10)&&(Close>Ma130))
 {
 Signal=\"[\"+Period()+\"分钟]\"+TimeMonth(Time+TimeInMinute)+\"月\"+TimeDay(Time+TimeInMinute)+\"日\"+TimeHour(Time+TimeInMinute)+\"点\"+TimeMinute(Time+TimeInMinute)+\"分 \"+Symbol()+\"在价格\"+DoubleToStr(Close,4)+\"发生\"+均线周期1+\"均线上穿\"+均线周期2+\"均线\";
 writetext(文字标识,Signal,20+文字水平,40+文字垂直,文字颜色,文字大小);
 Up=Low-3*Point;
 if (i==0)
 {
 if (FlagAlert==0)
 {
 if (是否报警==1)
 Alert(Signal);
 if (是否发邮件==1)
 SendMail(Signal,Signal);
 FlagAlert=1;
 }
 }
 }
 if ((Ma10[i+1]>Ma130[i+1])&&(Ma10
 |