新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1896

 
Vitaly Muzichenko #:

我搞不清楚如何解决这个问题

我需要一个滴答图,也就是一个滴答来--将缓冲区移开一个,然后画出

我们需要画出60个最后的ticks,即60个条形。

---

这应该按照 "Ticky "窗口中的实现方式进行。


它是一条线,而不是酒吧。

该代码在一个新窗口中画出了条形图。它可能会有帮助。

附加的文件:
SaveTicks.mq4  6 kb
 
Vitaly Muzichenko #:

我搞不清楚如何解决这个问题

我需要一个滴答图,也就是一个滴答来--将缓冲区移开一个,然后画出

我们需要画出60个最后的ticks,即60个条形。

---

应该按照在 "ticks "窗口中实施的方式进行。


为了解决这个问题,我们需要另一个阵列。它可以是一个固定的长度,例如60。它应该被填充成刻度线,每次在循环的帮助下将数据移位1。在每个tick被写入后,这个数组应该被复制到Buffer数组中,其数据将被显示在图表中。

 
Valeriy Yastremskiy #:

这不是酒吧,是一条线。

该代码在一个新的窗口中绘制条形图。这可能会有帮助。

我无法从中得到什么。也许我从错误的角度看问题?


Mihail Matkovskij#:

你还需要一个阵列来解决这个问题。它可以是一个固定的长度,例如60。它应该被填充成刻度,每次在循环的帮助下将数据移1。在每个tick被写入后,这个数组应该被复制到Buffer数组中,其数据将被显示在图表中。

我搞不清楚如何进行转变。

如果你不介意的话,给我看看代码

 
Vitaly Muzichenko #:

我无法从中得到什么。也许我从错误的角度看问题。


我搞不清楚如何进行转变。

如果你不介意的话,你能给我看看代码吗?

A[0]=Bid。

for(i=0;i<60;i++){A[i+1]=A[i]}

 
Valeriy Yastremskiy #:

A[0]=Bid。

for(i=0;i<60;i++){A[i+1]=A[i]}

我做到了,它是有效的。

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
  if(prev_calculated==0) {
    ArrayInitialize(Buffer1,EMPTY_VALUE);
  }
  double b=SymbolInfoDouble(Symbol(),SYMBOL_BID);
  Buffer1[0]=b;
  for(int j=10; j>0; j--) {
    Buffer1[j]=Buffer1[j-1];
  }
  return(rates_total);
}

---

直觉告诉我,我可以不要这个循环。

是这样吗?

 
Vitaly Muzichenko #:

我做到了,它是有效的。

---

直觉告诉我,你可以不做循环。

这是真的吗?

在时间序列中,这个循环是隐藏的。从哪边开始移动没有区别。对我来说,从0开始更有意义。我在MKL中没有看到任何移位功能。这是一个索引工作。它是先入为主,最后出局。在Python中它是这样的。它似乎不存在于MCL中。

 

这里有什么问题?

它开始工作得很好,但在每一个新的柱子上都有一个偏移和超出范围。

如何避免它?

---

P.S. 我想就是这样了,它工作得很好,我已经添加了

  if(rates_total-prev_calculated==1) {
    Buffer1[H+1]=EMPTY_VALUE;
  }
 
Vitaly Muzichenko #:

这里有什么问题?

它开始工作得很好,但在每一个新的柱子上都有一个偏移和超出范围。

如何避免它?

---

P.S. 似乎工作顺利,添加了

在索引的小边上检查是否小于0,在大边上检查是否大于数组的维数。数组或最后一个值的归零在每一个刻度上都有点不符合逻辑。

 
Valeriy Yastremskiy #:

在索引的小边上检查是否小于0,在大边上检查是否大于数组维数。将数组或最后一个值清零并不符合逻辑。

阵列为所有可用的历史,我不需要它。

我简直需要50-100条。

像这样


 

下午好。

我是以日分形的数值或垂直线的形式来显示的。该行不显示,数值为0。

这里有一段代码

 double FractalDayUpper = iFractals(Symbol(), PERIOD_D1, MODE_UPPER, 0);
   ObjectCreate("signal00",OBJ_LABEL,0,0,0,0,0);
   ObjectSet("signal00",OBJPROP_XDISTANCE,600);
   ObjectSet("signal00",OBJPROP_YDISTANCE,100);
   ObjectSetText("signal00",DoubleToString(FractalDayUpper,5),18,"Times New Roman", clrRed);


请告诉我什么是错的。