Belirli Bir Gösterge için Benzersiz Kimlik Oluşturucu - sayfa 3

 
Ovo : "Öğretilmiş" demek istediğinden emin değilim. Birkaç tanesini hata ayıklama için kullanıyorum, ancak __DATETIME__ için henüz bir kullanım bulamadım... nereye hedefliyorsunuz?

Üzgünüz, aynı gösterge birden çok pencereyi aradığınızı unuttum.

Başka bir şey düşünmeyi deneyeceğim.

===============================================

Ah-ha, anladım. Uygun bir uzunluk hesaplaması yapan bir işlev oluşturun.

Ardından, işlevin tamamlanması için hızlandırılmış süreyi benzersiz numaranız olarak döndürün.

 

TimeCurrent() benzersiz bir sayıdır..

neden indi'yi eklediğiniz zamanı kullanmayı denemiyorsunuz? bir etikete kaydet

 
Ovo :
Çünkü her tavsiyeyi denemem. Sadece mantıklı olanları seçiyorum.
Size yardım etmeye çalışan insanlarla kibirinizi hafifletmenizi öneririm . Bu forumda böyle bir tutum hoş karşılanmıyor.
 
angevoyageur :
Size yardım etmeye çalışan insanlarla kibirinizi hafifletmenizi öneririm . Bu forumda böyle bir tutum hoş karşılanmıyor.

uzak durmaya çalışacağım.
 

fikrimin anlamsız olduğunu nasıl söylersin??

zaman akımı benzersiz bir sayıdır ..

bu kodu deneyin .. 1 tabloya ekleyin .. ancak farklı giriş periyotları

#property strict
#property indicator_separate_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
extern int periode= 4 ;
int OnInit ()
  {
//--- indicator buffers mapping
string shortname= StringConcatenate ( WindowExpertName (), "_" ,periode);
IndicatorShortName (shortname);
int wind= WindowFind (shortname);
string name= StringConcatenate ( "TIME_TAG" ,wind);
   if ( ObjectFind (name)!=wind)
  {   ObjectCreate (name, OBJ_LABEL , wind, 0 , 0 );
       ObjectSet (name, OBJPROP_CORNER , 2 );
       ObjectSet (name, OBJPROP_XDISTANCE , 2 );
       ObjectSet (name, OBJPROP_YDISTANCE , 5 ); 
       ObjectSetText (name, DoubleToStr ( TimeCurrent (), 0 )+ DoubleToStr (wind, 0 ) , 9 , "Arial" ,Yellow);   
  }
//---
   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[])
  {
//---
   
//--- return value of prev_calculated for next call
   return (rates_total);
  }
 
WDholic :

zaman akımı benzersiz bir sayıdır ..

TimeCurrent(), aşağıdakiler de dahil olmak üzere çeşitli olası koşullar altında benzersiz bir sayı değildir:

* Birden çok mevcut grafik ve bu tablolara eklenmiş birden çok gösterge ile MT4'ün bir kopyasını yeniden başlatıyorsunuz. Hepsi aynı anda başlatılacak ve aynı TimeCurrent()'i görecekler.

*Likiditenin zayıf olduğu bir dönemde göstergenin kopyalarını ekliyorsunuz. Aracınızın fiyat beslemesinin türüne bağlı olarak, 5-10 saniye boyunca yeni kene olmadığı ve TimeCurrent() öğesinin değişmediği dönemler olabilir. Böyle bir süre boyunca yeni göstergeler eklerseniz, TimeCurrent() için aynı değeri alacaklardır.

 
string name= StringConcatenate ( "TIME_TAG" ,wind);
   if ( ObjectFind (name)!=wind)
  {   ObjectCreate (name, OBJ_LABEL , wind, 0 , 0 );
       ObjectSet (name, OBJPROP_CORNER , 2 );
       ObjectSet (name, OBJPROP_XDISTANCE , 2 );
       ObjectSet (name, OBJPROP_YDISTANCE , 5 ); 
       ObjectSetText (name, DoubleToStr ( TimeCurrent (), 0 )+ DoubleToStr (wind, 0 ) , 9 , "Arial" ,Yellow);   
  }

sadece TIME TAG etiketini bulamazsak zaman etiketi ekleme

bu yüzden deinit'te TIME TAG etiketini silmeyin .. böylece değer asla değişmez

tamam..korkuyorsak 5 veya 10 saniye sonra tık yok.. Time Current yerine TimeLocal kullanabilir miyiz?

 
WDholic :

sadece TIME TAG etiketini bulamazsak zaman etiketi ekleme

bu yüzden deinit'te TIME TAG etiketini silmeyin .. böylece değer asla değişmez

tamam..korkuyorsak 5 veya 10 saniye sonra tık yok.. Time Current yerine TimeLocal kullanabilir miyiz?

... Ayrıca, grafik nesneleri hakkında yukarıda tartışılan sorun var: göstergeyi bir grafiğe ekler ve ardından bir şablon oluşturursanız, şablondan oluşturulan tüm yeni grafikler aynı TIME_TAG değerine sahip olacaktır. Ve nesnenin kullanımı, grafik başına göstergenin yalnızca bir örneğine izin verir; Tüm olası parametreleri IndicatorShortName içine koymazsanız, birden çok gösterge aynı kimliği alacaktır.

 
gchrmt4 :

... Ayrıca, grafik nesneleri hakkında yukarıda tartışılan sorun var: göstergeyi bir grafiğe ekler ve ardından bir şablon oluşturursanız, şablondan oluşturulan tüm yeni grafikler aynı TIME_TAG değerine sahip olacaktır. Ve nesnenin kullanımı, grafik başına göstergenin yalnızca bir örneğine izin verir; Tüm olası parametreleri IndicatorShortName içine koymazsanız, birden çok gösterge aynı kimliği alacaktır.


deneyin lütfen..

1 şablonla 5 indi'yi farklı ayarlara koyarsanız ..

ör. zaman değeri 111111000

pencere 1'de 1111110001 gösterilecek
pencere 2'de 1111110002 gösterilecek
pencere 3'te 1111110003 gösterilecek
4. pencerede 1111110004 gösterilecek

pencere 5'te 1111110005 gösterilecek

çünkü pencere numarasını ekliyorum

ObjectSetText (ad , DoubleToStr ( TimeCurrent (), 0 )+ DoubleToStr (rüzgar, 0 ) , 9 , "Arial" ,Sarı);


Tüm olası parametreleri IndicatorShortName içine koymazsanız, birden çok gösterge aynı kimliği alacaktır .

evet.. dikkate alınmasında fayda var.

ama OVO ve You gibi bir usta kodlayıcı için kolay olacağını düşünüyorum.

 
WDholic :

1 şablonla 5 indi'yi farklı ayarlara koyarsanız ..

Hangi MT4 sürümünü kullandığınızı bilmiyorum, ancak bilgisayarımdaki v616'da WindowFind(), OnInit() sırasında -1 döndürür. Belgeler her zaman "Init() işlevi çalıştığında özel gösterge kendini ararsa, WindowsFind() -1 döndürür" dedi.