하나의 표시기에 0으로 나누기 오류가 있습니다. - 페이지 9

 
Sergey Savinkin :

그리고 먼저 매시간 시간대에서 CopyRates를 수행한 다음(반올림된 숫자를 얻음) 현재 시간대(Time으로 바뀌는 시간)에서 CreateFigure 프로시저로 시간 을 전달한 다음 인덱스를 찾으면 반올림됩니다. 현재 시간 프레임의 시간에 이미? start_index= ArrayBsearch ( 시간 , 시작 시간 );

맞습니다, 우리는 비-라운드 시간에 대한 대응을 위해 배열에서 찾고 있습니다 ... 즉. 우리는 시간 이 시간의 시작 시간에 해당하는 분 시간 프레임의 막대를 찾고 있습니다.

 
영형!
 
Алексей Тарабанов :
영형!

감정이 좋다!

하지만 장점에 대한 생각이있을 것입니다!?

 

예를 들어 다음은 시간을 절약하기 위해 두 개의 변수를 추가한 시간입니다.

 void CreateFigure( int i, const datetime & Time [], const double & Open [], const double & High [], const double & Low [], const double & Close [], MqlRates &rates[])
  {
   datetime start_time=rates[i].time;
   datetime stop_time=(start_time+ PeriodSeconds (TimeFrames));
   datetime start_timeA=start_time;
   
//---
   int start_index,stop_index,limit;
   datetime vertical_line_time;
//---
   start_index= ArrayBsearch ( Time ,start_time);
   datetime start_timeB= Time [start_index];   
   if ( Time [start_index]<start_time) start_index=(start_index> 0 ?start_index- 1 :start_index);
   start_time= Time [start_index];
   Print ( "start_timeA=" , start_timeA, " start_timeB=" ,start_timeB, " start_time=" ,start_time);

우리는이 인쇄물을 얻습니다.

 2018.07 . 05 00 : 39 : 30.465 IndDrafter_Test (Si- 9.18 ,M1)    start_timeA= 2018.07 . 04 12 : 00 : 00 start_timeB= 2018.07 . 04 12 : 00 : 00 start_time= 2018.07 . 04 12 : 00 : 00
2018.07 . 05 00 : 39 : 30.465 IndDrafter_Test (Si- 9.18 ,M1)    start_timeA= 2018.07 . 04 13 : 00 : 00 start_timeB= 2018.07 . 04 13 : 00 : 00 start_time= 2018.07 . 04 13 : 00 : 00
2018.07 . 05 00 : 39 : 30.465 IndDrafter_Test (Si- 9.18 ,M1)    start_timeA= 2018.07 . 04 14 : 00 : 00 start_timeB= 2018.07 . 04 13 : 59 : 00 start_time= 2018.07 . 04 14 : 05 : 00
2018.07 . 05 00 : 39 : 30.465 IndDrafter_Test (Si- 9.18 ,M1)    start_timeA= 2018.07 . 04 15 : 00 : 00 start_timeB= 2018.07 . 04 15 : 00 : 00 start_time= 2018.07 . 04 15 : 00 : 00

저것들. 마치 정상 / 정지 된 상황에서 모든 것이 정확합니다.

14:00 분 시간 프레임의 막대 개방 시간 이 14:05로 조정되는 방법을 볼 수 있습니다. M1 시간 프레임의 첫 막대가 등장한 실제 시간입니다.
 
Aleksey Vyazmikin :

감정이 좋다!

하지만 장점에 대한 생각이있을 것입니다!?

시간은 동일하므로 limit=0입니다. 내가 원한.

 
Алексей Тарабанов :

시간은 동일하므로 limit=0입니다. 내가 원한.

그리고 시간이 같다면? 결국, 이번 시간에는 TF M1에 60개의 바가 있습니다!

그리고 현재 TF와 계산된 TF가 일치하면 보호 기능이 있으며 이 상황에서 0으로 나누기가 없습니다.

 if ( _Period >=TimeFrames) return ( 0 );
 
스파이
 
Алексей Тарабанов :
스파이

암호화되어 있습니까!?

 
스파이
 
Алексей Тарабанов :
스파이

???