这是一个很好的指标。它在图表上不占空间。如果能给它添加一个警报,那就更好了。
VIJAY JADAV MACD 平滑趋势指标)中设置警报,这可能吗?如果可以,我需要在 .mq5 代码中做哪些修改?
//--- Расчёт индикатора for(int i=limit; i>=0 && !IsStopped(); i--) { BufferNL[i]=BufferDN[i]=BufferUP[i]=EMPTY_VALUE; if(BufferMACD[i]>0 && BufferSignal[i]<BufferMACD[i]) { BufferUP[i]=0.5; BufferNL[i]=BufferDN[i]=EMPTY_VALUE; Alert("Buy ", _Symbol); } else { if(BufferMACD[i]<0 && BufferSignal[i]>BufferMACD[i]) { BufferDN[i]=0.5; BufferNL[i]=BufferUP[i]=EMPTY_VALUE; Alert("Sell ", _Symbol); } else { BufferNL[i]=0.5; BufferDN[i]=BufferUP[i]=EMPTY_VALUE; } } }
VIJAY JADAV #:
谢谢你,先生,你帮我完成了这项工作,但其中有一个小问题
您所做的修改会使音频持续播放、
我想要这样一个警报:当绿线开始时,我应该只在其第一根蜡烛上收到警报,而不应该在其后的蜡烛上收到警报。
只有当最高价线和信号线交叉时才会收到警报,否则不会收到警报、
绿线的第二根蜡烛不应发出警报、
谢谢您,先生
//--- Расчёт индикатора int lastAlert = 0; // 0 表示持平,1 表示买入,2 表示卖出 for(int i=limit; i>=0 && !IsStopped(); i--) { BufferNL[i]=BufferDN[i]=BufferUP[i]=EMPTY_VALUE; if(BufferMACD[i]>0 && BufferSignal[i]<BufferMACD[i]) { BufferUP[i]=0.5; BufferNL[i]=BufferDN[i]=EMPTY_VALUE; if(lastAlert != 1) { Alert("Buy ", _Symbol); lastAlert = 1; } } else { if(BufferMACD[i]<0 && BufferSignal[i]>BufferMACD[i]) { BufferDN[i]=0.5; BufferNL[i]=BufferUP[i]=EMPTY_VALUE; if(lastAlert != 2) { Alert("Sell ", _Symbol); lastAlert = 2; } } else { BufferNL[i]=0.5; BufferDN[i]=BufferUP[i]=EMPTY_VALUE; lastAlert = 0; } } }
我添加了一个变量,将警报限制为每次交叉一个警报。
如果您仍然收到栏内警报,下面的代码会根据栏打开时间 额外限制警报。不能使用历史缓冲区值,因为它们是空值。请注意,我还没有编译或测试过这段代码,但我相信你会做完后再发回。
// 将这两行放在全局变量作用域的最上面 datetime lastOpenTime; ulong uLastOpenTime; ////////////////////////////////////////////////// // 将这两行放在 OnInit() 函数中 lastOpenTime = 0; uLastOpenTime = ulong(lastOpenTime); ////////////////////////////////////////////////// //--- Расчёт индикатора int lastAlert = 0; // 0 表示持平,1 表示买入,2 表示卖出 for(int i=limit; i>=0 && !IsStopped(); i--) { BufferNL[i]=BufferDN[i]=BufferUP[i]=EMPTY_VALUE; if(BufferMACD[i]>0 && BufferSignal[i]<BufferMACD[i]) { BufferUP[i]=0.5; BufferNL[i]=BufferDN[i]=EMPTY_VALUE; if(lastAlert != 1 && uLastOpenTime < ulong(iTime(_Symbol, PERIOD_CURRENT, 1)) { Alert("Buy ", _Symbol); lastAlert = 1; uLastOpenTime = ulong(iTime(_Symbol, PERIOD_CURRENT, 1); } } else { if(BufferMACD[i]<0 && BufferSignal[i]>BufferMACD[i]) { BufferDN[i]=0.5; BufferNL[i]=BufferUP[i]=EMPTY_VALUE; if(lastAlert != 2 && uLastOpenTime < ulong(iTime(_Symbol, PERIOD_CURRENT, 1)) { Alert("Sell ", _Symbol); lastAlert = 2; lastOpenTime = ulong(iTime(_Symbol, PERIOD_CURRENT, 1); } } else { BufferNL[i]=0.5; BufferDN[i]=BufferUP[i]=EMPTY_VALUE; lastAlert = 0; } } }
MACD_Flat_Trend:
MACD 横盘趋势指标
作者: Scriptor