Hatalar, hatalar, sorular - sayfa 2798

 
Alexey Viktorov :

Merak ediyorum, belgelere baktınız mı yoksa işlevin açıklamasını yazımdan mı aldınız?

Grafik nesnelerinizin yalnızca trend olan nesneler olduğundan şüpheleniyorum. Eğer öyleyse, neden bir ön eke ihtiyacınız var? Sonuçta, nesne türüne göre bir silme de var

buna göre, projede hiçbir şeyin değiştirilmesi gerekmedi, sadece yazın

))))))))))))))

Tabii ki, belgelere baktım. Ve evet, her şey mümkün! Ama bunu yaptım... Ve ne, işe yaramıyor veya bir şekilde müdahale etmiyor mu?...

Ve projede , orada her şey çok daha karmaşık. Yukarıda bahsetmiştik...
 
Artyom Trishkin :

Bu sadece özel bir durum. Önek genel ve evrenseldir. Tüm eğilim çizgilerinin kaldırılmasının programa ait olmayan nesneleri de etkileyeceği göz önüne alındığında.

Kabul ediyorum. chart_id: 0 (geçerli grafik). Yani sadece bu çizelgede. Ve başka programlar varsa, her nesne adına bir kimlik ekleyebilir ve ObjectsDeleteAll öğesini çağırabilirsiniz.     uygun önekle ve işlev hiçbir şeyi karıştırmaz. Bu yüzden yukarıdaki yazılarda nesne isimlendirmemin karmaşık olduğunu ve bu fonksiyonu kullanmadan önce düşünmem gerektiğini söylemiştim. Ama Alexei benim ve aynı zamanda arkadaşı tarafından rahatsız edildi ... Boşuna!

 
Mihail Matkovskij :

Niye ya? chart_id: 0 (geçerli grafik). Yani sadece bu çizelgede. Ve eğer başka programlar varsa, o zaman ID diye bir şey var. Her nesne adına eklenirse, ObjectsDeleteAll işlevi hiçbir şeyi karıştırmaz. Bu yüzden yukarıdaki yazılarda nesneleri isimlendirmenin benim için zor olduğunu ve bu fonksiyonu kullanmadan önce düşünmem gerektiğini söylemiştim. Ama Alexei benim ve aynı zamanda arkadaşı tarafından rahatsız edildi ... Boşuna!

Cevap vermeden önce beynini kullan :)

Nesne adına yazılan kimlik, program nesnelerinin silindiği tanımlama ile belirli bir önektir.

Ve şimdi Alexey'e cevabımı hangi kodu yazdığıma bakın ve kodu yalnızca ihtiyacınız olan, tanımlayıcının girilmeyeceğini ve programa ait olmayan "yabancı" nesneleri bırakacak olan nesneleri nasıl silecek? grafik?

Cevabım, Alexey'den gelen aşağıdaki mesajla bu koda Alexey'e oldu:

buna göre, projede hiçbir şeyin değiştirilmesi gerekmedi, sadece yazın

 ObjectsDeleteAll ( 0 , 0 , OBJ_TREND );
))))))))))))))
 
Artyom Trishkin :

Cevap vermeden önce beynini kullan :)

Nesne adına yazılan kimlik, program nesnelerinin silindiği tanımlama ile belirli bir önektir.

Ve şimdi Alexey'e cevabımı hangi kodu yazdığıma bakın ve kodu yalnızca ihtiyacınız olan, tanımlayıcının girilmeyeceğini ve programa ait olmayan "yabancı" nesneleri bırakacak olan nesneleri nasıl silecek? grafik?

Cevabım, Alexey'den gelen aşağıdaki mesajla bu koda Alexey'e oldu:

Düzenlendi. Doğru cevapladınız. Bunu biraz karıştırdım. Başka bir şey söylemek istedim.

 
Mihail Matkovskij :

Ama Alexey benim tarafımdan rahatsız edildi, ...

Beklemeyin... Ben sadece adaletten yanayım. Kusurlarınızı ortaya çıkarmanıza gerek yok, ancak ben de dahil olmak üzere herkeste terminal hataları var.

