程序库: MT4Orders - 页 21 1...141516171819202122232425262728...95 新评论 fxsaber 2018.04.14 09:15 #201 关于交易、自动交易系统和测试交易策略的论坛 库:MT4Orders fxsaber, 2018.04.14 09:10 AM 示例 #include <MT4Orders.mqh> #define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID) #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) #define PRINT(A) Print(#A + " = " + (string)(A)) void OnInit() { long Ticket; PRINT((Ticket = OrderSend(_Symbol, OP_BUY, 1, Ask, 0, Bid - 100 * _Point, Bid + 100 * _Point, "Hello World!", 12345))); if (OrderSelect(Ticket, SELECT_BY_TICKET)) PRINT(OrderClose(OrderTicket(), 0.3, OrderClosePrice(), 0)); } void OnDeinit( const int ) { const int Total = OrdersHistoryTotal(); for (int i = 1; i < Total; i++) if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { OrderPrint(); PRINT(OrderTicket()); PRINT(OrderMagicNumber()); PRINT(OrderComment()); PRINT(OrderTicketOpen()); } } 结果 2018.03.25 00:00:00 instant buy 1.00 EURUSD at 1.23527 sl: 1.23414 tp: 1.23614 (1.23514 / 1.23527) 2018.03.25 00:00:00 deal #2 buy 1.00 EURUSD at 1.23527 done (based on order #2) 2018.03.25 00:00:00 deal performed [#2 buy 1.00 EURUSD at 1.23527] 2018.03.25 00:00:00 order performed buy 1.00 at 1.23527 [#2 buy 1.00 EURUSD at 1.23527] 2018.03.25 00:00:00 (Ticket=OrderSend(_Symbol,OP_BUY,1,Ask,0,Bid-100*_Point,Bid+100*_Point,Hello World!,12345)) = 2 2018.03.25 00:00:00 instant sell 0.30 EURUSD at 1.23514, close #2 (1.23514 / 1.23527) 2018.03.25 00:00:00 deal #3 sell 0.30 EURUSD at 1.23514 done (based on order #3) 2018.03.25 00:00:00 deal performed [#3 sell 0.30 EURUSD at 1.23514] 2018.03.25 00:00:00 order performed sell 0.30 at 1.23514 [#3 sell 0.30 EURUSD at 1.23514] 2018.03.25 00:00:00 OrderClose(OrderTicket(),0.3,OrderClosePrice(),0) = true 2018.03.26 01:04:40 take profit triggered #2 buy 0.70 EURUSD 1.23527 sl: 1.23414 tp: 1.23614 [#4 sell 0.70 EURUSD at 1.23614] 2018.03.26 01:04:40 deal #4 sell 0.70 EURUSD at 1.23614 done (based on order #4) 2018.03.26 01:04:40 deal performed [#4 sell 0.70 EURUSD at 1.23614] 2018.03.26 01:04:40 order performed sell 0.70 at 1.23614 [#4 sell 0.70 EURUSD at 1.23614] final balance 10000046.11 EUR 2018.03.26 23:59:59 #3 2018.03.25 00:00:00 buy 0.30 EURUSD 1.23527 1.23414 1.23614 2018.03.25 00:00:00 1.23514 0.00 0.00 -3.16 Hello World! 12345 2018.03.26 23:59:59 OrderTicket() = 3 2018.03.26 23:59:59 OrderMagicNumber() = 12345 2018.03.26 23:59:59 OrderComment() = Hello World! 2018.03.26 23:59:59 OrderTicketOpen() = 2 2018.03.26 23:59:59 #4 2018.03.25 00:00:00 buy 0.70 EURUSD 1.23527 0.00000 1.23614 2018.03.26 01:04:40 1.23614 0.00 0.00 49.27 tp 1.23614 12345 2018.03.26 23:59:59 OrderTicket() = 4 2018.03.26 23:59:59 OrderMagicNumber() = 12345 2018.03.26 23:59:59 OrderComment() = tp 1.23614 2018.03.26 23:59:59 OrderTicketOpen() = 2 在示例中,您可以看到当触发 TP/SL 时,原始注释 "Hello World!"完全被 MT5 注释 "tp 1.23614 "所取代。 在 MT4 中,在这种情况下,注释会变成 "Hello World! tp 1.23614"。我是否应该在 MT4Orders 中也这样做? 也就是说,对于 SL/TP/MO 平仓,历史记录中的订单注释应该是开仓和平仓时注释的组合,这是否正确/方便? 程序库: 交易品种 如何开始使用Metatrader 5 跨平台专家交易系统: 订单管理器 Kirill Belousov 2018.04.15 01:37 #202 fxsaber:在示例中,您可以看到当触发 TP/SL 时,原来的 "Hello World!"注释会被 MT5 的对应注释 "tp 1.23614 "全部替换。在 MT4 中,在这种情况下,注释会变成 "Hello World! tp 1.23614"。我需要在 MT4Orders 中做同样的操作吗?也就是说,对于 SL/TP/MO 平仓,历史记录中的订单注释应该是开仓和平仓注释的组合,这是否正确/方便?我的建议如下 Original_Comment[tp: 1.23614](因为有时需要解析注释)。 当评论长度超过限制时,记录异常情况 Andrey Khatimlianskii 2018.04.15 19:52 #203 fxsaber:在示例中,您可以看到当触发 TP/SL 时,原来的 "Hello World!"注释会被 MT5 的对应注释 "tp 1.23614 "全部替换。在 MT4 中,在这种情况下,注释会变成 "Hello World! tp 1.23614"。我需要在 MT4Orders 中做同样的操作吗?也就是说,对于 SL/TP/MO 平仓,历史记录中的订单注释应该是开仓和平仓时注释的组合,这是否正确/方便?OrderComment 和 OrderCommission 一样,都在库中,现在运行速度很慢(多次调用时很明显)。很明显,这只是因为 MT5 的特殊性(将此数据分成 2 笔交易)。 也许只需添加 OrderCommentOpen?或者制作一个完全通用的变体:OrderCommentOpen、OrderCommentClose 和 OrderComment,试图模仿 MT4 的行为。 我仍在考虑为重定单佣金和定单评论建立缓存,或者为我自己的交易列表建立缓存,这在我的特殊情况下是一样的。 fxsaber 2018.04.15 20:53 #204 Andrey Khatimlianskii:现在库中的 OrderComment 和 OrderCommission 运行速度很慢(多次调用时很明显)。很明显,这只是因为 MT5 的特殊性(将这些数据分为两个交易)。 这不应该影响实时性。 也许只需添加 OrderCommentOpen?或者制作一个通用变体:OrderCommentOpen、OrderCommentClose 和 OrderComment,试图模仿 MT4 的行为。 也许值得添加。现在可以这样做(针对 MT4 的历史订单) string OrderCommentOpen() { return(HistoryDealSelect(OrderTicketOpen()) ? HistoryDealGetString(OrderTicketOpen(), DEAL_COMMENT) : NULL); } string OrderCommentClose() { return(HistoryDealSelect(OrderTicket()) ? HistoryDealGetString(OrderTicket(), DEAL_COMMENT) : NULL); } 我仍在考虑为重定单佣金和定单评论或我自己的交易列表建立缓存,这在我的特定情况下是一样的。如果我们建立缓存,它应该是针对整个历史的。我想最好是在通用圣经的基础上进行缓存。唯一的缺点是会占用VPS 的 内存。 在 Tester 中,MQ 在历史记录方面做得很好--它变得很快。当它被加速后,关于缓存主题的想法就消失了(有原始版本的圣经),因为我没发现它会明显快很多。此外,我没能为 Tester 设计出一个 TS,因为交易历史会严重影响逻辑。 实时缓存历史是不可能的--可以追溯修正。为什么要在实时情况下节省微秒? Vitaly Muzichenko 2018.04.15 21:27 #205 fxsaber:实时性应该不会受到影响。也许值得添加。现在可以如下操作(针对 MT4 历史订单)如果我们进行缓存,则应针对整个历史记录。最好以通用圣经为基础。唯一的缺点是会占用VPS 内存。在 Tester 中,MQ 在历史记录方面做得很好--它变得很快。当它被加速后,关于缓存主题的想法就消失了(有原始版本的圣经),因为我没发现它会明显快很多。此外,我没能 为 Tester 设计出一种 TS,在这种情况下,交易历史会严重影响逻辑。实时缓存历史是不可能的--可以追溯修正。为什么要实时保存微秒?如果我理解正确的话,我有一个 TS:在某一特定时间,我们开始根据信号进入市场,最终进行了几次买入和卖出,在交易结束时,我们按原样关闭一切。 也就是说,如果不访问历史记录,TS 就无法使用。 fxsaber 2018.04.15 21:33 #206 Vitaly Muzichenko:如果我没有理解错的话,我有一个 TS,它的工作原理是:在某个时间,我们根据信号开始入市,最终进行几次买入和卖出,在交易时段结束时,我们按原样关闭所有交易。 也就是说,如果无法访问历史记录,TS 就无法使用。这句话的关键词是 "认真"。很明显,交易历史可以切入交易逻辑。问题出在 TS 上,Tester 在访问历史记录时速度会明显变慢。 Artyom Trishkin 2018.04.15 21:36 #207 fxsaber:实时性应该不会受到影响。也许值得添加。现在可以如下操作(针对 MT4 历史订单)如果我们进行缓存,则应针对整个历史记录。最好以通用圣经为基础。唯一的缺点是会占用VPS 内存。在 Tester 中,MQ 在历史记录方面做得很好--它变得很快。当它被加速后,关于缓存主题的想法就消失了(有原始版本的圣经),因为我没发现它会明显快很多。此外, 我没能为 Tester 设计出一种 TS,在这种情况下,交易历史会严重影响逻辑。实时缓存历史是不可能的--可以追溯修正。为什么要实时保存微秒?您曾展示过一段代码,可以搜索历史记录中的类似 "模式"。 下面是一个具有深度历史记录的简单 TS: 我们查看从 "现在 "到 "过去一段时间(例如交易日)"的某个时间段内的当前价格 "形状模式",查找历史上所有类似的价格模式,按照 "重合度 "对其进行分类,从历史上的此类 "图片 "中选择几个重合度最高的部分。我们通过虚拟 I/O 分析历史,并为当前状态的输入/输出提供建议。您甚至可以根据历史模式分析的结果,为每项建议分配 "权重"。 fxsaber 2018.04.15 21:46 #208 Artyom Trishkin:你曾展示过一段代码,可以搜索历史记录中的类似 "模式"。 就在这里。 下面是最简单的 TS,具有深入的历史记录: 我们查看从 "现在 "到 "过去一段时间(例如交易日)"的某个时间段内的当前价格 "形状模式",搜索历史上所有类似的价格模式,按照 "重合度 "对其进行分类,在历史 "图片 "中选择几个重合度最高的部分。我们通过虚拟 I/O 分析历史,并为当前状态的输入/输出提供建议。您甚至可以根据历史模式分析结果,为每项建议分配 "权重"。显然,您没有理解我的意思。我指的是交易历史。 Библиотеки: Кроссплатформенная библиотека оригинальных математических функций 2017.03.27www.mql5.com Кроссплатформенная библиотека оригинальных математических функций: Автор: fxsaber... Алексей Тарабанов 2018.04.15 22:13 #209 历史会严重影响逻辑的 TC 是一种适应性 TC。 绊脚石是什么? fxsaber 2018.04.15 22:53 #210 Алексей Тарабанов:历史会严重影响逻辑的 TC 是一种适应性 TC。你是哪里出错了?您需要举例说明交易历史(而非价格历史)对回溯测试时间有重大影响的 TC。 1...141516171819202122232425262728...95 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
关于交易、自动交易系统和测试交易策略的论坛
库:MT4Orders
fxsaber, 2018.04.14 09:10 AM
示例
结果
在示例中,您可以看到当触发 TP/SL 时,原始注释 "Hello World!"完全被 MT5 注释 "tp 1.23614 "所取代。
在 MT4 中,在这种情况下,注释会变成 "Hello World! tp 1.23614"。我是否应该在 MT4Orders 中也这样做?
也就是说,对于 SL/TP/MO 平仓,历史记录中的订单注释应该是开仓和平仓时注释的组合,这是否正确/方便?
在示例中,您可以看到当触发 TP/SL 时,原来的 "Hello World!"注释会被 MT5 的对应注释 "tp 1.23614 "全部替换。
在 MT4 中,在这种情况下,注释会变成 "Hello World! tp 1.23614"。我需要在 MT4Orders 中做同样的操作吗?
也就是说,对于 SL/TP/MO 平仓,历史记录中的订单注释应该是开仓和平仓注释的组合,这是否正确/方便?
我的建议如下
Original_Comment[tp: 1.23614](因为有时需要解析注释)。
当评论长度超过限制时,记录异常情况
在示例中,您可以看到当触发 TP/SL 时,原来的 "Hello World!"注释会被 MT5 的对应注释 "tp 1.23614 "全部替换。
在 MT4 中,在这种情况下,注释会变成 "Hello World! tp 1.23614"。我需要在 MT4Orders 中做同样的操作吗?
也就是说,对于 SL/TP/MO 平仓,历史记录中的订单注释应该是开仓和平仓时注释的组合,这是否正确/方便?
OrderComment 和 OrderCommission 一样,都在库中,现在运行速度很慢(多次调用时很明显)。很明显,这只是因为 MT5 的特殊性(将此数据分成 2 笔交易)。
也许只需添加 OrderCommentOpen?或者制作一个完全通用的变体:OrderCommentOpen、OrderCommentClose 和 OrderComment,试图模仿 MT4 的行为。
我仍在考虑为重定单佣金和定单评论建立缓存,或者为我自己的交易列表建立缓存,这在我的特殊情况下是一样的。
现在库中的 OrderComment 和 OrderCommission 运行速度很慢(多次调用时很明显)。很明显,这只是因为 MT5 的特殊性(将这些数据分为两个交易)。
这不应该影响实时性。
也许只需添加 OrderCommentOpen?或者制作一个通用变体:OrderCommentOpen、OrderCommentClose 和 OrderComment,试图模仿 MT4 的行为。
也许值得添加。现在可以这样做(针对 MT4 的历史订单)
我仍在考虑为重定单佣金和定单评论或我自己的交易列表建立缓存,这在我的特定情况下是一样的。
如果我们建立缓存,它应该是针对整个历史的。我想最好是在通用圣经的基础上进行缓存。唯一的缺点是会占用VPS 的 内存。
在 Tester 中,MQ 在历史记录方面做得很好--它变得很快。当它被加速后,关于缓存主题的想法就消失了(有原始版本的圣经),因为我没发现它会明显快很多。此外,我没能为 Tester 设计出一个 TS,因为交易历史会严重影响逻辑。
实时缓存历史是不可能的--可以追溯修正。为什么要在实时情况下节省微秒?
实时性应该不会受到影响。
也许值得添加。现在可以如下操作(针对 MT4 历史订单)
如果我们进行缓存,则应针对整个历史记录。最好以通用圣经为基础。唯一的缺点是会占用VPS 内存。
在 Tester 中,MQ 在历史记录方面做得很好--它变得很快。当它被加速后,关于缓存主题的想法就消失了(有原始版本的圣经),因为我没发现它会明显快很多。此外,我没能 为 Tester 设计出一种 TS,在这种情况下,交易历史会严重影响逻辑。
实时缓存历史是不可能的--可以追溯修正。为什么要实时保存微秒?
如果我理解正确的话,我有一个 TS:在某一特定时间,我们开始根据信号进入市场,最终进行了几次买入和卖出,在交易结束时,我们按原样关闭一切。
也就是说,如果不访问历史记录,TS 就无法使用。
如果我没有理解错的话,我有一个 TS,它的工作原理是:在某个时间,我们根据信号开始入市,最终进行几次买入和卖出,在交易时段结束时,我们按原样关闭所有交易。
也就是说,如果无法访问历史记录,TS 就无法使用。
这句话的关键词是 "认真"。很明显,交易历史可以切入交易逻辑。问题出在 TS 上,Tester 在访问历史记录时速度会明显变慢。
实时性应该不会受到影响。
也许值得添加。现在可以如下操作(针对 MT4 历史订单)
如果我们进行缓存,则应针对整个历史记录。最好以通用圣经为基础。唯一的缺点是会占用VPS 内存。
在 Tester 中,MQ 在历史记录方面做得很好--它变得很快。当它被加速后,关于缓存主题的想法就消失了(有原始版本的圣经),因为我没发现它会明显快很多。此外, 我没能为 Tester 设计出一种 TS,在这种情况下,交易历史会严重影响逻辑。
实时缓存历史是不可能的--可以追溯修正。为什么要实时保存微秒?
您曾展示过一段代码,可以搜索历史记录中的类似 "模式"。
下面是一个具有深度历史记录的简单 TS:
我们查看从 "现在 "到 "过去一段时间(例如交易日)"的某个时间段内的当前价格 "形状模式",查找历史上所有类似的价格模式,按照 "重合度 "对其进行分类,从历史上的此类 "图片 "中选择几个重合度最高的部分。我们通过虚拟 I/O 分析历史,并为当前状态的输入/输出提供建议。您甚至可以根据历史模式分析的结果,为每项建议分配 "权重"。
你曾展示过一段代码,可以搜索历史记录中的类似 "模式"。
就在这里。
下面是最简单的 TS,具有深入的历史记录:
我们查看从 "现在 "到 "过去一段时间(例如交易日)"的某个时间段内的当前价格 "形状模式",搜索历史上所有类似的价格模式,按照 "重合度 "对其进行分类,在历史 "图片 "中选择几个重合度最高的部分。我们通过虚拟 I/O 分析历史,并为当前状态的输入/输出提供建议。您甚至可以根据历史模式分析结果,为每项建议分配 "权重"。
显然,您没有理解我的意思。我指的是交易历史。
历史会严重影响逻辑的 TC 是一种适应性 TC。
绊脚石是什么?
历史会严重影响逻辑的 TC 是一种适应性 TC。
你是哪里出错了?
您需要举例说明交易历史(而非价格历史)对回溯测试时间有重大影响的 TC。