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

 
Igor Zakharov :

Bu bir yedek değildir - MB göstergelerde çalışmaz . düğmeye basılana kadar ipliği durdurur!

Yanlışlıkla tavsiyede bulundum, ancak not tamamen farklı bir şey söylüyor:

Not

MessageBox() işlevinin çağrılması, kullanıcının yanıtını bekleme süresi boyunca göstergenin yürütme dizisini askıya aldığından, işlevin özel göstergelerde kullanılması önerilmez . Ve her bir sembol için tüm göstergeler tek bir iş parçacığında yürütüldüğünden, bu sembol için tüm zaman dilimlerindeki tüm grafikler durdurulacaktır.

Strateji test cihazında çalışırken, MessageBox() işlevi yürütülmez.

 
MakarFX :

Ben bir programcı değilim, göstergeyi rahatlığım için düzenliyorum. Test cihazında değil, gerçek zamanlı olarak kontrol ettim.

Bu arada, telepatlar yok .

Burada bulunan göstergelerden hangisinin bu işlevi kullandığını biliyorsanız, lütfen bana söyleyin, belki o zaman kendim çözerim.

teşekkürler

Hepimiz var.

Клуб Телепатов
Клуб Телепатов
  • 2011.05.08
  • www.mql5.com
Клуб телепатов Вас послали сюда? Тогда давайте знакомиться! Как же такое могло случиться со мной...
 
Artyom Trishkin :

Yerel kapsamda bir yapı tipine sahip bir değişken bildirirsiniz ve onu fonksiyona gönderirsiniz. aynı yerel bölgede.

Gerçek şu ki, alandaki bir yapı için bir değişken yaratırken, kapsamı yerel kapsam için değil tüm işlev içindir. İşte bir örnek.

 int OnInit ()
  {
{int In=8;
 MyPoint qr;}
qr - видна здесь
In - здесь не видна
   return ( INIT_SUCCEEDED );
  }

void OnDeinit ( const int reason){}

struct MyPoint
{
     int x[ 5 ];
     int y;
};

Artık yerel olarak çalışmanın mümkün olmadığı ortaya çıktı.

 

Bir komut dosyasındaki bir csv dosyasındaki verileri okumaya çalışıyorum. İşe yaramadı ve nedenini anlamıyorum.

Okumak için en basit prosedürü kullanıyorum:

 bool GetBiFromFile( string InFNam, int & alBars, double & xClose[], datetime & xTime[])
{   int   InHndl,nBars;
   bool fset;
   double aval;
   
   InHndl = FileOpen (InFNam+ ".csv" , FILE_READ | FILE_CSV , "," );
   if (InHndl== INVALID_HANDLE ) {
       Print ( "File " +InFNam+ " does not open. Error: " , GetLastError ()); 
       return ( false ); 
   } else {
      fset = FileSeek (InHndl, 0 , SEEK_SET );
       ArrayResize (xClose,alBars);      
       ArrayInitialize (xClose, 0.0 );  
       ArrayResize (xTime,alBars);       
       ArrayInitialize (xTime, 0 );  
      nBars = 0 ;
       while (! FileIsEnding (InHndl)) {
         nBars++;
         xTime[nBars- 1 ]  = FileReadDatetime (InHndl);;
         xClose[nBars- 1 ] = FileReadDouble (InHndl);
         aval = FileReadDouble (InHndl);
         if (nBars>=alBars) break ;
      }
   }
   Print ( "nBars = " ,nBars, "   allBars = " ,alBars);
   Print ( "Start: " ,xClose[ 0 ], "   " + TimeToString (xTime[ 0 ], TIME_DATE | TIME_SECONDS ));
   Print ( "End: " ,xClose[nBars- 1 ], "   " + TimeToString (xTime[nBars- 1 ], TIME_DATE | TIME_SECONDS ));
   return ( true );
}

Veri dosyası şöyle görünür:

2012.01.02 02:00:02,1.293240,1.293410

2012.01.02 02:00:52,1.293330,1.293500

2012.01.02 02:00:55,1.293810.1.293980

....

Ve prosedürdeki Print() ifadelerinin sonucu şudur:

nBar = 1000 alBar = 1000

Başlangıç: 0.0 2020.01.29 01:00:00

Bitiş: 0.0 2020.01.29 01:00:00

Yani okuma döngüsünde tüm satırlar işlenir ancak hiçbir şey okunmaz. Ve hata mesajı yok.

Biri bana bunu açıklayabilir mi?


 
Yurixx :

Biri bana bunu açıklayabilir mi?

İkili işlevler bir metin dosyasını okur.

 
Alexey Viktorov :

Hepimiz var.

Kötü seni!

 
MakarFX :

Kötü seni!

rol yapıyorum

Programlamayı anlamak istiyorsanız, onu anlamaya çalışmaya başlayın. Sadece yapmanız gerekiyorsa, ücretsiz yazmayı teklif ettikleri konuyla iletişime geçin, göstergenizi oraya koyun ve isteği açıklayın.


not: her şeyi kontrol ettim. Alert() bir nedenden dolayı PlaySound() 'dan önce olsa bile seçilen sesin çalınmasına izin vermiyor. Belki hafızam kötüleşti, ama mesele bu değil.

Kırmızı çarpı işaretinin görünmesi için çift tıklayarak uyarı sesini kapatabilirsiniz.


ve bu durumda, Alert() veya PlaySound()'un önüne ne yazıldığı önemli olmayacaktır.

 
Alexey Viktorov :

rol yapıyorum


ve bu durumda, Alert() veya PlaySound()'un önüne ne yazıldığı önemli olmayacaktır.

Bu durumda uyarı penceresi açılmaz.(

 
fxsaber :

İkili işlevler bir metin dosyasını okur.

FileReadDouble() işlevinin gerçekten bir ikili dosyadan okuduğu söylenir.

Ancak FileReadDatetime() hakkında şöyle diyor: "Bir CSV dosyasından şu biçimlerden birinin dizesini okur: "YYYY.MM.DD SS:MI:SS", "YYYY.MM.DD" veya "HH:MI:SS" - ve onu bir tarih saat değerine dönüştürür."

Ek olarak, aynı resim FileReadString() kullandığımdaydı ve sonra dizeleri kendim istediğim türe dönüştürdüm.

Sizce nasıl yapılmalı?


 
Yurixx :

Sizce nasıl yapılmalı?

 void OnStart ()
{
   datetime time;
  
   double PriceBid;
   double PriceAsk;
  
   string Str = "2012.01.02 02:00:02,1.293240,1.293410" ;
   string StrArray[];
  
   if ( StringSplit (Str, ',' , StrArray) > 2 )
  {
    time = ( datetime )StrArray[ 0 ];
    
    PriceBid = ( double )StrArray[ 1 ];
    PriceAsk = ( double )StrArray[ 2 ];
  }
}