[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 309 1...302303304305306307308309310311312313314315316...652 新评论 Владимир Тезис 2011.11.01 08:56 #3081 artmedia70: 这就对了:整理自己的垃圾是一种好的礼仪...... 但在这种情况下,你怎么能说 "垃圾 "现在需要清理,或者反过来说:它不是垃圾--它是进一步计算的必要数据。 按照我的理解,deinit()应该用来清理垃圾,但...它不仅在交易工具的图表被删除、专家顾问被移除时执行,而且在TF被改变时也执行。在这种情况下,TF的所有累积数据都会丢失,当专家顾问回到上一个时间框架时,它将以零数组重新开始工作。如果我们改变专家顾问的任何参数,也会发生同样的情况。 事实证明,在某些情况下,"垃圾收集 "是一个复杂的逻辑过程,而不是简单的改变数组大小。 嗯,这并不复杂。在循环中,用数值初始化数组。然后,我们对产生的数组进行处理。当工作完成后,我们使其长度为零。如果有疑问,你可以在代码末尾的return(0)之前进行。 Vitaliy Andreischev 2011.11.01 09:29 #3082 请建议使用下面的代码来读取日志文件。按日期自动读取当前的日志文件并输出到打印机。 在哪里? while (result>0) { 文件是由零件组装而成的。但我不需要整个文件,只需要最后一行。请帮助纠正。 void ReadWrite() { string tekTime=TimeStr1(CurTime(),1); string path=TerminalPath()+"\\logs\\"+tekTime+".log"; string title="Чтение из файла"; string msg; int result; int handle=_lopen(path,4); if (handle<0) { msg="Ошибка открытия файла"; //MessageBox(msg,title,MB_OK|MB_ICONERROR); Print(msg); return; } result=_llseek (handle,0,0); string buffer=""; //string char="x "; string char="x "; int count=0; result=_lread (handle,char,250); while (result>0) { buffer=buffer+char; char="x "; count++; result=_lread (handle,char,250); } result=_lclose (handle); msg=StringTrimRight(buffer); //MessageBox(msg,title,MB_OK|MB_ICONINFORMATION); Print(msg); } //------------------расчет времени---------------- string TimeStr1(int taim,int tip) { string sTaim; string sTaim1,sTaim2,sTaim3; if (tip==1) { int GD=TimeYear(taim); int MN=TimeMonth(taim); int DD=TimeDay(taim); sTaim1 = DoubleToStr(GD,0); if (MN<10) sTaim2 = StringConcatenate(sTaim2,"0"+DoubleToStr(MN,0)); else sTaim2 = StringConcatenate(sTaim2,DoubleToStr(MN,0)); if (DD<10) sTaim3 = StringConcatenate("0",DoubleToStr(DD,0)); else sTaim3 = DoubleToStr(DD,0); sTaim=sTaim1+sTaim2+sTaim3; } return(sTaim); } Artyom Trishkin 2011.11.01 09:36 #3083 drknn: 嗯,这并不难。在循环中,数组被初始化为数值。然后,我们对产生的数组进行处理。当工作结束后,我们把它变成一个零长度的阵列。如果有疑问,你可以在代码末尾的return(0)之前进行。 我被误解了。 在对话的背景下(如果我正确理解这次对话的前提),循环是EA本身。毕竟,每次打勾时,数组要么增加,要么保持不变,这取决于是否需要向其写入一个新的值。 我们怎么能知道工作已经完成,而不仅仅是例如一个人改变了时间框架?即使是意外...在这种情况下,deinit()将被调用,所有数据都将丢失。专家顾问将根据新的时间框架(新的周期)中获得的数值,开始重新存储(在动态数组 中写入)它们。 这就是我的意思。 Vadim Zhunko 2011.11.01 10:02 #3084 artmedia70: 我没有被理解。 在我们讨论的背景下(如果我对这次讨论的前提理解正确的话),周期是专家顾问本身的工作。毕竟,每次打勾时,数组要么增加,要么保持不变,这取决于是否需要向其写入一个新的值。 例如,你如何判断一项工作是否已经完成,而不仅仅是一个人在改变时间框架?即使是意外...在这种情况下,deinit()将被调用,所有数据都将丢失。专家顾问将根据在新的时间框架(新的周期)中获得的价值,开始重新积累它们(将它们写入一个动态数组)。 我的观点是这样的。 如果你深入了解细节,你可以使用这个功能。它将告诉你取消初始化的原因是什么。 Vitaliy Andreischev 2011.11.01 10:15 #3085 我注意到终端的一个具体特征。由于订单利润计算不考虑OrderSwap(),我希望它能一次性关闭订单。 这意味着我们应该使用这个公式来关闭订单并获得利润。 (OrderProfit()+OrderSwap()+OrderCommission())>0 我从来没有使用过佣金,佣金也没有在演示中使用,这就是为什么我不能在账户上检查它。 我的计算方法是否正确? Artyom Trishkin 2011.11.01 11:05 #3086 Zhunko: 如果你深入了解细节,你可以使用这个功能。它将告诉你取消初始化的原因。 相当正确...:) 忘了它。现在,以我使用 "万无一失 "的习惯,我们将使用它... Александр 2011.11.01 14:08 #3087 artmedia70: ObjectGetValueByShift()来帮助你 而你将如何与之合作--只有你自己知道...... 谢谢你,好心人! [删除] 2011.11.01 16:54 #3088 两个问题。 1.如何在数组 double abc[10] 中写入/输入第一个和后续变量 doubleab=a*b?2.如何将第11个变量写进数组,去掉第一个变量? 变量在数组中的书写顺序(向前或向后)并不重要。数组中的变量需要用来确定算术平均值。 [删除] 2011.11.01 18:25 #3089 我可以改变挂单 的手数吗? Andrey F. Zelinsky 2011.11.01 19:07 #3090 Parn25: 我可以改变挂单的手数吗? 不,你不能。 你能改变的一切都在这里解释了https://docs.mql4.com/ru/trading/OrderModify 1...302303304305306307308309310311312313314315316...652 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这就对了:整理自己的垃圾是一种好的礼仪......
但在这种情况下,你怎么能说 "垃圾 "现在需要清理,或者反过来说:它不是垃圾--它是进一步计算的必要数据。
按照我的理解,deinit()应该用来清理垃圾,但...它不仅在交易工具的图表被删除、专家顾问被移除时执行,而且在TF被改变时也执行。在这种情况下,TF的所有累积数据都会丢失,当专家顾问回到上一个时间框架时,它将以零数组重新开始工作。如果我们改变专家顾问的任何参数,也会发生同样的情况。
事实证明,在某些情况下,"垃圾收集 "是一个复杂的逻辑过程,而不是简单的改变数组大小。
嗯,这并不复杂。在循环中,用数值初始化数组。然后,我们对产生的数组进行处理。当工作完成后,我们使其长度为零。如果有疑问,你可以在代码末尾的return(0)之前进行。
请建议使用下面的代码来读取日志文件。按日期自动读取当前的日志文件并输出到打印机。
在哪里?
文件是由零件组装而成的。但我不需要整个文件,只需要最后一行。请帮助纠正。
嗯,这并不难。在循环中,数组被初始化为数值。然后,我们对产生的数组进行处理。当工作结束后,我们把它变成一个零长度的阵列。如果有疑问,你可以在代码末尾的return(0)之前进行。
我被误解了。
在对话的背景下(如果我正确理解这次对话的前提),循环是EA本身。毕竟,每次打勾时,数组要么增加,要么保持不变,这取决于是否需要向其写入一个新的值。
我们怎么能知道工作已经完成,而不仅仅是例如一个人改变了时间框架?即使是意外...在这种情况下,deinit()将被调用,所有数据都将丢失。专家顾问将根据新的时间框架(新的周期)中获得的数值,开始重新存储(在动态数组 中写入)它们。
这就是我的意思。
我没有被理解。
在我们讨论的背景下(如果我对这次讨论的前提理解正确的话),周期是专家顾问本身的工作。毕竟,每次打勾时,数组要么增加,要么保持不变,这取决于是否需要向其写入一个新的值。
例如,你如何判断一项工作是否已经完成,而不仅仅是一个人在改变时间框架?即使是意外...在这种情况下,deinit()将被调用,所有数据都将丢失。专家顾问将根据在新的时间框架(新的周期)中获得的价值,开始重新积累它们(将它们写入一个动态数组)。
我的观点是这样的。
我注意到终端的一个具体特征。由于订单利润计算不考虑OrderSwap(),我希望它能一次性关闭订单。
这意味着我们应该使用这个公式来关闭订单并获得利润。
(OrderProfit()+OrderSwap()+OrderCommission())>0
我从来没有使用过佣金,佣金也没有在演示中使用,这就是为什么我不能在账户上检查它。
我的计算方法是否正确?
如果你深入了解细节,你可以使用这个功能。它将告诉你取消初始化的原因。
相当正确...:)
忘了它。现在,以我使用 "万无一失 "的习惯,我们将使用它...
ObjectGetValueByShift()来帮助你
而你将如何与之合作--只有你自己知道......
谢谢你,好心人!
我可以改变挂单的手数吗?
不,你不能。
你能改变的一切都在这里解释了https://docs.mql4.com/ru/trading/OrderModify