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

 

你能给我一个提示吗?

在mql4中,有一个基于开盘价的MA的指标,它允许避免在当前条形上重新渲染。通过int start(),它运行良好。它清楚地显示了一切。

在mql5中,同样的指标不通过int start工作,它通过int OnCalculate工作。它不断地重新计算和绘制,一秒钟内图像就消失了,而且可能有不同的值,因为两个MAs的交叉点的边界情况,虽然两个MAs之间的距离被设定了,但它没有帮助。我想我不取第0个值,而是取MA缓冲区的第1个值,但没有成功,我还想在新条形图到来之前跳过这个函数,也没有成功(我甚至试图停止显示任何东西)。如何克服这种情况?

当从右到左翻转图表时,也会闪烁指示器并不断重新计算。

 
Sergey Dymov #:

你能给我一个提示吗?

在mql4中,有一个基于开盘价的MA的指标,它允许避免在当前条形上重新绘制。通过int start(),它工作正常。它清楚地显示了一切。

在mql5中,同样的指标不通过int start工作,它通过int OnCalculate工作。它不断地重新计算和绘制,一秒钟内图像就消失了,而且可能有不同的值,因为两个MAs的交叉点的边界情况,虽然两个MAs之间的距离被设定了,但它没有帮助。我想我不取第0个值,而是取MA缓冲区的第1个值,但没有成功,我还想在新条形图到来之前跳过这个函数,也没有成功(我甚至试图停止显示任何东西)。如何克服这种情况?

当从右到左翻转图表时,也会闪烁指示器并不断重新计算。

在这里提出问题--他们一定会提供帮助。

 
Sergey Dymov #:

你能给我一个提示吗?

在mql4中,有一个基于开盘价的MA的指标,它允许避免在当前条形上重新渲染。通过int start(),它运行良好。它清楚地显示了一切。

在mql5中,同样的指标不通过int start工作,它通过int OnCalculate工作。它不断地重新计算和绘制,一秒钟内图像就消失了,而且可能有不同的值,因为两个MAs的交叉点的边界情况,虽然两个MAs之间的距离被设定了,但它没有帮助。我想我不取第0个值,而是取MA缓冲区的第1个值,但没有成功,我还想在新条形图到来之前跳过这个函数,也没有成功(我甚至试图停止显示任何东西)。如何克服这种情况?

当从右到左翻转图表时,也会闪烁指示器并不断重新计算。

发布代码
 

图形上有这样一个东西

如果我没记错的话,我见过它用任何颜色做的。

如何?

 
Vitaly Muzichenko #:

图形上有这样一个东西

如果我没记错的话,我见过它用任何颜色做的。

如何?

F8和。


但这也是网格的颜色,所以不要选中


 
Artyom Trishkin #:

F8和

但这也是网格的颜色,所以不要选中

明白了,谢谢!

网格是需要的,太糟糕了,它没有分开。

P.S. 如何以编程方式从右侧边缘转移15个小节?
 
Vitaly Muzichenko #:

明白了,谢谢!

网格是需要的,太糟糕了,它没有被划分。

P.S. 如何以编程方式从右边缘转移15个小节?

这个怎么样?

//+------------------------------------------------------------------+
//| Функция включает/выключает режим отображения ценового графика с  |
//| отступом от правого края.                                        |
//+------------------------------------------------------------------+
bool ChartShiftSet(const bool value,const long chart_ID=0)
  {
//--- сбросим значение ошибки
   ResetLastError();
//--- установим значение свойства
   if(!ChartSetInteger(chart_ID,CHART_SHIFT,0,value))
     {
      //--- выведем сообщение об ошибке в журнал "Эксперты"
      Print(__FUNCTION__+", Error Code = ",GetLastError());
      return(false);
     }
//--- успешное выполнение
   return(true);
  }
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Примеры работы с графиком
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Примеры работы с графиком
  • www.mql5.com
Примеры работы с графиком - Константы графиков - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov #:

这个怎么样?

是的,但这是把按钮推开了

当你用手拖动标记时,它在到达右边缘之前会有相当程度的停顿--这是对终端的一个根本性的错误限制!

当你按下按钮时,最外层的条形图几乎粘到了右边缘,所以图表的信息值就会丢失。

你应该在没有达到15-20条时就按下按钮,而不是在每次出现新的条形图时都进行这种操作。只压缩一次。

P.S. 为什么有这样的限制和这么多的空位?


 
Vitaly Muzichenko #:

是的,但这是把按钮推开。

当你用手拖动标记时,它在到达右边的边缘之前经常停留在那里--这是对终端的一个根本性的错误限制。

当你按下按钮时,最外层的条形图几乎粘到了右边缘,所以图表的信息值就会丢失。

你应该在没有达到15-20条时就按下按钮,而不是在每次出现新的条形图时都进行这种操作。只压缩一次。

百分比

//+------------------------------------------------------------------+ 
//| Функция устанавливает размер отступа нулевого бара от правого    | 
//| края графика в процентах (от 10% до 50%). Для включения режима   | 
//| отступа, нужно установить значение свойства CHART_SHIFT равным   | 
//| true.                                                            | 
//+------------------------------------------------------------------+ 
bool ChartShiftSizeSet(const double value,const long chart_ID=0) 
  { 
//--- сбросим значение ошибки 
   ResetLastError(); 
//--- установим значение свойства 
   if(!ChartSetDouble(chart_ID,CHART_SHIFT_SIZE,value)) 
     { 
      //--- выведем сообщение об ошибке в журнал "Эксперты" 
      Print(__FUNCTION__+", Error Code = ",GetLastError()); 
      return(false); 
     } 
//--- успешное выполнение 
   return(true); 
  }
 
Alekseu Fedotov #:

百分比

工作,但最低限度是可以用手设定的缩进,并且至少是

在视觉上,大约是10%的最低值。为什么5%不起作用

原因: