초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 988

 
Aleksey Vyazmikin :

나 자신을 위해 이미 검사를 수행했지만이 기능의 오류를 우회하기위한이 검사는 검사의 필요성에 대해 전혀 말하지 않으므로 기본 제공되어야 함을 의미합니다.

그리고 당신은 지표 확인에 대해 이야기하고 있으며 iBarShift는 내 생각에 있고 청산 및 거래 세션 으로 인해 기록에 자주 실패하지 않는 외환에만 적합하기 때문에 Bars를 사용하여 올바른 바 시작 시간을 계산합니다 하루 종일 지속하지 마십시오.

그리고 당신의 수표는 어디에 있습니까? 그리고 (기록을 바꾸거나 기록을 변경할 때) 지표를 완전히 다시 계산해야 하는 경우 어떤 종류의 변수를 도입하는 이유는 무엇입니까? 일반적으로 "0"에서 "rate_total-1"까지 수행됩니다.

 
Vladimir Karputov :

그리고 당신의 수표는 어디에 있습니까? 그리고 (기록을 바꾸거나 기록을 변경할 때) 지표를 완전히 다시 계산해야 하는 경우 어떤 종류의 변수를 도입하는 이유는 무엇입니까? 일반적으로 "0"에서 "rate_total-1"까지 수행됩니다.

내 문제는 표시기 또는 기록 페이징과 관련이 없습니다. 다음은 코드입니다.

       datetime          StartDt= iTime ( Symbol (), PERIOD_CURRENT , Bars ( Symbol (), PERIOD_CURRENT , iTime ( Symbol (),TF_iDeltaP, 0 ), iTime ( Symbol (), PERIOD_CURRENT , 0 ))- 1 );
       datetime          StopDt= iTime ( Symbol (), PERIOD_CURRENT , 1 ); //Берем прошлый бар, что б не было расхождений между реалом и тестером при задержки на реальных данных

       int BarsGo= Bars ( Symbol (), PERIOD_CURRENT ,StartDt,StopDt);
       if (StartDt>StopDt)BarsGo= 0 ;
       if (StartDt==StopDt)BarsGo= 1 ;
       if (BarsGo> 0 )
        {
                 //Полный расчет с вычислениями - копирование массивов цен и прочие тяжелые функции
        }
       else
        {
                 //Упрощенный расчет с присвоением эмпирических значений переменным
        }
문제는 일반적으로 막대의 시작 날짜가 현재 TF의 0 막대에서 1 막대 이동보다 큰 경우 새 막대를 열 때 발생합니다.
 
Aleksey Vyazmikin :

이것은 방어가 아니라 코드의 오류를 감지하는 데 장애물입니다!

또한 날짜가 일치하면 숫자 2를 반환하는 것이 전혀 논리적이지 않습니다. 그렇다면 정당성은 무엇입니까?

FORTS의 막대 시작 시간이 일치하지 않아 계산 오류가 발생할 수 있습니다. 예를 들어 막대가 14:00에 열리지 않고 14:05에 열립니다.

처음에는 문서에 적힌 대로 하다가 'from'과 'to'가 아니라 '사이'로 지정된 날짜를 반환하는 것이 낫다고 판단했지만 설명서의 설명이 수정되지 않았습니다. . 네, 사실 꼭 필요한 것은 아닙니다.

FORTS에 대한 데모도 없습니다. 확인할 수 없습니다.

 
Alexey Viktorov :

처음에는 문서에 적힌 대로 하다가 'from'과 'to'가 아니라 '사이'로 지정된 날짜를 반환하는 것이 낫다고 판단했지만 설명서의 설명이 수정되지 않았습니다. . 네, 사실 꼭 필요한 것은 아닙니다.

FORTS에 대한 데모도 없습니다. 확인할 수 없습니다.

예, 어떻게 필요하지 않을 수 있는지 추측할 수는 없지만 이것이 나중에 수정될 실수라면 코드가 다시 작동하지 않을 것이고 매우 오랜 시간 동안 오류를 찾을 것입니다 ... 그러나 Artyom은 이것이 실수가 아니라고 판단하고 실제로 아무 것도 쓰지 않았습니다.