Taze bir örnek var: Bir süre önce böyle bir losyonu zevkle kullandım, bir değişkene sağ tıklayın, “Tanıma git” ve o değişkene geri dönmek için “Geri” faresindeki tuşa bastım. Ama bugün çalışmayı bıraktığını fark ettim. Sebeb olmak??? Dün 2530'a güncelledim... Hatta geliştiricilerle müstehcen bir dille konuştum ama aniden benim de fareyi değiştirmem gerektiğini hatırladım. ME 2474'ü açtım ve kusura bakmayın………………… ve orada çalışmıyor. Ve geliştiriciler hakkında düşündüğüm her şeyi yazmak için hemen aklıma SMS gelse? Nasıl görünecekti.

Bu, hatalar hakkında yazmadan önce, kodunuzdaki kusurları aramak için acele etmeye gerek olmadığı gerçeğidir.

 
Alexey Viktorov :

Beklemeyin... Ben sadece adaletten yanayım. Kusurlarınızı ortaya çıkarmanıza gerek yok, ancak ben de dahil olmak üzere herkeste terminal hataları var.

Kim sergiliyor? https://www.mql5.com/ru/forum/1111/page2795#comment_17290368 . Umarım bu sefer dikkatlice okursun?... Sonunda anlaman ve buraya saçma sapan yazmaman için kendimi kaç kez tekrarlamam gerekiyor?!

 
Mihail Matkovskij :

Kim sergiliyor? https://www.mql5.com/ru/forum/1111/page2795#comment_17290368 . Umarım bu sefer dikkatlice okursun?... Sonunda anlaman ve buraya saçma sapan yazmaman için kendimi kaç kez tekrarlamam gerekiyor?!

Ben adalet için varım.

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

Hatalar, hatalar, sorular

Mihail Matkovskij , 2020.07.11 14:47

Bu hatanın oluştuğu kaynağı yaptım:
 //+------------------------------------------------------------------+
//|                                           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);
  }
   return (rates_total);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason) {
  
  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;
  }
}
//+------------------------------------------------------------------+

Hatayı göstermek için eylemler.

1. Göstergeyi tablonun üzerine bırakın.

2. Göstergeyi tablodan çıkarın.

3. Ctrl+B'ye basın, ardından penceredeki "Tümünü listele" düğmesine basın ve silinmemiş nesneleri görün.

nesneler

100.000'den 294'üm kaldı.

nBars giriş parametresinin değerini düşürürseniz, hata görünmez.


 
Alexey Viktorov :

Ben adalet için varım.



Yani bu mesajda ne tür bir hata olduğu, programım mı yoksa terminal hatası mı olduğu söylenmedi. Bir terminal hatası olduğunu düşündüm. Ama Rashid Umarov bana her şeyi anlattı ve ben onu anladım. Bana göre her şey çok açık. Terminal hatası yoktu, varsayımlarımda yanılmışım. Beni çılgın bir coşkuyla takip ediyorsun. Nedenini sordum, dedin ki:

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

İşte nedeni...

Sonunda saçmalamayı bırak! Bir yetişkin (umarım)...

 
Mihail Matkovskij :

Yani bu mesajda ne tür bir hata olduğu, programım mı yoksa terminal hatası mı olduğu söylenmedi. Bir terminal hatası olduğunu düşündüm. Ama Rashid Umarov bana her şeyi anlattı ve ben onu anladım. Bana göre her şey çok açık. Terminal hatası yoktu, varsayımlarımda yanılmışım. Beni çılgın bir coşkuyla takip ediyorsun. Nedenini sordum, dedin ki:

Bu yüzden...

Sonunda saçmalamayı bırak! Bir yetişkin (umarım)...

TAMAM. Ayakkabılarını takla ile değiştirdi. Terminalin bir hatası olarak yayınlandı ve ………… bildiğiniz gibi hepsi yaşıyor.

 
Depolama bağlantısı

https://storage.mql5.io giriş yapmak mümkün değil.

Neden: