KimIV的有用功能 - 页 25

 

TimeOpenLastPos()函数。

该函数返回最后一次打开位置的时间。选择要考虑的位置是由外部参数定义的。

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

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderOpenTime()) t=OrderOpenTime();
            }
          }
        }
      }
    }
  }
  return(t);
}
附上一个测试TimeOpenLastPos()函数的脚本。
附加的文件:
 
Prival:
后台是否有泡沫分拣功能?

不能用,但我花了10分钟就做出来了

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 10.06.2008                                                     |
//|  Описание : Выполняет пузырьковую сортировку элементов массива.            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    a - массив элементов                                                    |
//+----------------------------------------------------------------------------+
void BubbleSort(double& a[]) {
  double t;
  int    i, j, n=ArraySize(a);

  for (i=n-1; i>0; i--) {
    for (j=0; j<i; j++) {
      if (a[j]>a[j+1]) {
        t=a[j];
        a[j]=a[j+1];
        a[j+1]=t;
      }
    }
  }
}
附上一个测试BubbleSort()函数的脚本。
附加的文件:
 

函数BarsBetweenLastFractals()。

该函数返回最后两个分形之间的条数或-1。采取分形的市场工具和时间框架由参数设定。

  • sy- 市场工具的名称。默认值为"" 或当前市场工具的NULL
  • tf- 时间框架(每条的分钟数)。默认值0 表示当前的时间框架。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 10.06.2008                                                     |
//|  Описание : Возвращает количество баров между двумя последними фракталами. |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента        ("" или NULL - текущий символ)     |
//|    tf - таймфрейм                       (    0       - текущий ТФ)         |
//+----------------------------------------------------------------------------+
int BarsBetweenLastFractals(string sy="", int tf=0) {
  double fu=0, fd=0;
  int    i, nu=0, nd=0;

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=2; i<100; i++) {
    fu=iFractals(sy, tf, MODE_UPPER, i);
    if (fu!=0) {
      if (nu==0) nu=i;
    }
    fd=iFractals(sy, tf, MODE_LOWER, i);
    if (fd!=0) {
      if (nd==0) nd=i;
    }
    if (nu>0 && nd>0) return(MathAbs(nu-nd));
  }
  Print("BarsBetweenLastFractals(): Фракталы не найдены");
  return(-1);
}
附上一个测试BarsBetweenLastFractals()函数的脚本。
附加的文件:
 

SecondsAfterCloseLastPos()函数。

该函数返回最后一个位置被关闭后的秒数。选择要考虑的位置是由参数指定的。

  • sy- 市场工具的名称。如果设置了这个参数,函数将只考虑指定仪器的位置。默认值-"" 意味着任何市场工具。NULL 值表示当前的仪器。
  • op- 贸易操作,职位类型。有效值:OP_BUYOP_SELL-1。默认值-1 意味着任何位置。
  • mn- 位置标识符,MagicNumber。默认值为-1,意味着任何标识符。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает количество секунд после закрытия последней позиций. |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
datetime SecondsAfterCloseLastPos(string sy="", int op=-1, int mn=-1) {
  datetime t;
  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 (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) t=OrderCloseTime();
            }
          }
        }
      }
    }
  }
  return(TimeCurrent()-t);
}
P.S. 附上一个测试SecondsAfterCloseLastPos()函数的脚本。
附加的文件:
 

你好

一些建议。

我有一个EA,在某个时间段向双方下单

请用手指解释如何在第一个订单触发时使第二个订单自动删除。

或者调整一下

谢谢你

 
aceventura:

你好

一些建议。

我有一个EA,在某个时间段向双方下单

请用手指解释如何在第一个订单触发时使第二个订单自动删除。

或者调整一下

谢谢你

KimIV

伊戈尔。你有足够的手指吗?

 
aceventura:

你好

一些建议。

我有一个EA,在某个时间段向双方下单

请用手指解释如何在第一个订单触发时使第二个订单自动删除。

或者调整一下

谢谢你

首先取该分支中的订单数,如果它返回"==1"、"<2 "或"==奇数",则调用该分支中的函数 "关闭订单"。

 
Vinin:

KimIV

伊戈尔。你有足够的手指吗?

可能不会...我只有两个:食指和握把...嘻

 
SergNF:

首先在这个分支中提取订单数函数,然后如果它返回"==1"、"<2 "或"==奇数",则从这个分支调用 "关闭订单 "函数。

订单数量 的功能将不起作用,因为EA对每对订单的设置是不同的。而且它同时在不同的货币对上设置订单。那么,如果对两对进行了四次下单,并触发了一次,那么就会删除其中的三次,并删除每一次的相反订单。