包括周末在内的计数条 - 页 4

 

非常感谢大家的帮助和参与!!。

版本1,2和4更正确,但有错误,某处是正确的(一天到一天),某处缺少2-3天。

第3版看到的是已经计算过的这一时期的条形图的数量。

//+------------------------------------------------------------------------+ 
//| ВЕРСИЯ 1 рассчитывает бары за период только выходных дней  12бар=3вых  | 
//+------------------------------------------------------------------------+ 
int NumData1(datetime d_start,datetime d_stop){
   const int day_in_sec = 24 * 60 * 60;
   datetime d_corect1 = d_start - d_start % day_in_sec;
   datetime d_corect2 = d_stop - d_stop % day_in_sec;
   int result = (int)((d_corect2 - d_corect1) / day_in_sec);
   datetime t_arr[];
   int allbarD1 = CopyTime(_Symbol, PERIOD_D1, d_start, d_stop, t_arr);
   if(allbarD1 < 0) return(0);
return(result-allbarD1);}
//+------------------------------------------------------------------------+ 
//| ВЕРСИЯ 2 рассчитывает бары за период только рабочих дней  12бар=9раб   | 
//+------------------------------------------------------------------------+ 
int NumData2(datetime d_start,datetime d_stop){
   int bar=Bars(Symbol(),0,d_start,d_stop);
return(bar);}
//+------------------------------------------------------------------------+ 
//| ВЕРСИЯ 3 рассчитывает бары за период                      12бар=12бар  | 
//+------------------------------------------------------------------------+ 
int NumData3(datetime d_start,datetime d_stop){
   MqlDateTime dts[2];
   TimeToStruct(d_start,dts[0]);
   TimeToStruct(d_stop,dts[1]);
return(dts[1].day_of_year - dts[0].day_of_year);}
//+------------------------------------------------------------------------+ 
//| ВЕРСИЯ 4 рассчитывает бары за период только рабочих дней  12бар=9раб   | 
//+------------------------------------------------------------------------+ 
int NumData4(datetime startDate,datetime endDate){
   int d=int((endDate-startDate)/86400);   
   int m[7,7]={
   {0, 0,1,2,3,4,5}, // воскр
   {0, 1,2,3,4,5,5}, // понед
   {0, 1,2,3,4,4,4}, // вторн
   {0, 1,2,3,3,3,4}, // среда
   {0, 1,2,2,2,3,4}, // четв
   {0, 1,1,1,2,3,4}, // пятн
   {0, 0,0,1,2,3,4}  // субб
   };
return((d/7)*5+m[(int)TimeDayOfWeek(startDate)][d%7]);}
 

尽管它正确地计算了1、2和4。
我没有考虑到第二个点会移动到收到的+n条上
也有周末,结果是我在正确的地方少了2-3个小节。

是否有可能识别出可见的条状物
也就是说,我们有第一个价格,并在图表上添加可见的条形图
。否则,我们的第一个点在本月5日+12条=本月17日+4天=本月21日,我们还缺少几天的结束点。

 
forex2030:

是否有可能准确识别出 可见的条状物

是的,没问题。而这个特别的答案是该主题中的第一个。简单、快速、优雅。

Подсчёт баров с учётом выходных
Подсчёт баров с учётом выходных
  • 2020.04.25
  • www.mql5.com
Есть две точки t1 и t2, между ними 25 баров, как узнать сколько было выходных между точками например на D1 чтобы потом их прибавить к нужным барам...
 

包括周末?

写出12个月,即12个带有天数的变量,全部写入一个数组中

成一个年份数组,其中包括2月份的天数,或计算2月份的闰年。

在一个循环中。

将所需期间的起始月和结束月的全部和剩余天数相加。

 
假期是如何度过的?还是说它们不算是假期?)
 
Aleksey Nikolayev:
假期是如何度过的?或者说它们不算是假期吗?)
计算总天数并减去报价历史中的天数
 
Renat Akhtyamov:
它将计算总天数并减去报价历史中的天数

如果你能确定没有其他原因而错过这一天,你可以。

也有可能只错过一天的部分时间--这也会对计算产生不利影响

 
Aleksey Nikolayev:

也可以只跳过一天的部分时间--这也会对计算产生不好的影响。

在这种情况下,日线仍然会出现在图表上。

 
Aleksey Nikolayev:

如果你能确定没有其他原因而错过这一天,你可以。

也有可能只错过一天的部分时间--这也会对计算产生不利影响

你必须使用日常 的TF,而不是其他。
 
Igor Makanu:

在这种情况下,日线仍然会出现在图表上。

当然,会的。但是,例如,它的高低点会从其他地方脱颖而出,而且总会有一个问题--它是一个假期还是掉落的分钟条?目前还不是很清楚如何将这种检查自动化。