新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 375

 
Falx:

大家好!

请给我一个命令,让机器人在每根蜡烛上不超过1个订单。

即使他在这支蜡烛上采取了他的措施--不在同一蜡烛上开出下一个订单。

现在,它出来了,如果指标的条件得到满足 - 打开一个交易。

当采取的交易被关闭时,它立即在同一蜡烛图上打开一个新的交易,这里对我来说已经是不必要的,并产生了问题。

我觉得有必要给出一些反馈。

它需要一个严格的,所以1支蜡烛--1个交易。

事先非常感谢!

开仓的时间,平仓的时间--这个时间的蜡烛和这个蜡烛的开仓时间。
 
Falx:

大家好!

请给我一个命令,让机器人在每根蜡烛上不超过1个订单。

即使他在这支蜡烛上采取了他的措施--不在同一蜡烛上开出下一个订单。

现在,它出来了,如果指标的条件得到满足 - 打开一个交易。

当采取的交易被关闭时,它立即在同一蜡烛图上打开一个新的交易,这里对我来说已经是不必要的,并产生了问题。

我觉得有必要给出一些反馈。

它需要一个严格的,所以1支蜡烛--1个交易。

提前感谢!

你也可以使用旗帜。

声明一个静态bool变量或一个全局变量,让它成为flag。订单打开--标志=真,一个新的蜡烛 图打开--标志=假,并将此标志添加到订单打开的条件中。

 
Alexey Viktorov:

你也可以使用一个标志。

声明静态bool变量或全局级别的变量,让它成为标志。订单打开--标志=真,一个新的蜡烛 打开--标志=假,并将此标志添加到订单打开条件中。

该标志应保存在全局终端中,并在其重新启动时恢复。
 
Artyom Trishkin:
该标志应保存在全局终端中,并在其重新启动时恢复。

这取决于交易是在什么时期,以及在一个条形图内重新启动终端的能力,以打开一个订单并重新启动终端。

我不喜欢GV,并试图不使用它。当你启动EA时,无论如何你都应该收集所有关于未结订单的信息,所以为什么不在启动时恢复标志的值?这是一种选择。第二种变体是,标志的初始值禁止开仓,只有下一个条形图会给予许可。因此,即使我们在当前条形图上打开并重新启动了EA,该标志还是会禁止我们在下一个条形图之前打开订单。

如果你以这种微妙的方式给出这样的建议,你将不必考虑任何问题。所以问题的数量不会增加...为什么要自己决定一些事情...在论坛上询问,你会得到一个工作版本。而剩下的唯一事情就是将产品投放市场......

 
Alexey Viktorov:

这取决于交易是在什么时期,以及在一个条形图内重新启动终端的能力,以打开一个订单并重新启动终端。

我不喜欢GV,并试图不使用它。当你启动EA时,无论如何你都应该收集所有关于未结订单的信息,所以为什么不在启动时恢复标志的值?这是一种选择。第二种变体是,标志的初始值禁止开仓,只有下一个条形图会给予许可。因此,即使我们在当前条上有一个新的订单,并重新启动EA,该标志仍将禁止打开订单,直到下一个条。

仅仅通过提供如此微妙的建议,我们就不必考虑任何问题。因此,问题的数量可能会增加。为什么要自己决定一些事情...在论坛上询问,你会得到一个工作版本。而剩下的唯一事情就是将产品投放市场......

:)
我有直视前方的习惯。
对我来说,正是因为旗子还需要恢复,所以最好是看看这个位置的开盘价,围绕它跳舞,而不要去管旗子和它们的存储。
 
Artyom Trishkin:
:)
我有直视前方的习惯。
我认为最好是看一个位置的开盘 条,然后开始围绕它跳舞,而不必担心标志和储存它们。

这也是我们喜欢不同女人的原因。

这有什么区别,是旗帜还是开仓时间?无论你如何旋转它,你仍然必须检查一些东西......。
 

你好!你能告诉我如何在盈利的订单之后,返回最后亏损的订单数量吗?

这是我的代码,有什么问题吗?

int GetProfitLoss()//关闭订单的损失(最后损失的订单数量)。

