编码帮助 - 页 626 1...619620621622623624625626627628629630631632633...786 新评论 Mladen Rakic 2016.04.19 16:43 #6251 stas0202:mladen 有希望你能在指标上帮助我吗? 不需要额外的帖子 这里有一个带警报的版本(增加了6种可能的警报类型):MASO 2_1 + alerts.mq4 附加的文件: maso_2_1__alerts.mq4 6 kb stas0202 2016.04.19 16:54 #6252 mladen: 不需要额外的帖子 这里有一个带警报的版本(增加了6种可能的警报类型):MASO 2_1 + alerts.mq4 非常好,干得好,谢谢你 stas0202 2016.04.19 17:02 #6253 mladen 可以再提出一个要求,使箭头,只关闭酒吧? 当有一个中立的酒吧,把它作为一个趋势的变化。 Joakin 2016.04.19 18:33 #6254 用MASO指标看起来有很多警报。 这是不是太多?如何在正常交易中使用它? stas0202 2016.04.19 18:44 #6255 对于二元期权,有了一定的策略,与马丁盖尔 [删除] 2016.04.20 06:43 #6256 pgtips: 嗨,Mladen。你是否有一个指标来显示前一天的蜡烛颜色? 我使用的是5分钟的图表,在回溯测试中,切换到检查前一天的蜡烛颜色会很混乱。如果我在新窗口的底部有一个红色或绿色的条形图来显示前一天的蜡烛颜色,那就太好了--我想探索同方向的交易。 像这样的条形图附在后面。这有可能吗? 所以,如果收盘价>开盘价,则为绿色,否则为红色,我想。 谢谢你一如既往的帮助 :-) 医学博士 礼貌性的碰撞:-) 附加的文件: image_198926.jpg 2 kb mntiwana 2016.04.20 08:35 #6257 pgtips: 礼貌的碰撞:-) 如果这对你有帮助,但不是在SW。 附加的文件: eurusdm5_1.png 32 kb cebretz 2016.04.20 09:28 #6258 #property copyright "" #property link "" #property indicator_chart_window #property indicator_buffers 3 #property indicator_color1 Crimson #property indicator_color2 DodgerBlue #property indicator_color3 clrBlue int price = PRICE_OPEN; extern int zBar = 1000; extern int LengthB=12; extern int LengthK=12; extern int sCCI=2; extern int sRSI=2; int SoundAlertMode = 0; int Soundonly = 0; int Barcount; double RSI; double CCI; datetime TimeBar; double previ; double ExtMapBuffer2[]; double alertBar1; int sim=0; double alertBar; extern bool DoAlert=true; extern bool alertMail=false; datetime lastAlertTime; //---- buffers double b1[],b2[];double Gd_188; double f0_3() { double Ld_ret_0; if (Digits < 4) Ld_ret_0 = 0.01; else Ld_ret_0 = 0.0001; return (Ld_ret_0); } //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators IndicatorBuffers(2); IndicatorShortName("Investor"); SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,0); SetIndexArrow(0,234); SetIndexBuffer(0,b1); SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,0); SetIndexArrow(1,233); SetIndexBuffer(1,b2); SetIndexEmptyValue(2,0.0); SetIndexDrawBegin(2, zBar); SetIndexStyle(2,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(2,158); SetIndexBuffer(2,ExtMapBuffer2); Gd_188 = f0_3(); Barcount = 0; //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int i, counted_bars=IndicatorCounted(); int limit=Bars-counted_bars; if(counted_bars>0) limit++; string sAlertMsg; /*// TImes int Li_unused_8; string Ls_28; int Li_unused_36; double Ld_0 = (Ask - Bid) / Gd_188; if (Ld_0 > 1.0 && Ld_0 <= 10.0) Li_unused_8 = 4; int Li_12 = Time[0] + 60 * Period() - TimeCurrent(); double Ld_16 = Li_12 / 60.0; int Li_24 = Li_12 % 60; Li_12 = (Li_12 - Li_12 % 60) / 60; if (Li_24 <= 9) Ls_28 = "0"; if (Li_12 >= 1 && Li_12 <= 9) Li_unused_36 = -10; else { if (Li_12 >= 10 && Li_12 <= 99) Li_unused_36 = -13; else { if (Li_12 >= 100 && Li_12 <= 999) Li_unused_36 = -16; else { if (Li_12 >= 1000 && Li_12 <= 9999) Li_unused_36 = -24; else if (Li_12 >= 10000 && Li_12 <= 99999) Li_unused_36 = -29; } } } Comment("", "" + Li_12 + ":" + Ls_28 + "" + Li_24 + "", "\n", "=======", "\n", "" + Symbol() + "", " " + Period() + "", "\n", "Spread : " + DoubleToStr(Ld_0, 1) + "", "\n", "\n", "", "\n", ""); */ // Arrows for(i=0; i<limit; i++) { RSI=iRSI(NULL,0,sRSI,price,i); CCI=iCCI(NULL,0,sCCI,price,i+1); //double zz1 = iCustom(NULL,0,"Zigzag_v.2",zBar,LengthB,LengthK,1,i); //double zz2 = iCustom(NULL,0,"Zigzag_v.2",zBar,LengthB,LengthK,0,i); //if (zz1 != 0) { if ( RSI > 80.0 && CCI < 50.0 && Open > Close && //bear Open < Close && //bull High - Close > High - Close ) { b1 = High+Point*5; } //if (zz2 != 0) { if ( RSI 50.0 && Open < Close && //bull Open > Close && //bear High - Close < High - Close ) { b2 = Low-Point*5; } if (DoAlert && b2[1]!=0 && lastAlertTime!=Time[0]) { sAlertMsg=" Alert - "+Symbol()+" "+TF2Str(Period())+""; if (DoAlert) Alert(sAlertMsg); lastAlertTime = Time[0]; if (alertMail) SendMail(sAlertMsg, "Alert!\n" + TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS )+"\n"+sAlertMsg); } else if (b1[1]!=0 && lastAlertTime!=Time[0]) { sAlertMsg=" Alert - "+Symbol()+" "+TF2Str(Period())+""; if (DoAlert) Alert(sAlertMsg); lastAlertTime = Time[0]; if (alertMail) SendMail(sAlertMsg, "Alert!\n" + TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS )+"\n"+sAlertMsg); } //} //} } sinyal(); //-------------------------------------------------------------------+ return(0); } //+------------------------------------------------------------------+ string TF2Str(int iPeriod) { switch(iPeriod) { case PERIOD_M1: return("M1"); case PERIOD_M5: return("M5"); case PERIOD_M15: return("M15"); case PERIOD_M30: return("M30"); case PERIOD_H1: return("H1"); case PERIOD_H4: return("H4"); case PERIOD_D1: return("D1"); case PERIOD_W1: return("W1"); case PERIOD_MN1: return("MN1"); default: return("M"+iPeriod); } } void sinyal(){ int shifti,Swingi,Swing_ni,uzli,ii,zui,zdi,mvi; double LLi,HHi,BHi,BLi; double Uzeli[10000][3]; // loop from first bar to current bar (with shift=0) Swing_ni=0;Swingi=0;uzli=0; BHi =High[zBar];BLi=Low[zBar];zui=zBar;zdi=zBar; for (shifti=zBar;shifti>=0;shifti--) { LLi=10000000;HHi=-100000000; for (ii=shifti+LengthB;ii>=shifti+1;ii--) { if (Low< LLi) {LLi=Low;} if (High>HHi) {HHi=High;} } if (Low[shifti]HHi){ Swingi=2; if (Swing_ni==1) {zui=shifti+1;} if (Swing_ni==-1) {zdi=shifti+1;} } else { if (Low[shifti]<LLi) {Swingi=-1;} if (High[shifti]>HHi) {Swingi=1;} } if (Swingi!=Swing_ni && Swing_ni!=0) { if (Swingi==2) { Swingi=-Swing_ni;BHi = High[shifti];BLi = Low[shifti]; } uzli=uzli+1; if (Swingi==1) { Uzeli[1]=zdi; Uzeli[2]=BLi; } if (Swingi==-1) { Uzeli[1]=zui; Uzeli[2]=BHi; } BHi = High[shifti]; BLi = Low[shifti]; } if (Swingi==1) { if (High[shifti]>=BHi) {BHi=High[shifti];zui=shifti;}} if (Swingi==-1) { if (Low[shifti]<=BLi) {BLi=Low[shifti]; zdi=shifti;}} Swing_ni=Swingi; } for (ii=1;ii<=uzli;ii++) { mvi=StrToInteger(DoubleToStr(Uzeli[1],0)); ExtMapBuffer2[mvi]=Uzeli[2]; previ=Uzeli[2]; } } 请帮助.... 这个指标的信号没有在正确的时间出现 我必须每次都刷新图表 并请修复警报 谢谢 Coding help CDP指标 求助:指标加载出了问题 Mladen Rakic 2016.04.20 13:45 #6259 cebrez: #property copyright "" #property link "" #property indicator_chart_window #property indicator_buffers 3 #property indicator_color1 Crimson #property indicator_color2 DodgerBlue #property indicator_color3 clrBlue int price = PRICE_OPEN; extern int zBar = 1000; extern int LengthB=12; extern int LengthK=12; extern int sCCI=2; extern int sRSI=2; int SoundAlertMode = 0; int Soundonly = 0; int Barcount; double RSI; double CCI; datetime TimeBar; double previ; double ExtMapBuffer2[]; double alertBar1; int sim=0; double alertBar; extern bool DoAlert=true; extern bool alertMail=false; datetime lastAlertTime; //---- buffers double b1[],b2[];double Gd_188; double f0_3() { double Ld_ret_0; if (Digits < 4) Ld_ret_0 = 0.01; else Ld_ret_0 = 0.0001; return (Ld_ret_0); } //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators IndicatorBuffers(2); IndicatorShortName("Investor"); SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,0); SetIndexArrow(0,234); SetIndexBuffer(0,b1); SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,0); SetIndexArrow(1,233); SetIndexBuffer(1,b2); SetIndexEmptyValue(2,0.0); SetIndexDrawBegin(2, zBar); SetIndexStyle(2,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(2,158); SetIndexBuffer(2,ExtMapBuffer2); Gd_188 = f0_3(); Barcount = 0; //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int i, counted_bars=IndicatorCounted(); int limit=Bars-counted_bars; if(counted_bars>0) limit++; string sAlertMsg; /*// TImes int Li_unused_8; string Ls_28; int Li_unused_36; double Ld_0 = (Ask - Bid) / Gd_188; if (Ld_0 > 1.0 && Ld_0 <= 10.0) Li_unused_8 = 4; int Li_12 = Time[0] + 60 * Period() - TimeCurrent(); double Ld_16 = Li_12 / 60.0; int Li_24 = Li_12 % 60; Li_12 = (Li_12 - Li_12 % 60) / 60; if (Li_24 <= 9) Ls_28 = "0"; if (Li_12 >= 1 && Li_12 <= 9) Li_unused_36 = -10; else { if (Li_12 >= 10 && Li_12 <= 99) Li_unused_36 = -13; else { if (Li_12 >= 100 && Li_12 <= 999) Li_unused_36 = -16; else { if (Li_12 >= 1000 && Li_12 <= 9999) Li_unused_36 = -24; else if (Li_12 >= 10000 && Li_12 <= 99999) Li_unused_36 = -29; } } } Comment("", "" + Li_12 + ":" + Ls_28 + "" + Li_24 + "", "\n", "=======", "\n", "" + Symbol() + "", " " + Period() + "", "\n", "Spread : " + DoubleToStr(Ld_0, 1) + "", "\n", "\n", "", "\n", ""); */ // Arrows for(i=0; i<limit; i++) { RSI=iRSI(NULL,0,sRSI,price,i); CCI=iCCI(NULL,0,sCCI,price,i+1); //double zz1 = iCustom(NULL,0,"Zigzag_v.2",zBar,LengthB,LengthK,1,i); //double zz2 = iCustom(NULL,0,"Zigzag_v.2",zBar,LengthB,LengthK,0,i); //if (zz1 != 0) { if ( RSI > 80.0 && CCI < 50.0 && Open > Close && //bear Open < Close && //bull High - Close > High - Close ) { b1 = High+Point*5; } //if (zz2 != 0) { if ( RSI 50.0 && Open < Close && //bull Open > Close && //bear High - Close < High - Close ) { b2 = Low-Point*5; } if (DoAlert && b2[1]!=0 && lastAlertTime!=Time[0]) { sAlertMsg=" Alert - "+Symbol()+" "+TF2Str(Period())+""; if (DoAlert) Alert(sAlertMsg); lastAlertTime = Time[0]; if (alertMail) SendMail(sAlertMsg, "Alert!\n" + TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS )+"\n"+sAlertMsg); } else if (b1[1]!=0 && lastAlertTime!=Time[0]) { sAlertMsg=" Alert - "+Symbol()+" "+TF2Str(Period())+""; if (DoAlert) Alert(sAlertMsg); lastAlertTime = Time[0]; if (alertMail) SendMail(sAlertMsg, "Alert!\n" + TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS )+"\n"+sAlertMsg); } //} //} } sinyal(); //-------------------------------------------------------------------+ return(0); } //+------------------------------------------------------------------+ string TF2Str(int iPeriod) { switch(iPeriod) { case PERIOD_M1: return("M1"); case PERIOD_M5: return("M5"); case PERIOD_M15: return("M15"); case PERIOD_M30: return("M30"); case PERIOD_H1: return("H1"); case PERIOD_H4: return("H4"); case PERIOD_D1: return("D1"); case PERIOD_W1: return("W1"); case PERIOD_MN1: return("MN1"); default: return("M"+iPeriod); } } void sinyal(){ int shifti,Swingi,Swing_ni,uzli,ii,zui,zdi,mvi; double LLi,HHi,BHi,BLi; double Uzeli[10000][3]; // loop from first bar to current bar (with shift=0) Swing_ni=0;Swingi=0;uzli=0; BHi =High[zBar];BLi=Low[zBar];zui=zBar;zdi=zBar; for (shifti=zBar;shifti>=0;shifti--) { LLi=10000000;HHi=-100000000; for (ii=shifti+LengthB;ii>=shifti+1;ii--) { if (Low< LLi) {LLi=Low;} if (High>HHi) {HHi=High;} } if (Low[shifti]HHi){ Swingi=2; if (Swing_ni==1) {zui=shifti+1;} if (Swing_ni==-1) {zdi=shifti+1;} } else { if (Low[shifti]<LLi) {Swingi=-1;} if (High[shifti]>HHi) {Swingi=1;} } if (Swingi!=Swing_ni && Swing_ni!=0) { if (Swingi==2) { Swingi=-Swing_ni;BHi = High[shifti];BLi = Low[shifti]; } uzli=uzli+1; if (Swingi==1) { Uzeli[1]=zdi; Uzeli[2]=BLi; } if (Swingi==-1) { Uzeli[1]=zui; Uzeli[2]=BHi; } BHi = High[shifti]; BLi = Low[shifti]; } if (Swingi==1) { if (High[shifti]>=BHi) {BHi=High[shifti];zui=shifti;}} if (Swingi==-1) { if (Low[shifti]<=BLi) {BLi=Low[shifti]; zdi=shifti;}} Swing_ni=Swingi; } for (ii=1;ii<=uzli;ii++) { mvi=StrToInteger(DoubleToStr(Uzeli[1],0)); ExtMapBuffer2[mvi]=Uzeli[2]; previ=Uzeli[2]; } } 请帮助.... 这个指标的信号没有在正确的时间出现 我必须每次都刷新图表 并请修复警报 谢谢 cebrez 这是一个由反编译和一些其他部分拼凑而成的指标,结果你得到了一个混乱的重绘指标101 最好忘记它 cebretz 2016.04.20 14:01 #6260 mladen: cebrez 这是一个由反编译和一些其他部分拼凑而成的指标,结果你得到了一个混乱的重绘指标101 最好忘记它 但我用这个指标取得了很好的效果,先生,是的,它是重绘的,但对我来说没有问题......请问先生 我在这里附上一些其他部分,叫做ZigZag_v.2,>>https://www.mql5.com/en/forum/174385/page417。 谢谢 1...619620621622623624625626627628629630631632633...786 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
mladen 有希望你能在指标上帮助我吗?
不需要额外的帖子
这里有一个带警报的版本(增加了6种可能的警报类型):MASO 2_1 + alerts.mq4
不需要额外的帖子
非常好,干得好,谢谢你
mladen
可以再提出一个要求,使箭头,只关闭酒吧? 当有一个中立的酒吧,把它作为一个趋势的变化。
用MASO指标看起来有很多警报。
这是不是太多?如何在正常交易中使用它?
对于二元期权,有了一定的策略,与马丁盖尔
嗨,Mladen。
你是否有一个指标来显示前一天的蜡烛颜色?
我使用的是5分钟的图表,在回溯测试中,切换到检查前一天的蜡烛颜色会很混乱。如果我在新窗口的底部有一个红色或绿色的条形图来显示前一天的蜡烛颜色,那就太好了--我想探索同方向的交易。
像这样的条形图附在后面。这有可能吗?
所以,如果收盘价>开盘价,则为绿色,否则为红色,我想。
谢谢你一如既往的帮助 :-)
医学博士礼貌性的碰撞:-)
礼貌的碰撞:-)
如果这对你有帮助,但不是在SW。
#property copyright ""
#property link ""
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Crimson
#property indicator_color2 DodgerBlue
#property indicator_color3 clrBlue
int price = PRICE_OPEN;
extern int zBar = 1000;
extern int LengthB=12;
extern int LengthK=12;
extern int sCCI=2;
extern int sRSI=2;
int SoundAlertMode = 0;
int Soundonly = 0;
int Barcount;
double RSI;
double CCI;
datetime TimeBar;
double previ;
double ExtMapBuffer2[];
double alertBar1;
int sim=0;
double alertBar;
extern bool DoAlert=true;
extern bool alertMail=false;
datetime lastAlertTime;
//---- buffers
double b1[],b2[];double Gd_188;
double f0_3() {
double Ld_ret_0;
if (Digits < 4) Ld_ret_0 = 0.01;
else Ld_ret_0 = 0.0001;
return (Ld_ret_0);
}
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
IndicatorBuffers(2);
IndicatorShortName("Investor");
SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,0);
SetIndexArrow(0,234);
SetIndexBuffer(0,b1);
SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,0);
SetIndexArrow(1,233);
SetIndexBuffer(1,b2);
SetIndexEmptyValue(2,0.0);
SetIndexDrawBegin(2, zBar);
SetIndexStyle(2,DRAW_ARROW,STYLE_SOLID,2);
SetIndexArrow(2,158);
SetIndexBuffer(2,ExtMapBuffer2);
Gd_188 = f0_3();
Barcount = 0;
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int i, counted_bars=IndicatorCounted();
int limit=Bars-counted_bars;
if(counted_bars>0) limit++;
string sAlertMsg;
/*// TImes
int Li_unused_8;
string Ls_28;
int Li_unused_36;
double Ld_0 = (Ask - Bid) / Gd_188;
if (Ld_0 > 1.0 && Ld_0 <= 10.0) Li_unused_8 = 4;
int Li_12 = Time[0] + 60 * Period() - TimeCurrent();
double Ld_16 = Li_12 / 60.0;
int Li_24 = Li_12 % 60;
Li_12 = (Li_12 - Li_12 % 60) / 60;
if (Li_24 <= 9) Ls_28 = "0";
if (Li_12 >= 1 && Li_12 <= 9) Li_unused_36 = -10;
else {
if (Li_12 >= 10 && Li_12 <= 99) Li_unused_36 = -13;
else {
if (Li_12 >= 100 && Li_12 <= 999) Li_unused_36 = -16;
else {
if (Li_12 >= 1000 && Li_12 <= 9999) Li_unused_36 = -24;
else
if (Li_12 >= 10000 && Li_12 <= 99999) Li_unused_36 = -29;
}
}
}
Comment("", "" + Li_12 + ":" + Ls_28 + "" + Li_24 + "",
"\n", "=======",
"\n", "" + Symbol() + "", " " + Period() + "",
"\n", "Spread : " + DoubleToStr(Ld_0, 1) + "",
"\n",
"\n", "",
"\n", "");
*/
// Arrows
for(i=0; i<limit; i++)
{
RSI=iRSI(NULL,0,sRSI,price,i);
CCI=iCCI(NULL,0,sCCI,price,i+1);
//double zz1 = iCustom(NULL,0,"Zigzag_v.2",zBar,LengthB,LengthK,1,i);
//double zz2 = iCustom(NULL,0,"Zigzag_v.2",zBar,LengthB,LengthK,0,i);
//if (zz1 != 0) {
if ( RSI > 80.0 && CCI < 50.0 &&
Open > Close && //bear
Open < Close && //bull
High - Close > High - Close )
{
b1 = High+Point*5;
}
//if (zz2 != 0) {
if ( RSI 50.0 &&
Open < Close && //bull
Open > Close && //bear
High - Close < High - Close )
{
b2 = Low-Point*5;
}
if (DoAlert && b2[1]!=0 && lastAlertTime!=Time[0])
{
sAlertMsg=" Alert - "+Symbol()+" "+TF2Str(Period())+"";
if (DoAlert) Alert(sAlertMsg);
lastAlertTime = Time[0];
if (alertMail) SendMail(sAlertMsg, "Alert!\n" + TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS )+"\n"+sAlertMsg);
}
else
if (b1[1]!=0 && lastAlertTime!=Time[0])
{
sAlertMsg=" Alert - "+Symbol()+" "+TF2Str(Period())+"";
if (DoAlert) Alert(sAlertMsg);
lastAlertTime = Time[0];
if (alertMail) SendMail(sAlertMsg, "Alert!\n" + TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS )+"\n"+sAlertMsg);
}
//}
//}
}
sinyal();
//-------------------------------------------------------------------+
return(0);
}
//+------------------------------------------------------------------+
string TF2Str(int iPeriod) {
switch(iPeriod) {
case PERIOD_M1: return("M1");
case PERIOD_M5: return("M5");
case PERIOD_M15: return("M15");
case PERIOD_M30: return("M30");
case PERIOD_H1: return("H1");
case PERIOD_H4: return("H4");
case PERIOD_D1: return("D1");
case PERIOD_W1: return("W1");
case PERIOD_MN1: return("MN1");
default: return("M"+iPeriod);
}
}
void sinyal(){
int shifti,Swingi,Swing_ni,uzli,ii,zui,zdi,mvi;
double LLi,HHi,BHi,BLi;
double Uzeli[10000][3];
// loop from first bar to current bar (with shift=0)
Swing_ni=0;Swingi=0;uzli=0;
BHi =High[zBar];BLi=Low[zBar];zui=zBar;zdi=zBar;
for (shifti=zBar;shifti>=0;shifti--) {
LLi=10000000;HHi=-100000000;
for (ii=shifti+LengthB;ii>=shifti+1;ii--) {
if (Low< LLi) {LLi=Low;}
if (High>HHi) {HHi=High;}
}
if (Low[shifti]HHi){
Swingi=2;
if (Swing_ni==1) {zui=shifti+1;}
if (Swing_ni==-1) {zdi=shifti+1;}
} else {
if (Low[shifti]<LLi) {Swingi=-1;}
if (High[shifti]>HHi) {Swingi=1;}
}
if (Swingi!=Swing_ni && Swing_ni!=0) {
if (Swingi==2) {
Swingi=-Swing_ni;BHi = High[shifti];BLi = Low[shifti];
}
uzli=uzli+1;
if (Swingi==1) {
Uzeli[1]=zdi;
Uzeli[2]=BLi;
}
if (Swingi==-1) {
Uzeli[1]=zui;
Uzeli[2]=BHi;
}
BHi = High[shifti];
BLi = Low[shifti];
}
if (Swingi==1) {
if (High[shifti]>=BHi) {BHi=High[shifti];zui=shifti;}}
if (Swingi==-1) {
if (Low[shifti]<=BLi) {BLi=Low[shifti]; zdi=shifti;}}
Swing_ni=Swingi;
}
for (ii=1;ii<=uzli;ii++) {
mvi=StrToInteger(DoubleToStr(Uzeli[1],0));
ExtMapBuffer2[mvi]=Uzeli[2];
previ=Uzeli[2];
}
}
请帮助....
这个指标的信号没有在正确的时间出现
我必须每次都刷新图表![](https://c.mql5.com/forextsd/smiles/confused_smile.png)
并请修复警报
谢谢
#property copyright ""
#property link ""
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Crimson
#property indicator_color2 DodgerBlue
#property indicator_color3 clrBlue
int price = PRICE_OPEN;
extern int zBar = 1000;
extern int LengthB=12;
extern int LengthK=12;
extern int sCCI=2;
extern int sRSI=2;
int SoundAlertMode = 0;
int Soundonly = 0;
int Barcount;
double RSI;
double CCI;
datetime TimeBar;
double previ;
double ExtMapBuffer2[];
double alertBar1;
int sim=0;
double alertBar;
extern bool DoAlert=true;
extern bool alertMail=false;
datetime lastAlertTime;
//---- buffers
double b1[],b2[];double Gd_188;
double f0_3() {
double Ld_ret_0;
if (Digits < 4) Ld_ret_0 = 0.01;
else Ld_ret_0 = 0.0001;
return (Ld_ret_0);
}
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
IndicatorBuffers(2);
IndicatorShortName("Investor");
SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,0);
SetIndexArrow(0,234);
SetIndexBuffer(0,b1);
SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,0);
SetIndexArrow(1,233);
SetIndexBuffer(1,b2);
SetIndexEmptyValue(2,0.0);
SetIndexDrawBegin(2, zBar);
SetIndexStyle(2,DRAW_ARROW,STYLE_SOLID,2);
SetIndexArrow(2,158);
SetIndexBuffer(2,ExtMapBuffer2);
Gd_188 = f0_3();
Barcount = 0;
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int i, counted_bars=IndicatorCounted();
int limit=Bars-counted_bars;
if(counted_bars>0) limit++;
string sAlertMsg;
/*// TImes
int Li_unused_8;
string Ls_28;
int Li_unused_36;
double Ld_0 = (Ask - Bid) / Gd_188;
if (Ld_0 > 1.0 && Ld_0 <= 10.0) Li_unused_8 = 4;
int Li_12 = Time[0] + 60 * Period() - TimeCurrent();
double Ld_16 = Li_12 / 60.0;
int Li_24 = Li_12 % 60;
Li_12 = (Li_12 - Li_12 % 60) / 60;
if (Li_24 <= 9) Ls_28 = "0";
if (Li_12 >= 1 && Li_12 <= 9) Li_unused_36 = -10;
else {
if (Li_12 >= 10 && Li_12 <= 99) Li_unused_36 = -13;
else {
if (Li_12 >= 100 && Li_12 <= 999) Li_unused_36 = -16;
else {
if (Li_12 >= 1000 && Li_12 <= 9999) Li_unused_36 = -24;
else
if (Li_12 >= 10000 && Li_12 <= 99999) Li_unused_36 = -29;
}
}
}
Comment("", "" + Li_12 + ":" + Ls_28 + "" + Li_24 + "",
"\n", "=======",
"\n", "" + Symbol() + "", " " + Period() + "",
"\n", "Spread : " + DoubleToStr(Ld_0, 1) + "",
"\n",
"\n", "",
"\n", "");
*/
// Arrows
for(i=0; i<limit; i++)
{
RSI=iRSI(NULL,0,sRSI,price,i);
CCI=iCCI(NULL,0,sCCI,price,i+1);
//double zz1 = iCustom(NULL,0,"Zigzag_v.2",zBar,LengthB,LengthK,1,i);
//double zz2 = iCustom(NULL,0,"Zigzag_v.2",zBar,LengthB,LengthK,0,i);
//if (zz1 != 0) {
if ( RSI > 80.0 && CCI < 50.0 &&
Open > Close && //bear
Open < Close && //bull
High - Close > High - Close )
{
b1 = High+Point*5;
}
//if (zz2 != 0) {
if ( RSI 50.0 &&
Open < Close && //bull
Open > Close && //bear
High - Close < High - Close )
{
b2 = Low-Point*5;
}
if (DoAlert && b2[1]!=0 && lastAlertTime!=Time[0])
{
sAlertMsg=" Alert - "+Symbol()+" "+TF2Str(Period())+"";
if (DoAlert) Alert(sAlertMsg);
lastAlertTime = Time[0];
if (alertMail) SendMail(sAlertMsg, "Alert!\n" + TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS )+"\n"+sAlertMsg);
}
else
if (b1[1]!=0 && lastAlertTime!=Time[0])
{
sAlertMsg=" Alert - "+Symbol()+" "+TF2Str(Period())+"";
if (DoAlert) Alert(sAlertMsg);
lastAlertTime = Time[0];
if (alertMail) SendMail(sAlertMsg, "Alert!\n" + TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS )+"\n"+sAlertMsg);
}
//}
//}
}
sinyal();
//-------------------------------------------------------------------+
return(0);
}
//+------------------------------------------------------------------+
string TF2Str(int iPeriod) {
switch(iPeriod) {
case PERIOD_M1: return("M1");
case PERIOD_M5: return("M5");
case PERIOD_M15: return("M15");
case PERIOD_M30: return("M30");
case PERIOD_H1: return("H1");
case PERIOD_H4: return("H4");
case PERIOD_D1: return("D1");
case PERIOD_W1: return("W1");
case PERIOD_MN1: return("MN1");
default: return("M"+iPeriod);
}
}
void sinyal(){
int shifti,Swingi,Swing_ni,uzli,ii,zui,zdi,mvi;
double LLi,HHi,BHi,BLi;
double Uzeli[10000][3];
// loop from first bar to current bar (with shift=0)
Swing_ni=0;Swingi=0;uzli=0;
BHi =High[zBar];BLi=Low[zBar];zui=zBar;zdi=zBar;
for (shifti=zBar;shifti>=0;shifti--) {
LLi=10000000;HHi=-100000000;
for (ii=shifti+LengthB;ii>=shifti+1;ii--) {
if (Low< LLi) {LLi=Low;}
if (High>HHi) {HHi=High;}
}
if (Low[shifti]HHi){
Swingi=2;
if (Swing_ni==1) {zui=shifti+1;}
if (Swing_ni==-1) {zdi=shifti+1;}
} else {
if (Low[shifti]<LLi) {Swingi=-1;}
if (High[shifti]>HHi) {Swingi=1;}
}
if (Swingi!=Swing_ni && Swing_ni!=0) {
if (Swingi==2) {
Swingi=-Swing_ni;BHi = High[shifti];BLi = Low[shifti];
}
uzli=uzli+1;
if (Swingi==1) {
Uzeli[1]=zdi;
Uzeli[2]=BLi;
}
if (Swingi==-1) {
Uzeli[1]=zui;
Uzeli[2]=BHi;
}
BHi = High[shifti];
BLi = Low[shifti];
}
if (Swingi==1) {
if (High[shifti]>=BHi) {BHi=High[shifti];zui=shifti;}}
if (Swingi==-1) {
if (Low[shifti]<=BLi) {BLi=Low[shifti]; zdi=shifti;}}
Swing_ni=Swingi;
}
for (ii=1;ii<=uzli;ii++) {
mvi=StrToInteger(DoubleToStr(Uzeli[1],0));
ExtMapBuffer2[mvi]=Uzeli[2];
previ=Uzeli[2];
}
}
请帮助....
这个指标的信号没有在正确的时间出现
我必须每次都刷新图表![](https://c.mql5.com/forextsd/smiles/confused_smile.png)
并请修复警报
谢谢cebrez
这是一个由反编译和一些其他部分拼凑而成的指标,结果你得到了一个混乱的重绘指标101
最好忘记它
cebrez
这是一个由反编译和一些其他部分拼凑而成的指标,结果你得到了一个混乱的重绘指标101
最好忘记它但我用这个指标取得了很好的效果,先生,是的,它是重绘的,但对我来说没有问题......请问先生
我在这里附上一些其他部分,叫做ZigZag_v.2,>>https://www.mql5.com/en/forum/174385/page417。
谢谢