求助,帮忙看看这个方法的条件判断有问题,但是找不出来原因 新评论 cloudchina 2022.09.17 18:11 主要是参考这篇文章 面向对象法建立多时间表及多货币面板 - MQL5文章 改写的指标,主要修改的是 CPriceChangeRow 这个类及文件里面的方法。有问题的是下面的代码 //+------------------------------------------------------------------ string CPriceShapeRow::CheckKShape(double kopen,double khigh,double klow,double kclose,double masm,double mabig) { string shape; //--- 空头趋势 if(masm<mabig) { if(kclose>kopen && (kopen-klow)>=longshadow2*(kclose-kopen) && (kopen-klow)>=longshadow2*(khigh-kclose)) shape="逆势超级看多"; else if(kclose>kopen && (kopen-klow)>=longshadow1*(kclose-kopen) && (kopen-klow)>=longshadow1*(khigh-kclose)) shape="逆势看多"; else if(kopen>kclose && (khigh-kopen)>=longshadow2*(kopen-kclose) && (khigh-kopen)>=longshadow2*(kclose-klow)) shape="顺势超级看空"; else if(kopen>kclose && (khigh-kopen)>=longshadow1*(kopen-kclose) && (khigh-kopen)>=longshadow1*(kclose-klow)) shape="顺势看空"; else return "---"; } else { if(kclose>kopen && (kopen-klow)>=longshadow2*(kclose-kopen) && (kopen-klow)>=longshadow2*(khigh-kclose)) shape="顺势超级看多"; else if(kclose>kopen && (kopen-klow)>=longshadow1*(kclose-kopen) && (kopen-klow)>=longshadow1*(khigh-kclose)) shape="顺势看多"; else if(kopen>kclose && (khigh-kopen)>=longshadow2*(kopen-kclose) && (khigh-kopen)>=longshadow2*(kclose-klow)) shape="逆势超级看空"; else if(kopen>kclose && (khigh-kopen)>=longshadow1*(kopen-kclose) && (khigh-kopen)>=longshadow1*(kclose-klow)) shape="逆势看空"; else return "---"; } return shape; } 上面的方法是在下面的方法中调用的: string CPriceShapeRow::GetValue(string symbol,ENUM_TIMEFRAMES tf) { double smallvalue[1]; double bigvalue[1]; double close[2]; double open[2]; double high[2]; double low[2]; //--- 获取 MA 指标句柄 int handle_small=GetSmallHandle(symbol,tf); int handle_big=GetBigHandle(symbol,tf); if(handle_small==INVALID_HANDLE || handle_big==INVALID_HANDLE) return("err"); //--- 取最后 MA 数值 if(CopyBuffer(handle_small,0,1,1,smallvalue)<0) return("-"); if(CopyBuffer(handle_big,0,1,1,bigvalue)<0) return("-"); //--- 取最近收线的2个柱线的开盘价、收盘价、最高价、最低价 if(CopyClose(symbol, tf,1, 2, close) < 0) return("-"); if(CopyOpen(symbol, tf, 1, 2, open) < 0) return("-"); if(CopyHigh(symbol, tf, 1, 2, high) <0) return("-"); if(CopyLow(symbol, tf, 1, 2, low) < 0) return("-"); //--- 是否吞没,即阴包阳;阳包阴 if(ishape==2) { if(CheckTunm(open[1],close[1],high[1],low[1],open[0],close[0],high[0],low[0],smallvalue[0],bigvalue[0])) return("Yes"); else return("No"); } //--- 是否顺势Pinbar else if(ishape==1) { return (CheckKShape(open[1],high[1],low[1],close[1],smallvalue[0],bigvalue[0])); } else { //---检查当前条件: small<big 死叉;small>big 金叉 if(smallvalue[0]<bigvalue[0]) return("死叉"); else return("金叉"); } } 显示出来的结果是下图: 第一段代码中的这个CheckKShape方法里面的条件判断有问题,但是找不到原因,求助大神帮忙看看 面向对象法建立多时间表及多货币面板 www.mql5.com 本文讲述如何利用面向对象编程创建 MetaTrader 5 多时间表与多货币面板。主要目标在于建立一个可用于显示多种不同类型数据(比如价格、价格变动、指标值或自定义买/卖条件)、且无需修改面板本身代码的通用面板。 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
主要是参考这篇文章 面向对象法建立多时间表及多货币面板 - MQL5文章 改写的指标,主要修改的是 CPriceChangeRow 这个类及文件里面的方法。有问题的是下面的代码
上面的方法是在下面的方法中调用的:
显示出来的结果是下图:
第一段代码中的这个CheckKShape方法里面的条件判断有问题,但是找不到原因,求助大神帮忙看看