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

 
Alexey Viktorov # :

나는 논쟁하지 않는다. 이 게시물의 사진에 "회색"이 표시됩니다.


소스가 없으면 이러한


글쎄, 나는 "이것들"에 대해 이야기하고 말했다. 오버플로가 발생하고 표시기가 표시되지 않을 때 언급한 메시지에서 화면에 표시되는 메뉴에 표시되는 내용을 보지 않았습니다. 여기서 확실히 말할 수는 없습니다.

그러나 네비게이터에 표시기가 없지만 폴더에 있는 경우 폴더에서 일부 이전 표시기가 제거될 때까지 새 표시기가 내비게이터에 표시되지 않음을 의미합니다.

그것은, 통과했다. 난 혼자가 아니에요.

 

동적 배열을 표시기 버퍼로 지정하여 수동으로 크기를 조정할 필요가 없도록 하고 싶었습니다. 그러나 표시기 버퍼의 동적 배열로 추정되는 ArrayResize() 를 거부하는 것은 불가능하며, 크기는 터미널 자체에서 모니터링해야 하고 수동으로 크기를 조정할 필요가 없습니다.

https://www.mql5.com/ru/docs/series/bufferdirection :

Индикаторный буфер представляет из себя  динамический массив  типа double, размером которого управляет клиентский терминал с тем, чтобы он всегда соответствовал количеству баров, на которых индикатор рассчитывается. Обычный динамический массив типа double назначается в качестве индикаторного буфера с помощью функции  SetIndexBuffer() . Для индикаторных буферов не требуется задавать размер с помощью функции  ArrayResize() , исполняющая система терминала сама позаботится об этом.

https://www.mql5.com/ru/docs/array/arrayisdynamic 으로 이동하여 코드를 실행하고 갑자기 다음을 찾습니다.

2022.01.24 21:25:27.543 t (NZDUSD,D1) 3. 표시 버퍼 확인:

2022.01.24 21:25:27.543 t (NZDUSD,D1) 메모리 해제 전 크기 = 7278

2022.01.24 21:25:27.543 t (NZDUSD,D1) 이것은 동적 배열입니다 = 아니요

2022.01.24 21:25:27.543 t (NZDUSD,D1) 여유 메모리 후 크기 = 0

동안 그는:

 double ExtBuff[];       // индикаторный буфер
SetIndexBuffer ( 0 ,ExtBuff);

나는 책을 본다 - 나는 무화과를 본다. 아니면 그동안 우리가 속았습니까?

아니면 한 번 동적(첫 번째 초기화 시)이고 그 다음에는 모든 것입니까?

 
x572intraday # :

표시기 버퍼의 동적 배열로 추정되는 ArrayResize() 를 부인하는 것은 불가능합니다. 그 크기는 터미널 자체에서 모니터링해야 하고 수동으로 크기를 조정할 필요가 없습니다.

https://www.mql5.com/ru/docs/series/bufferdirection :

https://www.mql5.com/ru/docs/array/arrayisdynamic 으로 이동하여 코드를 실행하고 갑자기 다음을 찾습니다.

그는:

나는 책을 본다 - 나는 무화과를 본다. 아니면 그동안 우리가 속았습니까?

아니면 한 번 동적(첫 번째 초기화 시)이고 그 다음에는 모든 것입니까?

22:23:17.002 동적 EURCAD, H1: +============================+

0 22:23:17.002 동적 EURCAD,H1: 1. 동적 배열 확인:

0 22:23:17.002 동적 EURCAD,H1: 사용 가능한 메모리 이전 크기 = 100

0 22:23:17.002 동적 EURCAD,H1: 동적 배열입니다 = 예

0 22:23:17.002 동적 EURCAD,H1: 여유 메모리 후 크기 = 0

0 22:23:17.002 동적 EURCAD,H1: 2. 정적 어레이 검사:

0 22:23:17.002 동적 EURCAD,H1: 사용 가능한 메모리 이전 크기 = 100

0 22:23:17.002 동적 EURCAD,H1: 동적 배열입니다 = 아니요

0 22:23:17.002 동적 EURCAD,H1: 여유 메모리 후 크기 = 0

0 22:23:17.002 Dynamic EURCAD,H1: 3. 표시 버퍼 확인:

0 22:23:17.002 동적 EURCAD,H1: 사용 가능한 메모리 이전 크기 = 2725

0 22:23:17.002 동적 EURCAD,H1: 동적 배열입니다 = 예

0 22:23:17.002 동적 EURCAD,H1: 여유 메모리 후 크기 = 0

0 22:23:24.754 동적 EURCAD,H1: 단위 이유 1