MQ의 데모 계정 에서 사람들이 FORTS에 연결하는 것 같습니다...

 
Aleksey Vyazmikin :

예, 어떻게 필요하지 않을 수 있는지 추측할 수는 없지만 이것이 나중에 수정될 실수라면 코드가 다시 작동하지 않을 것이고 매우 오랜 시간 동안 오류를 찾을 것입니다 ... 그러나 Artyom은 이것이 실수가 아니라고 판단하고 실제로 아무 것도 쓰지 않았습니다.

MQ의 데모 계정 에서 사람들이 FORTS에 연결하는 것 같습니다...

자, 이제 충분히 주의를 기울이고 시작 시간과 종료 시간을 혼동할 수 없다면 두려울 것이 없습니다. 그들이 통치하게하십시오.

 
Aleksey Vyazmikin :

내 문제는 표시기 또는 기록 페이징과 관련이 없습니다. 다음은 코드입니다.

문제는 일반적으로 막대의 시작 날짜가 현재 TF의 0 막대에서 1 막대 이동보다 큰 경우 새 막대를 열 때 발생합니다.
 datetime StartDt= iTime ( Symbol (), PERIOD_CURRENT , Bars ( Symbol (), PERIOD_CURRENT , iTime ( Symbol (),TF_iDeltaP, 0 ), iTime ( Symbol (), PERIOD_CURRENT , 0 ))- 1 );
datetime StopDt= iTime ( Symbol (), PERIOD_CURRENT , 1 ); //Берем прошлый бар, что б не было расхождений между реалом и тестером при задержки на реальных данных

iTime(), Bars()가 무엇을 반환하는지 확인하지 않습니다.

그리고 그럴만한 가치가 있습니다. 정말 가치가 있습니다. 도움말을 보십시오 - iTime() 및 Bars()는 무엇을 반환합니까? 그리고 메모에는 무엇이 있습니까?

 
Alexey Viktorov :

자, 이제 충분히 주의를 기울이고 시작 시간과 종료 시간을 혼동할 수 없다면 두려울 것이 없습니다. 그들이 통치하게하십시오.

나는 앉아서 수동적으로 기다리는 것을 좋아하지 않으며 특히 개발자에게 이것에 대해 묻는 것이 금지되었습니다. 처음에는 질문이 개발자를 위한 것이었습니다.

 
Artyom Trishkin :

iTime(), Bars()가 무엇을 반환하는지 확인하지 않습니다.

그리고 그럴만한 가치가 있습니다. 정말 가치가 있습니다. 도움말을 보십시오 - iTime() 및 Bars()는 무엇을 반환합니까? 그리고 메모에는 무엇이 있습니까?

코드에서 이러한 검사를 한 번만 수행하는 것으로 충분합니까, 아니면 각 함수 호출 후/전에 수행해야 합니까?

현재 막대/이력의 존재에 대해 어떤 종류의 확인이 제안됩니까? 어떻게 만드는 것이 가장 좋을까요?

 

이 메시지의 이유를 어떻게 찾을 수 있습니까?

 2019.01 . 24 21 : 32 : 01.570 i-Regr4_05i (Si- 3.19 ,M1)        indicator is too slow, 3011 ms. rewrite the indicator, please
 
Aleksey Vyazmikin :

코드에서 이러한 검사를 한 번만 수행하는 것으로 충분합니까, 아니면 각 함수 호출 후/전에 수행해야 합니까?

현재 막대/이력의 존재에 대해 어떤 종류의 확인이 제안됩니까? 어떻게 만드는 것이 가장 좋을까요?

0의 반환 값을 확인하는 방법을 모르십니까? 그리고 제로 리턴으로 OnCalculate()를 종료하는 방법을 모르십니까? 사이트 검색에서 정보 검색을 시도한 적이 있습니까?

  1. 함수에서 필요한 값 가져오기
  2. 제로를 확인하십시오
    1. 0이면 0을 반환합니다.
    2. 0이 아니면 n3으로
  3. 받은 값으로 작업
평점이 13,000이 넘은 사람에게 이 리소스에 대한 논리의 기초를 말할 줄은 꿈에도 몰랐습니다...
사유: