文章 "轻松快捷开发 MetaTrader 程序的函数库(第四部分):交易事件" - 页 3 123 新评论 Marc Tolkmitt 2021.03.19 12:57 #21 就内容而言,这就像是一场非常有趣的讲座。我一定会关注整个系列。 遗憾的是,可能还会有故意犯的小错误--内容非常复杂,也许你应该继续关注。 在" CMarketCollection::Refresh "中找不到 total_market 字段--这种情况以前在 ORDER_STATUS_MARKET 中出现过。从简单到复杂的转变令人印象深刻。 在刷新点,我无法再继续下去,因为下一个对象也不想直接运行。因此,我很乐意使用下载。 mfG 马克-托尔克米特 leonerd 2023.12.16 15:49 #22 很奇怪,我无法用您的方法实现最简单的逻辑...... 在这里,我需要获得 最后一笔交易的收盘时间。该库似乎有一种机制可以处理类似 MT4 的抽象订单,但我没有看到任何处理它们的方法。 我请求 Deals,但不支持 ORDER_PROP_TIME_CLOSE: bool last_trade_time_filter=true; CArrayObj *all_trades=engine.GetListDeals(); if(all_trades!=NULL && all_trades.Total()>0) { CArrayObj *sym_all_trades=CSelect::ByOrderProperty(all_trades,ORDER_PROP_SYMBOL,Symbol(),EQUAL); if(sym_all_trades!=NULL && sym_all_trades.Total()>0) { CArrayObj *sym_all_trades_recent=CSelect::ByOrderProperty(sym_all_trades,ORDER_PROP_TIME_CLOSE,iTime(NULL,PERIOD_CURRENT,1),EQUAL_OR_MORE); if(sym_all_trades_recent.Total()>0) { // 它不在这里 last_trade_time_filter=false; } } } leonerd 2023.12.16 15:52 #23 leonerd 获得 最后一笔交易的收盘时间。该库似乎有一种机制可以处理类似 MT4 的抽象订单,但我没有看到任何处理它们的方法。 我请求 Deals,但不支持 ORDER_PROP_TIME_CLOSE: 好吧,请求交易的平仓时间在某种程度上是不正确的。但在 GetListHistoryOrders() 中也不起作用... Artyom Trishkin 2023.12.17 06:40 #24 leonerd 获得 最后一笔交易的收盘时间。该库似乎有一种机制可以处理类似 MT4 的抽象订单,但我没有看到任何处理它们的方法。 我请求 Deals,但不支持 ORDER_PROP_TIME_CLOSE: 在测试的智能交易系统中,在按钮按下处理程序中。 //+------------------------------------------------------------------+ //| 处理按钮按下| //+------------------------------------------------------------------+ void PressButtonEvents(const string button_name) (这只是如何处理事件和获取数据的一个示例)。 那里有负责平仓的代码块。您可以看到它是如何实现的。例如,一个代码块用于关闭当前符号的买入,并获得最大利润: //--- 如果按下 BUTT_CLOSE_BUY(关闭买入)按钮:以最大利润关闭买入 else if(button==EnumToString(BUTT_CLOSE_BUY)) { //--- 获取所有空缺职位列表 CArrayObj* list=engine.GetListMarketPosition(); //--- 仅从列表中选择买入头寸,且仅按当前符号选择 list=CSelect::ByOrderProperty(list,ORDER_PROP_SYMBOL,Symbol(),EQUAL); list=CSelect::ByOrderProperty(list,ORDER_PROP_TYPE,POSITION_TYPE_BUY,EQUAL); //--- 按利润排序,将佣金和掉期计算在内 list.Sort(SORT_BY_ORDER_PROFIT_FULL); //--- 获取利润最高的买入头寸的指数 int index=CSelect::FindOrderMax(list,ORDER_PROP_PROFIT_FULL); if(index>WRONG_VALUE) { //--- 获取买入位置对象并关闭票据位置 COrder* position=list.At(index); if(position!=NULL) { //--- 如果未按下创建待处理请求的按钮 - 关闭位置 if(!pressed_pending_close_buy) engine.ClosePosition((ulong)position.Ticket()); //--- 否则 - 创建一个待处理请求,以关闭票据上的仓位 //--- 并根据活动按钮设置条件 else { int id=engine.ClosePositionPending(position.Ticket()); if(id>0) { //--- 设置待处理请求的价格和激活时间,并设置激活参数 double bid=SymbolInfoDouble(NULL,SYMBOL_BID); double price_activation=NormalizeDouble(bid+distance_pending_request*g_point,g_digits); ulong time_activation=TimeCurrent()+bars_delay_pending_request*PeriodSeconds(); SetPReqCriterion((uchar)id,price_activation,time_activation,BUTT_CLOSE_BUY,EQUAL_OR_MORE,bid,TimeCurrent()); } } } } } 关于平仓 - 我很久以前就做过了,现在我无法告诉你如何一目了然地获得你需要的东西。我稍后再看看,然后再写 - 我现在很忙。 leonerd 2023.12.18 08:35 #25 Artyom Trishkin #:在测试的智能交易系统中,在按钮按下处理程序中(这只是一个如何处理事件和获取数据的示例)。那里有负责平仓的代码块。您可以看到它是如何实现的。例如,一个代码块用于关闭在当前符号上的买入,并获得最大利润:关于平仓 - 我很久以前就做过了,现在我无法告诉你如何一目了然地获得你需要的东西。我稍后再看看,然后再写 - 我现在很忙。 谢谢,但没必要赶活动。 theonementor 2024.07.05 20:53 #26 ORDER_STATUS_MARKET_ORDER 显示错误:未声明标识符。看起来最近的 MQL 5 版本发生了变化,它在 COrder::OrderMagicNumber 和 CMarketOrder 构造函数中都出现了! Artyom Trishkin 2024.07.06 06:17 #27 theonementor # : ORDER_STATUS_MARKET_ORDER 显示错误:未声明标识符。看起来最近的 MQL 5 版本发生了变化,它同时出现在 COrder::OrderMagicNumber 和 CMarketOrder 构造函数中! 我下载了文章所附的 MQL5.zip 压缩文件 - 每个文件单独编译和所有文件一起编译(编译 Engine.mqh 或 TestDoEasyPart04.mq5 时)都没有错误。 您到底在做什么,导致出现编译错误? theonementor 2024.07.06 08:50 #28 Artyom Trishkin #:我下载了文章所附的 MQL5.zip 压缩文件--每个文件单独编译和所有文件一起编译(编译 Engine.mqh 或 TestDoEasyPart04.mq5 时)都没有错误。您到底在做什么才会出现编译错误? 我想出来了,定义枚举中少了一个条目。 Artyom Trishkin 2024.07.06 18:18 #29 theonementor # : 虽然我把教程中的代码复制粘贴到了编辑器中,但它还是不见了。 文章中的代码并不总是与附件中的代码一致。有时我可能在描述过程中遗漏了一些内容,有时则是在写完文章后添加了一些内容。这篇文章不是 "阅读-复制-使用 "式的分步指南,而只是以培训材料的形式进行详细说明。小的错误和遗漏会让你思考,这很好) 123 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
就内容而言,这就像是一场非常有趣的讲座。我一定会关注整个系列。
遗憾的是,可能还会有故意犯的小错误--内容非常复杂,也许你应该继续关注。
在"
"中找不到 total_market 字段--这种情况以前在 ORDER_STATUS_MARKET 中出现过。从简单到复杂的转变令人印象深刻。
在刷新点,我无法再继续下去,因为下一个对象也不想直接运行。因此,我很乐意使用下载。
mfG
马克-托尔克米特
很奇怪,我无法用您的方法实现最简单的逻辑......
在这里,我需要获得 最后一笔交易的收盘时间。该库似乎有一种机制可以处理类似 MT4 的抽象订单,但我没有看到任何处理它们的方法。
我请求 Deals,但不支持 ORDER_PROP_TIME_CLOSE:
我请求 Deals,但不支持 ORDER_PROP_TIME_CLOSE:
好吧,请求交易的平仓时间在某种程度上是不正确的。但在 GetListHistoryOrders() 中也不起作用...
我请求 Deals,但不支持 ORDER_PROP_TIME_CLOSE:
在测试的智能交易系统中,在按钮按下处理程序中。
(这只是如何处理事件和获取数据的一个示例)。
那里有负责平仓的代码块。您可以看到它是如何实现的。例如,一个代码块用于关闭当前符号的买入,并获得最大利润:
关于平仓 - 我很久以前就做过了,现在我无法告诉你如何一目了然地获得你需要的东西。我稍后再看看,然后再写 - 我现在很忙。
在测试的智能交易系统中,在按钮按下处理程序中
(这只是一个如何处理事件和获取数据的示例)。
那里有负责平仓的代码块。您可以看到它是如何实现的。例如,一个代码块用于关闭在当前符号上的买入,并获得最大利润:
关于平仓 - 我很久以前就做过了,现在我无法告诉你如何一目了然地获得你需要的东西。我稍后再看看,然后再写 - 我现在很忙。
谢谢,但没必要赶活动。
ORDER_STATUS_MARKET_ORDER 显示错误:未声明标识符。看起来最近的 MQL 5 版本发生了变化,它同时出现在 COrder::OrderMagicNumber 和 CMarketOrder 构造函数中!
我下载了文章所附的 MQL5.zip 压缩文件 - 每个文件单独编译和所有文件一起编译(编译 Engine.mqh 或 TestDoEasyPart04.mq5 时)都没有错误。
您到底在做什么,导致出现编译错误?
我下载了文章所附的 MQL5.zip 压缩文件--每个文件单独编译和所有文件一起编译(编译 Engine.mqh 或 TestDoEasyPart04.mq5 时)都没有错误。
您到底在做什么才会出现编译错误?
虽然我把教程中的代码复制粘贴到了编辑器中,但它还是不见了。
文章中的代码并不总是与附件中的代码一致。有时我可能在描述过程中遗漏了一些内容,有时则是在写完文章后添加了一些内容。这篇文章不是 "阅读-复制-使用 "式的分步指南,而只是以培训材料的形式进行详细说明。小的错误和遗漏会让你思考,这很好)