Fan sayfamıza katılın
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
- Yayınlayan:
- Michael Schoen
- Görüntülemeler:
- 24
- Derecelendirme:
- Yayınlandı:
-
Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git
Tesadüfen MQL5 ile karşılaştım ve bir MySQL kütüphanesini bir araya getirmek zorunda kaldım. Her kütüphane için olduğu gibi umarım örnekler kütüphanenin nasıl kullanılabileceğini gösterir. Her kütüphanede olduğu gibi aslında en önemli şeyler nasıl kullanılacağına dair örneklerdir ;)
Örnekler:
Veri Okuma
#include <EAX\EAX_Mysql.mqh> EAX_Mysql *db = new EAX_Mysql(); db.connect("myhost.mydomain.com", "myusername", "mypassword", "mydatabase", "mytable"); int iResults = db.read_rows("SELECT password, COUNT(*) as Hits FROM users GROUP BY password"); for (int i=0; i < iResults; i++) { string password = (string) db.get("password",i); int hits = (int) db.get("Hits", i); }
Besleme Verileri
#include <EAX\EAX_Mysql.mqh> // küresel EAX_Mysql *db = new EAX_Mysql(); void OnInit() { db.connect("myhost.mydomain.com", "myusername", "mypassword", "metatrader", "Ticks"; } void OnTick() { MqlTick tick; SymbolInfoTick(_Symbol,tick); // Ticks tablosu için yeni bir veri kümesi ekleyin db.AddNew("Ticks"); // değerlerle doldurun.. db.set("symbol", _Symbol); // MySQL dönüştürme yapabiliyorsa rakamları rakam DB alanlarına gönderebilirsiniz db.set("ask", tick.ask); db.set("bid", tick.bid); db.set("last", tick.last); db.set("time", TimeToString(tick.time,TIME_DATE) + " " + TimeToString(tick.time,TIME_SECONDS)); db.set("volume", tick.volume); db.write(); } void OnDeinit() { // belleği temizle delete db; }
Verilerle Etkileşim
EAX_Mysql *db = new EAX_Mysql(); db.connect("myhost.mydomain.com", "myusername", "mypassword", "metatrader", "mytable") // Select Table AgentsOnline (doğru Birincil Anahtarı tanımlamak için gereklidir) db.select("AgentsOnline"); // Veri Kümesini Birincil Anahtar ile Oku 5 db.read("5"); // herhangi bir sütunu değiştirin, db.set("lastupdate", (string) TimeLocal()); // geri yaz db.write();
Yükleme:
- MQL5 Veri Dizininizi (MQL5) tanımlayın.
- MetaTrader ortamınız (32 veya 64bit) için Connector/C'yi (libmysql ) indirin ve libymsql.dll dosyasını "MQL5\Libraries" içine yerleştirin.
- Include altında bir EAX klasörü oluşturun.
- EAX_Mysql.mqh dosyasını "MQL5\Include\EAX" içine koyun.
Sorunlar:
- Dahili olarak paylaşılan bir bağlantı işaretçisi kullandığından, kütüphane aynı anda birden fazla DB bağlantısını işleyemez (bir bağlantı havuzu eklemeye / taşımaya ihtiyacım yoktu).
- Gerçek hata (mysql) işleme yok, db bağlantısı düşüyor.
- DB'ye hata işleme / yeniden bağlanma yok (=> db havuzlama).
- çoklu sütun birincil anahtarları için destek yok.
- hala beta - beta / test etmek istiyorsanız lütfen bana bir e-posta bırakın.
- DataTypes işlenmez (dahili olarak sadece stringler) kod/veritabanı üzerinde olmalıdır.
- Veritabanı iletişimi ISO'dur - UTF-8 için işaretçi / dize aritmetiğini ayarlamak için çok tembel.
Krediler:
- http://mqlmagazine.com/mql-programming/mql5-connecting-to-mysql/
- https://www.mql5.com/tr/articles/364
MetaQuotes Ltd tarafından İngilizceden çevrilmiştir.
Orijinal kod: https://www.mql5.com/en/code/855
ExtObjects
Nesne özelliklerini okumak ve yazmak için özel fonksiyonlar.
Candle ZigZag
Mum ZigZag, bir mum çubuğunun rengi değiştiğinde bacağını değiştiren bir göstergedir
Geo_ShowOpenDayLevel
Herhangi bir TF'de günün açılış seviyesini gösteren gösterge
iMy
Grafiksel gösterimde, techanalysis, arıza üzerindeki mumların sağındaki trend çizgisini temsil eder (yeşil renkte). Arızadan sonra, kırmızı çizgi boyunca hareket varsayılır.