mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 174

 
Igor Makanu :

은 다르다

소위 통제 및 관리 작업이 있습니다.

EA - 관리, 서비스 - 제어

제어가 중복되어서는 안 됩니다. 시스템의 모든 리소스를 제거하고 제어 대신 불안정한 시스템을 가져옵니다.

그래서 저축은 무엇입니까? 서비스는 동일한 주문 반복, 동일한 비교를 수행합니다.

하나의 서비스가 여러 Expert Advisors를 "서비스"하고 "뭔가 변경되었습니다"라는 신호를 보내는 아이디어라면 솔루션이 모호합니다.
첫째, 결정을 내리는 데 필요한 중요한 데이터가 외부에서 기다리는 것은 어리석은 일입니다. 그리고 두 번째로 절감액이 있는 경우 하나의 터미널에 여러 Expert Advisors가 있는 경우에만 가능합니다.

이론적 즐거움과 마찬가지로 실제로는 EA에서 주문을 열거하는 데 문제가 없습니다.

 
MT5의 일부 결함이 이 상황을 포착했습니다.
 ACCOUNT_TRADE_EXPERT = true
ACCOUNT_TRADE_ALLOWED = false
TERMINAL_TRADE_ALLOWED = true
이러한 금지는 브로커가 아닌 터미널(버그)의 조치의 결과일 수 있음을 명심하십시오.
 
fxsaber :
MT5의 일부 결함이 이 상황을 포착했습니다. 이러한 금지는 브로커가 아닌 터미널(버그)의 조치의 결과일 수 있음을 명심하십시오.

로보와 같은 상황이 아니라 처음 2분 거래가 마감되는데 호가는 간다고?

나는 기억이 나지 않습니다. 매일 또는 월요일에만 이 2분 거래가 금지됩니다.

 
Alexey Viktorov :

로보와 같은 상황이 아니라 처음 2분 거래가 마감되는데 호가는 간다고?

나는 기억이 나지 않습니다. 매일 또는 월요일에만 이 2분 거래가 금지됩니다.

아니요, 대낮입니다. MT5 크래시, 브로커 사업 중단.

 
Alexey Viktorov :

나는 기억이 나지 않습니다. 매일 또는 월요일에만 이 2분 거래가 금지됩니다.

시장이 열릴 때만
 
MessageBox 는 로그의 모든 정보를 표시하지 않습니다. 로그를 읽을 때 때때로 질문이 발생합니다. 이런 식으로 문제를 해결했습니다.
 // Терминал при MessageBox не выводит в лог имя MQL-программы, текст заголовка окна, флаги и результат нажатия.
int MessageBox2( const string Text, const string Caption = NULL , const int Flags = 0 )
{
   const int Res = MessageBox (Text, Caption, Flags);
  
#define TOSTRING(A) " " + #A + " = " + ( string )(A)
   Print ( "MessageBox:" + TOSTRING(Caption) + TOSTRING(Flags) + TOSTRING(Res));
#undef TOSTRING
  
   return (Res);
}

#define MessageBox MessageBox2
 

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

mql5 언어의 특징, 미묘함 및 작업 방법

fxsaber , 2020.04.30 08:49

MT5의 일부 결함이 이 상황을 포착했습니다.
 ACCOUNT_TRADE_EXPERT = true
ACCOUNT_TRADE_ALLOWED = false
TERMINAL_TRADE_ALLOWED = true
이러한 금지는 브로커가 아닌 터미널(버그)의 조치의 결과일 수 있음을 명심하십시오.

다시 부딪쳤다. 드문 경우지만 재로그인 중에 이런 일이 발생할 수 있다고 생각합니다.

해결 방법 - 거짓이면 잠시 멈춘 후 다시 시도하십시오.

 bool IsTradeAllowed( const int Attempts = 0 )
{        
   // https://www.mql5.com/ru/forum/170952/page174#comment_16363677
   bool Res = false ;
   int Count = 0 ;
  
   // https://www.mql5.com/ru/forum/170952/page174#comment_16363677
   while (!(Res = :: MQLInfoInteger ( MQL_TRADE_ALLOWED ) &&
                 :: AccountInfoInteger ( ACCOUNT_TRADE_EXPERT ) &&
                 :: AccountInfoInteger ( ACCOUNT_TRADE_ALLOWED ) &&
                 :: TerminalInfoInteger ( TERMINAL_TRADE_ALLOWED )) &&
         (Count++ < Attempts) && !:: IsStopped ())
    :: Sleep ( 100 );
    
   return (Res);
}
 
할당 중에 변수의 변경을 감지해야 할 때.
 if (Value != (Value = NewValue()))
   Print ( "Value is changed." );
 
fxsaber :
할당하는 동안 변수의 변화를 감지해야 할 때.

여기에 UB가 있는데 사용할 수 없습니다.

 
Vict :

여기에 UB가 있는데 사용할 수 없습니다.

작동하지만 올바른 매크로를 제안할 수 있습니까?