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

 
有一个现有的MT4交易机器人,我添加了链接到交易账户的代码,但仍然失败。抛出一个错误。我需要有人帮助我做这件事。我的电报@Starinkov,我将非常感激))))。
 

我希望翻译能够忠实,但显然不会是这样...

正是由于这个原因和其他原因,我们不需要全球论坛...。

否则,我们就不会有区域论坛......

诡异的举动...

:(

 
你好!我建立了一台有24个核心的计算机,以加快优化速度,并能在小型TF上优化策略性能,如M1、M2等。当我启动它时,我看到程序偶尔会冻结并挂起很长一段时间。我附上了三张这样的照片。在我的旧电脑上(8个核心),没有发生这样的情况。此外,由于这种停顿,使用强大的计算机也没有任何好处。目前我可以看到,8个核心的结果比24倍快。 而我想获得10倍的速度。也许有什么地方需要我去调整?如果有人知道它可能是什么,请告知。
 

你好。

我想做一个通用的包含文件,可以和任何EA一起包含。而且它应该限于一个包含,没有任何额外的代码。

问题是,该文件使用OnTimer()作为输入点。

如果EA(我的include文件所连接的)也使用OnTimer()怎么办?有什么解决办法吗?

 

下午好。我在Moex股票市场进行交易。经纪人Otkritie。如果有几个工具的未结头寸,机器人在发送部分平仓的请求时就会混淆它们(例如,它可以用Sberbank股票的价格发送Magnit股票的请求。即,请求中的工具被指定为Magnit,但价格被指定为Sberbank)或者干脆不发送请求。多头头寸的平仓算法代码(当仪器价格达到Price_Close_1_Buy时运行)。

void Price_Close_1_Buy()
  {

   MqlTradeRequest arequest;
   MqlTradeResult aresult;
   ZeroMemory(arequest);
   ZeroMemory(aresult);

   for(int i=PositionsTotal()-1; i>=0; i--)
      {
       if(Symbol()==PositionGetSymbol(i))
      {
       arequest.action   = TRADE_ACTION_DEAL;
       arequest.position = PositionGetTicket(i);
       arequest.symbol   = Symbol();
       arequest.volume   = NormalizeDouble((Lots_Close_1/100*Lots_current()),0);
       arequest.price    = aposition.PriceCurrent();
       arequest.type_filling = ORDER_FILLING_FOK;
       arequest.type     = ORDER_TYPE_SELL;
       Price_Close_1_Buy_Request_Send = true;
      }
       OrderSend(arequest,aresult);
       Print("=================================================================================================== ");
       Print(asymbol.Name());
       Print("Price_Close_1_Buy_request() ",arequest.price);
       Print("Lots_Close_1_Buy_request() ",arequest.volume);
       Print("Result ", aresult.comment);
       Print("Retcode ",aresult.retcode);
      }
  }
 
leonerd #:

你好。

我想做一个通用的包含文件,可以和任何EA一起包含。而且它应该限于一个包含,没有任何额外的代码。

问题是,该文件使用OnTimer()作为输入点。

如果EA(我的include文件所连接的)也使用OnTimer()怎么办?有解决方案吗?

千万不要这样做。

只是一个建议。不打算改变我的想法。

 
Manter84 未结头寸,机器人在发送部分平仓的请求时就会混淆它们(例如,它可以用Sberbank股票的价格发送Magnit股票的请求。即,请求中的工具被指定为Magnit,但价格被指定为Sberbank)或者干脆不发送请求。多头头寸的平仓算法代码(当达到仪器的价格Price_Close_1_Buy时运行)。
关于价格问题--挖掘
aposition.PriceCurrent()
 
Koldun Zloy #:

千万不要这样做。

只是一个建议。我不打算改变你的想法。

这些是项目的要求。

 

我如何覆盖默认的OrderSend()?

#define OrderSend(MqlTradeRequest,MqlTradeResult)  MyOrderSend(MqlTradeRequest,MqlTradeResult)

在顶部加了一行字

在我的MyOrderSend()中,我做了一些计算并再次调用OrderSend()。我想调用本地的OrderSend(),但却得到递归,MyOrderSend()被再次调用。

而这个调用也没有帮助::OrderSend()
 
leonerd 我 在上面加了一句话

在我的MyOrderSend()中,我做了一些计算并再次调用OrderSend()。我想调用本地的OrderSend()函数,但我得到的是一个递归,MyOrderSend()被再次调用。

这根本不起作用。#define在程序代码中把第一个(调用)替换成第二个,因为OrderSend(...)每次 出现 都被替换成MyOrderSend(...)。