初学者的问题 MQL5 MT5 MetaTrader 5 - 页 321

 
C-4:

再一次(仔细阅读)。

在MetaTrader4中,您只能按顺序关闭订单:发送订单关闭一个订单,等待其执行,继续下一个订单,等等。由于这个原因,在MetaTrader4中关闭一批订单的时间是相当长的,不能通过微不足道的手段减少。然而,你可以将几个专家顾问系统上传到你自己的图表中,并使它们相互交换信息,通过一个共同的命令关闭订单。每个专家只在其符号处关闭订单。由于MetaTrader4中有几个交易线程,它们不会相互阻挡和相互发送订单。然而,组织这样一个专家库是很复杂的,从你的知识水平来看,我不会建议你做这样的事情。

如果你仍然认为我写了太多的字,这里有一个简单的总结。

1.你的问题的答案是否定的,你不能从专家顾问中运行一个脚本。

2.如果不使用复杂的方法,你无法提高MetaTrader4中交易订单的执行速度。

通常解决你的问题的唯一方法是OrderSendAsync函数,这在MetaTrader4中不存在。

非常感谢您的详细答复!如果你不介意的话,请分享你对这种想法的看法。

在专家顾问中添加2个参数,以总利润关闭所有订单,对订单进行排序。
(1个参数 - 1-按mag降序排序或2-升序排序,2-0-卖出和买入,1-卖出订单,2-买入订单)
用1个账户和1个同一货币对的联合图表开设4个终端,使刻度线重合,并设置不同的参数,如1-1、1-2、2-1、2-2。
这将把它们分成4个流向:最小魔术师卖出,最小魔术师买入,最大魔术师卖出,最大魔术师买入

还是我又犯傻了?是的,你对我的知识水平的评价是正确的!

 
Novikov:

非常感谢您的详细答复!如果你不介意的话,请分享你对这个想法的看法。

在专家顾问中添加2个参数,以总利润关闭所有订单,对订单进行排序。
(1个参数 - 1-按mag降序排序或2-升序排序,2-0-卖出和买入,1-卖出订单,2-买入订单)
用1个账户和1个同一货币对的联合图表开设4个终端,使刻度线重合,并设置不同的参数,如1-1、1-2、2-1、2-2。
这将把它们分成4个流向:最小魔术师卖出,最小魔术师买入,最大魔术师卖出,最大魔术师买入

还是我又犯傻了?是的,你对我的知识水平的评价是正确的!

是的,它可以这样做。但没有必要运行几个终端。运行一个终端,它有4个窗口。在每个窗户上放一个机器人。使用数字作为该机器人的参数之一。1-4.换句话说,你应该将参数1的机器人分配到第一个窗口,参数2的机器人分配到第二个窗口,以此类推。当关闭订单的时间到了,每个机器人将比较所选订单的 神奇数字和参数的神奇数字并关闭它。有其他主力的订单将被交给其他专家顾问来关闭。
 
C-4:
是的,我们可以做到这一点。但没有必要运行几个终端。你需要启动一个终端,而它有4个窗口。在每个窗户上放一个机器人。使用数字作为该机器人的参数之一。1-4.换句话说,你应该将参数1的机器人分配到第一个窗口,参数2的机器人分配到第二个窗口,以此类推。当关闭订单的时间到了,每个机器人将比较所选订单的 神奇数字和参数的神奇数字并关闭它。有其他主力的订单将被交给其他专家顾问来关闭。

在mt5论坛上,当我最初考虑4个窗口时,正如你建议的那样,一个程序员回答说:"终端是一个。这意味着只有一个 "洞",即在终端中只有一个小的 "洞",用于访问服务器,大小为一个请求,被所有的EA和脚本使用,这些脚本在终端中运行。在单一请求被处理之前,没有人可以访问服务器。

那么,1个终端的4个图表和4个终端的4个图表哪个更好、更真实?

 
Novikov:

在mt5论坛上,当我最初考虑4个窗口时,正如你建议的那样,一个程序员回答说:"终端是一个。这意味着只有一个 "洞",即在终端中只有一个小的 "洞",用于访问服务器,大小为一个请求,被所有的EA和脚本使用,它们在终端中运行。只要有一个请求没有被处理,其他任何人都不能访问服务器。

