OEM 표시기 색상

 

안녕하세요!

표준 표시기의 색상을 프로그래밍 방식으로 변경하는 방법은 무엇입니까?

감사합니다 마이클

 
Mikalas :

표준 표시기의 색상을 프로그래밍 방식으로 변경하는 방법은 무엇입니까?

그런 질문을 한 번도 다루지 않았지만 생각은 다음과 같습니다. 표준 표시기 코드를 열고 표시기_ 색상* 이 있는 행을 찾아야 합니다.

글쎄, 뭔가

 //--- японские свечи будут рисоваться цветом clrDodgerBlue
#property indicator_color1  clrDodgerBlue

그런 다음 원하는 색상을 붙여넣습니다. MQL5 참조 / 사용자 지정 표시기 / 표시기 속성 및 기능과 MQL5 참조 간의 관계 / 표준 상수, 열거 및 구조 / 표시기 상수 / 그리기 스타일도 참조하십시오.

 

물론 감사합니다.

그러나 코드를 편집해야 할 때마다?

남자 이름

 
Mikalas :

물론 감사합니다.

그러나 코드를 편집해야 할 때마다?

"일반" 표시기를 직접 만들고 옵션을 삽입하십시오. 예를 들어(순전히 아이디어): 입력 매개변수에 색상을 표시한 다음 PlotIndexSetInteger (N-1, PLOT_LINE_COLOR , nColor) 함수를 사용하여 Oninit()에서 색상을 처리합니다. 핸드북의 예가 도움이 될 수 있습니다. 그러면 코드 자체를 편집하는 것이 아니라 실행 또는 변경될 때 표시기의 속성을 통해 원하는 색상을 설정할 수 있습니다.
 
Mikalas :

물론 감사합니다.

그러나 코드를 편집해야 할 때마다?

당신의 논리에 문제가 있습니다. 당신은 원래 다음과 같이 물었습니다.

미칼라스 :

표준 표시기의 색상을 프로그래밍 방식으로 변경하는 방법은 무엇입니까?

 
abolk :

논리에 문제가 있습니다. 당신은 원래 다음과 같이 물었습니다.

친애하는 아볼크!

분명히 귀하의 코드에서.

남자 이름

 
Yedelkin :
"일반" 표시기를 직접 만들고 옵션을 삽입하십시오. 예를 들어(순전히 아이디어): 입력 매개변수에 색상을 표시한 다음 PlotIndexSetInteger (N-1, PLOT_LINE_COLOR , nColor) 함수를 사용하여 Oninit()에서 색상을 처리합니다. 핸드북의 예가 도움이 될 수 있습니다. 그러면 코드 자체를 편집하는 것이 아니라 실행 또는 변경될 때 표시기의 속성을 통해 원하는 색상을 설정할 수 있습니다.

정말 감사합니다.

안타깝게도 개발자들은 그것을 생각하지 않았습니다.

이 코드는 작동했어야 했지만.... 아아...

params[ 0 ].type = TYPE_INT ;
        params[ 0 ].integer_value = 10 ;
        
        params[ 1 ].type = TYPE_INT ;
        params[ 1 ].integer_value = 0 ;
        
        params[ 2 ].type = TYPE_INT ;
        params[ 2 ].integer_value = MODE_SMA ;
        
        params[ 3 ].type = TYPE_INT ;
        params[ 3 ].integer_value = PRICE_MEDIAN ;
        
        params[ 4 ].type = TYPE_COLOR ;
        params[ 4 ].double_value = clrBlue ;
        
        ma_handle = IndicatorCreate ( NULL , PERIOD_CURRENT , IND_MA , 5 , params );
         if ( ma_handle != INVALID_HANDLE )
      {
         ChartIndicatorAdd ( 0 , 0 , ma_handle );
      }
 
Mikalas :

이 코드는 작동했어야 했지만.... 아아...

IndicatorCreate() 함수와 함께 작동하지 않았습니다. 사용자 지정 표시기 를 만드는 것이 더 쉬운 것으로 나타났습니다. 그럼에도 불구하고 코드의 일부만 제공했기 때문에 질문은 다음과 같습니다. params 변수를 사용하기 시작하기 전에 재설정했습니까? 예를 들어 다음과 같습니다.

 MqlParam params;
