文章 "MetaTrader 5 中的订单、持仓和成交" - 页 2 12345 新评论 Yedelkin 2011.01.08 19:46 #11 Торговыми событиями считаются следующие изменения на счете: 借记和收取资金; 收取佣金、掉期和税费; 设置、删除和修改订单; 根据订单执行交易; 开仓和平仓; 改变头寸的数量和方向。 该清单不包括未结头寸的 "修改止损和/或止盈水平"(SL & TP 修改)等交易事件。这是否被视为 "根据订单 执行交易 "的一种特殊情况? Rashid Umarov 2011.01.08 19:55 #12 Yedelkin:该列表不包括未结头寸的 "修改止损和/或止盈水平"(SL & TP 修改)这样的交易事件。还是说它被视为 "订单交易 "的一种特殊情况?修改 未结头寸的" 止损和/或止盈水平"(SL & TP 修改)"更接近于 "设置、删除和修改 订单"。设置、删除和修改订单; Yedelkin 2011.01.08 20:08 #13 Rosh: 修改未结头寸的 "止损和/或止盈水平"(SL 和 TP 修改)"更接近于 "修改未结头寸的止损和/或止盈水平"。 我正在考虑这个问题。但事实上,在谈到 "设置、删除和修改订单 "时,我们说的是设置、删除和修改挂单 。修改未平仓头寸 的 SL 和/或 TP 水平则性质不同,因为相应的请求属于 "立即 执行订单 "类别。还是我对"立即执行"的理解有误? Andrey Khatimlianskii 2011.01.09 01:59 #14 Rosh:文章给出了一个加载一天交易历史记录的例子(有一个代码给出了加载 3 天历史记录的例子)。是的,这是一个局限性,这个例子并不具有普遍性。但如果读者在阅读文章时理解了这一特殊性,他/她就能自己决定问题--他/她需要在什么时间 间隔内、从什么时候 开始将交易历史记录 加载 到缓存中。读者已经获得了最简单的示例和算法,现在可以独立地将它们应用到必要的事件处理功能 中。他可以独立创建自己的交易历史库,并完成初始化和同步等工作。如果要为所有情况下的交易历史最佳工作提供具体方法和功能,至少还需要一篇文章。更确切地说,不是例子本身,而是解决某些任务的方法。这篇文章的目的是让大家了解交易函数是如何工作的,以及应该注意哪些细微差别,从而避免浪费自己的研究时间。我相信,读完这篇文章之后,一切都会变得简单。拉希德,我并不是贬低这篇文章的作用。只是,如果没有生活 中的例子(可以应用于编写 EA 的例子),这篇文章就显得很有参考价值。是的,里面有有用的信息,明白人会用得上。但是,一个不谙世事的用户只读了这篇文章,就无法用历史来组织正常的工作,也就是说,这篇文章对他毫无用处。 Yedelkin 2011.05.04 21:00 #15 文章中就有这样的部分:"例如,这里有一个脚本,可以搜索最后一天的最后一笔订单并显示相关信息。// --- 确定所需的交易历史界限 datetime end=TimeCurrent(); // 当前服务器时间 datetime start=end-PeriodSeconds(PERIOD_D1);// 将起始时间设置为 24 小时前 //--- 在程序缓存中请求当天的交易历史记录 HistorySelect(start,end); //--- 获取历史订单数 int history_orders=HistoryOrdersTotal(); //--- 从具有列表中最后一个索引的历史记录中获取订单的票据 ulong order_ticket=HistoryOrderGetTicket(history_orders-1); if(order_ticket>0) // 在缓存中获取历史订单,并对其进行处理 { //--- 订单状态 ENUM_ORDER_STATE state=(ENUM_ORDER_STATE)HistoryOrderGetInteger(order_ticket,ORDER_STATE); long order_magic =HistoryOrderGetInteger(order_ticket,ORDER_MAGIC); long pos_ID =HistoryOrderGetInteger(order_ticket,ORDER_POSITION_ID); PrintFormat("订单 #%d:ORDER_MAGIC=#%d,ORDER_STATE=%d,ORDER_POSITION_ID=%d", order_ticket,order_magic,EnumToString(state),pos_ID); } else // 试图获取订单未果 { PrintFormat("历史订单总数 %d,选择订单失败"+ " 索引 %d。错误 %d",history_orders,history_orders-1,GetLastError()); }脚本说明中说搜索的是最后一笔订单,但代码本身说的是获取历史订单列表中具有最后一个索引 的票据://--- 从具有最后索引 的历史记录中获取订单的票据 в списке ulong order_ticket=HistoryOrderGetTicket(history_orders-1); 也就是说,这意味着具有最大指数的票据才是最后一笔订单。......如果列表中只有一个订单, 那就没有问题。但是,如果列表中有更多的订单,我们是否总是可以依靠建议的方法找到最后一个订单呢?换句话说,最后一个历史订单是否总能保证 在历史订单列表中具有最大索引? bivmail 2012.03.15 18:01 #16 下午好!1) 我查看了位置属性:position_profit是什么,用什么来衡量?举例说明:double profit =PositionGetDouble(POSITION_PROFIT);结果:EURUSD position #101470723: POSITION_MAGIC=0, open pos price=1.30825, close pos price=1.30835, type=POSITION_TYPE_BUY, profit=-2061584302, comment=.profit=-2061584302 如何理解?2) 谁能准确而简单地解释一下如何理解这个条目ENUM_POSITION_TYPE type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);也许 PositionGetInteger(POSITION_TYPE) 顺式函数请求的是一个预选位置的 POSITION_TYPE 属性的值,但这个值是以枚举序列号的形式返回的,为了以可消化的形式表示,我们已经从 ENUM_POSITION_TYPE 顺式枚举中将这个可消化的值导入了类型变量,而类型变量的类型同时被声明为 ENUM_POSITION_TYPE?在这种情况下,我是否可以自己编写一个特定的类,这个类在意义上将成为一个函数, 大约是这样:initialisation textPosition = that certain class; // in the constructor of which read into the position buffer and remember all parameters然后使用:tekPriceOpening=tekPosition.PriceOpening;tekDirectionPosition=tekPosition.DirectionPosition;tekDirectionPosition=tekPosition.DirectionPosition;tekProfitPosition=tekPosition.ProfitPosition;谢谢! Discussion of article "Orders, Functions for reading position Creating multi-symbol Expert Advisors Yedelkin 2012.03.15 19:18 #17 bivmail:2) 谁能准确而简单地解释一下如何读取此条目ENUM_POSITION_TYPE type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);函数 PositionGetInteger("属性标识符")返回 long 类型的值。如果 "属性标识符 "的类型不是 long(例如 POSITION_TYPE 标识符的类型是ENUM_POSITION_ TYPE),则最好将 PositionGetInteger() 函数返回的值转换为所需类型的值(即转换为ENUM_POSITION_TYPE 类型的值)。在您的示例中,声明了 ENUM_POSITION_TYPE 类型的变量类型,并为其分配了 ENUM_POSITION_TYPE 类型的值,该值是将 long 类型的值显式转换为 ENUM_POSITION_TYPE 类型的值的结果。数值类型值的转换规则在MQL5 Reference Guide /Language Basics /Data Types / Type Casting /Casting Numeric Types 中有描述。 Документация по MQL5: Торговые функции / PositionGetInteger www.mql5.com Торговые функции / PositionGetInteger - Документация по MQL5 图表上的历史仓位及其盈利/亏损图指标 来自 MQL5 向导的预制专家交易系统运作于 MetaTrader 如何使用抛物线转向(Parabolic SAR)指标设置跟踪止损(Trailing Stop) Yedelkin 2012.05.24 06:01 #18 引自文章:"当与交易服务器的连接中断时,终端会定期 尝试恢复连接。尝试恢复连接的频率是多少? Renat Fatkhullin 2012.05.24 08:13 #19 每 5 秒钟 Yedelkin 2012.05.24 08:28 #20 明白了,谢谢。 12345 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
Торговыми событиями считаются следующие изменения на счете:
该清单不包括未结头寸的 "修改止损和/或止盈水平"(SL & TP 修改)等交易事件。这是否被视为 "根据订单 执行交易 "的一种特殊情况?
该列表不包括未结头寸的 "修改止损和/或止盈水平"(SL & TP 修改)这样的交易事件。还是说它被视为 "订单交易 "的一种特殊情况?
修改未结头寸的 "止损和/或止盈水平"(SL 和 TP 修改)"更接近于 "修改未结头寸的止损和/或止盈水平"。
我正在考虑这个问题。但事实上,在谈到 "设置、删除和修改订单 "时,我们说的是设置、删除和修改挂单 。修改未平仓头寸 的 SL 和/或 TP 水平则性质不同,因为相应的请求属于 "立即 执行订单 "类别。还是我对"立即执行"的理解有误?
文章给出了一个加载一天交易历史记录的例子(有一个代码给出了加载 3 天历史记录的例子)。是的,这是一个局限性,这个例子并不具有普遍性。但如果读者在阅读文章时理解了这一特殊性,他/她就能自己决定问题--他/她需要在什么时间 间隔内、从什么时候 开始将交易历史记录 加载 到缓存中。
读者已经获得了最简单的示例和算法,现在可以独立地将它们应用到必要的事件处理功能 中。他可以独立创建自己的交易历史库,并完成初始化和同步等工作。
如果要为所有情况下的交易历史最佳工作提供具体方法和功能,至少还需要一篇文章。更确切地说,不是例子本身,而是解决某些任务的方法。这篇文章的目的是让大家了解交易函数是如何工作的,以及应该注意哪些细微差别,从而避免浪费自己的研究时间。
我相信,读完这篇文章之后,一切都会变得简单。
拉希德,我并不是贬低这篇文章的作用。
只是,如果没有生活 中的例子(可以应用于编写 EA 的例子),这篇文章就显得很有参考价值。
是的,里面有有用的信息,明白人会用得上。但是,一个不谙世事的用户只读了这篇文章,就无法用历史来组织正常的工作,也就是说,这篇文章对他毫无用处。
文章中就有这样的部分:
"例如,这里有一个脚本,可以搜索最后一天的最后一笔订单并显示相关信息。
脚本说明中说搜索的是最后一笔订单,但代码本身说的是获取历史订单列表中具有最后一个索引 的票据:
也就是说,这意味着具有最大指数的票据才是最后一笔订单。......如果列表中只有一个订单, 那就没有问题。但是,如果列表中有更多的订单,我们是否总是可以依靠建议的方法找到最后一个订单呢?换句话说,最后一个历史订单是否总能保证 在历史订单列表中具有最大索引?下午好!
1) 我查看了位置属性:
position_profit
是什么,用什么来衡量?
举例说明:
double profit =PositionGetDouble(POSITION_PROFIT);
结果:
EURUSD position #101470723: POSITION_MAGIC=0, open pos price=1.30825, close pos price=1.30835, type=POSITION_TYPE_BUY, profit=-2061584302, comment=.
profit=-2061584302 如何理解?
2) 谁能准确而简单地解释一下如何理解这个条目
ENUM_POSITION_TYPE type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
也许 PositionGetInteger(POSITION_TYPE) 顺式函数请求的是一个预选位置的 POSITION_TYPE 属性的值,但这个值是以枚举序列号的形式返回的,为了以可消化的形式表示,我们已经从 ENUM_POSITION_TYPE 顺式枚举中将这个可消化的值导入了类型变量,而类型变量的类型同时被声明为 ENUM_POSITION_TYPE?
在这种情况下,我是否可以自己编写一个特定的类,这个类在意义上将成为一个函数, 大约是这样:
initialisation textPosition = that certain class; // in the constructor of which read into the position buffer and remember all parameters
然后使用:
tekPriceOpening=tekPosition.PriceOpening;
tekDirectionPosition=tekPosition.DirectionPosition;
tekDirectionPosition=tekPosition.DirectionPosition;
tekProfitPosition=tekPosition.ProfitPosition;
谢谢!
2) 谁能准确而简单地解释一下如何读取此条目
ENUM_POSITION_TYPE type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
函数 PositionGetInteger("属性标识符")返回 long 类型的值。如果 "属性标识符 "的类型不是 long(例如 POSITION_TYPE 标识符的类型是ENUM_POSITION_ TYPE),则最好将 PositionGetInteger() 函数返回的值转换为所需类型的值(即转换为ENUM_POSITION_TYPE 类型的值)。
在您的示例中,声明了 ENUM_POSITION_TYPE 类型的变量类型,并为其分配了 ENUM_POSITION_TYPE 类型的值,该值是将 long 类型的值显式转换为 ENUM_POSITION_TYPE 类型的值的结果。
数值类型值的转换规则在MQL5 Reference Guide /Language Basics /Data Types / Type Casting /Casting Numeric Types 中有描述。
引自文章:"当与交易服务器的连接中断时,终端会定期 尝试恢复连接。
尝试恢复连接的频率是多少?
明白了,谢谢。