0 22:23:24.758 사용자 지정 표시기 동적 EURCAD,H1: 제거됨

4시에요.

 
x572intraday # :

동적 배열을 표시기 버퍼로 지정하여 수동으로 크기를 조정할 필요가 없도록 하고 싶었습니다. 그러나 표시기 버퍼의 동적 배열로 추정되는 ArrayResize() 를 거부하는 것은 불가능하며, 크기는 터미널 자체에서 모니터링해야 하고 수동으로 크기를 조정할 필요가 없습니다.

https://www.mql5.com/ru/docs/series/bufferdirection :

https://www.mql5.com/ru/docs/array/arrayisdynamic 으로 이동하여 코드를 실행하고 갑자기 다음을 찾습니다.

동안 그는:

나는 책을 본다 - 나는 무화과를 본다. 아니면 그동안 우리가 속았습니까?

아니면 한 번 동적(첫 번째 초기화 시) 이고 그 다음에는 모든 것입니까?

맞어 그거야 :-)

...SetIndexBuffer 이후에는 더 이상 ArrayResize를 사용할 수 없으며 프로그램의 관점에서 배열은 미리 결정된(외부 제어) 크기로 정적입니다.

 
Alekseu Fedotov # :

22:23:17.002 동적 EURCAD, H1: +============================+

0 22:23:17.002 동적 EURCAD,H1: 1. 동적 배열 확인:

0 22:23:17.002 동적 EURCAD,H1: 사용 가능한 메모리 이전 크기 = 100

0 22:23:17.002 동적 EURCAD,H1: 동적 배열입니다 = 예

0 22:23:17.002 동적 EURCAD,H1: 여유 메모리 후 크기 = 0

0 22:23:17.002 동적 EURCAD,H1: 2. 정적 어레이 검사:

0 22:23:17.002 동적 EURCAD,H1: 사용 가능한 메모리 이전 크기 = 100

0 22:23:17.002 동적 EURCAD,H1: 동적 배열입니다 = 아니요

0 22:23:17.002 동적 EURCAD,H1: 여유 메모리 후 크기 = 0

0 22:23:17.002 Dynamic EURCAD,H1: 3. 표시 버퍼 확인:

0 22:23:17.002 동적 EURCAD,H1: 사용 가능한 메모리 이전 크기 = 2725

0 22:23:17.002 동적 EURCAD,H1: 동적 배열입니다 = 예

0 22:23:17.002 동적 EURCAD,H1: 여유 메모리 후 크기 = 0

0 22:23:24.754 동적 EURCAD,H1: 단위 이유 1

0 22:23:24.758 사용자 지정 표시기 Dynamic EURCAD,H1: 제거됨

4시에요.

공상! 마법이 뭐야? EURCAD, H1에서 방금 확인했습니다. 다시 "아니오"입니다.

그리고 4.는 무엇입니까? 예제에는 3개의 포인트만 있습니다.

 
x572intraday # :

공상! 마법이 뭐야? EURCAD, H1에서 방금 확인했습니다. 다시 "아니오"입니다.

그리고 4는 무엇 입니까? 예제에는 3개의 포인트만 있습니다.

터미널 MT4

 
x572intraday # :

공상! 마법은 무엇입니까? EURCAD, H1에서 방금 확인했습니다. 다시 "아니오"입니다.

그리고 4.는 무엇입니까? 예제에는 3개의 포인트만 있습니다.

0 23:33:06.088 테스트(EURUSD,D1) +==============================+

0 23:33:06.088 테스트(EURUSD,D1) 1. 동적 배열 확인:

0 23:33:06.088 테스트(EURUSD,D1) 메모리 해제 전 크기 = 100

0 23:33:06.088 테스트(EURUSD,D1) 이것은 동적 배열입니다 = 예

0 23:33:06.088 테스트(EURUSD,D1) 여유 메모리 후 크기 = 0

0 23:33:06.088 테스트(EURUSD,D1) 2. 정적 어레이 검사:

0 23:33:06.088 테스트(EURUSD,D1) 메모리 해제 전 크기 = 100

0 23:33:06.088 테스트(EURUSD,D1) 이것은 동적 배열입니다 = 아니요

0 23:33:06.088 테스트(EURUSD,D1) 메모리 해제 후 크기 = 100

0 23:33:06.088 테스트(EURUSD,D1) 3. 표시 버퍼 확인:

0 23:33:06.088 테스트(EURUSD,D1) 메모리 해제 전 크기 = 1054

0 23:33:06.088 테스트(EURUSD,D1) 이것은 동적 배열입니다 = 아니요

0 23:33:06.088 테스트(EURUSD,D1) 여유 메모리 후 크기 = 0


MT5 터미널, 아무 생각이 없습니다.

 
x572intraday # :

