错误、漏洞、问题 - 页 310

 

它有什么不同?

CHART_WIDTH_IN_BARS Ширина графика в барах
от
CHART_VISIBLE_BARS Количество баров на графике, доступных для отображения
 
Urain:

它有什么不同?

如果设置了缩进,右边可能有一个空字段。在这种情况下,CHART_VISIBLE_BARS将显示一个比CHART_WIDTH_IN_BARS 小的值。
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков - Документация по MQL5
 
Urain:

它有什么不同?

从字面上看是不同的。


 
Rosh:
问题是什么?

1.把脚本扭到帖子里,在图表上执行。脚本应该复制一定数量的条形图,并对20个最古老的条形图 进行解卷。

使用这种方式(我知道没有检查和各种错误的陷阱,但仍然)。

int  CopyRates(
   string           symbol_name,       // имя символа
   ENUM_TIMEFRAMES  timeframe,         // период
   int              start_pos,         // откуда начнем 
   int              count,             // сколько копируем
   MqlRates         rates_array[]      // массив, куда будут скопированы данные
   ); 

因此,在我指定的那些参数(条数和M1)下,脚本运行,但有时它拒绝正常工作。它发生在一定数量的酒吧(我得到了超过368700)。

在368800时,它返回的条数要少得多(但总是一个不同的数字--368732 / 368735 / 368736或在这附近的数字)。

但即使在360000时也不一定能正常工作,有的情况下它只是复制了10000条。

2.指定两个日期的变体真的让我感到震惊。 它不仅不接受0作为第一个日期(在我看来这是有道理的),而且还复制到10000。

虽然对于像start_time 这样的int,是可以理解的(我有经验),但这都是关于函数重载和编译器 "不理解 "某些事情。但这就是为什么10000条是一个单独的问题,它被称为 "百万分之一"。

按照我们的理解,10000分钟的条形图不会超过2011年,如果我理解正确的话,它们不会超过2月(从上述所有内容中可以看出,至少360000是肯定要装的)。

int  CopyRates(
   string           symbol_name,       // имя символа
   ENUM_TIMEFRAMES  timeframe,         // период
   datetime         start_time,        // с какой даты
   datetime         stop_time,         // по какую дату
   MqlRates         rates_array[]      // массив, куда будут скопированы данные
   ); 

PS

同时,正常和 "buggy"(当脚本只复制10000条)的速度相差很多倍。

PPS

请确保你把帮助的某些部分(或者说它们的例子)带到它们的逻辑结论,以避免含糊不清和其他 "愚蠢 "的情况。

支票应另外放置,等等。另外,在这种情况下,参数描述中没有交叉引用(至少在时间框架 中),也不清楚start_time和 start_pos 是什么类型。我猜是日期时间(否则为什么编译器会以0作为 start_time发誓

//Код по третьему варианту, может я что-то упустил?
//Так ругается - 'CopyRates' - ambiguous call to overloaded function
Copied = CopyRates(Symbol(),PERIOD_M1,0,TimeCurrent(),Rates);
//Так нет, но копирует только 10000 баров
Copied = CopyRates(Symbol(),PERIOD_M1,(datetime)0,TimeCurrent(),Rates);
 

这是一个错误还是我的技术不足?

void OnStart()
  {
//---
   long chart_id=ChartID();
   ChartSetInteger(chart_id,CHART_AUTOSCROLL,false);   // отключаем автоскролл
   while(!IsStopped())
     {
      //------------------      
      ChartNavigate(chart_id,CHART_END,-2410); // делаем навигацию, поставим константу
      //------------------
      Sleep(500);
      ChartSetString(chart_id,CHART_COMMENT,ChartGetInteger(chart_id,CHART_FIRST_VISIBLE_BAR));
      ChartRedraw(chart_id);// отображаем первый бар чарта после навигации
      Sleep(500);
     }        
  }


当从零条开始导航时,图表会抽搐。我特意在导航和更新之间插入了滑块,以突出问题。但是,即使没有滑块,这个错误也存在。事实证明,ChartNavigate()首先将图表移动到零,然后再将其移回。此外,它并不是每次都这样做。

至少,事实上,每次你调用ChartNavigate() 时,这个错误并不存在,它出现在你运行它时没有滑动。

Документация по MQL5: Операции с графиками / ChartNavigate
Документация по MQL5: Операции с графиками / ChartNavigate
  • www.mql5.com
Операции с графиками / ChartNavigate - Документация по MQL5
 
Urain:

这是一个错误还是我的技术不足?


当从零条开始导航时,图表会抽搐。我特意在导航和更新之间插入了滑块,以突出问题。但是,即使没有滑块,这个错误也存在。事实证明,ChartNavigate()首先将图表移动到零,然后再将其移回。此外,它并不是每次都这样做。

至少,事实上,每次你调用ChartNavigate() 时,这个错误并不存在,它出现在你运行它时没有滑动。


试着从 ChartNavigate函数的例子不工作,请帮助
 
Rosh:
试试分支中的例子ChartNavigate函数不工作,请帮助。

那么,在这个例子中,有什么与我的代码有本质的不同呢?

只是在你的代码中,导航被调用一次,而我需要将图表一直保持在所需的条形上(无论用户的操作如何)。

我试过你的例子,在没有图表更新的情况下运行我的代码(尽管这对我很重要,因为程序使用了很多图形转换),但也没有成功。笨蛋仍然在。我仍然导航到同一个点,然后导航到零点栏。

我还发现使用来自当前栏的导航是不可接受的,因为用户可能在程序运行时无意中移动图表。

 
如果不是很清楚,让我解释一下:上述代码是试图在一个给定的条上模拟自动滚动。
 
Interesting:
故事都被藏起来了吗?
当然是有故事的,但不是所有的虫子都有传播的历史!
 
Urain:

那么,在这个例子中,有什么与我的代码有根本性的不同呢?

只是在你的代码中,导航被调用一次,而我需要让图表一直保持在所需的条形上(无论用户的行为如何)。

在回顾了你的例子后,在没有图表刷新的情况下运行了我的代码(尽管它对我很重要,因为程序也使用了一堆图形转换),但也没有什么帮助。笨蛋仍然在。我仍然导航到同一个点,然后导航到零点栏。

我还发现使用来自当前栏的导航是不可接受的,因为用户可能在程序运行时无意中移动图表。

我的指标也有同样的问题,只是在刻度线到来时,它被重新绘制,不清楚如何解决这个问题?