Hatalar, hatalar, sorular - sayfa 2796

 
Mihail Matkovskij :

Forumda yapacak başka bir şey yok Alexey, mesajlarımı, geliştiricilere benim adıma iddia gibi görünecek şekilde çarpıtmaktan başka? ... Merak ediyorum, bu kadar garip bir "coşkuya" ne sebep oldu? Yeni başlayanlar için burada saçma sapan şeyler yapmaktansa sorularına ilgili branşlarda yardımcı olunması daha iyi olur.   çalışmak!...

Ama yine de, açıkça "böcek" yazmışsın. Bu, belgeleri mantıksal sonuna kadar okuyamamanızla ilgili değil, bildirdiğiniz platformdaki bir kusuru gösterir.

 
Artyom Trishkin :

Ama yine de, açıkça "böcek" yazmışsın. Bu, belgeleri mantıksal sonuna kadar okuyamamanızla ilgili değil, bildirdiğiniz platformdaki bir kusuru gösterir.

Şey, evet, karıştırdım. ObjectDelete işlevinin açıklamasında bir not okudum, ancak bir şekilde her şeyin içinde olduğunu düşünmedim ... Kime olmaz?...

Ama hepsi daireler çiziyor. Daha doğrusu, yazdıklarımın etrafında yanlış ya da karışık dolaşmak ... Ama nedense kimse bu hatanın nasıl çözüleceği hakkında bir şey söylemedi ... Tabii ki, yeniden yapmak zorunda kalacağım önerilen ObjectsDeleteAll işlevi dışında tüm proje, en azından ne istesem de.

 
Mihail Matkovskij :

Şey, evet, karıştırdım. ObjectDelete işlevinin açıklamasında bir not okudum, ancak bir şekilde her şeyin içinde olduğunu düşünmedim ... Kime olmaz?...

Olur...

 

Mihail Matkovskij :

... Nedense, hiç kimse bu hatanın nasıl çözüleceği hakkında bir şey söylemedi ... Tabii ki, tüm projeyi yeniden yapmak zorunda kalacağım önerilen ObjectsDeleteAll işlevi dışında , en son isteyeceğim şey bu .

Grafik nesnelerin adları için yine de bir önek kullanmaya çalışın - bu, nesnelerinizi tanımlamak için normal bir uygulamadır. Ön ek ile, eşzamanlı olarak kaldırılmasıyla çöpü kontrol edersiniz.

Nesne adlarına bir önek eklemek, bütün bir projenin yeniden yapılmasını mı gerektirir?

Prosedürel bir tarzda mı yazıyorsunuz? Bu nedenle, içinde nesne adları oluşturmak için işlevleri değiştirmek çok zor değil.

 
Artyom Trishkin :

Grafik nesnelerin adları için yine de bir önek kullanmaya çalışın - bu, nesnelerinizi tanımlamak için normal bir uygulamadır. Ön ek ile, eşzamanlı olarak kaldırılmasıyla çöpü kontrol edersiniz.

Nesne adlarına bir önek eklemek, tüm projenin yeniden yapılmasını mı gerektirecek?

Peki, başka seçenek yoksa deneyeceğim.

Artyom Trishkin :

Prosedürel bir tarzda mı yazıyorsunuz? Bu nedenle, içinde nesne adları oluşturmak için işlevleri değiştirmek çok zor değil.

Sisifos emeği?... :)


Gösterge hatamın nedenini bulma konusunda yardım için Rashid Umarov'a teşekkürler!
 
Mihail Matkovskij :

Forumda yapacak başka bir işin yok Alexey, mesajlarımı çarpıtıp benim adıma geliştiricilere iddia gibi görünecek şekilde mi? ... Merak ediyorum senin açından böylesine garip bir "coşkuya" ne sebep oldu? Yeni başlayanlar için burada saçma sapan şeyler yapmaktansa sorularına ilgili branşlarda yardımcı olunması daha iyi olur.   çalışmak!...

Bu yüzden burada sana yardım etmeye çalışıyorum. Size nerede yanıldığınızı açıklayacağım. Grafik nesnelerini silmek için başka bir seçenek deneyin, sorun olmayacaktır. Ve bahsettiğiniz tüm hatalar kaybolacak. Burada hiçbir şeyi çarpıtmaya gerek yok, demiştin, alıntı yaptım.

 
Alexey Viktorov :

Bu yüzden burada sana yardım etmeye çalışıyorum. Size nerede yanıldığınızı açıklayacağım. Grafik nesnelerini silmek için başka bir seçenek deneyin, sorun olmayacaktır. Ve bahsettiğiniz tüm hatalar kaybolacak. Burada hiçbir şeyi çarpıtmaya gerek yok, demiştin, alıntı yaptım.

