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

 

여기에서 지표에 대한 패널을 그립니다. 다른 하위 그래픽 개체에 대해 투명하지 않게 하는 방법에 대한 질문이 있었습니다.

그런 다음 몇 개의 줄이 나타나(마우스가 잡는다) 위치를 변경하려고 합니다.

일반적으로 패널에 의해 닫힌 개체에 대해 패널이 보이지 않게 하는 방법은 무엇입니까?



그림 1

 
Aleksandr Tyunev :

여기에서 지표에 대한 패널을 그립니다. 다른 하위 그래픽 개체에 대해 투명하지 않게 하는 방법에 대한 질문이 있었습니다.

그런 다음 일부 줄이 나타나(마우스가 잡는다) 위치를 변경하려고 합니다.

일반적으로 패널에 의해 닫힌 개체에 대해 패널이 보이지 않게 하는 방법은 무엇입니까?



확실하지 않습니다. (분명히 라이브러리를 사용하여 패널을 생성했기 때문에) - 가능하면 이 기능으로 마우스 클릭을 수신하기 위해 패널에 더 높은 우선순위를 부여해야 합니다.

 ObjectSetInteger ( ChartID (),name, OBJPROP_ZORDER ,z_order);
 
jaffer wilson :

두 가지 진술:

인쇄: 22.33

그리고

인쇄: 2.00000

왜 다른 결론이 있습니까? C/C++에서 위의 문장은 잘 작동합니다.

C에서도 형식
 "%.*lf"

상상했던 것과는 조금 다릅니다 :-)

첫 번째 인수는 정밀도입니다(별표와 같습니다). 아마도 반대의 경우라고 생각했을 것입니다. "2.0000"이 나오면 깜짝 놀라게 됩니다.

PS/ MQL 프로그래밍을 배우지 마십시오.

 
Alexandr Sokolov :

확실하지 않습니다. (분명히 라이브러리를 사용하여 패널을 생성했기 때문에) - 가능하면 이 기능으로 마우스 클릭을 수신하기 위해 패널에 더 높은 우선순위를 부여해야 합니다.

라이브러리를 기반으로 하는지 아니면 단지 개체를 기반으로 하는지 여부 = OBJ_RECTANGLE_LABEL . 레벨 아래의 그래픽 개체를 덮는 것은 불가능합니다.

 
Aleksandr Tyunev :

여기에서 지표에 대한 패널을 그립니다. 다른 하위 그래픽 개체에 대해 투명하지 않게 하는 방법에 대한 질문이 있었습니다.

그런 다음 일부 줄이 나타나(마우스가 잡는다) 위치를 변경하려고 합니다.

일반적으로 패널에 의해 닫힌 개체에 대해 패널이 보이지 않게 하는 방법은 무엇입니까?

그런 순간이 있었던 걸로 기억하는데, 조금 만지작거렸다))

