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

 

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

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

fxsaber , 2017.11.30 09:48

메모

액션/프로그램 종류 TF 또는 기호 변경 계정 변경
지시자 OnDeinit 및 OnInit를 실행하면 전역 클래스 개체가 변경됩니다(하드 다시 로드). prev_calculated를 재설정하는 것 외에는 아무 일도 일어나지 않습니다.
조언자 OnDeinit 및 OnInit를 실행하면 전역 클래스 개체가 변경 되지 않습니다 . OnDeinit 및 OnInit를 실행 하면 전역 클래스 개체가 변경됩니다(하드 다시 로드).

다시 로그인할 때(예: 수동으로) 어드바이저가 완전히 다시 시작되지 않도록 하는 방법을 알려주세요.

다시 로그인할 때 모든 것이 0으로 재설정되는 이유를 이해할 수 없습니다. 이것이 결함입니까?

 
fxsaber :

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

당신이 당신의 공예품의 품질에 대해 별로 걱정하지 않는다면, 저는 더욱 그렇습니다.

 
Vict :

당신이 당신의 공예품의 품질에 대해 별로 걱정하지 않는다면, 저에게는 더욱 그렇습니다.

여기에서는 MQL5의 기능에 대해 씁니다.

 
fxsaber :

여기에서는 MQL5의 기능에 대해 씁니다.

그리고 이것이 UB가 아니라 기능이라고 누가 말했습니까? 부두에 대한 정보가 있습니까? 대부분의 경우 UB는 컴파일러가 모든 종류의 최적화를 수행할 수 있도록 하는 데 필요하며 결과적으로 xs는 최적화 프로그램의 분위기에 따라 실제 코드에서 다양한 경우에 발생합니다. 이 코드를 십자가에서 실행할 수 있고 결과를 얻을 수 있습니다. 그러면 "기능이 무엇인지 보세요"라고 말할 수 있습니다.

ML에는 완전한 도크가 전혀 없습니다. 여기서는 달리 명확하게 표시되지 않는 한 십자가에만 초점을 맞춥니다.

 
Vict :

그리고 이것이 UB가 아니라 기능이라고 누가 말했습니까? 부두에 대한 정보가 있습니까?

여기에서 그들은 부두에 없는 것에 대해 씁니다. 그렇지 않으면 분기에 포인트가 없습니다.

 
fxsaber :

여기에서 그들은 부두에 없는 것에 대해 씁니다. 그렇지 않으면 분기에 포인트가 없습니다.

분기의 요점은 개발자의 의견이 있으면, 그렇지 않으면 ...

예, 부두에 기록되어 있습니다. 실행 순서 / 실행 순서 - 따라서 모든 것이 합법적인 것 같습니다. 그러나 모두 동일하게, 이것은 정말 치열한 ub라는 점을 감안할 때 도움이 실제로 연산자의 연관성이 아니라 실행 순서를 의미하는지 확인하고 싶습니다 .

 
fxsaber :

다시 로그인할 때(예: 수동으로) 어드바이저가 완전히 다시 시작되지 않도록 하는 방법을 알려주십시오.

다시 로그인할 때 모든 것이 0으로 재설정되는 이유를 이해할 수 없습니다. 이것은 결함입니까?

작업은 재로그인 시 일부 계산을 놓치고 계정 변경 시 어드바이저를 삭제하는 것이 었습니다. 한 곳에서 결정했습니다.

계정 변경 시 어드바이저만 삭제하면 되는 경우의 모습입니다.

 string GetGlobalNameAccount( void )
{
   return (:: MQLInfoString ( MQL_PROGRAM_NAME ) + ( string ):: ChartID () + "_Account" );
}

void SaveAccount( void )
{  
   if (!:: GlobalVariableSet (GetGlobalNameAccount(), CurrentAccount))
    :: Alert ( "GlobalVariableSet - ERROR!" );
  
   return ;
}

int LoadAccount( void )
{
   int Res = 0 ;
  
   const string Name = GetGlobalNameAccount();
    
   if (:: GlobalVariableCheck (Name))
  {
    Res = ( int ):: GlobalVariableGet (Name);
    
    :: GlobalVariableDel (Name);      
  }
  
   return (Res);
}

const int CurrentAccount = ( int ) AccountInfoInteger ( ACCOUNT_LOGIN );
int PrevAccount = 0 ;

int OnInit ( void )
{
  PrevAccount = LoadAccount();
  
   bool Res = !PrevAccount || (PrevAccount == CurrentAccount);
  
   if (Res)
  {
     // .....
  }
   else
     Alert ( "Account is changed! " + ( string )PrevAccount + " -> " + ( string )CurrentAccount);
    
   return (Res ? INIT_SUCCEEDED : INIT_FAILED );
}

void OnDeinit ( const int Reason )
{
   if (Reason == REASON_ACCOUNT )
    SaveAccount();
}


MQL5의 가장 간단한 작업은 당신을 트위스트와 함께 춤추게 합니다.

 
Vladimir Simakov :

분기의 요점은 개발자의 의견이 있으면, 그렇지 않으면 ...

예, 부두에 기록되어 있습니다. 실행 순서 / 실행 순서 - 따라서 모든 것이 합법적인 것 같습니다. 그러나 모두 동일하게, 이것은 정말 치열한 ub라는 점을 감안할 때 도움이 실제로 연산자의 연관성이 아니라 실행 순서를 의미하는지 확인하고 싶습니다 .

이 스레드를 오염시키지 마십시오. C++가 아닌 MQL5 기능에 대한 스레드

 
Artyom Trishkin :

이 스레드를 오염시키지 마십시오. C++가 아닌 MQL5 기능에 대한 스레드

어떤 종류의 주석, 하나는 UB에 쓰고 다른 하나는 맹목적으로 그를 반향시킵니다. 그리고 MKL 도움말에 있는 것은 아무것도 없습니다.

주의: MQL5 언어에서 작업 실행의 우선순위는 C++ 언어 에서 허용되는 우선순위에 해당하며 MQL4 언어에 지정된 우선순위와 다릅니다.

그리고 테이블에서 "실행 순서"라고 하는 것은 실제로 "연관성"이라고 하며 일반적으로 정의되지 않는 계산 순서에 영향을 미치지 않습니다.

음, 알겠습니다. 감사할 일입니다. 여기 모든 킥애스 전문가가 있습니다. 제가 왜 등반을 하고 있습니까?

 
Vict :
주의: MQL5 언어에서 작업 실행의 우선순위는 C++ 언어 에서 허용되는 우선순위 에 해당하며 MQL4 언어에 지정된 우선순위와 다릅니다.

대부분의 경우 이는 엄격하지 않은 모드에만 적용됩니다.

수백 명의 사람들이 이곳에서 수년 동안 크로스 플랫폼을 작성해 왔습니다.