MT 버전 아카이브. - 페이지 3

 
Сергей Таболин :

이 시나리오에서 TesterStop() 및 ExpertRemove () 가 OnTester()로 제어를 즉시 이전할 수 없는 경우 true를 반환해야 한다고 생각합니다. 예를 들어 다음과 같이 어떻게든 반응할 수 있습니다.

 bool                  tester_stop = false ;                 // флаг проверки выхода по TesterStop
.......
void OnTick ()
{
//--- пропустить бесполезные проходы оптимизации
   if (!check_init && ( MQLInfoInteger ( MQL_OPTIMIZATION ) || MQLInfoInteger ( MQL_TESTER )))
   {
       if (недопустимый параметр)          tester_stop = TesterStop ();
........
}
double OnTester ()
{
   if (tester_stop) return (- 99999999999.99 );

이 경우 논리적으로 예상되는 정확한 결과를 얻을 수 있고 탬버린으로 춤을 준비하지 않고 테스트를 중지한 결과 이론적으로 발생할 수 있는 모든 오류를 제공할 수 있습니다.

그리고 여기에 당신이보고 싶었던 옵션이 있습니다.

 bool                  tester_stop = false ;                 // флаг проверки выхода по TesterStop
.......
void OnTick ()
{
//--- пропустить бесполезные проходы оптимизации
   if (!check_init && ( MQLInfoInteger ( MQL_OPTIMIZATION ) || MQLInfoInteger ( MQL_TESTER )))
   {
       if (недопустимый параметр)
       {
         TesterStop ();
        tester_stop = true ;
         return ;
       }
........
}
double OnTester ()
{
   if (tester_stop) return (- 99999999999.99 );
 
Roman :

이런 맥락에서 우리는 확인을 할 수 없습니까?

그리고 이미 실행 중인 경우 강제 종료를 방지/취소하는 방법은 무엇입니까? 귀하의 예는 다른 오페라에서 약간 있습니다.
 
Alexey Viktorov :
그리고 이미 실행 중인 경우 강제 종료를 방지/취소하는 방법은 무엇입니까? 귀하의 예는 다른 오페라에서 약간 있습니다.

강제 종료하지 마십시오. 그러면 취소할 필요가 없습니다.

아마도 이미 강제 종료를 실행하고 있을 것입니다. 가능한 소프트웨어 결함으로 인해 취소하는 것은 의미가 없습니다.
따라서 이것은 불가능할 가능성이 높습니다. 정확히 말할 수 없습니다.
따라서 강제 종료가 시작된 후 실행 중인 코드로 다시 돌아갈 필요가 없도록 코드를 논리적으로 빌드해야 합니다.
완료하면 명시적으로 완료됩니다.

 
Roman :

아마도 이미 강제 종료를 실행하고 있을 것입니다. 가능한 소프트웨어 결함으로 인해 취소하는 것은 의미가 없습니다.
따라서 그러한 가능성은 거의 없습니다. 정확히 말할 수 없습니다.
따라서 강제 종료가 시작된 후 실행 중인 코드로 다시 돌아갈 필요가 없도록 코드를 논리적으로 빌드해야 합니다.
완료하면 명시적으로 완료됩니다.

웬일인지 당신은 주제의 모든 것을 읽지 않은 것 같습니다. 귀하의 의견과 다른 것이 논의 중인 문제와 일치합니다.

추신; 아니더라도. 이 주제에 대한 첫 번째 메시지에서 내 말을 정확히 인용했지만 완전히는 아닌 것 같습니다. 아마도 이것 때문에 문제의 전체 표현이 바뀌었습니다.
 
어떤 질문, 그런 대답. 그런 다음 자신과 토론하십시오. 당신은 문제에 끼어들려고 하지만 사람들은 여전히 그것을 좋아하지 않습니다. 문제를 찾는 행운을 빕니다.
 
Alexey Viktorov :

그리고 여기에 당신이보고 싶었던 옵션이 있습니다.

모든 것이 맞습니다.

하지만

 if (недопустимый параметр)          tester_stop = TesterStop ();

보다 쉽고 명확하지 않습니다

 if (недопустимый параметр)
       {
         TesterStop ();
        tester_stop = true ;
         return ;
       }

?

하지만 지금은 당신이 제안한 대로 했습니다.

 
Roman :
어떤 질문과 대답. 그런 다음 자신과 토론하십시오. 당신은 문제에 끼어들려고 하지만 사람들은 여전히 그것을 좋아하지 않습니다. 문제를 찾는 행운을 빕니다.

당신은 정말 화가 났어요. 그것을 관통하려면 전체 구문이 필요했습니다

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MT 버전 아카이브.

알렉세이 빅토 로프 , 2019.06.16 15:25

Sergey, 여기에는 예상치 못한 것이 없습니다. 반대로 모든 것이 자연스럽고 일관성이 있습니다. 다른 경우가 있습니다. 고문이 끝나기 전에 이벤트 처리를 완료해야 하는 경우도 있고, 귀하의 경우처럼 긴급하게 완료해야 하는 경우도 있습니다. 그래서 개발자들 앞에서 실행을 완료해야 하는 사람들로부터 불만을 받고, 명확하게 중단하거나, 이벤트 처리 완료 후 중지하는 것이 옳은 일인지에 대한 질문이 발생합니다 . 동시에 모든 프로그래머는 무기고에 return 문이 있으며 강제 종료되는 것은 없습니다.

그리고 어떤 목적으로 void 유형을 bool로 변경해야 했습니까? 프로그래머의 무기고에는 TesterStop() 전후에 변경할 수 있는 정적 변수가 있고 원칙적으로 모든 것이 원하는 대로 되기 때문입니다. 그리고 어떤 이유로 당신은 내 예에서 그것을 버렸다.

첫 번째 부분에 주의를 기울이지 않고 두 번째 부분만 문맥에서 제외했습니다.
 
Сергей Таболин :

모든 것이 맞습니다.

하지만

보다 쉽고 명확하지 않습니다

?

하지만 지금은 당신이 제안한 대로 했습니다.

더 간단하고 명료할 수 있지만 스스로 쉽게 작성할 수 있는 것을 개발자들에게 요구하는 것은 잘못된 것입니다. 어떤 이유로 C ++에 대해 작성하고 언어에 몇 가지 추가 사항이 필요하다고 생각하지 않습니다. 그리고 많은 사람들이 충분한 의견을 가지고 있다고 확신합니다.

 
Alexey Viktorov :

더 간단하고 명료할 수 있지만 스스로 쉽게 작성할 수 있는 것을 개발자들에게 요구하는 것은 잘못된 것입니다. 어떤 이유로 C ++에 대해 작성하고 언어에 몇 가지 추가 사항이 필요하다고 생각하지 않습니다. 그리고 많은 사람들이 충분한 의견을 가지고 있다고 확신합니다.

버전을 확인했습니다. 이 메시지로 모든 것이 끝났습니다.

 2019.06 . 16 18 : 49 : 25.464 Core 1    TesterStop () called on 0 % of testing interval

일반적으로 - 막 다른 골목 ...

 
Alexey Viktorov :

당신은 정말 화가 났어요. 그것을 관통하려면 전체 구문이 필요했습니다

첫 번째 부분에 주의를 기울이지 않고 두 번째 부분만 문맥에서 제외했습니다.

IsStopped()를 사용하여 예를 들어 첫 번째 부분에 답하려고 했습니다.
고문이 끝나기 전에 이벤트 처리를 완료해야 하는 경우도 있고, 귀하의 경우처럼 긴급하게 완료해야 하는 경우도 있습니다.
문서에서 이 IsStopped() 함수 에 대한 설명을 읽으면 몇 가지 아이디어를 얻을 수 있습니다.
그러나 그것은 다른 오페라에서 당신에게 보였다. 다른 사람의 경우 가능한 가정에 대해 유감스럽게 생각합니다.
그러나 가능한 제안에서 말했듯이 문제에 대한 검색이 해결됩니다.
아무도 자신의 코드의 모든 논리를 알지 못하기 때문에 명확한 해결책을 말하지 않을 것이며 아마도 자세히 살펴보지도 않을 것입니다.