KimIV的有用功能 - 页 35

 
xrust писал (а)>>
还有一个问题,你是否介意我在我的函数中使用你的语法和变量名称,可以说是为了使它们标准化。

做你认为正确的事。

 

SetLabel()函数。

此函数设置当前图表中的OBJ_LABEL 文本标签对象。

  • nm- 对象的名称。必要的参数。
  • tx- 文本。必要的参数。
  • cl- 标记的颜色。必要的参数。
  • xd- 相对于参考角度的X坐标(像素)。必要的参数。
  • yd- 相对于基准角的Y坐标,单位为像素。必要的参数。
  • cr- 参考角号码。有效值:0左上1右上2左下3右下。默认值为0
  • fs- 字体大小。默认值为9
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Установка текстовой метки, объект OBJ_LABEL.                   |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    nm - наименование объекта                                               |
//|    tx - текст                                                              |
//|    cl - цвет метки                                                         |
//|    xd - координата X в пикселах                                            |
//|    yd - координата Y в пикселах                                            |
//|    cr - номер угла привязки        (0 - левый верхний,                     |
//|                                     1 - правый верхний,                    |
//|                                     2 - левый нижний,                      |
//|                                     3 - правый нижний )                    |
//|    fs - размер шрифта              (9 - по умолчанию  )                    |
//+----------------------------------------------------------------------------+
void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
  if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
  ObjectSetText(nm, tx, fs);
  ObjectSet(nm, OBJPROP_COLOR    , cl);
  ObjectSet(nm, OBJPROP_XDISTANCE, xd);
  ObjectSet(nm, OBJPROP_YDISTANCE, yd);
  ObjectSet(nm, OBJPROP_CORNER   , cr);
  ObjectSet(nm, OBJPROP_FONTSIZE , fs);
}
 

如何使用SetLabel()的例子。

  • 左上角有三个蓝色文字标签,字体为9号。
    SetLabel("Label1", "Текстовая метка", Blue, 5, 15);
    SetLabel("Label2", "Ещё одна текстовая метка", Blue, 5, 30);
    SetLabel("Label3", "Параметр cr=0", Blue, 5, 45);

  • 右上角 有三个紫色文字标签,字体为12号。
    SetLabel("Label1", "Текстовая метка", Magenta, 5, 15, 1, 12);
    SetLabel("Label2", "Ещё одна текстовая метка", Magenta, 5, 30, 1, 12);
    SetLabel("Label3", "Параметр cr=1", Magenta, 5, 45, 1, 12);

  • 右下角有三个绿色文字标签,字体为12号。
    SetLabel("Label1", "Текстовая метка", Green, 5, 15, 3, 12);
    SetLabel("Label2", "Ещё одна текстовая метка", Green, 5, 30, 3, 12);
    SetLabel("Label3", "Параметр cr=3", Green, 5, 45, 3, 12);


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

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

创建一个 "inluder "文件(mqh)(可能是2个--"贸易 "和 "其他"),就其名称达成一致,并强迫 "开发者 "将其纳入分发范围。

你不能扼杀这个想法,它已经被整合了很长时间了。作为一个非专业人士,我的梦想是让普通用户只负责决策,把他从复杂的软件中解放出来。

伊戈尔的发展(其一致性和细节令人惊叹)尽可能地接近了这一点。此外,作者不仅编程,而且还不断保持他的

在实际交易中的 顾问 这增加了代码的实用价值。

我很想知道Igor对其开发的mqh-framing的可能性的看法,以及这种实现的优点和缺点。

 
granit77 писал (а)>>
我想知道伊戈尔对其开发的mqh设计的可能性的看法,这种实现的优点和缺点。

关于可能性...

我已经把MQH的文件做了一段时间了...我还没有把它们贴出来...我有一张王牌...。最后的和弦将是...我将张贴所有的功能,并通过张贴mqh-files来总结它。

利与弊...

MQH-文件很方便。你可以在不同的专家顾问中使用它们。一个特定的EA的代码被大大减少。只剩下光秃秃的逻辑和其他一些东西,所有的小玩意和包装物都在外面。

然而,我很少使用mqh文件,一般来说,只有一个。它是stdlib.mqh。我已经把所有必要的功能都复制到专家顾问的文件中。这对我来说更方便。我养成了这个习惯,当时我正在大量处理订单,经常忘记向客户发送一个或另一个mqh-file。此外,我想把一个EA文件复制到不同的终端文件夹,而不是在它之后拖动整堆的inludes。

 
这不仅仅是一种喜悦!它是令人愉快的!没有这样一个图书馆的发行将被认为是不完整的,这一天已经不远了。
 

