MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1315

 
Aleksey Mavrin :

MT4에 그런 쓰레기가 있습니다. 계정 변경 후 OnInit이 작동하는지 모르겠습니다. 그러면 환경 에 계정 번호를 업데이트할 시간이 없거나 다른 잼이 있습니다. 타이머로 결정했습니다.

많이, 실행 중인 EA가 있는 터미널이 다시 로드되면 작동하지 않는 것

IMHO, 코드가 테스터용이 아닌 경우 첫 번째 틱이 도착할 때 모든 초기화를 수행하는 것이 좋습니다. 그러면 모든 것의 99.9%가 올바르게 초기화됩니다.

 
Igor Makanu :

많이, 실행 중인 EA가 있는 터미널이 다시 로드되면 작동하지 않는 것

IMHO, 코드가 테스터용이 아닌 경우 첫 번째 틱이 도착할 때 모든 초기화를 수행하는 것이 좋습니다. 그러면 모든 것의 99.9%가 올바르게 초기화됩니다.

동의하지만 아마도 이것은 0.1%))

 
Igor Makanu :

많이, 실행 중인 EA가 있는 터미널이 다시 로드되면 작동하지 않는 것

IMHO, 코드가 테스터용이 아닌 경우 첫 번째 틱이 도착할 때 모든 초기화를 수행하는 것이 좋습니다. 그러면 모든 것의 99.9%가 올바르게 초기화됩니다.

첫 번째 틱이 도착할 때 모든 초기화를 수행하는 것이 좋습니다. 그러면 모든 것의 99.9%가 올바르게 초기화됩니다... 어때요 ??

 
ponochka :

첫 번째 틱이 도착할 때 모든 초기화를 수행하는 것이 좋습니다. 그러면 모든 것의 99.9%가 올바르게 초기화됩니다... 어때요 ??

 void OnTick ()
{
   static bool first_run = true ;
   if (first_run)
   {
      MyOnInit();
      first_run = false ;
   }
 
Igor Makanu :

"My" 형식의 패딩을 피하고 직접 수행 가능

 int OnInit()
  {
   ...
    account=AccountNumber();
   ...
  }

void OnTick ()
{
   static bool first_run = true ;
   if (first_run)
   {
     if(account==0) { // Если терминал не успел получить данные с сервера
       OnInit (); // пробуем снова всё инициализировать
      return;
     }
      first_run = false ;
   }
 
Vitaly Muzichenko :

"My" 형식의 패딩을 피하고 직접 수행 가능

이것은 패딩이 아니라 구조화된 코드입니다 .

귀하의 예는 몇 개의 추가 문자를 작성하고 체계화되지 않은 코드를 얻는 것이 얼마나 게으른지 보여주는 예입니다. 여기에서 OnInit()는 EA를 시작할 때 최소 2번 호출됩니다. 이것이 필요하거나 오히려 이겼다는 사실은 아닙니다. 이전에 작성된 것을 위반하지 마십시오 - 질문의 수준을 보셨습니까? )))

 
Igor Makanu :

이것은 패딩이 아니라 구조화된 코드입니다 .

귀하의 예는 몇 개의 추가 문자를 작성하고 체계화되지 않은 코드를 얻는 것이 얼마나 게으른지 보여주는 예입니다. 여기에서 OnInit()는 EA를 시작할 때 최소 2번 호출됩니다. 이것이 필요하거나 오히려 이겼다는 사실은 아닙니다. 이전에 작성된 것을 위반하지 마십시오 - 질문의 수준을 보셨습니까? )))

first_run = true ;

또한 최초 초기화 시 Init를 체크인해야 하며 그곳에서 이미 "재설정"할 수 있습니다.

그래서 그렇습니다. 동의한다.


추신: 동의하지 않습니다. 서버에 연결하여 서버에서 최신 데이터를 얻을 수 있다면 두 번 호출되지 않습니다.

 
Igor Makanu :

문서에 OnTick ()이 표시기에서 작동하지 않는다고 나와 있기 때문에 작동하지 않습니다!

 
ponochka :

문서에 OnTick ()이 표시기에서 작동하지 않는다고 나와 있기 때문에 작동하지 않습니다!

그게 한계입니다 :(

OnTick()을 다음으로 대체

 int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
그리고 다른 지점으로 가겠습니다.
 
Vitaly Muzichenko :

그게 한계입니다 :(

나는 질문의 수준에 대해 위에 썼습니다.)

그리고 이미 OnTick / OnInit에서 최적의 초기화를 찾기 시작했습니다. 모든 것이 더 간단합니다. 발견된 코드를 같은 친구와 공유할 수 있도록 보호해야 합니다. )))