KimIV的有用功能 - 页 53

 
KimIV >> :

IIFc()函数。

...

试图做一个缺失的三元运算符?

分,谢谢,以我的习惯,凡是能放大括号的地方就放大括号,这将是非常有用的。

 
CMEPTHiK писал (а)>>
我在读V.Yakimkin的书。"外汇市场--你的成功之道",看到这样几句话:"......从(道琼斯指数x日经指数)的差值...... "告诉我,伊戈尔,是否有可能以指标的形式实现和输出......

差值是ROC指标所 显示的速度。

 

伊戈尔,你的储藏室里难道没有一次性关闭所有仓位的功能,包括在关闭时考虑到反仓位?

即首先尽可能地关闭所有的反面仓位,考虑到反面仓位的手数不匹配,然后是亏损的、盈利的......。

 
alexx_v писал(а)>>

伊戈尔,你的仓库中是否有一次性关闭所有头寸的功能,包括在关闭时考虑到反头寸?

即首先关闭所有相反的头寸,尽可能考虑到很多相反头寸的错配,然后是亏损的、盈利的头寸......

不,我还没有。

 

ExistInHistoryCloseBetween()函数。

返回日期之间关闭(删除)的头寸或订单在历史上存在的标志。函数ExistInHistoryCloseBetween()接受以下参数。

  • sy- 市场工具的名称。""- 任何符号,NULL- 当前符号。默认值为""。
  • op- 贸易操作。有效值:-1OP_BUYOP_SELL,OP_BUYLIMITOP_BUYSTOP,OP_SELLLIMIT,OP_SELLSTOP。默认值-1 - 任何操作。
  • mn- 贸易标识符,MagicNumber。默认值-1 - 任何神奇的数字。
  • d1- 仓位关闭时间(等待订单删除)。默认值为0- 任何关闭时间(删除)。时间d1 必须短于d2
  • d2- 仓位关闭时间(等待订单删除)。默认值 -0- 任何关闭(删除)时间。时间d2 必须比时间d1 长。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 27.08.2008                                                     |
//|  Описание : Возвращает флаг существования в истории позиции или ордера,    |
//|           : закрытой (удалённого) между датами.                            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая операция)                 |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//|    d1 - время закрытия             ( 0   - любое время закрытия)           |
//|    d2 - время закрытия             ( 0   - любое время закрытия)           |
//+----------------------------------------------------------------------------+
bool ExistInHistoryCloseBetween(string sy="", int op=-1, int mn=-1,
                                datetime d1=0, datetime d2=0) {
  int i, 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=="") && ( op<0 || OrderType()== op)) {
        if ( mn<0 || OrderMagicNumber()== mn) {
          if ( d1<=OrderCloseTime() && ( d2==0 || d2>=OrderCloseTime())) return( True);
        }
      }
    }
  }
  return( False);
}
 

ExistInHistoryCloseBetween()的使用实例。

  1. 是否存在任何昨天关闭的头寸或昨天删除的订单,当前图表符号 的MagicNumber=0。
    datetime d1=iTime(NULL, PERIOD_D1, 1);
    datetime d2=iTime(NULL, PERIOD_D1, 0)-1;
    Message( IIFs( ExistInHistoryCloseBetween(NULL, -1, -1, d1, d2), "Есть", "Нет"));
  2. 在过去三小时内存在任何关闭(删除)的头寸或订单。
    datetime d1=TimeCurrent()-3*60*60;
    Message(IIFs(ExistInHistoryCloseBetween("", -1, -1, d1), "Есть", "Нет"));
  3. 在过去5分钟内是否有欧元的买盘被关闭。
    datetime d1=TimeCurrent()-5*60;
    Message( IIFs( ExistInHistoryCloseBetween("EURUSD", OP_BUY, -1, d1), "Да", "Нет"));

P.S. 附上一个测试ExistInHistoryCloseBetween()函数的脚本。

附加的文件:
 

ExistInHistoryOpenBetween()函数。

返回日期之间的历史上存在的头寸或订单开仓(设置)的标志。ExistInHistoryOpenBetween() 函数接受以下参数。

  • sy- 仪器的名称。""- 任何字符,NULL- 当前符号。默认值为""。
  • op- 贸易操作。有效值:-1OP_BUYOP_SELL,OP_BUYLIMITOP_BUYSTOP,OP_SELLLIMIT,OP_SELLSTOP。默认值-1 - 任何操作。
  • mn- 贸易业务的标识符,MagicNumber。默认值-1 - 任何神奇的数字。
  • d1- 开仓时间(等待下单)。默认值为0--任何开启(设置)时间。d1 的时间应该小于d2 的时间。
  • d2- 开仓时间(等待下单)。默认值为0- 任何开放(设定)时间。时间d2 必须比时间d1 长。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 27.08.2008                                                     |
//|  Описание : Возвращает флаг существования в истории позиции или ордера,    |
//|           : открытой (установленного) между датами.                        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//|    d1 - время открытия             ( 0   - любое время открытия)           |
//|    d2 - время открытия             ( 0   - любое время открытия)           |
//+----------------------------------------------------------------------------+
bool ExistInHistoryOpenBetween(string sy="", int op=-1, int mn=-1,
                               datetime d1=0, datetime d2=0) {
  int i, 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=="") && ( op<0 || OrderType()== op)) {
        if ( mn<0 || OrderMagicNumber()== mn) {
          if ( d1<=OrderOpenTime() && ( d2==0 || d2>=OrderOpenTime())) return( True);
        }
      }
    }
  }
  return( False);
}
 

下午好!

伊戈尔,你能告诉我如何把酒吧涂成我想要的颜色吗?

我将从头告诉你。我正在写一个分区交易的指标--威廉姆斯B市场的第四维度。我需要条形图的颜色是绿色、红色或灰色。

我写了一个指标,这是我得到的结果。

这不是我想要的。如何使一个酒吧在中间上色。我正在使用一个有两个坐标的矩形作为遮蔽方法。这就是我的整个问题所在,如何选择矩形的起点和终点的坐标。

请给我一个提示。

以下是该指标的代码。

附加的文件:
zonetrade.mq4  6 kb
 
Duke3D писал(а)>>

...
如何使一个条形图准确地在中间
被遮蔽。

请看一下平价指标。其源代码包含在MetaTrader 4中。

 

函数ExistInHistoryToDay()。

返回今天打开(设置)的头寸或订单在历史上存在的标志。函数ExistInHistoryToDay() 接收以下参数。

  • sy- 仪器的名称。""- 任何符号,NULL- 当前符号。默认值为""。
  • op- 贸易操作。有效值:-1OP_BUYOP_SELL,OP_BUYLIMITOP_BUYSTOP,OP_SELLLIMIT,OP_SELLSTOP。默认值-1 - 任何操作。
  • mn- 贸易业务的标识符,MagicNumber。默认值-1 - 任何魔力。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 06.08.2008                                                     |
//|  Описание : Возвращает флаг наличия ордера или позиции в истории за сегодня|
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool ExistInHistoryToDay(string sy="", int op=-1, int mn=-1) {
  int i, 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 ( op<0 || OrderType()== op) {
          if ( mn<0 || OrderMagicNumber()== mn) {
            if (TimeDay  (OrderOpenTime())==Day()
            &&  TimeMonth(OrderOpenTime())==Month()
            &&  TimeYear (OrderOpenTime())==Year()) return( True);
          }
        }
      }
    }
  }
  return( False);
}