文章 "使用 CGraphic 开发库实现一个剥头皮市场深度" - 页 4 12345 新评论 apirakkamjan 2019.06.28 06:06 #31 "Each such class has a common parent, the CNode class, which performs only one function, i.e. stores the type of the basic primitive. Its only protected constructor requires type specification during element creation." CNode 类不存储基本基元的类型,而 CEIChart 通过m_obj_type 成员存储。 感谢 Vasiliy avento 2019.10.25 16:41 #32 在终端的新版本中(大约从 2170 版开始),文章来源("编写剥头皮者的玻璃")出现了问题。 特别是主文件"MarketBook.mq5"在编译过程中 产生了严重错误:事件 "--意外标记,可能类型丢失? MBookBtn.mqh 57 12 事件 " --函数 已定义且类型不同 MBookBtn.mqh 57 12 请告诉我问题出在哪里以及如何解决? 附注:现在检查了 2015 年旧文章 中的"MarketBook.mq5"。结果发现该项目也出现了同样的错误: Show' - unexpected token, probably type is missing? MBookFon.mqh 47 11'Show' -function already defined and has different type MBookFon.mqh 47 11 Discussion of article "Implementing 如何在 MQL5 中使用 ONNX MetaTrader 5 的 WebSocket Vladimir Karputov 2019.11.01 13:12 #33 avento:在终端的新版本中(大约从 2170 版开始),文章来源("编写剥头皮者的玻璃")出现了问题。 特别是主文件"MarketBook.mq5"在编译过程中 产生了严重错误:事件 "--意外标记,可能类型丢失? MBookBtn.mqh 57 12 事件 " --函数 已定义且类型不同 MBookBtn.mqh 57 12 请告诉我问题出在哪里以及如何解决? 语言在发展,要求也越来越严格。 让我们看看文件 "MBookBtn.mqh",CMBookBtn 类的声明 - 函数Event 声明为 void //+------------------------------------------------------------------+ //|| 该类表示图形顶部的按钮,点击时 //| 显示一个带有刻度线图和订单表的面板。 //| 再次按下按钮可隐藏面板。 //+------------------------------------------------------------------+ class CMBookBtn : public CElButton { private: CMBookArea m_book_area; bool m_showed_book; public: CMBookBtn(); void SetMarketBookSymbol(string symbol); void Refresh(); void Event(int id,long lparam,double dparam,string sparam); void Clear(void); virtual void OnShow(void); }; 现在我们看看类中的函数本身: 第二个错误显示:"'Event' - 函数已定义且 类型不同 MBookBtn.mqh 57 12"--也就是说,函数被声明为 void 类型,而这里却没有指定类型。 解决方法 //+------------------------------------------------------------------+ //|| 拦截鼠标对按钮的点击。如果按钮在 //| 点击处于按下状态 - 显示面板。如果处于 || 状态 //| 向下按 - 隐藏面板| //+------------------------------------------------------------------+ void CMBookBtn::Event(int id,long lparam,double dparam,string sparam) { - 只需 在类主体中的函数前添加 void 即可。 现在编译 ...Indicators\MarketBookArticle\MarketBook.mq5 - 没有错误,运行它:玻璃正常工作。 jpassos 2019.11.04 20:57 #34 Lucas: 当我复制并粘贴整段代码进行编译时,编译出错。有人知道解决办法吗? 卢卡斯,如果错误与 CMBookBtn 类中的意外标记 有关,那么在调用 CMBookBtn::Event 函数时必须在前面加上void。 这就是我们目前遇到的情况。 avento 2019.11.05 20:19 #35 弗拉基米尔-卡尔普托夫, 非常感谢你如此详尽的答复! apezzatto 2020.03.05 03:56 #36 嗨,瓦西里,感谢您的美文。我是 MQL5 领域的新手,在尝试本地运行您的代码时遇到了难题。我相信这是一个非常愚蠢的问题,但我无法解决它 当我尝试从 MarketBook.mq5 中编译您的代码时,出现了如下错误。 您能帮我解决这个问题吗? apezzatto 2020.03.10 02:56 #37 这就是我遇到的错误。您能帮帮我吗? 附加的文件: Error.jpg 365 kb Konstantin Seredkin 2020.04.02 10:00 #38 您好。 请问是否可以在 MarketBook.mqh 类中固定--记住找到的指数的时间? void Calculation(void) { // 为请求方 int begin = (int)m_book.InfoGetInteger(MBOOK_LAST_ASK_INDEX); int end = (int)m_book.InfoGetInteger(MBOOK_BEST_ASK_INDEX); //m_ask_best_index for(int i = begin; i <= end && begin !=-1; i++) { if(m_book.MarketBook[i].volume > m_max_ask_volume) { m_max_ask_index = i; m_max_ask_volume = m_book.MarketBook[i].volume; } m_sum_ask_volume += m_book.MarketBook[i].volume; } // 投标方 begin = (int)m_book.InfoGetInteger(MBOOK_BEST_BID_INDEX); end = (int)m_book.InfoGetInteger(MBOOK_LAST_BID_INDEX); for(int i = begin; i <= end && begin != -1; i++) { if(m_book.MarketBook[i].volume > m_max_bid_volume) { m_max_bid_index = i; m_max_bid_volume = m_book.MarketBook[i].volume; } m_sum_bid_volume += m_book.MarketBook[i].volume; } m_calculation = true; } 在这个方法中,我们要找到 Ask 和 Bid 两边最大成交量 所在的价格指数。 我还想知道我们是在什么终端时间得到这个指数的。 堆栈结构 struct MqlBookInfo { ENUM_BOOK_TYPE type; // 来自 ENUM_BOOK_TYPE 枚举的请求类型 double price; // 价格 long volume; // 音量 double volume_real; // 音量更准确 }; 给了我们 4 个参数,但其中没有时间。 谁能告诉我如何记住找到的指数的时间? Konstantin 2020.04.06 13:46 #39 Konstantin Seredkin:你好请告诉我,是否有可能在 MarketBook.mqh 类中记住找到索引的时间?在这个方法中,我们要找到 Ask 和 Bid 方最大成交量 所在的价格指数。我还想知道我们是在什么终端时间得到这个指数的。玻璃的结构为我们提供了 4 个参数,但它没有时间。有人能告诉我如何记住找到的索引的时间吗? 继承该结构并添加一个附加字段,在填写时添加刻度时间 Vasiliy Sokolov 2020.04.15 12:53 #40 Konstantin Seredkin:你好请告诉我,是否有可能在 MarketBook.mqh 类中记住找到索引的时间?在这个方法中,我们要找到 Ask 和 Bid 方最大成交量 所在的价格指数。我还想知道我们是在什么终端时间得到这个指数的。玻璃的结构为我们提供了 4 个参数,但其中没有时间。谁能告诉我们如何记住找到的时间索引? 没有时间,因为无法学习 MQL5 中报价到达的时间。最多只能记住 OnBookEvent 事件到达时刻的时间,因此请记住它。记住找到堆栈顶部的时间也毫无意义,您需要的是价格堆栈的到达时间,而不是找到其最大索引的时间。 12345 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
CNode 类不存储基本基元的类型,而 CEIChart 通过m_obj_type 成员存储。
感谢 Vasiliy
在终端的新版本中(大约从 2170 版开始),文章来源("编写剥头皮者的玻璃")出现了问题。
事件 "--意外标记,可能类型丢失? MBookBtn.mqh 57 12特别是主文件"MarketBook.mq5"在编译过程中 产生了严重错误:
事件 " --函数 已定义且类型不同 MBookBtn.mqh 57 12
请告诉我问题出在哪里以及如何解决?附注:现在检查了 2015 年旧文章 中的"MarketBook.mq5"。结果发现该项目也出现了同样的错误:
Show' - unexpected token, probably type is missing? MBookFon.mqh 47 11
'Show' -function already defined and has different type MBookFon.mqh 47 11
在终端的新版本中(大约从 2170 版开始),文章来源("编写剥头皮者的玻璃")出现了问题。
事件 "--意外标记,可能类型丢失? MBookBtn.mqh 57 12特别是主文件"MarketBook.mq5"在编译过程中 产生了严重错误:
事件 " --函数 已定义且类型不同 MBookBtn.mqh 57 12
请告诉我问题出在哪里以及如何解决?语言在发展,要求也越来越严格。
让我们看看文件 "MBookBtn.mqh",CMBookBtn 类的声明 - 函数Event 声明为 void
现在我们看看类中的函数本身:
第二个错误显示:"'Event' - 函数已定义且 类型不同 MBookBtn.mqh 57 12"--也就是说,函数被声明为 void 类型,而这里却没有指定类型。
解决方法
- 只需 在类主体中的函数前添加 void 即可。
现在编译 ...Indicators\MarketBookArticle\MarketBook.mq5 - 没有错误,运行它:玻璃正常工作。
当我复制并粘贴整段代码进行编译时,编译出错。有人知道解决办法吗?
卢卡斯,如果错误与 CMBookBtn 类中的意外标记 有关,那么在调用 CMBookBtn::Event 函数时必须在前面加上void。
这就是我们目前遇到的情况。
嗨,瓦西里,感谢您的美文。我是 MQL5 领域的新手,在尝试本地运行您的代码时遇到了难题。我相信这是一个非常愚蠢的问题,但我无法解决它
当我尝试从 MarketBook.mq5 中编译您的代码时,出现了如下错误。
您能帮我解决这个问题吗?
您好。
请问是否可以在 MarketBook.mqh 类中固定--记住找到的指数的时间?
在这个方法中,我们要找到 Ask 和 Bid 两边最大成交量 所在的价格指数。
我还想知道我们是在什么终端时间得到这个指数的。
堆栈结构
给了我们 4 个参数,但其中没有时间。
谁能告诉我如何记住找到的指数的时间?
你好
请告诉我,是否有可能在 MarketBook.mqh 类中记住找到索引的时间?
在这个方法中,我们要找到 Ask 和 Bid 方最大成交量 所在的价格指数。
我还想知道我们是在什么终端时间得到这个指数的。
玻璃的结构
为我们提供了 4 个参数,但它没有时间。
有人能告诉我如何记住找到的索引的时间吗?
继承该结构并添加一个附加字段,在填写时添加刻度时间
你好
请告诉我,是否有可能在 MarketBook.mqh 类中记住找到索引的时间?
在这个方法中,我们要找到 Ask 和 Bid 方最大成交量 所在的价格指数。
我还想知道我们是在什么终端时间得到这个指数的。
玻璃的结构
为我们提供了 4 个参数,但其中没有时间。
谁能告诉我们如何记住找到的时间索引?
没有时间,因为无法学习 MQL5 中报价到达的时间。最多只能记住 OnBookEvent 事件到达时刻的时间,因此请记住它。记住找到堆栈顶部的时间也毫无意义,您需要的是价格堆栈的到达时间,而不是找到其最大索引的时间。