论坛全局菜单下方 - exness285X70论坛全局菜单下方 - 荔枝返现285X70论坛全局菜单下方 - ThinkMarkets285X70论坛全局菜单下方 - TICKMILL 285X70
帖子
作者
回复/查看
最后发表
2005-09-05 08:13
28
7787
2016-01-27 06:44
韬客社区
没那么麻烦的。 送给你一套我自己编的三件套 ;) Alert_Method 设置1,2,3 分别为 穿越指定价格报警,穿越ma均线报警,macd双线交叉报警。 你应该仔细看看函数说明,在共享里有下载。MQ4不算难,但也不是一天两天就能完全掌握的。 //+------------------------------------------------------------------+ //| 2.mq4 | //| Copyright ?2005, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright ?2005, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Blue #property indicator_color2 Green extern int Alert_Method = 2; //可选1,2,3 extern double Alert_Price_Hi = 0; //上方穿越价格报警价格 extern double Alert_Price_Lo = 0;//下方穿越报警价格 extern int Price_Min = 0;//报价周期 extern int Price_Period = 0;//ma周期 extern int Price_Shift = 0; extern int Fast = 12; extern int Slow = 26; extern int Signal = 9; double up,down; double LastAlertTime = 0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,236); SetIndexBuffer(0,up); SetIndexEmptyValue(0,0.0); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,238); SetIndexBuffer(1,down); SetIndexEmptyValue(1,0.0); IndicatorDigits(2); //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { //---- switch (Alert_Method) { case 1 : Alert_Start1(); break; case 2 : Alert_Start2(); break; case 3 : Alert_Start3(); break; default:break; } return(0); } //+------------------------------------------------------------------+ //| Alert_start1 function for pirce Alert | //+------------------------------------------------------------------+ void Alert_Start1() { if (Close[0] > Alert_Price_Hi && Alert_Price_Hi > 0) { Alert(Symbol()," price : ",Alert_Price_Hi,); Sleep(1000); SpeechText ("Alert , Alert"); } else if (Close[0] < Alert_Price_Lo && Alert_Price_Lo > 0) { Alert(Symbol()," price : ",Alert_Price_Lo ); Sleep(1000); SpeechText ("Alert , Alert"); } } //+------------------------------------------------------------------+ //| Alert_start2 function for Averages Alert | //+------------------------------------------------------------------+ void Alert_Start2() { double Alert_Price = iMA(NULL,Price_Min,Price_Period,0,MODE_SMA,PRICE_CLOSE,Price_Shift); for (int i=Bars-1;i>=0;i--) { if (iClose(NULL,Price_Min,i+Price_Shift+1) >= iMA(NULL,Price_Min,Price_Period,0,MODE_SMA,PRICE_CLOSE,i+Price_Shift+1) && iClose(NULL,Price_Min,i+Price_Shift) < iMA(NULL,Price_Min,Price_Period+1,0,MODE_SMA,PRICE_CLOSE,i+Price_Shift)) { Alert_Price = iMA(NULL,Price_Min,Price_Period,0,MODE_SMA,PRICE_CLOSE,i+Price_Shift); down=Low; if (i == 1 && LastAlertTime!=Time[0]) { Alert(Symbol()," Price down Cross : ",Alert_Price,": M",Price_Min,"(",Price_Period,")"); LastAlertTime=Time[0]; } } else if (iClose(NULL,Price_Min,i+Price_Shift+1) <= iMA(NULL,Price_Min,Price_Period,0,MODE_SMA,PRICE_CLOSE,i+Price_Shift+1) && iClose(NULL,Price_Min,i+Price_Shift) > iMA(NULL,Price_Min,Price_Period+1,0,MODE_SMA,PRICE_CLOSE,i+Price_Shift)) { Alert_Price = iMA(NULL,Price_Min,Price_Period,0,MODE_SMA,PRICE_CLOSE,i+Price_Shift); up=High; if (i == 1 && LastAlertTime!=Time[0]) { Alert(Symbol()," Price up Cross : ",Alert_Price,": M",Price_Min,"(",Price_Period,")"); LastAlertTime=Time[0]; } } } } void Alert_Start3() { int counted_bars=IndicatorCounted(); for(int i=Bars;i>=0;i--) { if ( iMACD(NULL,0,Fast,Slow,Signal,PRICE_CLOSE,MODE_MAIN,i) > iMACD(NULL,0,Fast,Slow,Signal,PRICE_CLOSE,MODE_SIGNAL,i) && iMACD(NULL,0,Fast,Slow,Signal,PRICE_CLOSE,MODE_MAIN,i+1)iMACD(NULL,0,Fast,Slow,Signal,PRICE_CLOSE,MODE_SIGNAL,i+1) ) { if (i == 1 && LastAlertTime!=Time[0]) { Alert(Symbol(),"MACD down cross"); LastAlertTime=Time[0]; } } } } //+------------------------------------------------------------------+ 老兄 疏忽了哈 \\ 应该是 //:handshake [ 本帖最后由 老正 于 2005-9-9 19:29 编辑 ]
韬客社区
2005-09-09 04:43
版权所有:韬客外汇论坛 www.talkfx.com 联络我们:[email protected]