初学者的问题 MQL5 MT5 MetaTrader 5 - 页 740

 

我只是在这里重复这个问题,没有人在指标中回答...

我已经开始学习MQL5。我在编程方面没有经验,因此我有一些问题和疑惑。其中一些问题可以通过分析实例和部分 "直觉 "自己解决,但有些方面很难马上理解。我开始研究一件简单的事情--在主图表窗口中显示两条图线。我将当前时间框架的收盘价和额外的(相关的,后面会有说明)工具的收盘价向后画1000条。相关的工具是下一个系列的期货,它的流动性差,而且在数据中总是有一些空白,也就是说,交易的数量不像主要的期货系列那样频繁。任务似乎已经完成,但有错误。我不能说平滑是否有用,所以我使用了iMA的第1期,这样如果有必要,我可以在不返工的情况下将其平滑。

以下是问题。

1.编译时,当我把iMA缓冲区复制到一个数组时,我看到一个警告 "由于类型转换,可能会丢失数据"。这是什么,为什么,我们谈论的是什么类型的转换?线条画得很正常,似乎没有什么遗漏。

2.在指标工作后,两个工具的线条出现在主图表窗口,我看到它们并不同步。也就是说,第一个工具是正常的,对应于主窗口的蜡烛图。 第二个(较少的液体)有空隙,因此它逐渐被 "挤压",导致不同步。我需要它以某种方式在时间上保持同步。这已经远远超出了我的能力。我必须直观地看到它,才能明白缺少什么。

下面是它的一个截图,看起来像什么。黄线是相对于绿线需要同步的内容。因此,黄线,其中日期的差距只是前一个值与下一个值的 "连接",而不是用缺失的日期进行挤压。代码在附件中。

附加的文件:
 
ottenand:

我只是在这里重复这个问题,没有人在指标中回答...

我已经开始学习MQL5。我在编程方面没有经验,因此我有一些问题和疑惑。其中一些问题可以通过分析实例和部分 "直觉 "自己解决,但有些方面很难马上理解。我开始研究一件简单的事情--在主图表窗口中显示两条图线。我将当前时间框架的收盘价和额外的(相关的,后面会有说明)工具的收盘价向后画1000条。相关的工具是下一个系列的期货,它的流动性差,而且在数据中总是有一些空白,也就是说,交易的数量不像主要的期货系列那样频繁。任务似乎已经完成,但却有错误。我不能说平滑是否有用,所以我使用了iMA的第1期,这样如果有必要可以平滑而不返工。

以下是问题。

1.编译时,当我把iMA缓冲区复制到一个数组时,我看到一个警告 "由于类型转换,可能会丢失数据"。这是什么,为什么,我们谈论的是什么类型的转换?线条画得很正常,似乎没有什么遗漏。

2.在指标工作后,两个工具的线条出现在主图表窗口,我看到它们并不同步。也就是说,第一个工具是正常的,对应于主窗口的蜡烛图。 第二个(较少的液体)有空隙,因此它逐渐被 "挤压",导致不同步。我需要它以某种方式在时间上保持同步。这已经远远超出了我的能力范围。我必须直观地看到它,才能明白缺少什么。

下面是它的一个截图,看起来像什么。黄线是相对于绿线需要同步的内容。因此,黄线,其中日期的差距只是前一个值与下一个值的 "连接",而不是用缺失的日期进行挤压。代码在附件中。


指示器手柄必须是int类型。例子见这里:CopyBuffer

int  CopyBuffer( 
   int       indicator_handle,     // handle индикатора 
   int       buffer_num,           // номер буфера индикатора 
   int       start_pos,            // откуда начнем  
   int       count,                // сколько копируем 
   double    buffer[]              // массив, куда будут скопированы данные 
   );
 
Vladimir Karputov:


指标句柄必须是int类型。例子见这里:CopyBuffer

对了,我错过了这一点,编译错误已经消失了,谢谢!

但目前的主要问题是时间差异,它仍然是相关的。如果没有它的解决方案,就不可能进行例如工具之间的数学运算,我计划对其进行测试。

 
ottenand:

对了,我忽略了这一点,编译时的错误已经消失了,谢谢!

但目前的主要问题,即时间问题,仍然是相关的。如果不解决这个问题,就不可能,例如,在仪器之间进行数学运算,我计划对此进行测试。


