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

 
Sergey Voytsekhovsky :

네 확실합니다. 그것에주의를 기울이지 않았습니다. 그리고 더 좋아 보입니다. 다시 글자가 적습니다.

그러나 하나의 연산자 아래에 넣는 것은 불가능 합니까?: 한 번에 세 번 실행(정확히 말하는 방법을 모르겠습니다)?

중괄호만 - 조건을 구분합니다.

 
int a,b,c,d,e,f,g,j;
a= 10 ;
b= 5 ;
d= 3 ;
f= 4 ;
j= 1 ;
a>b?{c=d;e=f;g=j}:{c= 0 ;e= 0 ;g= 0 };
Print ( "c=" ,c, " e=" ,e, " g=" ,g);

나는 그런 구조를 그리려고 했고, 컴파일러는 나에게 나쁜 냄새가 나는 무언가를 튀겼다. 실수는 어디에 있습니까?

 
Sergey Voytsekhovsky :

UURRAA, 그리고 영혼이 노래했습니다. Alexey, 정말 감사합니다!

모든 것이 작동했지만 어레이 없이 어떻게 작동하는지 이해하지 못했습니다.

설명이 제거되었습니다. 추가 배열 없이 여기에서 할 수 있습니까?


 #property indicator_color3    clrGreen , clrRed

이것은 배열입니다.

 
Sergey Voytsekhovsky :

네 확실합니다. 그것에주의를 기울이지 않았습니다. 그리고 더 좋아 보입니다. 다시 글자가 적습니다.

그러나 하나의 연산자 아래에 넣는 것은 불가능 합니까?: 한 번에 세 번 실행(정확히 말하는 방법을 모르겠습니다)?

할 수 있다. 두 개의 사용자 정의 함수를 만들고 호출합니다.

 int m = 5 ; //0;//
m = m == 0 ? f1 : f2;

int f1()
 {
   return ( 1 );
 }
int f2()
 {
   return ( 2 );
 }
 
Konstantin Nikitin :

예, 거의 동일합니다. 글쎄, 그들은 건너 뛰었습니다. 가장 중요한 것은 그가 무엇을 이해한다는 것입니다 ...

모든 것을 이해합니다. 감사합니다.
혼란스럽네요. 나에게는 모든 것이 새로워

 
Alexey Viktorov :

할 수 있다. 두 개의 사용자 정의 함수를 만들고 호출합니다.

내가 당신을 올바르게 이해 했습니까 ???

ColorHistogram_2Colors[i]=ExtMainBuffer[i]>= 50 ?ColorUp(i):ColorDown(i);
//+------------------------------------------------------------------+ 
int ColorUp( int i)
 {
   ColorHistogram_2Buffer1[i]= 50 ;
   ColorHistogram_2Buffer2[i]=ExtMainBuffer[i];
   return ( 0 );
 }
int ColorDown( int i)
 {
   ColorHistogram_2Buffer1[i]=ExtMainBuffer[i];
   ColorHistogram_2Buffer2[i]= 50 ;
   return ( 1 );
 }

표시기에 등록 - 작동합니다.

 
Sergey Voytsekhovsky :

제가 제대로 이해한건가요???

표시기에 등록 - 작동합니다.

작동하면 맞습니다. 하지만 저는 그렇게 하지 않을 것입니다.

첫째, 나는 버퍼를 50으로 쓰는 버퍼를 교체하는 것을 이상하게 생각하지 않을 것입니다. 아무 조건 없이 항상 50개만 쓰면 충분합니다.

그리고 두 번째 버퍼에는 50보다 크거나 작은 값을 입력합니다. 그런 다음 <=> 조건에서 남은 것은 색상을 지정하는 것입니다. 그리고 별도의 기능이 없습니다.

 
Alexey Viktorov :

작동하면 맞습니다. 하지만 저는 그렇게 하지 않을 것입니다.

첫째, 나는 버퍼를 50으로 쓰는 버퍼를 교체하는 것을 이상하게 생각하지 않을 것입니다. 아무 조건 없이 항상 50개만 쓰면 충분합니다.

그리고 두 번째 버퍼에는 50보다 크거나 작은 값을 입력합니다. 그런 다음 <=> 조건에서 남은 것은 색상을 지정하는 것입니다. 그리고 별도의 기능이 없습니다.

<>50 조건이 색상만 정의한다면 동의할 것이지만 이것은 히스토그램 양초의 시작/끝이기도 합니다. 따라서 나는 논쟁하지 않을 것이며, 당신이 옳을 가능성이 높지만 확인하려고 노력할 것입니다.

 
Alexey Viktorov :

작동하면 맞습니다. 하지만 저는 그렇게 하지 않을 것입니다.

예, 실제로 촛대의 시작/끝을 정의하는 두 개의 DRAW_COLOR_HISTOGRAM2 버퍼는 시작 또는 끝이 될 수 있습니다. 이제 모든 것이 훨씬 쉬워졌습니다.

   ColorHistogram_2Buffer1[i]= 50 ;
   ColorHistogram_2Buffer2[i]=ExtMainBuffer[i];
   ColorHistogram_2Colors [i]=ExtMainBuffer[i]>= 50 ? 0 : 1 ;

과학에 감사드립니다.

 

모드를 전환할 때 INDICATOR_MAXIMUM 및 INDICATOR_MINIMUM 값을 재설정하는 방법은 무엇입니까?

결론은 한 모드에서는 이러한 값이 사용되지만 다른 모드에서는 사용되지 않는다는 것입니다. 그리고 이러한 고저가 불필요한 모드로 모드를 전환하면 어떤 이유로 저장됩니다. 이 문제는 MQL4와 MQL5 모두에 존재합니다.

예를 들어 표시기가 첫 번째 모드에서 시작되면 테두리가 필요하지 않고 모든 것이 올바르게 작동합니다.

두 번째 모드에서는 표시기 창의 최대값과 최소값의 경계가 설정됩니다. 그리고 첫 번째 모드에서 두 번째 모드로 전환하면 모든 것이 올바르게 작동합니다.


그러나 이미 두 번째 모드에서 첫 번째 모드로 전환할 때(첫 번째 모드에서는 테두리가 사용되지 않음) 이러한 고점과 저점이 저장되고 사용자는 표시기의 실제 값을 볼 수 없습니다


첨부 파일의 MQL4 코드

누구든지이 문제가 발생 했습니까? 누구든지 이것을 해결하는 방법을 알고 있습니까?

파일:
test.mq4  4 kb