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

 
Artyom Trishkin :

그런 다음 양초 아래에 그려야하는 지표에 대한 지표 + 양초의 선을 그려야합니다. 촛불 위에 그려진 나머지는 차트의 배경에 촛불 그림을 설정합니다. 저는 개인적으로 다른 방법이 보이지 않습니다.

약간의 완고함과 약간의 독창성으로 많은 일을 할 수 있습니다. 그러나 MQL5에서 프로그램을 빌드하는 편의성과 유연성의 관점에서 개발자에게 표시기 버퍼 (모든 표시기 버퍼용)의 속성을 요청할 수 있습니다.

 

Alglib은 빌드 2940에서 다시 작성되었으며 이제 복소수로 작업하는 것이 구조입니다(클래스가 있음).

그리고 실수를 저질렀다:

 #include <Math\Alglib\complex.mqh>
void OnStart ()
{
      al_complex a( 1 , 2 );
      al_complex b( 3 , 4 );
      a += b;
       printf ( "tst#1 : a.real = %f , a.imag = %f" , a.re, a.im);

      al_complex c( 1 , 2 );
      al_complex d( 3 , 4 );
      c -= d;
       printf ( "tst#2 : c.real = %f , c.imag = %f" , c.re, c.im);
 }

2021.05.23 21:49:35.210 tst (EURUSD,H1) tst#1 : a.real = 4.000000 , a.imag = 6.000000

2021.05.23 21:49:35.210 tst (EURUSD,H1) tst#2 : c.real = 4.000000 , c.imag = 6.000000


복잡한 .mqh 소스

 //+------------------------------------------------------------------+
//| Overloading (+=)                                                 |
//+------------------------------------------------------------------+
void al_complex:: operator +=( const al_complex &rhs)
  {
   re+=rhs.re;
   im+=rhs.im;
  }
//+------------------------------------------------------------------+
//| Overloading (-=)                                                 |
//+------------------------------------------------------------------+
void al_complex:: operator -=( const al_complex &rhs)
  {
   re+=rhs.re;
   im+=rhs.im;
  }
 

나는 그들이 새로운 데이터 유형 complex 를 발표했다는 것을 기억하지 못하지만 포함된 라이브러리가 없으면 모든 것이 올바르게 작동합니다.

 void OnStart ()
{
      complex a( 1 , 2 );
      complex b( 3 , 4 );
      a += b;
       printf ( "tst#1 : a.real = %f , a.imag = %f" , a.real, a.imag);

      complex c( 1 , 2 );
      complex d( 3 , 4 );
      c -= d;
       printf ( "tst#2 : c.real = %f , c.imag = %f" , c.real, c.imag);
 }

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#1 : a.real = 4.000000 , a.imag = 6.000000

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#2 : c.real = -2.000000 , c.imag = -2.000000




새로운 복합 유형은 어디에서 왔습니까? ....도움말에 아무것도 없고 추가된 내용은?

 
Igor Makanu :

나는 그들이 새로운 데이터 유형 complex 를 발표했다는 것을 기억하지 못하지만 포함된 라이브러리가 없으면 모든 것이 올바르게 작동합니다.

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#1 : a.real = 4.000000 , a.imag = 6.000000

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#2 : c.real = -2.000000 , c.imag = -2.000000




새로운 복합 유형은 어디에서 왔습니까? ....도움말에 아무것도 없고 추가된 내용은?

새로운 유형의 추가에 대한 개발자의 확인이 있었습니다. 최근에.

 
Igor Makanu :

나는 그들이 새로운 데이터 유형 complex 를 발표했다는 것을 기억하지 못하지만 포함된 라이브러리가 없으면 모든 것이 올바르게 작동합니다.

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#1 : a.real = 4.000000 , a.imag = 6.000000

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#2 : c.real = -2.000000 , c.imag = -2.000000

새로운 복합 유형은 어디에서 왔습니까? ....도움말에 아무것도 없고 추가된 내용은 무엇인가요?

여기 :

7. MQL5: 복소수 작업에 대한 지원이 추가되었습니다.


새로운 내장형 "복합체"가 추가되었습니다.
 struct complex
  {
   double              real;   // вещественная часть
   double              imag;   // мнимая часть
  };
"복잡한" 유형은 MQL5 함수에 대한 매개변수로 값으로 전달할 수 있습니다(참조로만 전달되는 일반 구조와 달리). DLL에서 가져온 함수의 경우 "복잡한" 유형은 참조로만 전달되어야 합니다.

접미사 'i'는 복잡한 상수를 설명하는 데 사용됩니다.
complex square(complex c)
  {
   return (c*c);
  }
  
void OnStart ()
  {
   Print (square( 1 + 2 i));   // в качестве параметра передается константа
  }

// будет выведено "(-3,4)" - это строковое представление комплексного числа
복소수의 경우 현재 단순 연산만 사용할 수 있습니다: =, +, -, *, /, +=, -=, *=, /=, ==, !=.

미래에는 절대값, 사인, 코사인 및 기타 여러 가지 추가 수학 함수가 추가될 것입니다.
Новая версия платформы MetaTrader 5 build 2940: Перенос витрин MQL5-сервисов в рабочую область и обновление дизайна
Новая версия платформы MetaTrader 5 build 2940: Перенос витрин MQL5-сервисов в рабочую область и обновление дизайна
  • 2021.05.14
  • www.mql5.com
В пятницу 21 мая 2021 года будет выпущена обновленная версия платформы MetaTrader 5...
 
Artyom Trishkin :

여기 :

7. MQL5: 복소수 작업에 대한 지원이 추가되었습니다.


새로운 내장형 "복합체"가 추가되었습니다.
"복잡한" 유형은 MQL5 함수에 대한 매개변수로 값으로 전달할 수 있습니다(참조로만 전달되는 일반 구조와 달리). DLL에서 가져온 함수의 경우 "복잡한" 유형은 참조로만 전달되어야 합니다.

접미사 'i'는 복잡한 상수를 설명하는 데 사용됩니다.
복소수의 경우 현재 단순 연산만 사용할 수 있습니다: =, +, -, *, /, +=, -=, *=, /=, ==, !=.

미래에는 절대값, 사인, 코사인 및 기타 여러 가지 추가 수학 함수가 추가될 것입니다.

네 감사합니다 업데이트가 늦어서 죄송합니다

 
실행 중 오류:
 void OnStart ()
{
     const string text[] = { "ABC" , "" , "ABC" };
     uchar array[];
     int start = 0 ;
     int n = 0 ;
     for ( int i = 0 ; i < ArraySize ( text ); i++ )
    {
         const int count = StringLen ( text[ i ] );
        n += StringToCharArray ( text[ i ], array, start, count );
        start += count;
    }
     Print ( ArraySize ( array ), ":" , n );
}

결과: 6:7

예상: 6:6

 
A100 :
실행 중 오류:

결과: 6:7

예상: 6:6

count = 0 - 문자열의 끝 부분만 복사합니다. 여전히 "" != NULL 입니다.

 
fxsaber :

count = 0 - 문자열의 끝 부분만 복사합니다. 여전히 "" != NULL 입니다.

그리고 얼마나 많은

 StringToCharArray

count = 0일 때 문자를 복사해야 합니까?

힌트: count = 3개 3자

 
A100 :

count = 0일 때 문자를 복사해야 합니까?

count=0은 count=-1과 같은 방식으로 작동하는 것으로 보이며 ""의 경우 터미널 0을 복사하므로 추가 확인 없이는 빈 문자열이 정상적으로 변환되지 않습니다.