如果我是你,我会从正确的编码开始 - 问题是你现在的风格是鲁莽的 "四重奏" - 即没有检查,一切都在随机。

开始修复OnInit()。

  1. 拿到手柄后,你需要检查其正确性
  2. 如果一切正常,返回的不是 "0",而是 "INIT_SUCCEED"。
所有这些都在iMA 的例子中。只有这样,我们才能继续前进。

 
Vladimir Karputov:


如果我是你,我会从正确编写代码开始--问题是,你现在的风格是鲁莽的 "四分法"--即没有检查,一切随心所欲。

开始纠正OnInit()。

  1. 得到手柄后,你需要检查是否正确
  2. 如果OK,返回的不是 "0 "而是 "INIT_SUCCEED"。
所有这些都在iMA 的例子中。只有这样,你才能继续前进。

朋友,谁告诉你,你不能用五号钉书,而用四号写得很好?

这不是关于PLATFORM(平台),而是关于特定抄写员的脑袋......

Preobrazhensky教授说得没错,问题不在壁橱里,而在脑袋里......


 
Vladimir Karputov:


如果我是你,我会从正确的代码编写开始--问题是你现在的风格是鲁莽的 "四分法"--也就是说,没有检查,一切都在侥幸之中。

开始纠正OnInit()。

  1. 得到手柄后,你需要检查是否正确
  2. 如果OK,返回的不是 "0 "而是 "INIT_SUCCEED"。
所有这些都在iMA 的例子中。只有这样,你才能继续前进。

好了,现在我知道我的风格叫什么了)确实,我从第五版开始,从头开始)。

谢谢,我已经纠正了第1点和第2点。 整个问题出在计算块上。我将思考如何根据时间来规定两种乐器的小节的位置。否则就会出现滞后和同样的警告#4806。

附加的文件:
 
ottenand:

好了,现在我知道我的风格叫什么了)真的,我从第五版开始,从头开始)。

谢谢,我修正了第1和第2点。 整个问题出在计算块上。我将思考如何根据时间来规定两个乐器的杆件的位置。否则就会出现滞后和同样的警告#4806。

对了!因此,例如,在M1的期货 "A "上,有13分钟、14分钟和15分钟的柱子。但期货 "B "只有13分钟和15分钟的条形图--也就是一个缺口。在某处有文章,搜索 "洞 "字。
 
Vladimir Karputov:
呜呼!正确因为,例如,M1期货 "A "有13分钟、14分钟和15分钟的条形。但是,期货 "B "在13分钟和15分钟时才有栏杆--那是一个洞。在某处有一些文章,按 "洞 "字搜索。
这就是我所说的)错误#4806似乎是原因所在。好的,我去找找看)。
 

下午好。

你能告诉我如何找到当前柱子的趋势线的价格吗?试着通过ObjectGetDouble,但没有得到想要的结果。示例代码。

   ObjectCreate(0,"O_Resistance",OBJ_TREND,0,UpTime_2[0],UpFractal_2,UpTime_1[0],UpFractal_1);
   ObjectMove(0,"O_Resistance",0,UpTime_2[0],UpFractal_2);
   ObjectMove(0,"O_Resistance",1,UpTime_1[0],UpFractal_1);
   ObjectSetInteger(0,"O_Resistance",OBJPROP_RAY_RIGHT,true);
   ObjectSetInteger(0,"O_Resistance",OBJPROP_COLOR,O_Resistance_Color);
   ObjectSetInteger(0,"O_Resistance",OBJPROP_STYLE,O_Resistance_Style);
   ObjectSetInteger(0,"O_Resistance",OBJPROP_WIDTH,O_Resistance_Width);


double O_ResistancePrice = ObjectGetDouble(0,"O_Resistance",OBJPROP_PRICE,0); // при любом баре дает координату изначальной точки луча, а нужна цена
                                                                              // соответствующая текущему бару или первому
 
MaksGroup:

下午好。

你能告诉我如何找到当前柱子的趋势线的价格吗?试着通过ObjectGetDouble,但没有得到想要的结果。示例代码。

ObjectGetValueByShift()(仅限MT4)ObjectGetValueByTime()(MT4,MT5)。