초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1242

 
Sayberix :

내가 읽고있다. 아직 도착하지 않았을 뿐입니다. 28MB PDF 형식의 도움말을 마스터하는 것은 그리 쉬운 일이 아니라고 생각합니다. 다른 말로 하면, 모든 교인들이 비록 굳게 믿으면서도 성경 전체를 아는 것은 아닙니다.

다른 질문이 있습니다. 어렵지 않은 경우 알려주세요.

전략 시각화 도우미에서 코드를 실행할 때:

1. 프로그램이 무한 루프에 빠진다.

2. 실행 결과가 다릅니다.

중단점 없이:

인쇄에 중단점 포함:


기록 데이터 디버깅에 대한 모든 작업을 수행했습니다.

당신은 지속적으로 변수를 증가시키고 있습니다. 어떻게 생각하세요? 변수의 크기가 언제 범위를 넘어설까요?

 
Vladimir Karputov :

당신은 지속적으로 변수를 증가시키고 있습니다. 어떻게 생각하세요? 변수의 크기가 언제 범위를 넘어설까요?

나는 olong 이 10번의 반복에 충분했어야 한다고 생각합니다. 그럼 질문:

1. 루프가 깨지지 않는 이유는 무엇입니까? 그리고

2. 반복 시간 카운터 자체의 결과가 표시되지 않는 이유는 무엇입니까?


디버깅이 기록 데이터에서 발생했기 때문에?

 
Sayberix :

나는 olong 이 10번의 반복에 충분했어야 한다고 생각합니다. 그럼 질문:

1. 루프가 깨지지 않는 이유는 무엇입니까? 그리고

2. 반복 시간 카운터 자체의 결과가 표시되지 않는 이유는 무엇입니까?


과거 데이터에 대한 디버깅 때문에?

전역 프로그램 수준에서 선언한 변수 - 지속적으로 증가시킵니다.

 
아, 알겠습니다... 반복은 밀리초도 채 걸리지 않습니다...
 
Vladimir Karputov :

전역 프로그램 수준에서 선언한 변수 - 지속적으로 증가시킵니다.

내가 이해하지 못하는 것과 마찬가지로 여기 전역 변수 . 프로그램 자체는 루프로 제한됩니다: "for(int i=1; i<=10; i++)" ?

아니면 제가 놓치고 있는 부분이 있다면 설명 부탁드립니다.

 
Sayberix :

내가 이해하지 못하는 것과 마찬가지로 여기 전역 변수 . 프로그램 자체는 루프로 제한됩니다: "for(int i=1; i<=10; i++)" ?

아니면 제가 놓치고 있는 부분이 있다면 설명 부탁드립니다.

변수 제거

 ulong count, raschet = 1 ;

글로벌 범위에서.


각 틱에 raschet 변수를 곱합니다. 그리고 다음 틱에서 다시 CONTINUE IT를 곱합니다. 몇 틱과 raschet 변수가 범위를 벗어납니다. 결국 변수의 값을 출력하지만 어떤 이유에서인지 이 출력물은 보지 않습니다.

 
Vladimir Karputov :

변수 제거

글로벌 범위에서.


각 틱에 raschet 변수를 곱합니다. 그리고 다음 틱에서 다시 CONTINUE IT를 곱합니다. 몇 틱과 raschet 변수가 범위를 벗어납니다. 결국 변수의 값을 출력하지만 어떤 이유에서인지 이 출력물은 보지 않습니다.

감사합니다. 나는 혼란스러워서 현재 틱에서 실행을 중단할 때 return이 프로그램을 완전히 중지한다고 생각합니다. "돌아가는"대신에; " ExpertRemove() ;"를 넣으십시오.

 

이 코드에 대해 알려주십시오.

 //+------------------------------------------------------------------+
//|                                                          env.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property indicator_buffers 2

int envHandle;
double upperEnv[], lowerEnv[];

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit ()
  {
   envHandle = iCustom ( _Symbol , _Period , "Examples\\Envelopes" , 3 , 0 , MODE_LWMA , PRICE_OPEN , 0.03 );
   if (envHandle< 0 )
     {
       Alert ( "Ошибка при создании индикаторов - номер ошибки: " , GetLastError (), "!!" );
       return ( INIT_FAILED );
     }
   SetIndexBuffer ( 0 ,upperEnv, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,lowerEnv, INDICATOR_DATA );

   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Deinitialization function of the expert                          |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
   IndicatorRelease (envHandle);
  }
//+------------------------------------------------------------------+
//| "Tick" event handler function                                    |
//+------------------------------------------------------------------+
void OnTick ()
  {

   ArraySetAsSeries (upperEnv, true );
   ArraySetAsSeries (lowerEnv, true );

   if (( CopyBuffer (envHandle, 0 , 0 , 3 ,upperEnv)< 0 ) || CopyBuffer (envHandle, 1 , 0 , 3 ,lowerEnv)< 0 )
       Alert ( "Ошибка копирования буферов индикатора Envelopes - номер ошибки:" , GetLastError (), "!!" );

   double    upEnv = upperEnv[ 0 ];
   double    lowEnv = lowerEnv[ 0 ];
  }
//+------------------------------------------------------------------+

upEnv 및 lowEnv 변수에서 Envelopes 라인의 지속적으로 업데이트되는 가격 값을 어떻게 얻을 수 있습니까? 지표를 그리지만 변수의 지표 값은 2번 업데이트 하면 끝입니다.

 
Sayberix :

이 코드에 대해 알려주십시오.

upEnv 및 lowEnv 변수에서 Envelopes 라인의 지속적으로 업데이트되는 가격 값을 어떻게 얻을 수 있습니까? 지표를 그리지만 변수의 지표 값은 2번 업데이트 하면 끝입니다.

당신은 먼저 결정 합니다. Expert Advisor 또는 지표를 작성 하시겠습니까? (이제 코드에 죽이 있습니다. 표시기와 어드바이저가 함께 혼합되어 있습니다.) - 즉, 코드가 작동하지 않습니다.

힌트: MQL 마법사를 사용하여 공백을 만드십시오.

 
Vladimir Karputov :

당신은 먼저 결정 합니다. Expert Advisor 또는 지표를 작성 하시겠습니까? (이제 코드에 죽이 있습니다. 표시기와 어드바이저가 함께 혼합되어 있습니다.) - 즉, 코드가 작동하지 않습니다.

힌트: MQL 마법사를 사용하여 공백을 만드십시오.

이미 시도했습니다. 그러나 마스터에서는 클래스와 함께 생성됩니다. 나는 최소한 간단한 방법으로 그것을 이해할 것입니다. 적어도 제가 많이 이해하지 못하는 코드로 말입니다. EA에서 지표 값을 얻기 위해 코드를 수정하는 방법을 알려주시겠습니까?

사유: