MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1039

 

Burada gösterge için panelimi çiziyorum. Diğer alt grafik nesneleri için nasıl şeffaf hale getirilemeyeceği sorusu vardı.

Sonra bazı çizgiler belirir (fare yakalar) ve konumlarını değiştirmeye çalışırlar.

Genel olarak, panelin kapattığı nesneler için görünmemesi nasıl sağlanır?



Şekil 1

 
Aleksandr Tyunev :

Burada gösterge için panelimi çiziyorum. Diğer alt grafik nesneleri için nasıl şeffaf hale getirilemeyeceği sorusu vardı.

Sonra bazı çizgiler belirir (fare yakalar) ve konumlarını değiştirmeye çalışırlar.

Genel olarak, panelin kapattığı nesneler için görünmemesi nasıl sağlanır?



Tam olarak emin değilim (görünüşe göre panelinizi kitaplığı kullanarak oluşturduğunuz için) - mümkünse, bu işlevle fare tıklamalarını almak için panele daha yüksek bir öncelik vermeniz gerekir.

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

İki açıklama:

Baskı: 22.33

Ve

Baskı: 2.00000

Neden farklı sonuçlar var? C/C++'da yukarıdaki ifade gayet iyi çalışıyor.

C biçiminde bile
 "%.*lf"

hayal ettiğinizden biraz farklı :-)

ilk argüman kesinliktir (orada bir yıldız işareti gibi), muhtemelen bunun tam tersi olduğunu düşündünüz ve "2.000" aldığınızda şaşırıyorsunuz

Not/ MQL programlamayı öğrenmeyin.

 
Alexandr Sokolov :

Tam olarak emin değilim (görünüşe göre panelinizi kitaplığı kullanarak oluşturduğunuz için) - mümkünse, bu işlevle fare tıklamalarını almak için panele daha yüksek bir öncelik vermeniz gerekir.

İster bir kitaplığa, ister yalnızca bir nesneye dayalı olsun = OBJ_RECTANGLE_LABEL . Seviyenin altındaki grafik nesneleri kapatmak mümkün değildir.

 
Aleksandr Tyunev :

Burada gösterge için panelimi çiziyorum. Diğer alt grafik nesneleri için nasıl şeffaf hale getirilemeyeceği sorusu vardı.

Sonra bazı çizgiler belirir (fare yakalar) ve konumlarını değiştirmeye çalışırlar.

Genel olarak, panelin kapattığı nesneler için görünmemesi nasıl sağlanır?

Öyle bir an olduğunu hatırlıyorum, biraz kurcaladım))

Bitmiş seçenek:

 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 ;
     }
  }

Genel olarak prensip şudur.

 
Vyacheslav Nekipelov :

Öyle bir an olduğunu hatırlıyorum, biraz kurcaladım))

Bitmiş seçenek:

Genel olarak prensip şudur.

Teşekkür ederim! İlke açık, kullanmaya devam edeceğim!

 
Bazı nedenlerden dolayı mql5 chm başvurusu düzgün çalışmıyor. Bunu veya o sayfayı seçtiğimde hiçbir şey görünmüyor. Nedeni ne olabilir ve nasıl düzeltilir?
 
Yevhenii Levchenko :
Bazı nedenlerden dolayı mql5 chm başvurusu düzgün çalışmıyor. Bunu veya o sayfayı seçtiğimde hiçbir şey görünmüyor. Nedeni ne olabilir ve nasıl düzeltilir?

Dosyanın özelliklerindeki kilidi kaldırmak gerekir.

 
Lütfen yardım et.Bir onay göstergesi var. Nedense değeri 4 haneli gösteriyor ama 5 haneli olması gerekiyor.
 #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. В этой статье описывается создание двух индикаторов: строящего тиковый график цены и рисующего "тиковые свечи" - свечи...
Dosyalar:
ticks.png  4 kb
 
Oleg Bondarev :
Lütfen yardım et.Bir onay göstergesi var. Nedense 4. burcun değerini gösteriyor ama 5. burçta olması gerekiyor.

GöstergeRakamlar(5)