论坛全局菜单下方 - TICKMILL 285X70论坛全局菜单下方 - ThinkMarkets285X70论坛全局菜单下方 - 荔枝返现285X70论坛全局菜单下方 -  icmarkets285X70
  • 1
  • 2
前往
共 32 条
查看:1260回复:31
sumone
注册时间2006-09-09
[求助]能否请大神帮忙改一下这个提醒指标,让她只发固定次数的邮件,现在简直是邮箱炸弹~~~
楼主发表于:2017-10-24 08:56只看该作者倒序浏览
1楼 电梯直达
电梯直达
比如小时图里穿越条件成立的那条k线时段内隔12分钟才检测一下,现在波动一下就是一封,堪比炸弹~emoji-image #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=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
TK29帖子1楼右侧xm竖版广告90-240
个性签名

韬客社区www.talkfx.co

广告
TK30+TK31帖子一樓廣告
TK30+TK31帖子一樓廣告
sumone
注册时间2006-09-09
楼主发表于:2017-10-24 08:57只看该作者
2楼
完成请发个微信赞赏码上来,有小小红包送上:lol
tempasdf
注册时间2012-12-22
发表于:2017-10-24 09:36只看该作者
3楼
#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 bool 是否报警=true; //extern int 是否报警=1; extern bool 是否发邮件=true; //extern int 是否发邮件=1; extern int 邮件间隔=12; //---- buffers double Ma10; double Ma130; double Up; double Down; int TimeInMinute; int FlagAlert=0; datetime prvEmailTime=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=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 (是否报警) {Alert(Signal);} if (是否发邮件) { if(prvEmailTime+邮件间隔*60 <= TimeCurrent()) { SendMail(Signal,Signal); prvEmailTime=TimeCurrent(); } } FlagAlert=1; } } } if ((Ma10[i+1]>Ma130[i+1])&&(Ma10
qhsps
注册时间2005-04-03
365
发表于:2017-10-24 11:05只看该作者
4楼
你把这段代码放到void OnTimer()里面,在int OnInit()里面初始化设置EventSetTimer(12*60).
qhsps
注册时间2005-04-03
365
发表于:2017-10-24 11:07只看该作者
5楼
int start()里面的代码放到void OnTimer()里面,实现12*60秒,12分钟检测一次。
冬去春来
注册时间2017-10-23
qhsps
注册时间2005-04-03
365
发表于:2017-10-24 11:21只看该作者
7楼
int start()里面的代码放到void OnTimer()里面,实现12*60秒,12分钟检测一次。然后int start()里面代码清空,重新编译
qhsps
注册时间2005-04-03
365
发表于:2017-10-24 11:27只看该作者
8楼
#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 EventSetTimer(12*60); 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() { } void OnTimer() { 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=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
qhsps
注册时间2005-04-03
365
发表于:2017-10-24 11:28只看该作者
9楼
改过的代码上传木有显示。emoji-image
qhsps
注册时间2005-04-03
365
发表于:2017-10-24 11:35只看该作者
10楼
或者在int OnInit()里面初始化设置加入语句EventSetTimer(12*60); int start() 改成 void OnTimer(), void OnDeinit(const int reason){ EventKillTimer();//必须包含此语句,释放定时器 }
qhsps
注册时间2005-04-03
365
发表于:2017-10-24 11:38只看该作者
11楼
在原文的int start()上面增加 后面程序: void OnDeinit(const int reason){ EventKillTimer();//必须包含此语句,释放定时器 }
sumone
注册时间2006-09-09
楼主发表于:2017-10-24 11:42来自移动端只看该作者
12楼
好的,明天我试试哈
qhsps
注册时间2005-04-03
365
发表于:2017-10-24 11:45只看该作者
13楼
简述一下, 原文int init(){ 替换成 int init(){EventSetTimer(12*60); int start(){ 替换成 void OnDeinit(const int reason){ EventKillTimer();//必须包含此语句,释放定时器 } void OnTimer(){
qhsps
注册时间2005-04-03
365
发表于:2017-10-24 13:22只看该作者
14楼
#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(){EventSetTimer(12*60); //---- 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); } void OnDeinit(const int reason){ EventKillTimer();//必须包含此语句,释放定时器 } int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time, const double &open, const double &high, const double &low, const double &close, const long &tick_volume, const long &volume, const int &spread) { //--- //--- return value of prev_calculated for next call return(rates_total); } void OnTimer(){ 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=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
qhsps
注册时间2005-04-03
365
发表于:2017-10-24 13:24只看该作者
15楼
最后发出的代码可以运行的。mt4新建一个技术指标,把这段代码替换原有代码重新编译。
qhsps
注册时间2005-04-03
365
发表于:2017-10-24 13:25只看该作者
16楼
#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(){EventSetTimer(12*60); //---- 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); } void OnDeinit(const int reason){ EventKillTimer();//必须包含此语句,释放定时器 } int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time, const double &open, const double &high, const double &low, const double &close, const long &tick_volume, const long &volume, const int &spread) { //--- //--- return value of prev_calculated for next call return(rates_total); } void OnTimer(){ 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=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
qhsps
注册时间2005-04-03
365
发表于:2017-10-24 13:25只看该作者
17楼
#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(){EventSetTimer(12*60); //---- 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); } void OnDeinit(const int reason){ EventKillTimer();//必须包含此语句,释放定时器 } int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time, const double &open, const double &high, const double &low, const double &close, const long &tick_volume, const long &volume, const int &spread) { //--- //--- return value of prev_calculated for next call return(rates_total); } void OnTimer(){ 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=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

点评

问题1 这个指标是画线的 ontimer 12钟画一次??? 问题2 正好12分钟时无tick 且在下一tick达到条件,那不是要再等12分钟才能知道??发表于 2017-10-25 00:22
个性签名

韬客社区www.talkfx.co

sumone
注册时间2006-09-09
楼主发表于:2017-10-24 14:35来自移动端只看该作者
18楼
再次感谢!
tempasdf
注册时间2012-12-22
发表于:2017-10-25 00:22只看该作者
19楼
qhsps 发表于 2017-10-24 21:25
#property indicator_chart_window #property indicator_buffers 4 #property indicator_color1 Yellow
问题1 这个指标是画线的 ontimer 12钟画一次??? 问题2 正好12分钟时无tick 且在下一tick达到条件,那不是要再等12分钟才能知道??
sumone
注册时间2006-09-09
楼主发表于:2017-10-25 01:00只看该作者
20楼
tempasdf 发表于 2017-10-25 08:22
问题1 这个指标是画线的 ontimer 12钟画一次??? 问题2 正好12分钟时无tick 且在下一tick达到条件,那不是 ...
我不太懂这个,这代码我其他地方抄来的~~是的,只是在穿越时提醒,因为我只用在小时图上,所以隔久一点无所谓,第一次发邮件后隔12分钟再检查一次,有就发,直到穿越完成不再报警。
  • 1
  • 2
前往
共 32 条

本站免责声明:

1、本站所有广告及宣传信息均与韬客无关,如需投资请依法自行决定是否投资、斟酌资金安全及交易亏损风险;

2、韬客是独立的、仅为投资者提供交流的平台,网友发布信息不代表韬客的观点与意思表示,所有因网友发布的信息而造成的任何法律后果、风险与责任,均与韬客无关;

3、金融交易存在极高法律风险,未必适合所有投资者,请不要轻信任何高额投资收益的诱导而贸然投资;投资保证金交易导致的损失可能超过您投入的资金和预期。请您考虑自身的投资经验及风险承担能力,进行合法、理性投资;

4、所有投资者的交易帐户应仅限本人使用,不应交由第三方操作,对于任何接受第三方喊单、操盘、理财等操作的投资和交易,由此导致的任何风险、亏损及责任由投资者个人自行承担;

5、韬客不隶属于任何券商平台,亦不受任何第三方控制,韬客不邀约客户投资任何保证金交易,不接触亦不涉及投资者的任何资金及账户信息,不代理任何交易操盘行为,不向客户推荐任何券商平台,亦不存在其他任何推荐行为。投资者应自行选择券商平台,券商平台的任何行为均与韬客无关。投资者注册及使用韬客即表示其接受和认可上述声明,并自行承担法律风险。

版权所有:韬客外汇论坛 www.talkfx.com 联络我们:[email protected]