Size yardım etmeye çalışıyorum ve aynı zamanda sizi asılsız bir şekilde suçluyorum, eklemeyi unutmayın. Bu çılgın coşkuya neyin sebep olduğunu sordum, ama nedense bana cevap vermedin! Neden cevaptan kaçıyorsun, Alexey?

 
Mihail Matkovskij :

Size yardım etmeye çalışıyorum ve aynı zamanda sizi asılsız bir şekilde suçluyorum, eklemeyi unutmayın. Bu çılgın coşkuya neyin sebep olduğunu sordum, ama nedense bana cevap vermedin! Neden cevaptan kaçıyorsun, Alexey?

Uzun bir süre sessiz kalacaktı ve ben devam etmeyecektim.

En ufak bir suçlama olmadan yardım etme çabam burada.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

Alexey Viktorov , 2020.07.11 17:12

Döngünün OnDeinit uygulaması için ayrılan süreden daha uzun sürmesi mümkün değil mi?

Sonuçta, örneğinizde tüm nesneler "trend" önekine sahiptir, neden bundan yararlanıp döngüden vazgeçmiyorsunuz?

 int    ObjectsDeleteAll (
   long            chart_id,   // идентификатор графика
   const string      prefix,   // префикс имени объекта
   int        sub_window=- 1 ,   // индекс окна
   int       object_type=- 1      // тип объекта для удаления
   );

Cevap nedir? Cevaplarınızı okuyun.
 
Alexey Viktorov :

Uzun bir süre sessiz kalacaktı ve ben devam etmeyecektim.

Ve... İşte bana yöneltilen suçlamaların nedeni de bu! anlaşılır... :)

Alexey Viktorov :
Cevap nedir? Cevaplarınızı okuyun.

Her şey yolunda. Başlangıçta bu özelliği kullanmayı reddettiğim tek şey. Ve bu senin kafanı karıştırdı sanırım?... O halde, pardon... :)

 

Örneğimde ilk önce ObjectDeleteAll işlevini değiştirdim:

 //+------------------------------------------------------------------+
//|                                           DeleteChartObjects.mq5 |
//|                                      Copyright 2020, © Cyberdev. |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, © Cyberdev."
#property version    "1.00"
#property indicator_chart_window

#property indicator_plots 0

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

#include <ChartObjects\ChartObjectsLines.mqh>
#include <Arrays\ArrayObj.mqh>

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//--- input parameters
input int       nBars = 100000 ;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int customN_Bars = 0 ;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CArrayObj listOfTrendLines;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit () {
//--- indicator buffers mapping
   int totalBars = iBars ( NULL , PERIOD_CURRENT );
  customN_Bars = (nBars < totalBars) ? nBars : totalBars;
//---
   return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| 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[]
) {
  CChartObjectTrend * trend;
   int delta = rates_total - customN_Bars;
   int shift;
   int i;
   for (i = 0 ; i < customN_Bars; i++) {
    shift = delta + customN_Bars - i - 1 ;
    trend = new CChartObjectTrend();
     if (trend.Create( 0 , "trend" +( string )i, 0 , time[shift], low[shift], time[shift], high[shift]))
      listOfTrendLines.Add(trend);
     else
       delete trend;
  }
   return (rates_total);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason) {
  
   ObjectsDeleteAll ( 0 , "trend" , 0 , OBJ_TREND );
  
  CChartObjectTrend * trend;
  
   int i = listOfTrendLines.Total() - 1 ;
   for (; i >= 0 ; i--) {
    trend = dynamic_cast <CChartObjectTrend *> (listOfTrendLines.At(i));
    
     if ( CheckPointer (trend) == POINTER_INVALID )
       continue ;
    
     delete trend;
  }
}
//+------------------------------------------------------------------+

Ardından göstergeye.

Artyom Trishkin :

Nesne adlarına bir önek eklemek, tüm projenin yeniden yapılmasını mı gerektirecek?

Projemde ObjectDeleteAll kullanmak çocuk oyuncağı oldu. Tüm nesneleri silmek için öneki yalnızca 3 kez değiştirmek ve buna göre ObjectDeleteAll'ı 3 kez çağırmak yeterliydi. Ve sonuç olarak, program temiz. MQL5 dilinde birçok incelik vardır. Ama aynı zamanda çok düşünceli.

Bu sorunu çözmeme yardım eden herkese teşekkürler!