错误、漏洞、问题 - 页 2041

 
Kirill Belousov:
我们没有指定子窗口号码,但该函数告诉我们(这是一个输出参数,而不是输入参数)--在指定ID的图表的哪个子窗口中有一个价格图表,它告诉我们什么价格和时间对应于我们在该图表中指定的X,Y坐标。

这是可以理解的,通过引用传递参数。但问题是开放的:为什么该函数没有看到指标安装在哪个子窗口中,而不从它那里获取数据?

 
Vitaly Muzichenko:

这是可以理解的,通过引用传递参数。但问题是开放的:为什么该函数不能看到指标安装在哪个子窗口的编号,并从中获取数据?

图表高度_像素
 
fxsaber:
图表高度_像素

如果你在子窗口中有几个指标,这就是一个完整的计算故事,但还是要感谢你的时间。

 
Vitaly Muzichenko:

如果在子窗口中有几个指标,那就是一个完整的计算故事了,但还是要感谢你的时间。

https://www.mql5.com/ru/docs/chart_operations/chartwindowfind

Документация по MQL5: Операции с графиками / ChartWindowFind
Документация по MQL5: Операции с графиками / ChartWindowFind
  • www.mql5.com
1. Функция ищет на указанном графике подокно с указанным "коротким именем" индикатора (короткое имя выводится слева вверху подокна) и в случае удачи возвращает номер подокна. Не следует путать короткое имя индикатора и имя файла, которое указывается при создании индикатора функциями iCustom() и IndicatorCreate(). Если короткое наименование...
 

是的,这些都是我知道的功能。

任务很简单,我们需要将第4个子窗口中的对象(红色突出显示)与价格联系起来,在这种情况下,它是-0.02,图中的Y坐标是34


 
Vitaly Muzichenko:

任务很简单,你需要将子窗口4中的对象(红色突出显示)与价格联系起来,在这种情况下,它是-0.02,图中的Y坐标是34

#property indicator_separate_window

#property indicator_buffers 0 
#property indicator_plots 0

#define  CHART_SUBWINDOW_BORDER_SIZE 2 // Размер разделителя подокон

void OnInit()
{
  int X = 0;
  int Y = 0;

  const int SubWindow = ChartWindowFind();
  
  for (int i = 0; i < SubWindow; i++)  
    Y += (int)ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS, i) + CHART_SUBWINDOW_BORDER_SIZE;
  
  int SubWindow2;
  datetime time;
  double Price;
  
  if (ChartXYToTimePrice(0, X, Y, SubWindow2, time, Price))
    Print(SubWindow2);
}

int OnCalculate ( const int rates_total, const int, const int, const double &[] )
{ 
  return(rates_total);
}
 
fxsaber:

谢谢你的成品变体,我会试着把它附在指标上。

P.S. 它成功了,再次感谢!


但问题是,如果我必须与手鼓共舞,为什么要在函数中指定子窗口编号?

 
Vitaly Muzichenko:

如果要玩,为什么要在函数中指定子窗口号?

关于交易、自动交易系统和策略测试的论坛

错误, 漏洞, 问题

Kirill Belousov, 2017.10.15 19:50

我们不指定子窗口号码,函数告诉我们(这是一个输出参数,而不是输入参数)--在指定ID的图表中,哪个子窗口是价格图表,什么价格和时间对应于我们在该图表上指定的X,Y坐标。
 
Vitaly Muzichenko:

谢谢你的完成版,我会试着把它附在指标上。

P.S. 它成功了,再次感谢!


但问题是,我为什么要在函数中指定子窗口编号,如果我想把它弄得一团糟?

通过使用ChartGetInteger()和这个参数,可以缩短舞蹈的时间。

图表_窗口_距离

指标子窗口的上边界与主图表窗口的上边界之间沿垂直Y轴的距离,以像素计。在鼠标事件中,光标坐标以主图表窗口的坐标传递,而指标子窗口中图形对象的坐标则相对于子窗口的左上角设置。

该值是将主图表的绝对坐标转换为子窗口的局部坐标所必需的,以便正确地处理图形对象,其坐标是相对于子窗口框架的左上角设置的。

int r/o修改器 - 子窗口编号

 
Kirill Belousov:

通过使用ChartGetInteger()和这个参数,可以缩短舞蹈的时间。

图表_窗口_距离

指标子窗口的上框与主图表窗口的上框之间沿垂直Y轴的距离,以像素为单位。在鼠标事件中,光标坐标以主图表窗口的坐标传递,而指标子窗口中图形对象的坐标则相对于子窗口的左上角设置。

该值是将主图表的绝对坐标转换为子窗口的局部坐标所必需的,以便正确地处理图形对象,其坐标是相对于子窗口框架的左上角设置的。

int r/o修改器 - 子窗口编号

谢谢,缩短了,结果一样,但代码更少了!