오류, 버그, 질문 - 페이지 98

 

나는 "개가 묻힌 곳"을 이해하지 못하고 코드가 작동하고 모든 것이 정상이지만 Indi.mqh 125 45 형식 변환으로 인한 데이터 손실 가능성에 대한 컴파일러의 경고 를 보고 생각하게 됩니다.


 //+------------------------------------------------------------------+
//|Получение значений позиций в средe BB цены AppPrice,Fast/Slow TEMA|
//+------------------------------------------------------------------+

void CIndi::SetPricePositions( ushort SymbolPosition, ushort Index, uchar AppPrice)
  {
   int handle=GetHandle(SymbolPosition,BANDS);
   double Upper =Upper_Band(handle,Index);
   double Base  =Base_Band(handle,Index);
   double Lower =Lower_Band(handle,Index);
   double FTema =GetValuesFromIndi(GetHandle(SymbolPosition,TEMA_FAST), 0 ,Index);
   double STema =GetValuesFromIndi(GetHandle(SymbolPosition,TEMA_SLOW), 0 ,Index);
   
   Bollinger[SymbolPosition][PRICE_POSITION]=( double )GetPricePos(handle,Index,AppPrice); ???
   Bollinger[SymbolPosition][FAST_POSITION] =( double )Custom.Position(Lower,Upper,FTema); ???
   Bollinger[SymbolPosition][SLOW_POSITION] =( double )Custom.Position(Lower,Upper,STema); ???
   Bollinger[SymbolPosition][UPPER]         =( double )Upper; ???
   Bollinger[SymbolPosition][BASE]          =( double )Base;  ???
   Bollinger[SymbolPosition][LOWER]         =( double )Lower; ???
  }
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Предупреждения компилятора
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Предупреждения компилятора
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Предупреждения компилятора - Документация по MQL5
 

개발자.

내가 아는 한 스왑 문제가 해결되었습니까? 아니면 서비스데스크에서 주제가 사라진 이유가 불명.....

 

어드바이저를 테스트 할 때

 void OnTick (){
   Print (iTest());
}
//+------------------------------------------------------------------+
int iTest(){
   double i;
   int j;
   for ( int x= 3 ; x> 0 ; x--) { 
      i=i+ 0.00001 ;
   } //Next x
   j= int (i/ _Point );
   return (j);
} //iTest()

로그에 계속 증가하는 숫자가 표시됩니다! 그래야만 합니까?

MQL4에서는 이러한 효과를 위해 다음을 작성해야 했습니다.

 static double i;

 
EvgeTrofi :

어드바이저를 테스트할 때

로그에 계속 증가하는 숫자가 표시됩니다! 그래야만 합니까?

네, 그래야 합니다.

후속 호출에서 이전 호출과 마찬가지로 스택의 동일한 위치에 할당된 로컬 변수 i 를 초기화하지 않았습니다.

Документация по MQL5: Основы языка / Переменные / Локальные переменные
Документация по MQL5: Основы языка / Переменные / Локальные переменные
  • www.mql5.com
Основы языка / Переменные / Локальные переменные - Документация по MQL5
 
Renat :

네, 그래야 합니다.

후속 호출에서 이전 호출과 마찬가지로 스택의 동일한 위치에 할당된 로컬 변수 i 를 초기화하지 않았습니다.

그렇다면 어떤 경우에 정적 스토리지 클래스를 사용해야 할까요?

" 정적 으로 선언된 로컬 변수는 프로그램 실행 초기부터 존재함에도 불구하고 블록 범위를 가집니다" 도움말에서 이해할 수 없는 문장을 설명하십시오. 구문에 문법적 오류나 문법적 오류가 스며든 것 같습니다. :)

도움말의 예에 주의하십시오: https://www.mql5.com/en/docs/basis/variables/static

코드에서 static 이라는 단어를 제거하면 아무 것도 변경되지 않습니다.

 int Counter()
  {
   int count;
   count++;
   if (count% 100 == 0 ) Print ( "Функция Counter была вызвана уже " ,count, " раз" );
   return count;
  }
void OnStart ()
  {
//---
   int c= 345 ;
   for ( int i= 0 ;i< 1000 ;i++)
     {
       int c=Counter();
     }
   Print ( "c = " ,c);
  }

질문: 정적이 없는 경우에도 정적 이 필요한 이유는 무엇입니까?

Документация по MQL5: Основы языка / Переменные / Статические переменные
Документация по MQL5: Основы языка / Переменные / Статические переменные
  • www.mql5.com
Основы языка / Переменные / Статические переменные - Документация по MQL5
 
ALozovoy :
안녕하세요. [테스터] 설명에 ExpertParameters 매개변수가 누락되었습니다. 이에 대한 자세한 내용은 도움말에서 확인할 수 있습니다.

덕분에 효과가 있었습니다.

 


블록 내에서 변수를 선언하는 기능이 추가된 목적은 무엇인지 알려주세요. 이 경우 이전:

  
int c;    for ( int i= 0 ;i< 1000 ;i++)      {         int  c=Counter(); }

이전에는 직접 라인이 두 번 선언되었다는 창이 뜨고 변수에 대해 다른 이름을 제시하거나 동일한 이름을 사용해야 하지만 int 없이 사용해야 한다는 것이 분명했습니다. 그리고 지금 당신은 혼란스러워 할 수 있습니다. C++에서도 마찬가지인가요?

(MQL을 공부하기 전에 Visual Basic으로 프로그래밍을 했습니다. 그런 불명예는 없었습니다)

 
EvgeTrofi :

그렇다면 어떤 경우에 정적 스토리지 클래스 를 사용해야 합니까?


아니요.

int i 를 만든 경우 , 그렇다면 왜 초기화되지 않았습니까? 사실, 당신은 "이 변수에 무엇이 들어 있는지는 나에게 중요하지 않다"고 말했고 결과적으로 당신은 쓰레기를 얻었습니다.

올바르게 그렇게 하는 것이 필요합니다: int i=0;

C++에서도 마찬가지인가요?

네, 맞습니다. 블록 내부에 이러한 변수를 생성할 수 있습니다.
 

터미널의 306 빌드에서 Windows 7 64비트에서 문제가 발생했습니다(Windows 7 32비트에서는 모든 것이 잘 작동함).

파일:
mql64.png  52 kb
 
VanHelsing :

터미널의 306 빌드에서 Windows 7 64비트에서 문제가 발생했습니다(Windows 7 32비트에서는 모든 것이 잘 작동함).

이 상황을 보여주는 코드 조각을 서비스 데스크에 게시하십시오.