KimIV的有用功能 - 页 43

 
Tsyrus писал (а)>>

这就是所有!!!!!

>> 谢谢你!

 

伊戈尔,有一个很好的指标,可以把几个蜡烛合并成一个。但它只在小时图上起作用。是否有可能使其普及?

我想感谢你。

 

GetNearestDownFractal()函数。

这个函数搜索最近的底部分形并返回其价格水平。这个函数的特殊性在于可以为分形设置一个任意的公式。标准的、普遍接受的分形公式是2-2。这意味着左边有2条,右边有2条。有了这个功能,你甚至可以进行非常奇特的分形,如8-2(左边8条,右边2条)或5-3(左边5条,右边3条)等等。该函数接受以下可选参数。

  • sy- 仪器的名称。""NULL- 当前符号。默认值为NULL
  • tf- 时间框架。默认值为0--当前符号。
  • nl- 左边的条数。默认值为2
  • nr- 右边的条数。默认设置为2
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Возвращает ценовой уровень ближайшего нижнего фрактала         |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    nl - количество баров слева                                             |
//|    nr - количество баров справа                                            |
//+----------------------------------------------------------------------------+
double GetNearestDownFractal(string sy="0", int tf=0, int nl=2, int nr=2) {
  bool f;
  int  fb, i, nb=-1;

  if (sy=="" || sy=="0") sy=Symbol();
  if (nl<1) nl=1;
  if (nr<1) nr=1;

  fb=nr;
  while (nb<0) {
    fb++;
    f=True;
    for (i=fb; i>fb-nr; i--) {
      if (iLow(sy, tf, i)>iLow(sy, tf, i-1)) { f=False; break; }
    }
    if (f) {
      for (i=fb; i<fb+nl; i++) {
        if (iLow(sy, tf, i)>iLow(sy, tf, i+1)) { f=False; break; }
      }
      if (f) { nb=fb; break; }
    }
  }

  return(iLow(sy, tf, nb));
}
 

如何使用GetNearestDownFractal()的例子。

  • 当前图表上最近的底部分形的价格水平。分形公式为2-2(标准)。
    Message(GetNearestDownFractal());
  • 美元兑加元H1图表上最近的下分形的价格水平。分形公式为4-2。
    Message(GetNearestDownFractal("USDCAD", PERIOD_H1, 4));
  • 通过当前图表上最近的下分形5-3的价格水平画一条水平线
    double p=GetNearestDownFractal(NULL, 0, 5, 3);
    SetHLine(Red, "", p);

PS。附上一个测试函数GetNearestDownFractal()的脚本。

附加的文件:
 
KimIV писал (а)>>

如何使用GetNearestDownFractal()的例子。

  • 当前图表上最近的下限分形的价格水平。分形公式为2-2(标准)。
  • 美元兑加元H1图上最近的下分形的价格水平。分形的公式是4-2。
  • 通过当前图表上最近的下分形5-3的价格水平画一条水平线。

PS。附上一个测试GetNearestDownFractal()函数的脚本。

如果有可能的话,不仅可以搜索到最后一个分形...................UH!!

 
Tsyrus писал (а)>>

如果有可能搜索到的不仅仅是最后一个分形...................UH!!!

是的,例如,标记(用一条垂直线)所有与刚形成的分形的坐标相关的值>=1的分形(在过去9个小节期间),并在分形的上方显示这个值。通过帮助(我甚至不敢问)....

 

我很佩服你写这种东西的一般能力。我自己也是个不善言辞的人。刚刚开始学习MQL。

对不起,我偏离了主题!

我仍然不明白如何写作。

1.比较1条和2条的随机线和它在新的0条出现时的信号功能。

(大致上说,要评估线的上下运动方向,并穿过它们)

2.如何每小时/半小时/15分钟做一次。

请给我看一个简单的例子!?

或者给一个类似的链接。

提前感谢,即使你不理会它!!!。

 
Domynus писал (а)>>

1.当一个新的0条形成时,1条和2条的随机线及其相同的信号功能的比较。

(大致说来,要评估线的上下运动方向,并穿过它们)

2.如何每小时/半小时/15分钟做一次。

请给我看一个简单的例子!?

或者给一个类似的链接。

https://book.mql4.com/ru/samples/indicators
https://book.mql4.com/ru/build/conditions

 

谢谢你给我提供的随机性。

我只是觉得我还能做些什么。

那么如何在一个特定的时间间隔内只做一次交易呢?

(例如,信号调查每15、30或60分钟发生一次)

对功能本身感兴趣。

 

GetNearestUpFractal()函数。

这个函数搜索最近的上行分形并返回其价格水平。这个函数的特殊性在于可以为分形设置一个任意的公式。标准的、普遍接受的分形公式是2-2。这意味着左边有2条,右边有2条。有了这个功能,你甚至可以进行非常奇特的分形,如8-2(左边8条,右边2条)或5-3(左边5条,右边3条)等等。该函数接受以下可选参数。

  • sy- 仪器的名称。""NULL- 当前符号。默认值为NULL
  • tf- 时间框架。默认值为0--当前符号。
  • nl- 左边的条数。默认值为2
  • nr- 右边的条数。默认值 -2
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Возвращает ближайший верхний фрактал                           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL - текущий символ)                 |
//|    tf - таймфрейм                  ( 0 - текущий таймфрейм)                |
//|    nl - количество баров слева                                             |
//|    nr - количество баров справа                                            |
//+----------------------------------------------------------------------------+
double GetNearestUpFractal(string sy="0", int tf=0, int nl=2, int nr=2) {
  bool f;
  int  fb, i, nb=-1;

  if (sy=="" || sy=="0") sy=Symbol();
  if (nl<1) nl=1;
  if (nr<1) nr=1;

  fb=nr;
  while (nb<0) {
    fb++;
    f=True;
    for (i=fb; i>fb-nr; i--) {
      if (iHigh(sy, tf, i)<iHigh(sy, tf, i-1)) { f=False; break; }
    }
    if (f) {
      for (i=fb; i<fb+nl; i++) {
        if (iHigh(sy, tf, i)<iHigh(sy, tf, i+1)) { f=False; break; }
      }
      if (f) { nb=fb; break; }
    }
  }

  return(iHigh(sy, tf, nb));
}