초보자의 질문 MQL4 MT4 MetaTrader 4 - 페이지 201

 
Alexsandr San :

MT4 또는 MT5를 원하십니까? 내가 전시한 코드 - 나는 삭제했다. 나는 그들이 여기에서 MT4에 대해 논의하고 있다는 것을 즉시 알아차리지 못했습니다.

MQL4

 
Speculator :

MQL4

여기에 좋은 것들이 많이 있습니다 https://www.mql5.com/ru/forum/131859/page6#comment_3359705
 
안녕하세요 MT4에서 단말기가 꺼져 있는데 VPS 서버가 연결된 상태에서 전화/메일로 알림 을 받을 수 있나요?
 
Alexsandr San :

나는 조언합니다 - 많은 좋은 것들을 찾을 수 있습니다 https://www.mql5.com/en/forum/131859/page6#comment_3359705

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
매크로를 사용하여 결과 코드가 어떻게 전개되는지 보는 것이 가능합니까?
 

보다 구체적이고 흥미로운 질문:

다른 기능에서 동일한 구성을 사용합니다.

 if ( FileReadStruct (handle,temp_rate)!= 60 )
{
  IsError= true ;
  Print ( __FUNCSIG__ , " Не удалось прочитать данные из файла по причине ошибки " , GetLastError ());
  return ;
}

그러나 일부 함수는 void 유형 이고 다른 함수는 값을 반환하므로 0을 반환합니다.

 return ( 0 );

각각의 경우에 나에게 적합한 옵션을 대체하는 마법 같은 매크로를 만들 수 있습니까?

 
Yurij Kozhevnikov :

보다 구체적이고 흥미로운 질문:

다른 기능에서 동일한 구성을 사용합니다.

그러나 일부 함수는 void 유형 이고 다른 함수는 값을 반환하므로 0을 반환합니다.

각각의 경우에 나에게 적합한 옵션을 대체하는 마법 같은 매크로를 만들 수 있습니까?

매크로에서 반환 사용 - 자신의 발을 가리키는 콕 총이 있으며 if와 함께 총으로 바뀝니다))) 그러나 정말로 원한다면 다음을 수행하십시오.

 #define CHECK_READ(dHndl,dRate,dRet)   do \
if ( FileReadStruct (dHndl,dRate)!= 60 ){    \
  IsError= true ;   \
   Print ( __FUNCSIG__ , " Не удалось прочитать данные из файла по причине ошибки " , GetLastError ()); \
   return dRet;} while ( false )
  
...
CHECK_READ(handle,temp_rate,);
...
CHECK_READ(handle,temp_rate, 0 );
...

테스트하지 않았지만 작동해야 합니다. 동시에 그는 대포를 다시 권총으로 바꿨습니다.)))

 

고맙습니다!

즉, 반환 값 또는 비어 있음을 마지막 매개 변수로 전달합니다.

 return ;

그리고 공간은 아무 의미가 없습니다. 물론 잊어 버렸지만 내가 좋아하는 브래킷 없이도 사용할 수 있습니다.

 return (x);
return x; //равноценны

그리고 동시에 말하지 마십시오. 왜 이 구성은 한 번만 실행할 수 있는 루프 안에 채워져 있습니까? 대포가 권총으로 바뀌었나요? 무한 재귀 같은 상황이 있습니까?

 
Yurij Kozhevnikov :

고맙습니다!

즉, 반환 값 또는 비어 있음을 마지막 매개 변수로 전달합니다.

그리고 공간은 아무 의미가 없습니다. 물론 잊어 버렸지만 내가 좋아하는 브래킷 없이도 사용할 수 있습니다.

그리고 동시에 말하지 마십시오. 왜 이 구성은 한 번만 실행할 수 있는 루프 안에 채워져 있습니까? 대포가 권총으로 바뀌었나요? 무한 재귀 같은 상황이 있습니까?

if (조건) CHECK_READ(h,r,0); 그렇지 않으면 CHECK_READ(h,r,1);
do-while 래퍼 없이 매크로를 확장하고 어떤 일이 발생하는지 확인하십시오)))
 
Vladimir Simakov :
if (조건) CHECK_READ(h,r,0); 그렇지 않으면 CHECK_READ(h,r,1);
do-while 래퍼 없이 매크로를 확장하고 어떤 일이 발생하는지 확인하십시오)))
if (condition) if ( FileReadStruct (h,r)!= 60 ){   
  IsError= true ;   
  Print ( __FUNCSIG__ , " Не удалось прочитать данные из файла по причине ошибки " , GetLastError ()); 
  return 0;}; else if ( FileReadStruct (dHndl,dRate)!= 60 ){    
  IsError= true ;   
  Print ( __FUNCSIG__ , " Не удалось прочитать данные из файла по причине ошибки " , GetLastError ()); 
  return dRet;};

=

if (condition) 
 if ( FileReadStruct (h,r)!= 60 )
 {   
  IsError= true ;   
  Print ( __FUNCSIG__ , " Не удалось прочитать данные из файла по причине ошибки " , GetLastError ()); 
  return 0;
 }; 
 else 
  if ( FileReadStruct (dHndl,dRate)!= 60 )
  {    
   IsError= true ;   
   Print ( __FUNCSIG__ , " Не удалось прочитать данные из файла по причине ошибки " , GetLastError ()); 
   return dRet;
  };

대체 원리를 제대로 이해하면 그런 것 같습니다.

중괄호 뒤에 세미콜론을 추가합니다. 그리고 지금 다른 것이 무엇을 가리키는지는 분명하지 않습니다.

안타깝게도 매크로 확장을 자동화하여 무슨 일이 일어나는지 확인하는 쉬운 방법이 없는 것 같습니다. 자신의 스크립트를 휘젓지 않는 한.

고맙습니다! 매크로에서 while 뒤에 세미콜론이 없는 것은 당연합니다.