초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 727

 
Vitaly Muzichenko :

생성하는 동안 개체를 선택하는 방법을 알려주고 더 이상 선택 항목을 잃지 않도록 사용자가 선택 항목을 제거해도 자체적으로 눈에 띄지 않습니다. 네 번째에서는 쉬웠고 다섯 번째에서는 작동하지 않았습니다.

다음과 같았고 완벽하게 작동했습니다.

void SetHLine(..., double p, bool sel) {
   if ( ObjectFind (chart_ID,nm)!= 0 ) {
     ObjectCreate (chart_ID,nm, OBJ_HLINE , 0 , 0 , 0 );
     ObjectSetInteger (chart_ID,nm, OBJPROP_SELECTED ,sel);
    ...
  }
   ObjectSetDouble (chart_ID,nm, OBJPROP_PRICE ,p);
}

보시다시피 생성할 때 생성된 개체를 즉시 선택하거나 선택하지 않을 수 있으며 더 이상 변경되지 않고 액세스할 수 없지만 다섯 번째에서는 이것이 작동하지 않고 선택 없이 생성됩니다.

생성하는 동안 개체를 선택한 다음 필요할 때 수동으로 관리할 수 있는 방식으로 mql5에서 수행하는 방법 - 선택/선택 안 함

OBJPROP_SELECTABLE
 

글쎄요, 하지만 아이콘이 강조 표시되지 않았습니다.

void SetArrow( string nm, string tooltxt= "" , datetime t= 0 , double p= 0 , color col= clrRed , long type= 0 ) {
if ( ObjectFind ( 0 ,nm)!= 0 ) {
     ObjectCreate ( 0 ,nm,type== 0 ? OBJ_ARROW_BUY : OBJ_ARROW_SELL , 0 , 0 , 0 );
     ObjectSetInteger ( 0 ,nm, OBJPROP_COLOR ,col);
     ObjectSetInteger ( 0 ,nm, OBJPROP_SELECTED , true );
     ObjectSetInteger ( 0 ,nm, OBJPROP_SELECTABLE , true );
     ObjectSetInteger ( 0 ,nm, OBJPROP_HIDDEN , false );
     ObjectSetString ( 0 ,nm, OBJPROP_TOOLTIP ,tooltxt);
   }
     ObjectSetDouble ( 0 ,nm, OBJPROP_PRICE ,p);
     ObjectSetInteger ( 0 ,nm, OBJPROP_TIME ,t);
}
 
Vitaly Muzichenko :

글쎄요, 하지만 아이콘이 강조 표시되지 않았습니다.

void SetArrow( string nm, string tooltxt= "" , datetime t= 0 , double p= 0 , color col= clrRed , long type= 0 ) {
if ( ObjectFind ( 0 ,nm)!= 0 ) {
     ObjectCreate ( 0 ,nm,type== 0 ? OBJ_ARROW_BUY : OBJ_ARROW_SELL , 0 , 0 , 0 );
     ObjectSetInteger ( 0 ,nm, OBJPROP_COLOR ,col);
     ObjectSetInteger ( 0 ,nm, OBJPROP_SELECTED , true );
     ObjectSetInteger ( 0 ,nm, OBJPROP_SELECTABLE , true );
     ObjectSetInteger ( 0 ,nm, OBJPROP_HIDDEN , false );
     ObjectSetString ( 0 ,nm, OBJPROP_TOOLTIP ,tooltxt);
   }
     ObjectSetDouble ( 0 ,nm, OBJPROP_PRICE ,p);
     ObjectSetInteger ( 0 ,nm, OBJPROP_TIME ,t);
}

모든 것이 눈에 띕니다.

선택

파일:
OBJ_ARROW.mq5  22 kb
 
Vladimir Karputov :

모든 것이 눈에 띕니다.

젠장, 한 기능을 제어하고 다른 기능을 확인했는데 모든 것이 작동합니다. 고맙습니다! 자러 가다)
 

이상한 기능을 발견했는데 이렇게 등록하면 생성할 때 선이 강조되지 않습니다

ObjectSetInteger (chart_ID,nm, OBJPROP_SELECTED ,sel);
ObjectSetInteger (chart_ID,nm, OBJPROP_SELECTABLE , true );

