""Yeni Çubuk" Olay İşleyicisi" makalesi için tartışma - sayfa 6

 

Herkese iyi günler ve iyi ruh halleri!

Acaba bu kod

bool IsNewBar()
  {
   static datetime TimeOld;
   datetime TimeNew[1];
   CopyTime(_Symbol,PERIOD_CURRENT,0,1,TimeNew);
   if(TimeNew[0]!=TimeOld)
     {
      TimeOld=TimeNew[0];
      return(true);
     }
   return(false);
  }

işe yarayacak mı? Bunu uzun zaman önce MQL5 web sitesinde buldum ve kimden kopyaladığımı hatırlamıyorum.

Saygılarımla, Vladimir.

 
MrBrooklin #:

Herkese iyi günler ve iyi neşeler!

Acaba böyle bir kod var mı?

işe yarayacak mı? Bunu uzun zaman önce MQL5 web sitesinde buldum ve kimden kopyaladığımı hatırlamıyorum.

Saygılarımla, Vladimir.

Bu arada, bu kodu da kullanıyorum ve oldukça iyi çalışıyor, ancak biraz daha geniş, herhangi bir TF için kullanılabilir!

bool isNewBar(string INST,int K, ENUM_TIMEFRAMES timeFrame)
  {
//----
   bool res=false;               // analiz sonuç değişkeni 
   int  i=0;                     // dizi hücre numarası old_Times[] 
   datetime new_Time[1];         // yeni çubuğun zamanı

   switch(K)
     {
      case 0:  i= 0; break;
      case 1:  i= 1; break;
      case 2:  i= 2; break;
      case 3:  i= 3; break;
      case 4:  i= 4; break;
      case 5:  i= 5; break;
      case 6: i= 6; break;
      case 7: i= 7; break;
      case 8: i= 8; break;
      case 9: i= 9; break;
      case 10: i=10; break;
      case 11:  i=11; break;
      case 12:  i=12; break;
      case 13:  i=13; break;
     }
   // son çubuğun zamanını hücreye kopyala new_Time[0] 
   int copied=CopyTime(INST,timeFrame,0,1,new_Time);
   
   if(copied>0) // her şey tamam. veri kopyalandı
      {
      if(old_Times[i]!=new_Time[0])       // eğer eski bar zamanı yeni bar zamanına eşit değilse
         {
         if(old_Times[i]!=0) res=true;    // eğer bu ilk çalıştırma değilse, true = new bar
         old_Times[i]=new_Time[0];        // barın saatini hatırla 
         }
      }      
//----
   return(res);
  }
 
switch(K)
     {
      case 0:  i= 0; break;
      case 1:  i= 1; break;
      case 2:  i= 2; break;
      case 3:  i= 3; break;
      case 4:  i= 4; break;
      case 5:  i= 5; break;
      case 6: i= 6; break;
      case 7: i= 7; break;
      case 8: i= 8; break;
      case 9: i= 9; break;
      case 10: i=10; break;
      case 11:  i=11; break;
      case 12:  i=12; break;
      case 13:  i=13; break;
     }

Vay canına.)

 
Dmitry Fedoseev #:

Vay canına.)

K'de kim var? Sanırım her şeye baktım.

di̇zi̇ karşilaştirmasi

Yeni çubukta hayal kırıklığına uğradım, işlemlerin tesadüfü yok, benim için net olmayan bir nedenden dolayı, baskı yok, yani tetikleme veya serilastbar yok veya sadece zaman içinde bir gecikme var, yüksek bir pingim var (140), belki de nedeni budur.

Newbar'ın birçok varyantını denedim, her yerde bir takılma oldu, bir bilgisayarda 3 terminalde test ettim.

Newbar'ı kaldırdım ve tüm terminaller sunucuda birkaç gün boyunca %100 işlem gördü.

 
Fast235 #:

K'de kim var? Sanırım her şeye baktım.

dizi karşılaştırması

Yeni çubukta hayal kırıklığına uğradım, anlaşmaların tesadüfü yok, anlamadığım nedenlerden dolayı, baskı yok, yani tetikleme veya serilastbar yok veya sadece zaman içinde bir gecikme var, yüksek bir pingim var (140), belki de nedeni budur.

K parametrelerinde.

Çünkü bu işlevle, bir emirde hata olması durumunda ikinci bir deneme yoktur.

 

ve işlem OnTick'te değil, OnChartEvent(spy) tarafından ve mümkün olan en hızlı uygulamada, yalnızca id aracılığıyla yapılır, geri kalanı aktarılmaz

7 sembol, çok sayıda koşul ve sayımda bir sembolün geçişi, Amerikan oturumunda% 0,5-0,7 ryzen 3700x

göstergeden yeni bir çubuk aracılığıyla yeni bir çubuk bile denedi, ayrıca fırsatları saptırdı, 5 normal ve sonra birinde, sonra diğerinde kekeledi.

 
Tamamen attım, zaten algoritma son çubuğa bakıyor ve bu durumda bir avantaj bile var, eğer işlem iptal edilirse, yayılma ve "sapma" sınırlaması sınırları dahilinde hiçbir yere gitmeyecek
 
Mihail Marchukajtes #:

Bu arada evet, ben de bu kodu kullanıyorum ve oldukça iyi çalışıyor, sadece biraz daha geniş, herhangi bir TF için kullanabilirsiniz!

Teşekkürler Mikhail, bunu fonksiyon kütüphaneme ekleyeceğim.

Saygılarımla, Vladimir.

 
Armen Shahinyan #:

Bundan daha basit bir yöntemim yok.
Mevcut çubuğun açılış zamanını izler ve her tıklamada bunları karşılaştırır.


İlk fonksiyonu koddan çıkarın. Ve hayat daha iyi olacak.

 

Genel olarak, 2 durum ilginçtir:

1. Herkes bir sebepten dolayı yasaklandı.

2. Yeni bir çubuk her zaman bir öncekinden farklıdır. Herhangi bir zaman, çünkü her zaman soldan sağa doğru gider. Herhangi bir zamanı alın. Eğer bir öncekiyle aynı zamana denk gelmiyorsa, o zaman çubuk yenidir.