那么,1个终端的4个图表和4个终端的4个图表哪个更好、更真实?

自己想想这个 "程序员 "的答案吧。如果是这样,就不可能在一个终端上用几个专家顾问进行交易。他们会不断地得到上下文的忙碌,也就是说,他们会互相封锁。早些时候,在MT4的蓬头垢面的版本中,确实有这样的错误,人们可以遇到它,但现在,据我所知,它甚至已经被删除,因为它不再有意义。MT4中订单执行的多线程已经大大扩展,并且已经存在了很长时间。

无论如何,你应该听从我的建议,如果出了问题,将一些EA转移到另一个终端并不困难。

 
Novikov:

在mt5论坛上,当我最初考虑4个窗口时,正如你建议的那样,一个程序员回答说:"终端是一个。这意味着只有一个 "洞",即在终端中只有一个小的 "洞",用于访问服务器,大小为一个请求,被所有的EA和脚本使用,它们在终端中运行。在单一请求被处理之前,没有人可以访问服务器。

那么,1个终端的4个图表和4个终端的4个图表哪个更好、更真实?

你在哪里找到这样的 "程序员"?
 

亲爱的,还有一个问题:OrderCloseBy函数是否有助于加快大型订单堆的关闭速度?

例如:当达到给定的利润时,在该货币对上再开1个订单,使买入和卖出订单的手数相等,然后运行 "关闭重叠的订单"。

报价是5位数。

 

伙计们,你们能否就这个问题提供建议,这可能是一个组织性的问题。我不能给你看这个指标的代码。它写得很称职,一切都经过了测试。

从这里开始的问题:https://www.mql5.com/ru/forum/6343/page323

从MQ网站安装了终端--它默认提供了一个Alp演示服务器。最终在欧元区进行了测试。

我的理解是,它正在等待英镑-美元的数据。任何地方都没有交易开放。

接下来,当在英镑上运行时,它说。

美元JPY的待定数据。

 

而且只有在美元指数上运行时--没有数据等待--但仍然没有交易开启。

我没有在代码中明确指定开仓交易的货币对,即,例如

所有对于任何符号_符号。而且,这不是一个开放订单的问题...可能的原因是什么?谢谢。

 for(int i=0;i<10;i++)
     {
      volume=NormalizeDouble(volume,1);
      if(volume<=0) break;
      if(Type==POSITION_TYPE_SELL)
        {
         request.type=ORDER_TYPE_SELL;
         request.price=SymbolInfoDouble(_Symbol,SYMBOL_BID);
         if(TP!=0) takeprofit = request.price-TP*_Point;
         if(SL!=0) stoploss = request.price+SL*_Point;
        }
      if(Type==POSITION_TYPE_BUY)
        {
         request.type=ORDER_TYPE_BUY;
         request.price=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
         if(TP!=0) takeprofit = request.price+TP*_Point;
         if(SL!=0) stoploss = request.price-SL*_Point;
        }
      request.action = TRADE_ACTION_DEAL;
      request.symbol = _Symbol;
      request.volume = MathMin(volume,SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX));
      request.sl = stoploss;
      request.tp = takeprofit;
      request.deviation=SymbolInfoInteger(_Symbol,SYMBOL_SPREAD);
      request.type_filling=ORDER_FILLING_FOK;
      request.comment=" ";//DoubleToString(Money,2)+"$";
      if(!OrderCheck(request,check))
        {
         if(check.margin_level<100) volume-=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
 

该指标为每个工具分配了权重,从而形成了一种聚类分析。它不希望在测试器中工作。原因可能是什么?我感谢你。

而代理商工作正常,一切都已充电,准备就绪......。


[删除]  
R0MAN:

该指标为每个工具分配了权重,从而形成了一种聚类分析。它不希望在测试器中工作。原因可能是什么?我感谢你。

而代理商工作正常,一切都已充电,准备就绪......。


写信给servicedesk。不过,他们必须给你密码。