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

 
Alexey Viktorov :

Veya belgeleri daha yakından okumak daha iyi olabilir mi?

CHART_BRING_TO_TOP

Grafiği diğerlerinin üstünde göster

bool w/o


Bu, bu özelliğin salt okunur olduğu anlamına gelir. okumaya mı çalışıyorsun...

Ayrıca, soruya tam bir cevap vermiyorsunuz.

Bu bir komut dosyası veya göstergedir.
Bu bir göstergedir. Ve pencereyi değiştirirken sonucu hemen yazdırıyor, yani okuyabiliyor.
 
Valeriy Yastremskiy :

Ve Vile'ın özünü anlamıyorum. Koşul her zaman doğrudur.

Koşul her zaman doğrudur, ancak grafik sayısı bilinmiyor

 
Valeriy Yastremskiy :

Neler olduğunu anlamıyorsam, sahip olduğum her şeyi yazdırırım, bazen yardımcı olur. Ve Vile'ın özünü anlamıyorum. Koşul her zaman doğrudur.

Herhangi bir şey varsa, onu statik hale getirmeniz gerekir, aksi takdirde sıfırlanır

 string symbol, printsimbol= "" ;
       long currChart= ChartFirst (); int i= 0 ;
       while (currChart>= 0 )
        {
 
MakarFX :
Bu bir göstergedir. Ve pencereyi değiştirirken sonucu hemen yazdırıyor, yani okuyabiliyor.

Bir tür çöpün okunduğunu düşünmüyor musun? Değişmez olsa da, yine de çöp.

Programı değiştirdiğinizde bunu yazdırmayı deneyin. O zaman aktif programın nasıl değiştiğini bilmek önemlidir. Gösterge en soldaki grafikteyse, sağdaki bir sonrakine gidip sonra en sağa gidip rastgele böyle geçiş yapar mısınız? Yoksa sadece göstergenin bulunduğu çizelgeden ayrılışını izlemeniz ve ona geri dönmeniz mi gerekiyor?

 
Alexey Viktorov :

Bir tür çöpün okunduğunu düşünmüyor musun? Değişmez olsa da, yine de çöp.

Programı değiştirdiğinizde bunu yazdırmayı deneyin. O zaman aktif programın nasıl değiştiğini bilmek önemlidir. Gösterge en soldaki grafikteyse, sağdaki bir sonrakine gidip sonra en sağa gidip rastgele böyle geçiş yapar mısınız? Yoksa sadece göstergenin bulunduğu tablodan ayrılışını izlemeniz ve ona geri dönmeniz mi gerekiyor?

Ne okunduğunu bilmiyorum ama basılan şey gerekli

 2021.03 . 16 09 : 33 : 25.650 Label USDCHF,M15: EURGBP
2021.03 . 16 09 : 33 : 25.148 Label USDCHF,M15: EURGBP
2021.03 . 16 09 : 33 : 24.647 Label USDCHF,M15: EURGBP
2021.03 . 16 09 : 33 : 24.145 Label USDCHF,M15: GBPCHF
2021.03 . 16 09 : 33 : 23.644 Label USDCHF,M15: GBPCHF
2021.03 . 16 09 : 33 : 23.142 Label USDCHF,M15: GBPCHF
2021.03 . 16 09 : 33 : 22.641 Label USDCHF,M15: USDCHF
2021.03 . 16 09 : 33 : 22.155 Label USDCHF,M15: USDCHF
2021.03 . 16 09 : 33 : 21.654 Label USDCHF,M15: USDCHF
2021.03 . 16 09 : 33 : 21.152 Label USDCHF,M15: EURGBP
2021.03 . 16 09 : 33 : 20.651 Label USDCHF,M15: EURGBP
2021.03 . 16 09 : 33 : 20.149 Label USDCHF,M15: EURGBP

Herhangi bir grafikte (en sol, sağ, orta) ve herhangi bir program değişikliği sırası ile çalışır

Denemek

 //+------------------------------------------------------------------+
//|                                                        Label.mq4 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
   EventSetMillisecondTimer ( 500 );
//--- indicator buffers mapping
   
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//--- destroy timer
   EventKillTimer ();
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer ()
  {
       string symbol01;
       long currChart= ChartFirst (); int i= 0 ;
       while (currChart>= 0 )
        {
         if ( ChartGetInteger (currChart, CHART_BRING_TO_TOP , 0 )== true ) 
           { 
            symbol01= ChartSymbol (currChart);       Print (symbol01);
           } 
         currChart= ChartNext (currChart);  i++;
        }
//--- 
  }
//+----------------------------------------------------------------------------+
 

öyle mi

 //+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer ()
  {
       long currChart= ChartFirst (); int i= 0 ;
       while (currChart>= 0 )
        {
         if ( ChartGetInteger (currChart, CHART_BRING_TO_TOP , 0 )== true ) 
           { 
            symbol01= ChartSymbol (currChart);
           } 
         currChart= ChartNext (currChart);  i++;
        }
   PrintLabel();
//--- 
  }
//+----------------------------------------------------------------------------+
void PrintLabel()
  {
   if (symbol02!=symbol01){symbol02=symbol01; Print (symbol02);}
   return ;
  }

Sonuç

 2021.03 . 16 10 : 00 : 05.075 Custom indicator Label USDCHF,M15: removed
2021.03 . 16 10 : 00 : 05.060 Label USDCHF,M15: uninit reason 1
2021.03 . 16 10 : 00 : 00.046 Label USDCHF,M15: USDCHF
2021.03 . 16 09 : 59 : 55.486 Label USDCHF,M15: EURCAD
2021.03 . 16 09 : 59 : 54.498 Label USDCHF,M15: CADCHF
2021.03 . 16 09 : 59 : 53.511 Label USDCHF,M15: EURGBP
2021.03 . 16 09 : 59 : 52.994 Label USDCHF,M15: GBPCHF
2021.03 . 16 09 : 59 : 51.991 Label USDCHF,M15: EURUSD
2021.03 . 16 09 : 59 : 48.945 Label USDCHF,M15: USDCHF
2021.03 . 16 09 : 59 : 48.428 Label USDCHF,M15: initialized
2021.03 . 16 09 : 59 : 47.046 Custom indicator Label USDCHF,M15: loaded successfully

Yardımlarınız için hepinize teşekkür ederim!!!

 
MakarFX :

Ne okunduğunu bilmiyorum ama basılan şey gerekli

Herhangi bir grafikte (en sol, sağ, orta) ve herhangi bir program değişikliği sırası ile çalışır

Denemek

1 veya 0 yazıyor. Bunun ne kadar güvenilir olduğunu bilmiyorum ama şaşırtıcı bir şekilde işe yarıyor...

O zaman çözüm burada

 /***************************Timer function***************************/
void OnTimer ()
 {
   static long chart_ID = 0 ;
   string symbol01;
   long currChart = ChartFirst ();
   while (currChart >= 0 )
   {
     if ( chart_ID != ChartGetInteger (currChart, CHART_WINDOW_HANDLE ) && ChartGetInteger (currChart, CHART_BRING_TO_TOP , 0 ) == 1 )
     {
       chart_ID = ChartGetInteger (currChart, CHART_WINDOW_HANDLE );
      symbol01 = ChartSymbol (currChart);
       Print (symbol01, " " , EnumToString ( ChartPeriod (currChart)), " " , chart_ID);
     }
    currChart = ChartNext (currChart);
   }
 } /*******************************************************************/
 
MakarFX :

öyle mi

Sonuç

Yardımlarınız için hepinize teşekkür ederim!!!

Aynı veya daha fazla sembolün iki tablosu varsa,


o zaman işe yaramaz

 
MakarFX :

Ne okunduğunu bilmiyorum ama basılan şey gerekli

Herhangi bir grafikte (en sol, sağ, orta) ve herhangi bir program değişikliği sırası ile çalışır

Denemek

 void OnTimer ()
{
   long currChart= 0 ,prevChart= ChartFirst ();
   int i= 0 ,limit= 100 ;
   static long CurrID;
   while (i<limit) { // у нас наверняка не больше 100 открытых графиков
      currChart= ChartNext (prevChart); // на основании предыдущего получим новый график
       if ( ChartGetInteger (currChart, CHART_BRING_TO_TOP ))
         break ;
       if (currChart< 0 ) break ;           // достигли конца списка графиков
      prevChart=currChart; // запомним идентификатор текущего графика для ChartNext()
      i++; // не забудем увеличить счетчик
   }
   if (CurrID!=currChart) {
       Print ( ChartSymbol (currChart));
      CurrID=currChart;
   }
}


PS Yazarken, kodlar zaten çizilmiş :)

 
Alexey Viktorov :

1 veya 0 yazıyor. Bunun ne kadar güvenilir olduğunu bilmiyorum ama şaşırtıcı bir şekilde işe yarıyor...

O zaman çözüm burada

Çalışıyor, teşekkürler.

Vitaly Muzichenko :


Not Yazarken, kodlar zaten çizilmiş :)

İlk grafik penceresini atlar.

Alexey Viktorov :

Aynı veya daha fazla sembolün iki tablosu varsa,

o zaman işe yaramaz

Sadece olması gerektiği gibi çalışıyor. Öz - sembolün değiştirilip değiştirilmediğini yazdırmak için!