- #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_bars<0) return(-1);
- //---- the last counted bar will be recounted
- if(counted_bars>0) counted_bars--;
- limit=Bars-counted_bars;
- for (i=limit-1;i>=0;i--)
- {
- Ma10[i]=iMA(NULL,0,均线周期1,0,类型1,PRICE_CLOSE,i);
- Ma130[i]=iMA(NULL,0,均线周期2,0,类型2,PRICE_CLOSE,i);
- if ((Ma10[i+1]<Ma130[i+1])&&(Ma10[i]>Ma130[i])&&(Close[i]>Ma10[i])&&(Close[i]>Ma130[i]))
- {
- Signal="["+Period()+"分钟]"+TimeMonth(Time[i]+TimeInMinute)+"月"+TimeDay(Time[i]+TimeInMinute)+"日"+TimeHour(Time[i]+TimeInMinute)+"点"+TimeMinute(Time[i]+TimeInMinute)+"分 "+Symbol()+"在价格"+DoubleToStr(Close[i],4)+"发生"+均线周期1+"均线上穿"+均线周期2+"均线";
- writetext(文字标识,Signal,20+文字水平,40+文字垂直,文字颜色,文字大小);
- Up[i]=Low[i]-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[i]<Ma130[i])&&(Close[i]<Ma10[i])&&(Close[i]<Ma130[i]))
- {
- Signal="["+Period()+"分钟]"+TimeMonth(Time[i]+TimeInMinute)+"月"+TimeDay(Time[i]+TimeInMinute)+"日"+TimeHour(Time[i]+TimeInMinute)+"点"+TimeMinute(Time[i]+TimeInMinute)+"分 "+Symbol()+"在价格"+DoubleToStr(Close[i],4)+"发生"+均线周期1+"均线下穿"+均线周期2+"均线";
- writetext(文字标识,Signal,20+文字水平,40+文字垂直,文字颜色,文字大小);
- Down[i]=High[i]+3*Point;
- if (i==1)
- {
- if (FlagAlert==0)
- {
- if (是否报警==1)
- Alert(Signal);
- if (是否发邮件==1)
- SendMail(Signal,Signal);
- FlagAlert=1;
- }
- }
- }else FlagAlert=0;
- }
- return(0);
- }
- void writetext(string Labelname,string data,int x,int y,color ColorValue,int FontSize)//通过Object写文字
- {
- ObjectDelete(Labelname);
- ObjectCreate(Labelname, OBJ_LABEL, 0, 0, 0);
- ObjectSetText(Labelname, data, FontSize, "Arial", ColorValue);
- ObjectSet(Labelname, OBJPROP_CORNER, 0);
- ObjectSet(Labelname, OBJPROP_XDISTANCE, x);
- ObjectSet(Labelname, OBJPROP_YDISTANCE, y);
- }
--------------------------------------
|