완성된 옵션:

 void OnChartEvent ( const int id,
                   const long &lparam,
                   const double &dparam,
                   const string &sparam)
  {

if (id== CHARTEVENT_MOUSE_MOVE ) { 
      
       int       x      =( int )lparam; // Координата по оси X
       int       y      =( int )dparam; // Координата по оси Y
       int       subwin = WRONG_VALUE ; // Номер окна, в котором находится курсор
       datetime time   = NULL ;         // Время соответствующее координате X
       double    level  = 0.0 ;         // Уровень (цена) соответствующий координате Y
       string MState  =( string )sparam;   // Состояние левой кнопки мыши
      
       if (MState== "0" ) {
     //--- Получим местоположение курсора
       if (!:: ChartXYToTimePrice ( ChartID (),x,y,subwin,time,level))
         return ;
     
     int obj_total= ObjectsTotal ();
       for ( int i=obj_total- 1 ;i>= 0 ;i--)
      {
       string name= ObjectName (i);
       // Для координат окна панели
       if ( StringSubstr (name, 5 , 10 )== "ClientBack" ) {   // Ищем среди объектов больший (прямоугольник) с именем ClientBack (у меня так называется)
         
         int x_dist, x_size, y_dist, y_size;
         bool stop_selected_all;
         
         x_dist= ObjectGetInteger ( ChartID (),name, OBJPROP_XDISTANCE , 0 );
         y_dist= ObjectGetInteger ( ChartID (),name, OBJPROP_YDISTANCE , 0 );
         
         x_size= ObjectGetInteger ( ChartID (),name, OBJPROP_XSIZE , 0 );
         y_size= ObjectGetInteger ( ChartID (),name, OBJPROP_YSIZE , 0 );
         
         if (((x>x_dist- 5 )&&(x<x_dist+x_size+ 5 ))&&((y>y_dist- 24 )&&(y<y_dist+y_size))){
         ChartSetInteger ( ChartID (), CHART_DRAG_TRADE_LEVELS , false );
         ChartSetInteger ( ChartID (), CHART_MOUSE_SCROLL , false );
         //ObjectSetInteger(ChartID(),name,OBJPROP_ZORDER,1);
         //ObjectSetInteger(ChartID(),name,OBJPROP_BORDER_TYPE,BORDER_RAISED);
         if (stop_selected_all== false ) {
             int obj_total_1= ObjectsTotal ();
             for ( int i=obj_total_1- 1 ;i>= 0 ;i--)
            {
             string name_1= ObjectName (i);
             ObjectSetInteger ( ChartID (),name_1, OBJPROP_SELECTABLE , false );
            stop_selected_all= true ;
            }
            }
         } else {
         ChartSetInteger ( ChartID (), CHART_DRAG_TRADE_LEVELS , true );
         ChartSetInteger ( ChartID (), CHART_MOUSE_SCROLL , true );
         //ObjectSetInteger(ChartID(),name,OBJPROP_ZORDER,0);
         //ObjectSetInteger(ChartID(),name,OBJPROP_BORDER_TYPE,BORDER_SUNKEN);
             int obj_total_1= ObjectsTotal ();
             for ( int i=obj_total_1- 1 ;i>= 0 ;i--)
            {
             string name_1= ObjectName (i);
             ObjectSetInteger ( ChartID (),name_1, OBJPROP_SELECTABLE , true );
            stop_selected_all= false ;
            }
         }
      }
      
       // End. Для координат окна панели
      }
      }
     
       return ;
     }
  }

일반적으로 원칙은 다음과 같습니다.

 
Vyacheslav Nekipelov :

그런 순간이 있었던 걸로 기억하는데, 조금 만지작거렸다))

완성된 옵션:

일반적으로 원칙은 다음과 같습니다.

고맙습니다! 원칙은 분명하니 계속 사용하겠습니다!

 
어떤 이유로 mql5 chm 참조가 올바르게 작동하지 않습니다. 이 페이지 또는 그 페이지를 선택하면 아무 것도 표시되지 않습니다. 그 이유와 해결 방법은 무엇입니까?
 
Yevhenii Levchenko :
어떤 이유로 mql5 chm 참조가 올바르게 작동하지 않습니다. 이 페이지 또는 그 페이지를 선택하면 아무 것도 표시되지 않습니다. 그 이유와 해결 방법은 무엇입니까?

파일 속성에서 잠금을 제거해야 합니다.

 
도와주세요. 눈금 표시기 가 있습니다. 어떤 이유로 값을 4자리로 표시하지만 5자리로 표시해야 합니다.
 #property   indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua
double x[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers( 1 );
   SetIndexStyle( 0 , DRAW_LINE );
   SetIndexBuffer ( 0 ,x);
   SetIndexDrawBegin( 0 , 0 );
   SetIndexLabel( 0 , "x" );
   SetIndexShift( 0 , 0 );
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double b=MarketInfo( Symbol (),MODE_BID);
   x[ 0 ]=b;
   for ( int j= ArraySize (x)- 1 ;j>= 1 ;j--){x[j]=x[j- 1 ];}
   return ( 0 );
  }
//+------------------------------------------------------------------+
Создание тиковых индикаторов
Создание тиковых индикаторов
  • www.mql5.com
При торговле хочется иметь как можно больше информации. Возникает желание видеть более детальную картину изменения цен. Для этого можно использовать тиковый график. Попробуем построить тиковый график средствами MQL5. В этой статье описывается создание двух индикаторов: строящего тиковый график цены и рисующего "тиковые свечи" - свечи...
파일:
ticks.png  4 kb
 
Oleg Bondarev :
도와주세요. 눈금 표시기 가 있습니다. 어째서인지 4번째 기호의 값을 보여주지만 5번째 기호에서는 꼭 필요합니다.

표시자숫자(5)