文章 "ZigZag(之字折线)的力量(第一部分)。 开发指标基类" - 页 8 123456789 新评论 Sergey Voytsekhovsky 2019.02.03 21:20 #71 Sergey Voytsekhovsky 2019.02.03 21:21 #72 第三个和第四个仍然无法编译。 Sergey Voytsekhovsky 2019.02.03 21:32 #73 GetZigZagData"--所有重载都不能应用于函数调用 TestZZZ_03.mq5 77 15 "Get ZigZag Data"(获取之字形数据) - 所有重载都不能应用于函数调用 test z_03.mq5 77 15 --------------------- 可能是 2 个函数之一 TestZZZ_03.mq5 77 15 可能是 2 个函数之一 TestZZ_03.at MQL5 77 15 --------------------- void CZigZagModule::GetZigZagData(const int,int,int,const string,const ENUM_TIMEFRAMES,const datetime,const datetime) ZigZagModule.mqh 52 22void CZigZagModule::GetZigZagData(const double&[],const double&[],const datetime&[]) ZigZagModule.mqh 51 22______________ 这就是说,编译器保证同一个函数是用不同的参数启动的。 Discussion of article "The 指标: AutoTrendLinien 指标: 交易量 档案 + Алексей Тарабанов 2019.02.03 21:35 #74 Sergey Voytsekhovsky:第三个和第四个仍然无法编译。检查传输的参数。它们的数量或类型都不正确。这是调用 GetZigZagData 时的情况。 Алексей Тарабанов 2019.02.03 21:42 #75 ZY:如果你不确定可以用不同的参数来处理一个函数,为什么还要用 C 语言编程? Sergey Voytsekhovsky 2019.02.03 21:45 #76 感谢您的反馈。我还不知道如何检查参数,我正在学习编程。根据我的理解,在代码中,Expert Advisor 调用 GetZigZagData() 方法。 第一次使用参数 GetZigZagData(h_zz,l_zz,t_zz)、 第二次使用不同的参数 GetZigZagData(zz_handle_current,_Symbol,_Period,start_time_in,stop_time_in)。 包含文件中的两个选项 void CZigZagModule::GetZigZagData(const double &zz_h[],const double &zz_l[],const datetime &time[]) { int h_total =::ArraySize(zz_h); int l_total =::ArraySize(zz_l); int total =h_total+l_total; //--- ZZ 变量清零 ZeroZigZagData(); //--- 让我们循环查看复制的 ZZ 值 for(int i=0; i<total; i++) { //--- 如果我们已经得到所需的 ZZ 最大值和最小值个数,则退出循环 if(m_counter_highs==m_copy_extremums && m_counter_lows==m_copy_extremums) break; //--- 数组超限控制 if(i>=h_total || i>=l_total) break; //-- 填充 maxima 数组,直到我们复制了所需数量的 maxima if(zz_h[i]>0 && m_counter_highs<m_copy_extremums) { m_zz_high[m_counter_highs] =zz_h[i]; m_zz_high_bar[m_counter_highs] =i; m_zz_high_time[m_counter_highs] =time[i]; //-- 增加最大值计数器 m_counter_highs++; } //-- 填充最小值数组,直到复制到所需的数字为止 if(zz_l[i]>0 && m_counter_lows<m_copy_extremums) { m_zz_low[m_counter_lows] =zz_l[i]; m_zz_low_bar[m_counter_lows] =i; m_zz_low_time[m_counter_lows] =time[i]; //--- 增加最小计数。 m_counter_lows++; } } //--- 确定价格变动方向 m_direction=(m_zz_high_time[0]>m_zz_low_time[0])? 1 : -1; } //+------------------------------------------------------------------+ //|| 从传递的句柄中获取 ZZ 数据 //+------------------------------------------------------------------+ void CZigZagModule::GetZigZagData(const int handle,int buffer_num_highs,int buffer_num_lows, const string symbol,const ENUM_TIMEFRAMES period, const datetime start_time,const datetime stop_time) { //--- 获取初始数据 int times_total =::CopyTime(symbol,period,start_time,stop_time,m_zz_time_temp); int highs_total =::CopyBuffer(handle,buffer_num_highs,start_time,stop_time,m_zz_highs_temp); int lows_total =::CopyBuffer(handle,buffer_num_lows,start_time,stop_time,m_zz_lows_temp); //--- 极值的最大数量 int max_items =(int)::fmax((double)highs_total,(double)lows_total); //--- 如果还不够,我们再试一次。 if(times_total<max_items) { while(true) { ::Sleep(100); times_total=::CopyTime(symbol,period,start_time,stop_time,m_zz_time_temp); if(times_total>=max_items) break; } } //--- 计数器 int lows_counter =0; int highs_counter =0; //--- 计算最大值 int h_total=::ArraySize(m_zz_highs_temp); for(int i=0; i<h_total; i++) { if(m_zz_highs_temp[i]>0) highs_counter++; } //--- 计算最小值 int l_total=::ArraySize(m_zz_lows_temp); for(int i=0; i<l_total; i++) { if(m_zz_lows_temp[i]>0) lows_counter++; } //--- 获取极值个数 int copy_extremums=(int)::fmin((double)highs_counter,(double)lows_counter); CopyExtremums(copy_extremums); //--- 让我们循环查看复制的 ZZ 值 GetZigZagData(m_zz_highs_temp,m_zz_lows_temp,m_zz_time_temp); } 一个接一个地写入。 我先是加载了旧的存档,然后又加载了新的存档,还删除了 MT5,从头开始安装了一个新的 MT5,但都无济于事,上面屏幕中的错误依然存在。 Sergey Voytsekhovsky 2019.02.03 21:51 #77 Алексей Тарабанов: ZY:如果你不确定可以用不同的参数来处理一个函数,为什么还要用 C 语言编程?我不太明白你的意思。我有很多选择,用什么编程呢?我有 MT5,用的是 MQL5,我正在试着学习它。 我认为一个函数可以用不同的参数访问,我甚至读到过这叫做重载。但我不明白如何处理它。此外,我确信这里根本不是作者的错误,很可能是我犯了错误,唯一的问题是 ????。 Алексей Тарабанов 2019.02.03 21:59 #78 CopyExtremums(copy_extremums); //--- 让我们循环查看复制的 ZZ 值 GetZigZagData(m_zz_highs_temp,m_zz_lows_temp,m_zz_time_temp); 我想就在这里。 Алексей Тарабанов 2019.02.03 22:06 #79 谁能给我解释一下什么是重载?我不会用 C 语言编程。 Sergey Voytsekhovsky 2019.02.03 22:08 #80 我更改了包含文件中这些函数的名称,分别添加了数字 1 和 2。 我找到了 "智能交易系统 "中对它们的所有引用,并对其进行了编辑。旧的错误消失了,但新的错误又出现了。的确是数据类型出了问题。翻译如下 stop_time_in' - 无法转换枚举 TestZZ_03.mq5 77 78 123456789 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
第三个和第四个仍然无法编译。
GetZigZagData"--所有重载都不能应用于函数调用 TestZZZ_03.mq5 77 15
"Get ZigZag Data"(获取之字形数据) - 所有重载都不能应用于函数调用 test z_03.mq5 77 15
---------------------
可能是 2 个函数之一 TestZZZ_03.mq5 77 15
可能是 2 个函数之一 TestZZ_03.at MQL5 77 15
---------------------
void CZigZagModule::GetZigZagData(const int,int,int,const string,const ENUM_TIMEFRAMES,const datetime,const datetime) ZigZagModule.mqh 52 22
______________
这就是说,编译器保证同一个函数是用不同的参数启动的。
第三个和第四个仍然无法编译。
检查传输的参数。它们的数量或类型都不正确。这是调用 GetZigZagData 时的情况。
感谢您的反馈。我还不知道如何检查参数,我正在学习编程。根据我的理解,在代码中,Expert Advisor 调用 GetZigZagData() 方法。
第一次使用参数 GetZigZagData(h_zz,l_zz,t_zz)、
第二次使用不同的参数 GetZigZagData(zz_handle_current,_Symbol,_Period,start_time_in,stop_time_in)。
包含文件中的两个选项
一个接一个地写入。
我先是加载了旧的存档,然后又加载了新的存档,还删除了 MT5,从头开始安装了一个新的 MT5,但都无济于事,上面屏幕中的错误依然存在。
ZY:如果你不确定可以用不同的参数来处理一个函数,为什么还要用 C 语言编程?
我不太明白你的意思。我有很多选择,用什么编程呢?我有 MT5,用的是 MQL5,我正在试着学习它。
我认为一个函数可以用不同的参数访问,我甚至读到过这叫做重载。但我不明白如何处理它。此外,我确信这里根本不是作者的错误,很可能是我犯了错误,唯一的问题是 ????。
CopyExtremums(copy_extremums); //--- 让我们循环查看复制的 ZZ 值 GetZigZagData(m_zz_highs_temp,m_zz_lows_temp,m_zz_time_temp);我想就在这里。我更改了包含文件中这些函数的名称,分别添加了数字 1 和 2。
我找到了 "智能交易系统 "中对它们的所有引用,并对其进行了编辑。旧的错误消失了,但新的错误又出现了。的确是数据类型出了问题。翻译如下
stop_time_in' - 无法转换枚举 TestZZ_03.mq5 77 78