[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 600

 
rigonich:

为了更准确地回答这个问题,你需要看到专家顾问的代码。然而,这通常发生在编写专家顾问时没有考虑到专家顾问与要调用的指标工作的某些特点。专家顾问不自己计算指标值,而是从指标缓冲器中取现成的。这就是为什么如果你需要,例如,记住指标的先前值或其他东西,而指标本身就能做到这一点,你必须在你的专家顾问中包括这一切。而且有时会有 "歪门邪道 "的指标,但我认为你有一个标准的随机指标,它与此无关。


所有的指标,包括标准指标,都在0bar上重新绘制。

一句忠告...如果你有这样的问题,有一个这样的功能。

boolWindowScreenShot( string filename, int size_x, int size_y, int start_bar=-1, int chart_scale=-1, int chart_mode=-1)
将当前图表的图像保存在一个GIF文件中。如果失败,则返回FALSE。要获得错误的信息,必须调用函数GetLastError()

屏幕截图被保存在terminal_directory/experts/files 在测试专家顾问的情况下是terminal_directory/tester/files)或其子文件夹中。

 
r772ra:


所有的指标,包括标准指标,都在0条上重新绘制。

一句忠告...如果你有这样的问题,有一个这样的功能。

boolWindowScreenShot( string filename, int size_x, int size_y, int start_bar=-1, int chart_scale=-1, int chart_mode=-1)
将当前图表的图像保存在一个GIF文件中。如果失败,则返回FALSE。要获得错误的信息,必须调用函数GetLastError()

屏幕截图保存在terminal_directory/experts/files( 在测试 Expert Advisor 的情况下是terminal_directory/tester/files) 或其子文件夹中。


不是所有的人,而是其中的一些人,而且不仅是在零杆上,而是在一般情况下,我完全同意你的观点,即在零杆上工作的成本更高。

我很困惑。我无法理解截图如何能帮助解决问题?

 
rigonich:


事实上,不是所有的人,有些人不仅在零杆上,但总的来说,我绝对同意你说的在零杆上工作是 "更昂贵"。

我很困惑。我无法理解截图如何能帮助解决一个问题?


WindowScreenShot对图表进行截图,我想这很清楚。如果你把它放在开仓的 功能之后。

你知道,问题出现了,为什么???????让我们来看看这幅画。

 
r772ra:


WindowScreenShot拍摄的是图表的快照,我想这很清楚。如果你把它直接放在开仓功能之后。

你看,问题已经出现了,为什么???????见照片。


有这样一个助手
 
r772ra:

有这样一个助手

明白了。谢谢,有意思,我得试一试。
 
rigonich:

为了更准确地回答,你需要看一下EA的代码。这通常发生在我们没有考虑到EA与要调用的指标的工作方式的一些特殊性。专家顾问不自己计算指标值,而是从指标缓冲区中提取现成的指标值。这就是为什么如果你需要,例如,记住指标的先前值或其他东西,而指标本身就能做到这一点,你必须在你的专家顾问中包括这一切。而且有时会有 "歪门邪道 "的指标,但我认为你有一个标准的随机指标,它与此无关。


谢谢你的回答,但对我帮助不大,我再一次把问题贴出来,也许别人对这个问题有一些想法?

下午好,请帮助,我不明白为什么不需要的订单会打开(),在截图中它们被圈成红色,代码附在后面。

附加的文件:
 
rigonich:

如果是这样,就要看帮助开发者了。


开发商与此毫无关系。:__

你应该让它变得简单,而不是 ( Hour()>=10 || Hour()<20 ) Hour()>=10 && Hour()<20

而且一切都很顺利。

 
伙计们,你们能告诉我如何使测试器在可视化窗口中显示EA中使用的交易和指标吗?
 

请告知在哪里可以看到 "如果最后一笔获利交易>0那么.... "的条件是如何编码的。

即对已经关闭的交易进行核算(自动)。

 
lottamer:

请告知在哪里可以看到 "如果最后一笔获利交易>0那么.... "的条件是如何编码的。

即对已经关闭的交易进行核算(自动)。


https://www.mql5.com/ru/forum/131859

https://www.mql5.com/ru/forum/131859/page4#434230

函数isCloseLastPosByTake()。

该函数返回一个标志,用于关闭武井的最后一个位置。旗帜升起----TakeProfit已经触发。旗帜降低 -虚假- 职位因其他原因被关闭。使用外部参数指定更准确地选择要考虑的位置。

  • sy- 市场工具的名称。如果你指定这个参数,函数将只考虑指定仪器的位置。默认值"" 意味着任何市场工具。NULL 表示当前的仪器。
  • op- 贸易操作,职位类型。有效值:OP_BUYOP_SELL-1。默认值-1 意味着任何位置。
  • mn- 位置标识符,MagicNumber。默认值-1 表示任何标识符。
  • //+----------------------------------------------------------------------------+
    //|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
    //+----------------------------------------------------------------------------+
    //|  Версия   : 19.05.2008                                                     |
    //|  Описание : Возвращает флаг закрытия последней позиции по тейку.           |
    //+----------------------------------------------------------------------------+
    //|  Параметры:                                                                |
    //|    sy - наименование инструмента   (""   - любой символ,                   |
    //|                                     NULL - текущий символ)                 |
    //|    op - операция                   (-1   - любая позиция)                  |
    //|    mn - MagicNumber                (-1   - любой магик)                    |
    //+----------------------------------------------------------------------------+
    bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
      datetime t;
      double   ocp, otp;
      int      dg, i, j=-1, k=OrdersHistoryTotal();
    
      if (sy=="0") sy=Symbol();
      for (i=0; i<k; i++) {
        if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
          if (OrderSymbol()==sy || sy=="") {
            if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
              if (op<0 || OrderType()==op) {
                if (mn<0 || OrderMagicNumber()==mn) {
                  if (t<OrderCloseTime()) {
                    t=OrderCloseTime();
                    j=i;
                  }
                }
              }
            }
          }
        }
      }
      if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
        dg=MarketInfo(sy, MODE_DIGITS);
        if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
        ocp=NormalizeDouble(OrderClosePrice(), dg);
        otp=NormalizeDouble(OrderTakeProfit(), dg);
        if (ocp==otp) return(True);
      }
      return(False);
    }