동적 배열을 표시기 버퍼로 지정하여 수동으로 크기를 조정할 필요가 없도록 하고 싶었습니다. 그러나 표시기 버퍼의 동적 배열로 추정되는 ArrayResize() 를 거부하는 것은 불가능하며, 크기는 터미널 자체에서 모니터링해야 하고 수동으로 크기를 조정할 필요가 없습니다.

https://www.mql5.com/ru/docs/series/bufferdirection :

https://www.mql5.com/ru/docs/array/arrayisdynamic 으로 이동하여 코드를 실행하고 갑자기 다음을 찾습니다.

동안 그는:

나는 책을 본다 - 나는 무화과를 본다. 아니면 그동안 우리가 속았습니까?

아니면 한 번 동적(첫 번째 초기화 시)이고 그 다음에는 모든 것입니까?

버퍼 배열은 동적입니다. MQL에서 동적 배열에는 내가 작업하는 동안 이해한 한(초고급 언어에서와 같이) 개체의 기호가 있습니다. 그러나 동적 배열을 선언한 후 SetIndexBuffer를 사용하여 버퍼를 선언하면 이 메모리 영역이 예약됩니다. 따라서 대부분의 표준 함수는 크기를 변경할 수 없습니다. 때때로 객체 배열을 표시기 버퍼로 사용합니다. 그리고 이렇게 하면 해당 배열의 메모리가 객체의 소멸자에서 해제됩니다. 따라서 응용 프로그램 (또는 개체) 자체에서 표시기 버퍼 메모리를 해제하는 것이 허용됩니다. 그러나 이것이 표시기 작동 중에 어레이를 바로 해제할 수 있음을 의미하지는 않습니다. 모든 일은 마음으로 해야 합니다.

 

안녕하세요

말해줘, 내가 어드바이저를 쓰려고 하는데, 테스트 도중에 나로서는 이해할 수 없는 일이...

기능이 있다

CalcAngleTrend( NormalizeDouble ((a[ 0 ]-a[ 1 ]), MA_DIGITS));

double CalcAngleTrend( double d)
 {
   double a = ( double ) (( atan (d* pow ( 10 , _Digits - 2 )))*( 180 / M_PI )*coefAngle);
Print ( "d: " , d);
   return ( NormalizeDouble (a, ANGLE_DIGITS));
 }

상황은 다음과 같습니다. 하나의 어드바이저 인스턴스가 차트에서 시작되고 두 번째 인스턴스가 유사한 차트에서 MT4 디버그 모드로 시작됩니다.
함수에 대한 입력 데이터는 같지만 출력이 다릅니다!!!? 그냥 뭔가 이해가 안감...

Это выдает запущеный вариант:

2022.01 . 25 15 : 01 : 12.880 USDJPY,M5: d: 0.0014887
2022.01 . 25 15 : 01 : 12.880 USDJPY,M5: d: - 0.0060861
2022.01 . 25 15 : 01 : 12.880 USDJPY,M5: Angle Slow: + 1.70580000
2022.01 . 25 15 : 01 : 12.880 USDJPY,M5: Angle Fast: - 6.96560000

это в режиме отладки:

2022.01 . 25 15 : 01 : 14.330 USDJPY,M5: d: 0.0014887
2022.01 . 25 15 : 01 : 14.330 USDJPY,M5: d: - 0.0060861
2022.01 . 25 15 : 01 : 14.330 USDJPY,M5: Angle Slow: + 4.26450000
2022.01 . 25 15 : 01 : 14.330 USDJPY,M5: Angle Fast: - 17.41390000

정보를 파헤치는 방향을 알려주세요?!

추신: 출력 사이의 차이를 정확히 2.5배 계산했습니다.
 
Владимир Казаков 어드바이저를 쓰려고 하는데, 테스트 도중에 나로서는 이해할 수 없는 일이...

기능이 있다

상황은 다음과 같습니다. 하나의 어드바이저 인스턴스가 차트에서 시작되고 두 번째 인스턴스가 유사한 차트에서 MT4 디버그 모드로 시작됩니다.
함수에 대한 입력 데이터는 같지만 출력이 다릅니다!!!? 그냥 뭔가 이해가 안감...

정보를 파헤치는 방향을 알려주세요?!

추신: 출력 사이의 차이를 정확히 2.5배 계산했습니다.

각도를 계산하는 공식에 관한 것입니다. 이 코드는 하나의 좌표와 일종의 계수가 계산에 사용된다는 것을 보여주지만 그 목적은 명확하지 않습니다. 어떤가요? 각도를 계산하는 데 어떤 데이터를 사용하는지 자세히 알려주십시오.