新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1780 1...177317741775177617771778177917801781178217831784178517861787...1953 新评论 Mihail Matkovskij 2021.12.02 18:48 #17791 законопослушный гражданин #:就我所见,区别在于此。 你可以从头或从尾看一遍这个故事。没有任何区别。总之,该函数搜索的是具有最新收盘时间的订单。而如果你想删除或关闭订单,我们应该从列表的末端搜索。否则,该循环将跳过订单。 Alexey Viktorov 2021.12.02 20:56 #17792 законопослушный гражданин #:就我所见,区别如下。 在这种情况下,没有任何区别。从OrersTotal到0的循环只有在关闭头寸或删除订单的情况下才是强制性的。在其他情况下,这取决于你的喜好。 Artyom Trishkin 2021.12.02 20:58 #17793 Mihail Matkovskij #:你可以从头或从尾看一遍这个故事。没有任何区别。总之,该函数搜索的是最晚结束时间的订单。而如果你想删除或关闭订单,那么你需要从列表的末端搜索。否则,该循环将跳过订单。 如果该函数搜索具有最新收盘时间的订单,那么从最后,而不是从历史的开始--从当前时间到过去,搜索显然会更快。 Mihail Matkovskij 2021.12.02 21:19 #17794 Artyom Trishkin #:如果该函数寻找的是最新收盘时间的订单,显然搜索速度会更快,不是从历史的开始,而是从结束--从当前时间到过去时间。 在相反的方向,该函数将更快地找到具有最新关闭时间的订单,它不会改变它,直到周期结束,并将返回结果。在前进方向上,它将搜索所有的订单并返回最后的一个订单。不同的是,这些变量将在循环的每一次传递中被覆盖。是的,有区别。但我认为这并不十分重要。虽然我更 喜欢反方向的循环,而不是正方向的。尽管该功能将以某种方式发挥作用。 Maksim Mikhailov 2021.12.03 07:54 #17795 大家好,有没有办法在图表窗口之间进行程序性切换,即在程序中使任何图表处于活动状态? Alexey Viktorov 2021.12.03 08:10 #17796 Maksim Mihajlov #: 大家好,有没有办法在图表窗口之间进行程序性切换,即从程序中使任何图表处于活动状态? 查阅 图表_带至顶部 在所有其他图表的顶部显示图表 bool Maksim Mikhailov 2021.12.03 08:11 #17797 Alexey Viktorov #:查阅 图表_带至顶部 在所有其他图表的顶部显示图表 bool 谢谢你! законопослушный гражданин 2021.12.03 09:31 #17798 Mihail Matkovskij #:你可以从头或从尾看一遍这个故事。没有任何区别。总之,该函数搜索的是最晚结束时间的订单。而如果你想删除或关闭订单,那么你需要从列表的末端搜索。否则,该循环将跳过订单。 总之,我做了两个完全相同的EA,除了订单手数之外!!!下面是结果。 不工作(即不打开BAY而不是SELL)。 void OnTick() { // Получим значение индикатора dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0. // Если нет открытых ордеров, то входим в условие if(CountOrders()==0) { //Если появился сигнал на покупку, то откроем ордер на покупку if(bSignalBuy()) { if(GetLotSize()>LotControl) vOrderOpenSell(); else vOrderOpenBuy(); } // Если появился сигнал на продажу, то откроем ордер на продажу if(bSignalSell()) { if(GetLotSize()>LotControl) vOrderOpenBuy(); else vOrderOpenSell(); } } } ,,, double GetLotSize() { double Ls=0; for(int pos=OrdersTotal()-1;pos>=0;pos--) { if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic) { if(OrderType()==OP_BUY || OrderType()==OP_SELL) {Ls=OrderLots();} } } } return Ls; } 工作(即打开 BAY而不是SELL)。 void OnTick() { // Получим значение индикатора dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0. // Если нет открытых ордеров, то входим в условие if(CountOrders()==0) { //Если появился сигнал на покупку, то откроем ордер на покупку if(bSignalBuy()) { if(GetLotSize()>LotControl) vOrderOpenSell(); else vOrderOpenBuy(); } // Если появился сигнал на продажу, то откроем ордер на продажу if(bSignalSell()) { if(GetLotSize()>LotControl) vOrderOpenBuy(); else vOrderOpenSell(); } } } ... double GetLotSize() { double Ls=0; datetime t=0; int i=OrdersHistoryTotal(); for(int pos=0; pos<i; pos++) { if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY)) { if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic) { if(OrderType()==OP_BUY || OrderType()==OP_SELL) { if(t<OrderCloseTime()) {t=OrderCloseTime(); Ls=OrderLots();} } } } } return Ls; } Tretyakov Rostyslav 2021.12.03 09:45 #17799 законопослушный гражданин #:总之,我做了两个完全相同的EA,除了订单手数!!!结果如下。不工作(即不打开BAY而不是SELL)。工作(即打开 BAY而不是SELL)。 我再一次强调区别 1个变体 double GetLotSize() { double Ls=0; for(int pos=OrdersTotal()-1;pos>=0;pos--) { if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)) 2个变体 double GetLotSize() { double Ls=0; datetime t=0; int i=OrdersHistoryTotal(); for(int pos=0; pos<i; pos++) { if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY)) Mihail Matkovskij 2021.12.03 10:00 #17800 законопослушный гражданин #:总之,我做了两个完全相同的EA,除了订单手数!!!结果如下。不工作(即不打开BAY而不是SELL)。工作(即打开 BAY而不是SELL)。 试着理解你的编码,而不是盲目地复制OrdersTotal,OrdersHistoryTotal。 顺序选择 pool=MODE_TRADES[in] 要选择的数据的来源。当选择参数为SELECT_BY_POS时使用。可以是以下数值之一。MODE_TRADES(默认) - 在未结订单和挂单中选择订单, MODE_HISTORY - 在已关闭和已删除的订单中选择订单。 OrdersTotal - Торговые функции - Справочник MQL4 docs.mql4.com OrdersTotal - Торговые функции - Справочник MQL4 1...177317741775177617771778177917801781178217831784178517861787...1953 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
就我所见,区别在于此。
你可以从头或从尾看一遍这个故事。没有任何区别。总之,该函数搜索的是具有最新收盘时间的订单。而如果你想删除或关闭订单,我们应该从列表的末端搜索。否则,该循环将跳过订单。
就我所见,区别如下。
在这种情况下,没有任何区别。从OrersTotal到0的循环只有在关闭头寸或删除订单的情况下才是强制性的。在其他情况下,这取决于你的喜好。
你可以从头或从尾看一遍这个故事。没有任何区别。总之,该函数搜索的是最晚结束时间的订单。而如果你想删除或关闭订单,那么你需要从列表的末端搜索。否则,该循环将跳过订单。
如果该函数搜索具有最新收盘时间的订单,那么从最后,而不是从历史的开始--从当前时间到过去,搜索显然会更快。
如果该函数寻找的是最新收盘时间的订单,显然搜索速度会更快,不是从历史的开始,而是从结束--从当前时间到过去时间。
在相反的方向,该函数将更快地找到具有最新关闭时间的订单,它不会改变它,直到周期结束,并将返回结果。在前进方向上,它将搜索所有的订单并返回最后的一个订单。不同的是,这些变量将在循环的每一次传递中被覆盖。是的,有区别。但我认为这并不十分重要。虽然我更 喜欢反方向的循环,而不是正方向的。尽管该功能将以某种方式发挥作用。
大家好,有没有办法在图表窗口之间进行程序性切换,即从程序中使任何图表处于活动状态?
查阅
在所有其他图表的顶部显示图表
bool
查阅
在所有其他图表的顶部显示图表
bool
谢谢你!
你可以从头或从尾看一遍这个故事。没有任何区别。总之,该函数搜索的是最晚结束时间的订单。而如果你想删除或关闭订单,那么你需要从列表的末端搜索。否则,该循环将跳过订单。
总之,我做了两个完全相同的EA,除了订单手数之外!!!下面是结果。
不工作(即不打开BAY而不是SELL)。
工作(即打开 BAY而不是SELL)。
总之,我做了两个完全相同的EA,除了订单手数!!!结果如下。
不工作(即不打开BAY而不是SELL)。
工作(即打开 BAY而不是SELL)。
我再一次强调区别
1个变体
2个变体
总之,我做了两个完全相同的EA,除了订单手数!!!结果如下。
不工作(即不打开BAY而不是SELL)。
工作(即打开 BAY而不是SELL)。
试着理解你的编码,而不是盲目地复制OrdersTotal,OrdersHistoryTotal。
顺序选择
pool=MODE_TRADES
[in] 要选择的数据的来源。当选择参数为SELECT_BY_POS时使用。可以是以下数值之一。
MODE_TRADES(默认) - 在未结订单和挂单中选择订单,MODE_HISTORY - 在已关闭和已删除的订单中选择订单。