我删除了电脑上 Include 中之前的 DoEasy 目录,然后下载了本文的 MQL5.zip 文件。
在编译 TestDoEasyPart32.mq5 时,我遇到了 61 个编译错误😱
只是在 Message.mqh 文件的 CMessage::ToMail 函数的第 114 行开头缺少一个 / 字符(见上面捕获的粉红色箭头)。
一旦添加了斜线字符来定义注释行,就不会再有编译问题了。
我还必须更改 DoEasy 目录中文件的只读标记,以便保存更改。
在 mql5.com 资源俄语部分的文章所附源代码中,没有出现这样的错误:
感谢您的关注和关心。
---------------------------------
Эта досадная ошибка была внесена при переводе текста статьи и комментариев в коде с русского языка на английский.
В исходниках, приложенных к статье в русской части ресурса mql5.com, такой ошибки нету.
您好、
我的 IC Markets 模拟账户(MT5)出现了订单类型填写错误的错误。
我调试了您的代码,发现在我的账户上,ORDER_FILLING_IOC 的初始化似乎正常。但是,当调用 EA 中的 engine.OpenBuy(lot,Symbol(),magic,stoploss,takeprofit);行并尝试开仓(或平仓)时,填充类型没有正确设置(见下文)。
我做了一个快速(肮脏)的解决方案使其正常工作。您可以在我所附的 2 个文件中查看与您的文件的差异。请用正确的代码替换我的代码。
Trading.mqh 第 2646 行左右:
我修改了:
res=trade_obj.OpenPosition(type,this.m_request.volume,this.m_request.sl,this.m_request.tp,magic,comment,deviation, this.m_request.type_filling ); //instead of type_filling
TradeObj.mqh
CTradeObj::ClosePosition:
我添加了:
this.m_request.type_filling=ORDER_FILLING_IOC;
CTradeObj::SetOrder:
我添加了:
ENUM_ORDER_TYPE_FILLING order_type_filling=(ENUM_ORDER_TYPE_FILLING)::OrderGetInteger(ORDER_TYPE_FILLING);
this.m_request.type_filling= (type_filling==WRONG_VALUE ? order_type_filling : ORDER_FILLING_IOC);
你好
我的 IC Markets 模拟账户(MT5)出现了订单类型填写错误的错误信息。
我调试了您的代码,发现在我的账户上,ORDER_FILLING_IOC 的初始化似乎正常。但是,当调用 EA 中的 engine.OpenBuy(lot,Symbol(),magic,stoploss,takeprofit);行并尝试开仓(或平仓)时,填充类型没有正确设置(见下文)。
我做了一个快速(肮脏)的解决方案使其正常工作。您可以在我所附的 2 个文件中查看与您的文件的差异。请用正确的代码替换我的代码。
Trading.mqh 第 2646 行左右:
我修改了:
res=trade_obj.OpenPosition(type,this.m_request.volume,this.m_request.sl,this.m_request.tp,magic,comment,deviation, this.m_request.type_filling ); //instead of type_filling
TradeObj.mqh
CTradeObj::ClosePosition:
我添加了:
this.m_request.type_filling=ORDER_FILLING_IOC;
CTradeObj::SetOrder:
我添加了:
ENUM_ORDER_TYPE_FILLING order_type_filling=(ENUM_ORDER_TYPE_FILLING)::OrderGetInteger(ORDER_TYPE_FILLING);
this.m_request.type_filling= (type_filling==WRONG_VALUE ? order_type_filling : ORDER_FILLING_IOC);
谢谢。在后续文章中,这个问题已经得到解决。
Спасибо。В последующих статьях это уже исправлено.
谢谢。在后续的文章中,这个问题已经得到了解决。
Спасибо。В последующих статьях это уже исправлено.
我尝试了第 34 部分中的代码,但错误仍然存在:
我还尝试将第 34 部分的 EA 与您最新文章第 43 部分的 DoEasy 库一起使用,但第 43 部分的库与第 34 部分的 EA 不兼容(更改了 engine.OnTimer 方法等)。
我做错了什么?)Spasibo!
我尝试了第 34 部分的代码,但错误仍然存在:
我还尝试将第 34 部分的 EA 与您最新文章第 43 部分中的 DoEasy 库一起使用,但第 43 部分的库与第 34 部分的 EA 不兼容(更改了 engine.OnTimer 方法等)。
我做错了什么?)Spasibo!
您到底是在做什么时出现这个错误的?您使用的是哪种 EA?文章中的这个测试顾问没有改变吗?
Что именно вы делаете чтобы получить эту ошибку?Какой используете советник?Это тестовый советник из статьи без изменений?
您到底在做什么才会出现这个错误?您使用的是哪种 EA?文章中的这个测试顾问没有改变吗?
Что именно вы делаете чтобы получить эту ошибку?Какой используете советник?Это тестовый советник из статьи без изменений?
我按下 "买 "或 "卖 "键,但没有激活 "P "或 "T"。
我使用的是第 34 部分中不变的 EA。
我按下 "买入 "或 "卖出 "键,但没有激活 "P "或 "T"。
我使用的是第 34 部分不变的 EA。
MetaQuotes-Demo 中是否存在此类错误?
MetaQuotes-Demo 是否存在此类错误?
MetaQuotes 演示版上没有错误。有趣...
现在呢?
新文章 轻松快捷开发 MetaTrader 程序的函数库(第 三十二部分):延后交易请求 - 在特定条件下挂单已发布:
我们继续功能开发,允许用户利用延后请求进行交易。 在本文中,我们将实现在特定条件下挂单的功能。
延后请求对象含有存储其所有激活条件的数组。 交易管理类(即其计时器)允许持续查看延后交易请求列表。 当需要激活延后交易请求(满足所有预定义的激活条件)时,会将交易订单发送到服务器。 其参数已设置在触发的延后请求当中。
若要开仓,您只需控制特定条件的发生。 一旦它们发生了,开仓的交易订单即会发送到服务器。不过,关于利用延后请求对象下挂单有一个复杂之处:所下挂单会与价格有一定距离,而开仓时则为相应的当前价格。
所以,为了在某些条件下处理挂单,我们还需要考虑挂单的距离。 这带来了一个问题:在创建延后请求时,我们要给未来的延后订单指定距离。 但是...以哪个价格为准? 是从延后请求当下价格的时刻为准? 亦或是从满足请求对象设置的所有激活条件那一刻的现价? 毕竟,在满足所有条件的那一刻,价格可能会与创建延后请求的价位相去甚远,而我们只能在一种情况下知道未来价格 — 即延后请求唯一的激活条件是其指定的价格。 在其他情况下,我们需要为订单设置的未来价格均是未知的。
作者:Artyom Trishkin