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

 
Andrey Barinov :
포인터를 반환합니다.
아이디어 주셔서 감사합니다. 그들을 완전히 잊어 버렸습니다.
 
Alexey Kozitsyn :
아이디어 주셔서 감사합니다. 그들을 완전히 잊어 버렸습니다.

기이한. 귀하의 코드는 나에게 컴파일 오류 를 제공합니다.

object of 'B' cannot be returned, copy constructor 'B::B(const B &)' not found

GetBMember 기능에 대한 설명(순수한 영어로 복사본 생성에 대해 말합니다). 최신 컴파일러 버전입니까?

복사 생성자 B를 추가하여 이 문제가 해결되면 GetBMember 메서드에서 const B를 반환할 수 있습니다.

그런 다음 컴파일러는 Reset을 반환된 변수로 만들려고 시도할 때 맹세합니다.

'Reset' - call non-const method for constant object

 
Stanislav Korotky :

기이한. 귀하의 코드에서 컴파일 오류가 발생 합니다.

object of 'B' cannot be returned, copy constructor 'B::B(const B &)' not found

GetBMember 함수에 대한 설명. 최신 컴파일러 버전입니까?

복사 생성자 B를 추가하여 이 문제가 해결되면 GetBMember 메서드에서 const B를 반환할 수 있습니다.

그런 다음 컴파일러는 Reset을 반환된 변수로 만들려고 시도할 때 맹세합니다.

'Reset' - call non-const method for constant object

이 코드는 브라우저에서 작성된 예제일 뿐입니다. 컴파일러가 아무 것도 보고하지 않는 이유가 궁금했습니다. 그러나 이미 이해했습니다.

그리고 내 예에서는 생성자가 전혀 없습니다. :)

 

안녕하세요! 2017.08.03_18:45 GMT+3. OOP 파일 SignalIchimoku.mqh를 작성했습니다. 그러나 별도의 함수에서 LongCondition() 및 ShortCondition() 전에 간단한 계산을 수행해야 하는 경우 함수가 작성되고 컴파일러는 0 오류, 0 경고를 제공합니다. 그리고이 기능은 작동하지 않으며 계산이 수행되지 않습니다. 이 프로그램은 거래를 열지 않습니다. 확인: 함수에 Print() 변수 값을 삽입했습니다. 이 함수는 표준 라이브러리의 표준 파일인 SignalStoch.mqh의 StateStoch(int ind), ExtStateStoch(int ind) 및 CompareMaps() 함수와 유사합니다. 모든 것이 표준 파일에서 작동하지만 저에게는 작동하지 않습니다. 왜요? 이 "간단한 규칙"이 또 있습니까? 누가 알겠습니까? 더 자세한 내용이 필요하거나 질문이 있으면 작성해 주세요. 18:59 GMT+3.

파일:
 

씨캔버스. FillCircle circle 함수의 구현에서 작은 잼. 이 GIF에서 볼 수 있듯이 한 픽셀 더 좁습니다 .

그리고 알고리즘도 매우 비합리적으로 구축되었습니다. 약 30%의 포인트가 두 번 추첨됩니다. 이것은 속도가 평균 30% 증가하는 동안 두 줄의 코드를 이동하면 쉽게 수정할 수 있습니다.
FillCircle의 원래 버전은 다음과 같습니다.

 void CCanvas::FillCircle( int x, int y, int r, const uint clr)
  {
   int f   = 1 -r;
   int dd_x= 1 ;
   int dd_y=- 2 *r;
   int dx  = 0 ;
   int dy  =r;
//--- draw
   while (dy>=dx)
     {
      LineHorizontal(x-dx,x+dx,y-dy,clr);
      LineHorizontal(x-dx,x+dx,y+dy,clr);
      LineHorizontal(x-dy,x+dy,y-dx,clr);
      LineHorizontal(x-dy,x+dy,y+dx,clr);
       //---
       if (f>= 0 )
        {
         dy--;
         dd_y+= 2 ;
         f+=dd_y;
        }
      dx++;
      dd_x+= 2 ;
      f+=dd_x;
     }
  }

다음은 수정된 것입니다.

 void CCanvas::FillCircle( int x, int y, int r, const uint clr)
  {
   int f   = 1 -r;
   int dd_x= 1 ;
   int dd_y=- 2 *r;
   int dx  = 0 ;
   int dy  =r;
//--- draw
   while (dy>=dx)
     {
      LineHorizontal(x-dy- 1 ,x+dy,y-dx,clr);
      LineHorizontal(x-dy- 1 ,x+dy,y+dx,clr);
       //---
       if (f>= 0 )
        {
         LineHorizontal(x-dx- 1 ,x+dx,y-dy,clr);
         LineHorizontal(x-dx- 1 ,x+dx,y+dy,clr);
         dy--;
         dd_y+= 2 ;
         f+=dd_y;
        }
      dx++;
      dd_x+= 2 ;
      f+=dd_x;
     }
  }
 

보류 중인 주문 정보가 삭제되었습니다( 금액이 충분하지 않음 ).

어드바이저의 올바른 작동은 작동 중에 오류가 발생하지 않는 경우입니다.

보류 주문이 삭제되었습니다(금액이 충분하지 않음)는 오류입니다.

문제는 슬리피지로 열리는 경우 주문을 여는 데 필요한 마진을 추적하는 것이 이론적으로 불가능하다는 것입니다.

예를 들어, 우리는 1.500의 가격에 팔기 위해 보류 중인 정지 주문을 열 수 있는 충분한 자금이 있다고 설정하고 계산했습니다. (이미 1.499의 가격으로 사라졌습니다.)

현재 가격은 1.501입니다.

다음 눈금은 1.499입니다.

주문 및 오류를 열려고 시도합니다.

따라서 이러한 상황은 이 오류의 발생을 100% 우회할 수 없는 경우에 처음 설정되었습니다.

아니면 내가 뭔가를 놓치고 있습니까?

 

Expert 폴더의 인접 디렉토리에서 mqh 파일을 가져오는 방법을 알 수 없습니다.

폴더 1에서 폴더 2로 mqh 파일을 가져오는 방법은 무엇입니까?

 
Vladimir Pastushak :

experrts 폴더의 인접 디렉토리에서 mqh 파일을 가져오는 방법을 알 수 없습니다.

폴더 1에서 폴더 2로 mqh 파일을 가져오는 방법은 무엇입니까?


솔루션을 찾았습니다. 포함자를 연결하려는 파일이 Test\One에 있고 포함자가 Test\Two에 있는 경우...

이와 같이:

 #include " ..\Two\name.mqh ""
..\ - One에서 Test로 이동하고 Two\name.mqh - Test에서 Two로 이동하여 name.mqh 파일을 선택합니다.
 
프로필에 "내 메시지"가 표시되지 않습니다.

다른 사람들의 프로필
 
Vladimir Pastushak :

솔루션을 찾았습니다. 포함자를 연결하려는 파일이 Test\One에 있고 포함자가 Test\Two에 있는 경우...

이와 같이:

..\ - One에서 Test로 이동하고 Two\name.mqh - Test에서 Two로 이동하여 name.mqh 파일을 선택합니다.

다음과 같은 구조도 있습니다.

 #include "..\..\Two\name.mqh"