初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1482 1...147514761477147814791480148114821483148414851486148714881489...1503 新评论 Alexey Viktorov 2023.11.24 19:58 #14811 MrBrooklin #:嗨,阿列克谢,变量 pos_total=PositionsTotal() 只是在全局级别设置的。现在我把它移到了函数内部,结果发现问题就出在这里。一切正常。问题出在哪里?我完全不明白这个笑话的意思!!!现在,为了做实验,我又把 pos_total 移到了全局层,结果它又不工作了,但当我把它放到函数内部时,它又正常工作了!这就是奇迹,至少对我来说是这样!!!!)))原来全局变量不能被函数初始化?是这样吗?敬上,弗拉基米尔 有时可以,但不是每个变量都可以。在这种情况下,当您运行 EA 时,它还没有看到未结头寸,变量等于零....。 实际上,昨天我试验了仓位采样,得出的结论是PositionsTotal() 仅用于确定仓位数量。而这个数字只是为了限制循环。 下面是这样一个循环 int i = 0; while(bool(posTicket = PositionGetTicket(i)) && !IsStopped()) { string posSymbol = PositionGetString(POSITION_SYMBOL); double posPrice = PositionGetDouble(POSITION_PRICE_OPEN), pos_tp = PositionGetDouble(POSITION_TP), pos_sl = PositionGetDouble(POSITION_SL); printf("%s Ticket %d цена = %g тейк-профит = %g стоп-лосс = %g", posSymbol, posTicket, posPrice, pos_tp, pos_sl); i++; } 即使在循环之前从历史记录中获取订单或交易列表,也能正常工作。这几天我会检查一下挂单的选择是否会干扰它。 在您的情况下,不使用循环更容易编写 PositionGetTicket(PositionsTotal()-1); // получим тикет позиции 如果您需要最后一个位置... MrBrooklin 2023.11.24 20:30 #14812 Alexey Viktorov #: 在这种情况下,当您启动 EA 时,它还看不到未结头寸,变量等于零 ... 我同意您的观点,但问题是 - 当我把 pos_total 变量放在全局级别时,EA 在整个测试期间都没有看到未结头寸,尽管在此期间有超过 50 个头寸被打开。我不明白!难道这个选项不起作用? 弗拉基米尔 MrBrooklin 2023.11.24 20:33 #14813 Alexey Viktorov #:在您的情况下,不使用循环更容易编写如果您需要最后一个位置... 我同意,如果我没有在不同的符号和方向上打开多个仓位的话。我是说买入和卖出。不过还是谢谢你的提示! 弗拉基米尔 Alexey Viktorov 2023.11.25 05:57 #14814 MrBrooklin #:我同意,如果没有在不同符号和不同方向上开立多个仓位的话。我是说买入和卖出。不过还是谢谢你的提示!弗拉基米尔 有多少头寸未平仓,是向北还是向北,是向他妈的还是同时向所有方向,这些都没有区别......最后一个将是PositionsTotal()-1。 MrBrooklin 2023.11.25 08:56 #14815 Alexey Viktorov #:有多少个仓位未平仓,是向北、向北还是同时向所有方向平仓,都没有区别......最后一个将是PositionsTotal()-1。 嗨,阿列克谢,我有点糊涂了。你总是对的))) 再见,弗拉基米尔。 JRandomTrader 2023.11.25 10:51 #14816 Alexey Viktorov #:实际上,昨天我对位置采样进行了实验,得出的结论是PositionsTotal() 只需要用来确定位置数。而这个数字只是为了限制循环。下面是这样一个循环 即使在循环之前从历史记录中获取订单或交易列表,也能正常工作。改天我会检查一下选择挂单是否会造成干扰。 这里还有一个微妙之处。 如果列表确实很大,并且是按照某种标准排序的,那么搜索所需元素时,可能更有利的做法不是搜索循环中的所有元素,而是进行半除法,在这里,了解列表中元素的总数会非常有用。 Alexey Viktorov 2023.11.25 10:58 #14817 JRandomTrader #:这里还有一个微妙之处。如果列表真的很大,并且是按照某种标准排序的,那么搜索所需元素时,可能不是循环通过所有元素,而是通过半除法,这样做可能更有利,而在这里,知道列表中元素的总数可能非常有用。 我并没有说该函数完全无用。但在某些情况下,你可以而且必须不用它。毕竟,每个函数都需要时间。您可以每次键入一点点,直到得到刹车.... Aleksandr Slavskii 2023.11.25 14:54 #14818 MrBrooklin #:嗨,阿列克谢!我真笨。你总是对的)))问候你,弗拉基米尔。 我是对的,但我没有说明,如果在不同的符号上进行了多次交易,您所写的函数将无法正常工作。 因为您只 检查了最后 一个,而它(最后一个)可以在另一个符号上开立。 MrBrooklin 2023.11.25 15:57 #14819 Aleksandr Slavskii #:没错,但我没有说明,如果在不同的符号上开立了几笔交易,你所写的函数就无法正常工作。 因为你只 检查了最后 一个,而它(最后一个)可以在另一个符号上打开。 你好,亚历山大,我已经考虑过这个问题,但我还没有开始在这里提问,因为我还没有写到代码中会有不同符号位置的地方。感谢您的提示!))现在我在某一点上遇到了难题,但我不想把它拿到这里来让大家评议,因为我有一个不懈的愿望,那就是通过自己的努力 "完成 "它。 顺便说一句,我注意到我所谓的 "磕磕绊绊 "都是在我看不到的小地方。就拿 Artem Trishkin 告诉我的那个规格器来说吧。就是这么一件小事,我却为脚本无法运行而伤透了脑筋。或者是同一个链接&。为此耽误了不少时间。总的来说,还是要学习、学习、再学习,俄语方面--要阅读、阅读、再阅读《文档》。 弗拉基米尔 klycko 2023.11.25 17:53 #14820 下午好! 我有一个净额结算账户。 在我的智能交易系统中,我使用以下代码来控制交易: HistorySelect(0,TimeCurrent()); ulong ticket = OrderGetTicket(0); N_deals = HistoryDealsTotal(); 但我还需要估算平仓交易的数量。 我想我需要使用DEAL_ENTRY_OUT 修改器。 但我不知道如何使用。 请帮助我。 亚历山大 1...147514761477147814791480148114821483148414851486148714881489...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
嗨,阿列克谢,变量 pos_total=PositionsTotal() 只是在全局级别设置的。现在我把它移到了函数内部,结果发现问题就出在这里。一切正常。问题出在哪里?我完全不明白这个笑话的意思!!!
现在,为了做实验,我又把 pos_total 移到了全局层,结果它又不工作了,但当我把它放到函数内部时,它又正常工作了!这就是奇迹,至少对我来说是这样!!!!)))
原来全局变量不能被函数初始化?是这样吗?
敬上,弗拉基米尔
有时可以,但不是每个变量都可以。在这种情况下,当您运行 EA 时,它还没有看到未结头寸,变量等于零....。
实际上,昨天我试验了仓位采样,得出的结论是PositionsTotal() 仅用于确定仓位数量。而这个数字只是为了限制循环。
下面是这样一个循环
即使在循环之前从历史记录中获取订单或交易列表,也能正常工作。这几天我会检查一下挂单的选择是否会干扰它。
在您的情况下,不使用循环更容易编写
如果您需要最后一个位置...
在这种情况下,当您启动 EA 时,它还看不到未结头寸,变量等于零 ...
我同意您的观点,但问题是 - 当我把 pos_total 变量放在全局级别时,EA 在整个测试期间都没有看到未结头寸,尽管在此期间有超过 50 个头寸被打开。我不明白!难道这个选项不起作用?
弗拉基米尔
在您的情况下,不使用循环更容易编写
如果您需要最后一个位置...
我同意,如果我没有在不同的符号和方向上打开多个仓位的话。我是说买入和卖出。不过还是谢谢你的提示!
弗拉基米尔
我同意,如果没有在不同符号和不同方向上开立多个仓位的话。我是说买入和卖出。不过还是谢谢你的提示!
弗拉基米尔
有多少头寸未平仓,是向北还是向北,是向他妈的还是同时向所有方向,这些都没有区别......最后一个将是PositionsTotal()-1。
有多少个仓位未平仓,是向北、向北还是同时向所有方向平仓,都没有区别......最后一个将是PositionsTotal()-1。
嗨,阿列克谢,我有点糊涂了。你总是对的)))
再见,弗拉基米尔。
实际上,昨天我对位置采样进行了实验,得出的结论是PositionsTotal() 只需要用来确定位置数。而这个数字只是为了限制循环。
下面是这样一个循环
即使在循环之前从历史记录中获取订单或交易列表,也能正常工作。改天我会检查一下选择挂单是否会造成干扰。
这里还有一个微妙之处。
如果列表确实很大,并且是按照某种标准排序的,那么搜索所需元素时,可能更有利的做法不是搜索循环中的所有元素,而是进行半除法,在这里,了解列表中元素的总数会非常有用。
这里还有一个微妙之处。
如果列表真的很大,并且是按照某种标准排序的,那么搜索所需元素时,可能不是循环通过所有元素,而是通过半除法,这样做可能更有利,而在这里,知道列表中元素的总数可能非常有用。
我并没有说该函数完全无用。但在某些情况下,你可以而且必须不用它。毕竟,每个函数都需要时间。您可以每次键入一点点,直到得到刹车....
嗨,阿列克谢!我真笨。你总是对的)))
问候你,弗拉基米尔。
我是对的,但我没有说明,如果在不同的符号上进行了多次交易,您所写的函数将无法正常工作。
因为您只 检查了最后 一个,而它(最后一个)可以在另一个符号上开立。
没错,但我没有说明,如果在不同的符号上开立了几笔交易,你所写的函数就无法正常工作。
因为你只 检查了最后 一个,而它(最后一个)可以在另一个符号上打开。
你好,亚历山大,我已经考虑过这个问题,但我还没有开始在这里提问,因为我还没有写到代码中会有不同符号位置的地方。感谢您的提示!))现在我在某一点上遇到了难题,但我不想把它拿到这里来让大家评议,因为我有一个不懈的愿望,那就是通过自己的努力 "完成 "它。
顺便说一句,我注意到我所谓的 "磕磕绊绊 "都是在我看不到的小地方。就拿 Artem Trishkin 告诉我的那个规格器来说吧。就是这么一件小事,我却为脚本无法运行而伤透了脑筋。或者是同一个链接&。为此耽误了不少时间。总的来说,还是要学习、学习、再学习,俄语方面--要阅读、阅读、再阅读《文档》。
弗拉基米尔
我有一个净额结算账户。