{

int Loss = 0。

datetime lastCloseTime = 0;

int cnt = OrdersHistoryTotal();

for(int i=0; i < cnt; i++)

{

如果(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

如果(OrderSymbol() == Symbol() && OrderMagicNumber() == OrderId && lastCloseTime < OrderCloseTime()

{

lastCloseTime = OrderCloseTime()。

}

如果(OrderProfit()<0)

{

损失++。

}

如果(OrderProfit()>0)

{

break; // 在遇到第一个有利可图的情况下退出循环 }

}

}

}

}

return(Loss)。

}

 
Falx:

大家好!

请给我一个命令,让机器人在每根蜡烛上不超过1个订单。

即使他在这支蜡烛上采取了他的措施--不在同一蜡烛上开出下一个订单。

现在,它出来了,如果指标的条件得到满足 - 打开一个交易。

当采取的交易被关闭时,它立即在同一蜡烛图上打开一个新的交易,这里对我来说已经是不必要的,并产生了问题。

我觉得有必要给出一些反馈。

它需要一个严格的,所以1支蜡烛--1个交易。

提前感谢!

函数NumberOfBarCloseLastPos()。

该函数返回最后一个要关闭的位置的小节编号,或-1。要考虑的位置的选择是由外部参数设定的。

  • sy- 市场工具的名称。如果设置了这个参数,函数将只考虑这个仪器的位置。默认值 -NULL表示 当前的市场工具。
  • tf- 时间框架。默认值--0 表示当前的时间框架。
  • op-贸易操作,职位类型。有效值:OP_BUYOP_SELL-1。默认值-1 意味着任何位置。
  • mn- 位置标识符,MagicNumber。默认值为-1,意味着任何标识符。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает номер бара закрытия последней позиции или -1.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    op - операция                   (   -1       - любая позиция)           |
//|    mn - MagicNumber                (   -1       - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfBarCloseLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
  datetime t=0;
  int      i, k=OrdersHistoryTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) t=OrderCloseTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sy, tf, t, True));
}
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает номер бара открытия последней позиции или -1.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    op - операция                   (   -1       - любая позиция)           |
//|    mn - MagicNumber                (   -1       - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfBarOpenLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
  datetime t=0;
  int      i, k=OrdersTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderOpenTime()) t=OrderOpenTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sy, tf, t, True));
}

NumberOfBarOpenLastPos()函数。

该函数返回最后打开的位置的条数或-1。要考虑的职位的选择是由外部参数确定的。

  • sy- 市场工具的名称。如果设置了这个参数,函数将只考虑指定仪器的位置。默认值 -NULL表示 当前的市场工具。
  • tf- 时间框架。默认值--0 表示当前的时间框架。
  • op- 贸易操作,职位类型。有效值:OP_BUYOP_SELL-1。默认值-1 意味着任何位置。
  • mn- 位置标识符,MagicNumber。默认值为-1,意味着任何标识符。

然后使用这些函数检查你需要的条件。

 

请帮助。

我需要在我的机器人中添加以下功能。

在开启交易后,在40秒内如果利润超过15点,交易就会立即关闭,如果少于15点,止盈就会移至15点的利润水平。

预先感谢你。

 
Vladimir Zubov:

NumberOfBarCloseLastPos()函数。

该函数返回最后一个位置的收盘号码或-1。要考虑的位置的选择是由外部参数定义的。

  • sy- 市场工具的名称。如果设置了这个参数,函数将只考虑这个仪器的位置。默认值 -NULL表示 当前的市场工具。
  • tf- 时间框架。默认值--0 表示当前的时间框架。
  • op-贸易操作,职位类型。有效值:OP_BUYOP_SELL-1。默认值-1 意味着任何位置。
  • mn- 位置标识符,MagicNumber。默认值为-1,意味着任何标识符。

NumberOfBarOpenLastPos()函数。

该函数返回最后打开的位置的条数或-1。要考虑的职位的选择是由外部参数确定的。

  • sy- 市场工具的名称。如果设置了这个参数,函数将只考虑指定仪器的位置。默认值 -NULL表示 当前的市场工具。
  • tf- 时间框架。默认值0 表示当前的时间框架。
  • op- 贸易操作,职位类型。有效值:OP_BUYOP_SELL-1。默认值-1 意味着任何位置。
  • mn- 位置标识符,MagicNumber。默认值为-1,意味着任何标识符。

然后使用这些函数来检查你需要的条件。


非常感谢您!

我将研究一下!!!。

原因: