[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 308

 
美国现在几点钟? 美国几点钟开/关? 日本几点钟开/关? 只是随着冬令时的废除,有点不清楚......欧洲、亚洲、美国都在调时钟吗?
 
Elenn:
这个解决方案真的很有创意,我们应该试试。但是当阵列被重新初始化时,数据不会因为重新初始化而丢失吗? 。

如果你增加阵列的大小,之前输入的数据不会丢失。而 "捕获的"(新)细胞将包含RAM垃圾。而且,如果你缩小阵列,在缩小的单元中的数据将不可挽回地丢失。这就是编程的基础知识。
 
vilard:

MODE_TRADE挂单需要多长时间才能变成MODE_HISTORY订单?

在任何时候都是如此。待处理的订单 不存储在历史中。

一旦它被转化为市场订单并被关闭 - 那么它将成为历史,但具有市场订单类型。

比如说。

如果有OP_BUYSTOP,那么它被转换为OP_BUY。 其结束,它将被列入历史。

但是,从OP_BUYSTOP转换到OP_BUY后,原来的OP_BUYSTOP将不会 出现在历史中。

 
001:

晚上好,请指教。在不同的柱子上有两个指标值。如何画一条穿过它们的线以及如何在指标中使用它?谢谢你!

它们之间的线可以用对象OBJ_TREND 来画。第一个坐标是第一个柱子的时间和价格,第二个坐标是第二个柱子的时间和价格。

职能。

//+----------------------------------------------------------------------------+
void SetTLine(color cl, string nm, datetime t1=0, double p1=0, datetime t2=0, double p2=0, int st=0, int sz=0) {
   if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_TREND, 0, 0, 0, 0, 0);
   ObjectSet(nm, OBJPROP_TIME1    , t1);
   ObjectSet(nm, OBJPROP_PRICE1   , p1);
   ObjectSet(nm, OBJPROP_TIME2    , t2);
   ObjectSet(nm, OBJPROP_PRICE2   , p2);
   ObjectSet(nm, OBJPROP_COLOR    , cl);
   ObjectSet(nm, OBJPROP_STYLE    , st);
   ObjectSet(nm, OBJPROP_WIDTH    , sz);
   ObjectSet(nm, OBJPROP_RAY      , 0);
}
//+----------------------------------------------------------------------------+

我希望这里面的一切都很清楚。

cl - 对象颜色,nm - 对象名称,t1, p1 - 原点坐标,t2, p2 - 末点坐标,st - 线条样式,sz - 尺寸。

你也可以添加射线:1-射线,0-段。这个函数的最后一行定义了一个段。你可以用要传递的参数的名字代替0。

至于如何在指标中使用它(这一行)--你需要知道你从它那里需要什么。但其上的数据(线)可以用标准函数得到

ObjectGet("object name",required object property)。

 
artmedia70:

你可以用OBJ_TREND对象在它们之间画一条线。第一个坐标是第一个柱子的时间和价格,第二个坐标是第二个柱子的时间和价格。

职能。

我希望这里面的一切都很清楚。

cl - 对象的颜色,nm - 对象名称,t1, p1 - 原点坐标,t2, p2 - 末点坐标,st - 线条风格,sz - 尺寸。

你也可以添加射线:1-射线,0-段。这个函数的最后一行定义了一个段。你可以用要传递的参数的名字代替0。

至于如何在指标中使用它(这一行)--你需要知道你从它那里需要什么。然而,其上的数据(线)可以用标准函数得到

ObjectGet("object name", the necessary object property)。


非常感谢您!如果我可以的话,还有一个问题。如何工作(我需要知道趋势在某个条形图上的数值),如何在EA中运作趋势。我想把指标的一部分转移到专家顾问中(计算)。
 
无法进入该账户!这他妈的是什么 "常见错误"?
 
是不是电脑又出了什么问题?
 
Elenn:
这个解决方案真的很有创意,我们应该试试。


我就引用一下Delphi教程中的一段文字吧。了解一下也无妨。

"动态数组 "是动态的数据结构,所以程序应该规定当你用完这些数组时,可以明确地从计算机内存中删除它们。从计算机内存中删除不必要的动态变量的过程有时被称为垃圾收集"。

在MQL4中的一个变体是,当程序完成对动态数组的处理时,使用ArrayResize()函数https://docs.mql4.com/ru/array/ArrayResize,将动态数组的大小调整为零长度。

 
drknn:


我想我将引用Delphi教程中的一小段文字。这很好理解。

"动态数组 "是动态的数据结构,所以程序应该规定当你用完这些数组时,可以明确地从计算机内存中删除它们。从计算机内存中删除不必要的动态变量的过程有时被称为垃圾收集"。

一个适合MQL4语言的变体是在你完成对动态数组的处理后,使用ArrayResize()函数https://docs.mql4.com/ru/array/ArrayResize,将动态数组的长度调整为零。

这都是事实:清理垃圾是一个很好的经验法则......。

但在这种情况下,如何确定我们现在是否应该清理 "垃圾",或者反过来说:这不是垃圾,而是进一步计算的必要数据。

按照我的理解,deinit()应该用来清理垃圾,但...它不仅在交易工具的图表被删除和EA被删除时被执行,而且在TF被改变时也被执行。在这种情况下,TF的所有累积数据都会丢失,当专家顾问回到前一个时间框架时,将以一个零数组重新开始工作。如果我们改变任何EA的参数,也会发生同样的情况。

事实证明,在某些情况下,"清扫 "是一个复杂的逻辑过程,而不是简单地改变一个数组的大小。

 
001:

非常感谢您!如果我可以的话,还有一个问题。如何工作(我需要知道趋势在某个柱子上的数值),如何在EA中与趋势一起工作。我想把指标的一部分转移到专家顾问中(计算)。

ObjectGetValueByShift()来帮助你

你将如何与之合作--只有你自己知道......。