也许你有一个脚本在有用的功能,可以做文章中描述的开单 http://www.kroufr.ru/content/view/1027/124/。

如果没有,请告诉我在哪里可以找到。 .

 

CrossPointOfLines()函数。

这个函数计算两条线的交点的坐标。每条线都由其点的一对坐标来定义。三个数组作为参数被传递给函数。

  • x- 尾数阵列。它应该包含四个 元素:x[0]x[1]--第一行的底线,x[2]x[3]--第二行的底线。
  • y- 序列的数组。应该包含四个 元素:y[0],y[1]- 第一行的坐标,y[0],y[1]- 第二行的坐标。
  • t- 两条线的交点的坐标阵列。在函数正常执行后,这个数组将包含两个 元素:t[0] 是两线相交点的标点,t[1] 是同一点的序数。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Вычисляет координаты точки пересечения двух прямых.            |
//|             Каждая прямая задаётся парой координат своих точек.            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x - массив абсцисс              x[0], x[1] - первая прямая              |
//|                                    x[2], x[3] - вторая прямая              |
//|    y - массив ординат              y[0], y[1] - первая прямая              |
//|                                    y[0], y[1] - вторая прямая              |
//|    t - массив искомых координат    t[0]       - абсцисса                   |
//|                                    t[1]       - ордината                   |
//+----------------------------------------------------------------------------+
void CrossPointOfLines(double& x[], double& y[], double& t[]) {
  double z=(y[3]-y[2])*(x[1]-x[0])-(y[1]-y[0])*(x[3]-x[2]);
  ArrayResize(t, 2);
  ArrayInitialize(t, 0.0);

  if (z==0) Print("CrossPointOfLines(): Не удалось найти точку пересечения!");
  else {
    double xy1=x[1]*y[0]-x[0]*y[1];
    double xy2=x[3]*y[2]-x[2]*y[3];
    t[0]=NormalizeDouble((xy1*(x[3]-x[2])-xy2*(x[1]-x[0]))/z, 0);
    t[1]=(xy1*(y[3]-y[2])-xy2*(y[1]-y[0]))/z;
  }
}
 

使用CrossPointOfLines()函数的一个例子。

作为使用CrossPointOfLines()函数的一个例子,我传统上提供我的脚本(见附件)。为了使脚本正常工作,你需要在当前图表上画出两条相交的线,其类型可以是垂直、水平或趋势。然后,该脚本应附在图表上。脚本的结果是在两条线的交汇点上标记 左边的价格

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

附加的文件:
 

SetRegression()函数。

此函数设置当前图表上线性回归通道的OBJ_REGRESSION 对象。

  • cl- 对象的颜色。必要的参数。
  • nm- 对象的名称。当传递默认值--""时,就会 使用当前条形图的开盘时间作为名称。
  • t1- 对象设置时间的第一个坐标。默认值 -0- 第十条的开放时间。
  • t2- 对象设置时间的第二个坐标。
  • ry-BOW 属性的标志。 默认值是False
  • st- 线条风格。有效值是STYLE_SOLID(默认)、STYLE_DASHSTYLE_DOTSTYLE_DASHDOT
  • wd- 线条宽度。默认值为1
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Установка объекта OBJ_REGRESSION канал линейной регрессии.     |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    cl - цвет линии                                                         |
//|    nm - наименование               ( ""   - время открытия текущего бара)  |
//|    t1 - время открытия бара        (  0   - Time[10])                      |
//|    t2 - время открытия бара        (  0   - Time[0])                       |
//|    ry - луч                        (False - по умолчанию)                  |
//|    st - стиль линии                (  0   - простая линия)                 |
//|    wd - ширина линии               (  1   - по умолчанию)                  |
//+----------------------------------------------------------------------------+
void SetRegression(color cl, string nm="", datetime t1=0, datetime t2=0,
                    bool ry=False, int st=STYLE_SOLID, int wd=1) {
  if (nm=="") nm=DoubleToStr(Time[0], 0);
  if (t1<=0) t1=Time[10];
  if (t2<=0) t2=Time[0];
  if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_REGRESSION, 0, 0,0, 0,0);
  ObjectSet(nm, OBJPROP_TIME1, t1);
  ObjectSet(nm, OBJPROP_TIME2, t2);
  ObjectSet(nm, OBJPROP_COLOR, cl);
  ObjectSet(nm, OBJPROP_RAY  , ry);
  ObjectSet(nm, OBJPROP_STYLE, st);
  ObjectSet(nm, OBJPROP_WIDTH, wd);
}