"SQLite: MQL5'te SQL veritabanlarıyla yerel olarak çalışma" makalesi için tartışma

 

Yeni makale SQLite: MQL5'te SQL veritabanlarıyla yerel olarak çalışma yayınlandı:

Ticaret stratejilerinin geliştirilmesi, büyük miktarda verinin işlenmesiyle ilişkilidir. Artık doğrudan MQL5'te SQLite tabanlı SQL sorguları kullanarak veritabanlarıyla çalışabilirsiniz. Bu motorun önemli bir avantajı, tüm veritabanının kullanıcının bilgisayarında bulunan tek bir dosyaya yerleştirilmiş olmasıdır.

MetaEditor'da SQL sorgularında hata ayıklama

Veritabanıyla çalışmaya yönelik tüm fonksiyonlar, başarısız bir çağrı durumunda bir hata kodu geri döndürür. Şu dört basit kuralı izlerseniz, onlarla çalışırken herhangi bir sorun oluşmasını önlersiniz:

  1. DatabaseFinalize() tarafından kullanıldıktan sonra tüm sorgu tanıtıcıları yok edilmelidir;
  2. Veritabanı, tamamlanmadan önce DatabaseClose() ile kapatılmalıdır;
  3. Sorgu yürütme sonuçları kontrol edilmelidir;
  4. Bir hata durumunda, önce sorgu yok edilmeli, ardından veritabanı kapatılmalıdır.

En zor şey, sorgu oluşturulmamışsa hatanın ne olduğunu anlamaktır. MetaEditor *.sqlite dosyalarının açılmasına ve SQL sorguları kullanılarak onlarla çalışılmasına olanak tanır. Oluşturulan company.sqlite örnek dosyasını kullanarak bunun nasıl yapıldığını görelim:

1. Ortak terminal klasöründen company.sqlite dosyasını açıyoruz.

2. Veritabanını açtıktan sonra Kılavuzda COMPANY tablosunu görebiliriz. Üzerine çift tıklayın.

3. SELECT * FROM COMPANY sorgusu, durum çubuğunda otomatik olarak oluşturulur.

4. Sorgu otomatik olarak yürütülür. Ayrıca F9'a basılarak veya Yürüt düğmesine tıklanarak da yürütülebilir.

5. Sorgunun yürütme sonucuna bakıyoruz.

6. Bir şeyler ters giderse, hatalar düzenleyicinin günlüğünde görüntülenir.


SQL sorgularını kullanarak örneğin toplam ve ortalama gibi tablo alanları hakkında istatistikler elde edebiliriz. Sorguları yapalım ve çalışıp çalışmadıklarını kontrol edelim.

Yazar: MetaQuotes

 

Kim çözdü, lütfen bu görevin uygulamasını gösterin.

  1. İki Terminal var.
  2. Terminal1'den bir sembolün gerçek zamanlı kotasyonlarını Terminal2'nin ilgili özel sembolüne aktarmak gerekir.
 
Makale ve faydalı uygulama örnekleri için teşekkürler.
 
fxsaber:

Bunu kim çözdü, lütfen böyle bir görevin uygulamasını gösterin.

  1. İki Terminal vardır.
  2. Bir sembolün gerçek zamanlı kotasyonlarını Terminal1'den Terminal2'nin ilgili özel sembolüne aktarmak gerekir.

Bu görev çerçevesinde, her iki durumda da (Terminal2'deki tabanı okurken ve Terminal1'deki tabana yazarken) işlem mekanizması aracılığıyla engellenmesi gerektiğini doğru anlıyor muyum?


Veritabanının güncellendiğini belirlemenin en ucuz yolu nedir?

 
fxsaber:

Bu görev çerçevesinde, her iki durumda da (Terminal2'deki tabanı okurken ve Terminal1'deki tabana yazarken) işlem mekanizması aracılığıyla engellenmesi gerektiğini doğru anlıyor muyum?

Hayır, bu farklı bir kilitleme. Taban zaten başka bir MQL5 programında veya MetaEditor'de açılmışsa, değiştirmeye çalışırken 5124 hatası alırsınız.

 
Rashid Umarov:

Hayır, bu farklı bir kilittir. Taban zaten başka bir MQL5 programında veya MetaEditor'de açılmışsa, değiştirmeye çalışırken 5124 hatası alırsınız.

Veri alışverişinin dosyalar aracılığıyla olduğundan daha az olasılığa sahip olduğu ortaya çıktı mı?

 
fxsaber:

Veri paylaşımının dosyalar aracılığıyla olandan daha az olasılığı var gibi mi görünüyor?

veritabanı uygulamasının kendisine bağlıdır

dosyalar her zaman elverişsizdir - sıralı erişim ve tek bir dosya ile çalışırken aynı sorunlar

 
fxsaber:

Veri paylaşımının dosyalar aracılığıyla olandan daha az olasılığı var gibi mi görünüyor?

SQLite sunucu taraflı bir veritabanı değil, gömülü bir veritabanıdır. Bu nedenle farklı süreçlerden ortak ve eş zamanlı kullanım sağlayamaz.

Amacı, MQL5'te dahili kullanım ve diğer sistemlerle paylaşım (eşzamanlı kullanım değil) / aktarım içindir.

Kurum içi dahili veritabanının avantajı, herhangi bir aracıda kullanılabilir olması ve verilerle uzaktan ve strateji test cihazında rahatça çalışmanıza olanak sağlamasıdır.


Bir terminalde çalışan farklı MQL5 Uzman Danışmanları çerçevesinde, aynı veritabanını paylaşabilirsiniz.

 
Renat Fatkhullin:

SQLite sunucu taraflı bir veritabanı değil, gömülü bir veritabanıdır. Bu nedenle farklı süreçlerden paylaşım ve eş zamanlı kullanım sağlayamaz.

Aynı terminalde çalışan farklı uzmanlar içinde aynı veritabanını paylaşabilirsiniz.

Şimdi anlıyorum, teşekkür ederim.

 

µl5 için anlatılanları µl4'te kullanmak mümkün mü?

Fonksiyonlar ve kütüphane işlemleri uyumlu mu yoksa sadece µl5 için mi?

 
Chiripaha:

µl5 için anlatılanları µl4'te kullanmak mümkün mü?

Fonksiyonlar ve kütüphane işlemleri uyumlu mu? Yoksa sadece µl5 için mi?

Yerel SQLite desteği yalnızca MetaTrader 5 ve MQL5'tedir.

Bu bir kütüphane değil, strateji test aracıları da dahil olmak üzere tüm sisteme derin entegrasyona sahip standart bir MQL5 işlevidir.