ZeroMemory (params); 

그리고 귀하의 게시물은 어떤 오류 코드를 반환합니까?

그리고 그들은 이렇게 했습니다.

 ArrayResize (params, 5 );
?

또한 IND_MA( iMA ) 표시기에는 "색상"과 같은 매개변수가 없으며 사용자가 지정했습니다. 여기에서 iMA 사용 예를 참조하십시오: MQL5 참조 / 시계열 및 지표 액세스 / IndicatorCreate.

 
Mikalas :

이 코드는 작동했어야 합니다

왜 그런 겁니까? 먼저 색상이 왜 실수인지 설명하십시오.

        params[ 4 ].type = TYPE_COLOR ;
        params[ 4 ].double_value = clrBlue ;
 

좋은 오후의 스트링고와 예델킨!

제 글을 잘 안 읽으셨나봐요.

"개발자들이 그런 생각을 하지 못한 게 너무 안타까워요."

이제 위의 코드를 작성한 이유를 설명하겠습니다.

이동 평균 설정에서 표시기에 7개의 매개변수(5개 기본 + 2개 라인)가 있음이 분명합니다.

탭에 "설정"이라고 표시되어 있습니다.

모든 매개변수를 "수동으로" 변경할 수 있는 경우

프로그래밍 방식으로 모든 매개변수를 변경하는 기능! 개발자가 한 일

IndicatorCreate 함수에 있지만 끝까지는 아닙니다(또는 이것은 BUG입니다).

엄마

MqlParam 구조를 사용하면 색상을 입력할 수 있습니다. - TYPE_COLOR( ENUM_DATATYPE ) ;

MQL5 참조에서:

색상 유형 색상 정보를 저장하도록 설계되었으며 메모리에서 4바이트를 차지합니다. 첫 번째 바이트는 고려되지 않고 나머지 3바이트에는 RGB 구성 요소가 포함됩니다.

......

정수 표현은 16진수 또는 10진수로 작성됩니다. 16진수는 0x00BBGGRR입니다.

//--- 정수 표현
0xFFFFFF // 흰색
16777215 // 흰색
0x008000 // 녹색
32768 // 녹색

인용 끝.

구조체 MqlParam
{
ENUM_DATATYPE 유형 ; // 입력 파라미터 타입, ENUM_DATATYPE 열거
정수 값 ; // 정수 값을 저장하는 필드
더블 이중 값 ; // double 또는 float 값을 저장하기 위한 필드
문자열 값 ; // 스트링 타입의 값을 저장하기 위한 필드
};

(처음에는 오래 시도했지만 작동하지 않았으며 두 번 시도했지만 작동하지 않아 코드에 남아 있습니다).

다음과 같아야 합니다.

MqlParam 매개변수[5];


.......

매개변수[ 4 ].유형 = TYPE_COLOR ;
params[ 4 ].integer_value = clrBlue; // - 파란색 0х00FF0000 (16711680)

stringo, 나는 "무슨 두려움으로" 당신의 질문에 대답했습니까?

다시 한 번 말씀드리지만, 개발자분들이 색상 변경을 하지 않은 점은 유감입니다.

안부, 미하일

 
Mikalas :

좋은 오후, stringo와 Yedelkin!

제 글을 잘 안 읽으셨나봐요.

"개발자들이 그런 생각을 하지 못한 게 너무 안타까워요."

Mikalas, 너무 많은 전문가들이 이미 다른 사람들을 위해 결론을 내리기 위해 여기에서 이혼했습니다. 그들의 수를 늘리지 마십시오, plz.

더 나아가. 나는 당신을 돕기 위해 특정한 비감정적 질문을 했습니다. 당신은 그들에게 대답하는 대신에 "당신이 어떻게 그런 삶을 살게 되었는지"라고 말합니다. 무엇을 원하십니까? - 식별한 버그의 존재를 누군가에게 확신시키거나 선택한 코드를 "프로그래밍 방식으로" 개선하시겠습니까? 특정 "버그"가 보이면 상황에 대한 전체 설명과 함께 서비스 데스크에 문의하십시오. "프로그래밍 방식으로"작업하려면 표시기 생성 및 작동의 본질을 탐구하십시오.