그러나 반대로 선택에 문제가 없다면 다음과 같습니다.

ObjectSetInteger (chart_ID,nm, OBJPROP_SELECTABLE , true );
ObjectSetInteger (chart_ID,nm, OBJPROP_SELECTED ,sel);

어째서인지 조건 교체에서 금액이 변경됩니까?

 
Vitaly Muzichenko :

이상한 기능을 발견했는데 이렇게 등록하면 생성할 때 선이 강조되지 않습니다

ObjectSetInteger (chart_ID,nm, OBJPROP_SELECTED ,sel);
ObjectSetInteger (chart_ID,nm, OBJPROP_SELECTABLE , true );

그러나 반대로 선택에 문제가 없다면 다음과 같습니다.

ObjectSetInteger (chart_ID,nm, OBJPROP_SELECTABLE , true );
ObjectSetInteger (chart_ID,nm, OBJPROP_SELECTED ,sel);

어째서인지 조건 교체에서 금액이 변경됩니까?

분명히 언제

ObjectSetInteger (chart_ID,nm, OBJPROP_SELECTED ,sel);

마지막 팀, 차트 업데이트됨

 
Vitaly Muzichenko :

이상한 기능을 발견했는데 이렇게 등록하면 생성할 때 선이 강조되지 않습니다

ObjectSetInteger (chart_ID,nm, OBJPROP_SELECTED ,sel);
ObjectSetInteger (chart_ID,nm, OBJPROP_SELECTABLE , true );

그러나 반대로 선택에 문제가 없다면 다음과 같습니다.

ObjectSetInteger (chart_ID,nm, OBJPROP_SELECTABLE , true );
ObjectSetInteger (chart_ID,nm, OBJPROP_SELECTED ,sel);

어째서인지 조건 교체에서 금액이 변경됩니까?

처음에는 아마도 객체를 생성 할 때 기본 속성이 선택 불가능으로 설정됩니다.

그런 다음 각각을 선택합니다(그러나 개체는 선택되지 않음). 아무 것도 선택되지 않습니다.

그런 다음 선택 가능성 속성을 설정합니다. 하지만 "보르조미 마시기엔 이미 늦었다"…
 

전체 코드는 다음과 같습니다.

void SetVLine( long chart_ID= 0 , string nm= "nm" , datetime tm= 0 , int wd= 1 , int st= 0 , color cl= clrRed ,
                                              string tooltxt= "" , bool sel= false , bool back= false ) {
if ( ObjectFind (chart_ID,nm)< 0 ) {
     ObjectCreate (chart_ID,nm, OBJ_VLINE , 0 ,tm, 0 );
     ObjectSetInteger (chart_ID,nm, OBJPROP_TIME ,tm);
     ObjectSetInteger (chart_ID,nm, OBJPROP_BACK ,back);
     ObjectSetInteger (chart_ID,nm, OBJPROP_SELECTABLE , true );
     ObjectSetInteger (chart_ID,nm, OBJPROP_SELECTED ,sel);
   // ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTABLE,true);
     ObjectSetString (chart_ID,nm, OBJPROP_TOOLTIP ,tooltxt);
     ObjectSetInteger (chart_ID,nm, OBJPROP_COLOR ,cl);
     ObjectSetInteger (chart_ID,nm, OBJPROP_WIDTH ,wd);
     ObjectSetInteger (chart_ID,nm, OBJPROP_STYLE ,st);
   }
}

예, 모든 유형의 개체에 대해 확인했으며 " SELECTABLE "을 먼저 입력한 다음 " SELECTED "를 입력해야 합니다.

귀하의 의견과 도움에 감사드립니다!

 
MetaTrader5는 3개의 블록에서 Expert Advisor를 생성할 수 있습니다. 1 블록은 표시기 또는 여러 표시기에서 신호를 생성합니다. 2블록 트레일러. 3 블록 위험.

알려주세요 1. 1블록에 커스텀 인디케이터 를 추가할 수 있나요? 그렇다면 어떻게 해야 합니까?

2. 거래가 양방향으로 열리도록 코드를 수정할 수 있습니까?
 
이 주제와 관련이 없는 댓글은 " MQL4 MT4 MetaTrader 4 초보자의 질문 "으로 이동되었습니다.
사유: