[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 323

 
Vinin писал(а) >>

그렇기 때문에 일부러 실수를 하는 것입니다.

그리고 의도적으로 멋지네요 ... 이 오류를 보게되어 기쁩니다. 그러나 나는 그것을 찾을 수 없습니다.

 
Daiver2 >> :

일부 기능을 실행하고 컴파일 중 오류가 있는지 여부와 상관없이 스크립트로 실행하여 터미널에서 작동하는지 여부를 확인합니다. 오늘 나는 창에서 막대의 예비 계산 기능을 사용했습니다.

당연히 *부족한 막대*라는 메시지가 표시되지만 새로운 틱으로 이 메시지가 무기한 다시 나타날 것임을 이해합니다.

이제 변수를 추가하고 if 문 을 추가하고 미래의 오류 처리 블록 Bloc_Error 에서 switch 문 을 입력하면 다음과 같이 나타납니다.

문제는 내가 switch 문 에서 잘못 회전했는데 왜 *Expert가 작동하지 않습니다* 메시지가 나오지 않고, 그래서 Advisor가 실제로 작동을 멈춘다는 것입니다????
 //+------------------------------------------------------------------+      
     switch ( ) //?????????????? почему в switch не передаёте параметр 
       {
       case 3 :            // Неверные параметры:
      Work = false ;
       return ( 0 ) ;
       }
 

안녕하세요!

어드바이저 운영 중 오류가 발생하는 이유를 이해할 수 없습니다. 한 터미널(데모 계정)에서 동시에 11쌍의 어드바이저를 테스트하고 있습니다. 입장 조건은 매시간 시작될 때 확인됩니다. 11명의 고문이 동시에 작업을 시작합니다. 서로 간섭하지 않도록 IsTradeBusy() 함수를 사용합니다(여기에서 https://www.mql5.com/en/articles/1412 ). 최근에 EA는 포지션을 여는 대신 TradeIsBusy 전역 변수의 값을 변경하려고 할 때 오류를 보고합니다. 다음은 코드의 일부입니다.

     // пытаемся менять значение TradeIsBusy с 0 на 1
     // если нам это удаётся, выходим из ф-ции, возвращая 1 - "успешное завершение"
     if ( GlobalVariableSetOnCondition ( "TradeIsBusy" , 1.0 , 0.0 ) ) 
         return ( 1 ) ;
     else
     // если нет, возможны 2 причины: TradeIsBusy = 1 (тогда надо ждать), либо 
     // возникла ошибка (это мы и проверим)
     {
        _GetLastError = GetLastError ( ) ;
        // если это всё таки ошибка, выводим информацию и пробуем ещё раз
        if ( _GetLastError ! = 0 )
        {
           Print ( "TradeIsBusy()-GlobalVariableSetOnCondition( \" TradeIsBusy \" ,1.0,0.0 )-Error #" ,
           _GetLastError ) ;
           continue ;
        }
     }

오류 코드:

#4002 - "배열 인덱스가 범위를 벗어났습니다"

#4105 - "선택한 주문이 없습니다"

GlobalVariableSetOnCondition 명령에 의해 이러한 오류가 생성될 수 있는 조건을 이해하지 못합니까?

터미널 브로코 트레이더 4.0 빌드 225.

터미널이 그렇게 버그가 많을 수 있습니까?

 
Urain писал(а) >>

고마워, 내가 알아낼게.

 
OAndrey писал(а) >>

안녕하세요!

어드바이저 운영 중 오류가 발생하는 이유를 이해할 수 없습니다. 한 터미널(데모 계정)에서 동시에 11쌍의 어드바이저를 테스트하고 있습니다. 입장 조건은 매시간 시작될 때 확인됩니다. 11명의 고문이 동시에 작업을 시작합니다. 서로 간섭하지 않도록 IsTradeBusy() 함수를 사용합니다(여기에서 https://www.mql5.com/en/articles/1412 ). 최근에 EA는 포지션을 여는 대신 TradeIsBusy 전역 변수의 값을 변경하려고 할 때 오류를 보고합니다. 다음은 코드의 일부입니다.

오류 코드:

#4002 - "배열 인덱스가 범위를 벗어났습니다"

#4105 - "선택한 주문이 없습니다"

GlobalVariableSetOnCondition 명령에 의해 이러한 오류가 생성될 수 있는 조건을 이해하지 못합니까?

터미널 브로코 트레이더 4.0 빌드 225.

터미널이 그렇게 버그가 많을 수 있습니까?

이 코드 조각에 대해서는 아무 말도 할 수 없습니다. 그리고 조언으로. 함수 시작 시 마지막 오류 상태를 재설정합니다. 다른 곳에서도 발생할 수 있습니다.

   GetLastError ( ) ;    //Сбрасываем состояние 

   // пытаемся менять значение TradeIsBusy с 0 на 1
   // если нам это удаётся, выходим из ф-ции, возвращая 1 - "успешное завершение"
   if ( GlobalVariableSetOnCondition ( "TradeIsBusy" , 1.0 , 0.0 ) ) 
       return ( 1 ) ;
   else
   // если нет, возможны 2 причины: TradeIsBusy = 1 (тогда надо ждать), либо 
   // возникла ошибка (это мы и проверим)
   {
      _GetLastError = GetLastError ( ) ;
       // если это всё таки ошибка, выводим информацию и пробуем ещё раз
       if ( _GetLastError ! = 0 )
       {
         Print ( "TradeIsBusy()-GlobalVariableSetOnCondition( \" TradeIsBusy \" ,1.0,0.0 )-Error #" ,
         _GetLastError ) ;
         continue ;
       }
   }
 

텍스트에서 줄 바꿈을 만드는 방법은 무엇입니까? 예를 들어, OBJ_LABEL 에 무언가를 플롯하고 있고 텍스트가 여러 줄로 작성되기를 원합니다.

 
Mathers >> :

텍스트에서 줄 바꿈을 만드는 방법은 무엇입니까? 예를 들어, 차트에 OBJ_LABEL에 무언가를 표시하고 텍스트가 여러 줄로 작성되기를 원합니다.

여러 레이블에 출력합니다.

 

행 수가 동적으로 변경되면 어떻게 됩니까? 그리고 그것은 꽤 클 수 있습니다. 레이블 대신 다른 것을 사용할 수 있습니까?


그리고 여기에 또 다른 질문이 있습니다. 예를 들어 1초의 지연으로 무한 루프에서 무언가를 수행하는 스크립트가 있다고 가정해 보겠습니다. 제거하려고하면 "스크립트 삭제"를 선택하면 차트에서 제거되지 않지만 일반적으로 덜걱 거리기 시작하고 지체없이 느껴집니다. 다시 "삭제"를 누르면 제거됩니다. 무슨 일이야? 코드가 올바르게 종료되도록 코드에 무언가를 추가해야 합니까?

 
Mathers >> :

행 수가 동적으로 변경되면 어떻게 됩니까? 그리고 그것은 꽤 클 수 있습니다. 레이블 대신 다른 것을 사용할 수 있습니까?

옵션으로 경고합니다. 의견 - 아마도 적합합니다.

그리고 여기에 또 다른 질문이 있습니다. 예를 들어 1초의 지연으로 무한 루프에서 무언가를 수행하는 스크립트가 있다고 가정해 보겠습니다. 제거하려고하면 "스크립트 삭제"를 선택하면 차트에서 제거되지 않지만 일반적으로 덜걱 거리는 소리가 나기 시작하고 지체없이 느껴집니다. 다시 "삭제"를 누르면 제거됩니다. 무슨 일이야? 코드가 올바르게 종료되도록 코드에 무언가를 추가해야 합니까?

while(true)을 while(!IsStopped())로 교체

 
Mathers >> :

행 수가 동적으로 변경되면 어떻게 됩니까? 그리고 그것은 꽤 클 수 있습니다. 레이블 대신 다른 것을 사용할 수 있습니까?

아니요. 물론, 주석이 맞지 않는 한. 출력이 만들어질 f-th를 작성하고 그것을 통해 필요한 것을 작성하십시오.

그리고 여기에 또 다른 질문이 있습니다. 예를 들어 1초의 지연으로 무한 루프에서 무언가를 수행하는 스크립트가 있다고 가정해 보겠습니다. 제거하려고하면 "스크립트 삭제"를 선택하면 차트에서 제거되지 않지만 일반적으로 덜걱 거리는 소리가 나기 시작하고 지체없이 느껴집니다. 다시 "삭제"를 누르면 제거됩니다. 무슨 일이야? 코드가 올바르게 종료되도록 코드에 무언가를 추가해야 합니까?

그래야만 합니다.