MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 570

 

주어진 시간에 상태 확인을 수행하는 방법은 무엇입니까? 예를 들어, M5 차트에서 22:59, 즉 막대가 닫히기 1분 전입니다. 분 이내에 확인하십시오.

       //22:59
       if (open[i]>close[i] && high[i]-low[i]>= 100 * Point )
        {
         BufferUP[i]=low[i]-distance* Point ;
        }
 
PolarSeaman :

주어진 시간에 상태 확인을 수행하는 방법은 무엇입니까? 예를 들어, M5 차트에서 22:59, 즉 막대가 닫히기 1분 전입니다. 분 이내에 확인하십시오.

기록 표시기에서 - 더 어린 기간(이 경우 M1)의 데이터를 읽어야만 수정해야 합니다. 음, 0 막대의 경우:

  1. 막대가 닫힐 때까지의 시간을 계산합니다.
  2. 남은 시간이 1분 이하이면 필요한 조치를 취합니다.

 
Ihor Herasko :

...영점 막대의 경우:

  1. 막대가 닫힐 때까지의 시간을 계산합니다.
  2. 남은 시간이 1분 이하이면 필요한 조치를 취합니다.

이것은 바 의 영업 시간 을 빼앗아 현재 시간?

시간이 22:59, 23:00 범위에 없으면 반복을 건너뛸 수 있습니다.

이 조건을 올바르게 작성하는 방법은 무엇입니까?

 
PolarSeaman :

이것은 바 의 영업 시간 을 빼앗아 현재 시간? 1분 미만으로 계산되나요?

시간이 22:59, 23:00 범위에 없으면 반복을 건너뛸 수 있습니다.

이 조건을 올바르게 작성하는 방법은 무엇입니까?

시간이 명시적으로 설정된 경우 모든 것이 위에 제공된 구성표를 따릅니다.

 input uint i_uHoursStart = 22 ; // Час начала действия диапазона
input uint i_uMinutesStart = 59 ; // Минуты начала действия диапазона
input uint i_uHoursEnd = 23 ; // Час окончания действия диапазона
input uint i_uMinutesEnd = 00 ; // Минуты окончания действия диапазона

uint g_uTimeStart, g_uTimeEnd;

int OnInit ()
{
...
   g_uTimeStart = i_uHoursStart * 60 + i_uMinutesStart;
   g_uTimeEnd = i_uHoursEnd * 60 + i_uMinutesEnd;
...

}

...
uint uCurDayMinutes = Hour () * 60 + Minute ();
if (uCurDayMinutes >= g_uTimeStart && uCurDayMinute < g_uTimeEnd)
{
   // Время от 22:59 до 23:00
}

코드를 확인하지 않았습니다. 오타 및 일부 단점이 있을 수 있습니다. 여기서 중요한 것은 생각의 방향입니다.

또한 시간과 분이 정확한지 확인해야 합니다. 결국 사용자는 38시간 112분과 같은 값을 입력할 수 있습니다.

 
Ihor Herasko :

시간이 명시적으로 설정된 경우 모든 것이 위에 제공된 구성표를 따릅니다.

코드를 확인하지 않았습니다. 오타 및 일부 미흡한 부분이 있을 수 있습니다. 여기서 중요한 것은 생각의 방향입니다.

또한 시간과 분이 정확한지 확인해야 합니다. 결국 사용자는 38시간 112분과 같은 값을 입력할 수 있습니다.

눈 속으로, 사용자에게, 112분 안에)

왜 안될까요?

 if ( TimeToStr ( TimeCurrent (), TIME_DATE | TIME_MINUTES )>= "22:59" && TimeToStr ( TimeCurrent (), TIME_DATE | TIME_MINUTES )< "23:00" )

지정된 시간에 표시되지 않음

여러 범위가 있으며 각 범위를 꺼야 합니다.

 

인용문은 1분 동안 "잠들 수" 있고 시간을 놓칠 수 있습니다)

그것은 옳을 것입니다 - 타이머를 만들고, 현지 시간과현재 시간 을 동기화하고, 타이머에서 적절한 시간을 "잡는" 것입니다.

 
PolarSeaman :

눈으로, 사용자에게, 112분 동안)

왜 안될까요?

이것은 숫자가 아닌 문자열을 비교하기 때문에 확실히 잘못된 솔루션입니다. TimeToStr로 무언가를 생각해낼 수도 있지만. 그러나 이 접근 방식은 숫자를 사용하는 작업에 비해 성능이 저하될 수 있습니다. 결국 문자열 연산은 가장 단순한 산술 연산 (+, -, /, *)보다 비교할 수 없을 정도로 더 많은 시간이 걸립니다.

여러 범위가 있으며 각 범위를 꺼야 합니다.

이것은 원하는 범위의 값을 배열에 저장하여 수행됩니다. 사실, 설정에서 어떻게 보일지 명확하지 않습니다. 너무 많은 설정을 수행해야 합니다. 솔루션이 확실히 존재하지만. 어렵지만 가능합니다.

 
Taras Slobodyanik :

인용문은 1분 동안 "잠들 수" 있고 시간을 놓칠 수 있습니다)

그것은 옳을 것입니다 - 타이머를 만들고, 현지 시간과현재 시간 을 동기화하고, 타이머에서 적절한 시간을 "잡는" 것입니다.

결국 주어진 시간에 아무 것도 하지 않아도 됩니다. 그래서 모든 것이 괜찮습니다))

 
Taras Slobodyanik :

인용문은 1분 동안 "잠들 수" 있고 시간을 놓칠 수 있습니다)

타이머를 올바르게 만들고 현지 시간과현재 시간 을 동기화하고 타이머에서 올바른 시간을 "잡기"

OnTimer()에서 OnCalculate()를 삽입할 수 있습니까?

현지 시간과 현재 시간을 동기화하는 방법을 모르겠습니다. 도움말에서 찾을 수 없습니다.

 
Ihor Herasko :

결국 주어진 시간에 아무 것도 하지 않아도 됩니다. 그래서 모든 것이 괜찮습니다))

어떻게하지? 이 순간에만 확인하고 하루 동안 자야합니다)

사유: