Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 154

 
önce nidves , mesajı kodla doğru biçimlendir, anlamak çok zor, ikincisi haberle birlikte dosyanın yapısını görmek isterim yoksa hangi verinin nerede kullanıldığı belli olmaz.
 

Gözünüze çarpan ilk şey, danışmanı normal bir komut dosyası olarak kullanmanızdır. Fark için kılavuzu okuyun. Danışmana değil, görevinize uyan senaryo!

İkincisi , neden bu tasarımı kullanıyorsunuz?

   for (count= 1 ; count<=countstr; count++)
  {
   //----
   //----  
   if (count>=countstr) break ;
  }

Peki probleminizin kökü nerede?

 void CreatFile()
   {
     string Filepatch="Analyse news\\"+" Symbol "+"_"+ IntegerToString (periodMT)+".csv";
     Comment ("Creat a new file");
     int file= FileOpen (Filepatch, FILE_WRITE | FILE_CSV );
     FileWrite (file, " Symbol "," Period ","News","Data Time "," Open "," High "," Low "," Close ");
    
     int   bar_index= iBarShift (symbolMT,periodMT,DateNews[count- 1 ]); 
//Чему равен в этот момент count? 
//Для чего нужен был массив событий если в обработку попадает только одно событие?
//Функция iBarShift (так как вы используете) возвращает либо номер бара по времени либо ближайший номер бара если в истории есть пропуски 
//Внимательно почитайте описание 
     int   countBar=bar_index;
    
     for (count= 1 ; count<=countstr; count++)
    {
    countBar--;
    
     FileWrite (file,symbolMT,periodMT,NameNews[count- 1 ],DateNews[count- 1 ],
    
     DoubleToStr ( iOpen (symbolMT,periodMT,countBar))

    );
    }
     FileClose (file);
     ExpertRemove ();
   }

Peki, en basit programda çok iyi yaptığınız son şey, bu programdan ne istediğinizi anlatın ve senaryoyu adım adım güzelce yazmaya çalışalım!

 
Vitaly Gorbunov :

Gözünüze çarpan ilk şey, danışmanı normal bir komut dosyası olarak kullanmanızdır. Fark için kılavuzu okuyun. Danışmana değil, görevinize uyan senaryodur!

İkincisi , neden bu tasarımı kullanıyorsunuz?

Peki probleminizin kökü nerede?

Pekala, en basit programda çok fazla yığdığınız son şey, bu programdan ne istediğinizi açıklayın ve senaryoyu adım adım güzelce yazmaya çalışalım!

Vitaly, cevabınız için teşekkürler!

1) Senaryoya gelince, sizi anlıyorum, deneyeceğim.

2) Her şey basit, for döngüsünü kesiyorum.

3) Belirli enstrümanların + zaman dilimlerinin, belirli haberlerin belirli tarih ve saatlerde alıntılarını yükleyecek bir Uzman Danışman veya komut dosyası oluşturmanız gerekir.

Dosyaya yazmanın sonucu şöyle görünmelidir:

sembol dönem Haberler tarih saat açık yüksek Düşük kapat
GBPUSD 5 Kanada Çekirdek Tüketici Fiyat Endeksi (TÜFE) (Aylık) 26.01.2018 16:30:00 0,000000000 0,000000000 0,000000000 0,000000000
GBPUSD 5 Kanada Çekirdek Tüketici Fiyat Endeksi (TÜFE) (Aylık) 21.12.2017 15:30:00 0,000000000 0,000000000 0,000000000 0,000000000
GBPUSD 5 Kanada Çekirdek Tüketici Fiyat Endeksi (TÜFE) (Aylık) 17.11.2017 15:30:00 0,000000000 0,000000000 0,000000000 0,000000000
GBPUSD 5 Kanada Çekirdek Tüketici Fiyat Endeksi (TÜFE) (Aylık) 20.10.2017 15:30:00 0,000000000 0,000000000 0,000000000 0,000000000

Ve böylece farklı enstrümanlar + zaman dilimleri + haberler ve tarihler için.

Ve yine de, bir uyarı var. Yükleme 60 dakikalık bir zaman diliminde gerçekleşirse, teklifler 16:00 ve 15:00 saatlerine karşılık gelmelidir.

Haber saati 14:45 ise, alıntılar saate karşılık gelmelidir:

1 dakika - 14:45

5 dakika - 14:45

15 dakika - 14:45

30 dakika - 14:30

60 dakika - 14:00

Umarım kendimi açıkça ifade edebilmişimdir. teşekkürler

 

Bu döngüye tekrar bakın! Count değişkeni yalnızca for ifadesinin kendisi tarafından değiştirilir, bu nedenle if bu döngüde yalnızca gereksizdir.

Şimdi verileri nasıl işleyeceğimizi tanımlayalım. Haber dosyasından haber parametrelerini okumak, verileri işlemek ve alıntılar dosyasına yazmak en mantıklısı gibi geliyor bana. Bir kayıt uğruna diziyi tekrar gözden geçirmek için bir dizi haber toplamak bir şekilde rasyonel değildir, ayrıca çoğu zaman dizileri işlerken dizinlerle ilgili bir sürü hata yapabilirsiniz.

 
Vitaly Gorbunov :

Bu döngüye tekrar bakın! Count değişkeni yalnızca for ifadesinin kendisi tarafından değiştirilir, bu nedenle if bu döngüde yalnızca gereksizdir.

Şimdi verileri nasıl işleyeceğimizi tanımlayalım. Haber dosyasından haber parametrelerini okumak, verileri işlemek ve alıntılar dosyasına yazmak en mantıklısı gibi geliyor bana. Bir kayıt uğruna diziyi tekrar çalıştırmak için bir dizi haber toplamak bir şekilde rasyonel değildir, ayrıca çoğu zaman dizileri işlerken dizinlerle ilgili bir sürü hata yapabilirsiniz.

Yani, önceden tırnak içeren dosyalar oluşturup dosyaya haber parametreleri mi ekleyelim?

 
nidves :

Yani, önceden tırnak içeren dosyalar oluşturup dosyaya haber parametreleri mi ekleyelim?

Beni yanlış anladınız, haber dosyasından okuduk, işliyoruz ve hemen alıntı dosyasına yazıyoruz , haber dosyasının tamamını işleyene kadar böyle devam ediyoruz!
 
Vitaly Gorbunov :
Beni yanlış anladınız, haber dosyasından okuduk, işliyoruz ve hemen alıntı dosyasına yazıyoruz , haber dosyasının tamamını işleyene kadar böyle devam ediyoruz!
Bu yüzden sadece diziler aracılığıyla yapmaya çalışıyorum. Böyle bir kodu nasıl yazardınız?
 
nidves :
Bu yüzden sadece diziler aracılığıyla yapmaya çalışıyorum. Böyle bir kodu nasıl yazardınız?
Neden gerekli olmayan bir dizi kullanalım? Kod ne kadar basitse, o kadar az hata yapabilirsiniz!
 
Vitaly Gorbunov :
Neden gerekli olmayan bir dizi kullanalım? Kod ne kadar basitse, o kadar az hata yapabilirsiniz!

Bu kod sayesinde dizilerle çalışmayı öğreniyorum. Sonuçta, prensipte görev zor değil.

OpenSymbol  [count- 1 ]= iOpen (symbolMT,periodMT,numberBar);

"Aç" tırnak işaretleri zaten yukarıdaki dizide depolanmıştır. Buna göre, ihtiyacım olan tarihin alıntısını bu diziden çıkarmanız yeterli.

 
nidves :

Bu kod sayesinde dizilerle çalışmayı öğreniyorum. Sonuçta, prensipte görev zor değil.

"Aç" tırnak işaretleri zaten yukarıdaki dizide depolanmıştır. Buna göre, ihtiyacım olan tarihin alıntısını bu diziden çıkarmanız yeterli.

Şimdi gidiyorum, Pazartesi döneceğim. Anlamak ilginizi çekiyorsa beni arkadaş olarak ekleyin forumu tıkamadan konuşalım.