"MQL5 Cookbook: Hızlı Veri Erişimi için İlişkisel Dizi veya Sözlük Uygulama" makalesi için tartışma - sayfa 3
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Bu sınıfı EA'mda (StrategyGUID, Strategy) formundaki stratejilerin bir konteyneri olarak kullanmaya karar verdim, burada StrategyGUID ulong tipinde bir tanımlayıcıdır; Strateji, CObject'ten miras alınan bir sınıf temelinde oluşturulan bir stratejidir.
Buna göre, aktif stratejiler kitabı olan CDictionary StrategyBook dahil olmak üzere gerekli değişkenleri beyan ediyorum; EA'nın OnInit () işlevinde kendilerine benzersiz GUID'ler atamak da dahil olmak üzere çeşitli parametreleri başlatan gerekli Strategy01, Strategy02 stratejilerini oluşturuyorum. OnInit () işlevinin en sonunda, kodu çağırarak stratejileri StrategyBook'a kaydetmeye karar veriyorum
StrategyBook.AddObject(Strategy01.strGUID,Strategy01);
StrategyBook.AddObject(Strategy02.strGUID,Strategy02);
Ve sonra her iki satırda da "StrategyXX - parametre dönüşümüne izin verilmiyor" hatasını alıyorum.
C# ile olan deneyimime dayanarak, her şey doğru şekilde yapıldı. Ancak MQL5'te bu hatayı alıyorum.
Ne ile ilgili olabilir?
Bu sınıfı EA'mda (StrategyGUID, Strategy) formundaki stratejilerin bir konteyneri olarak kullanmaya karar verdim, burada StrategyGUID ulong tipinde bir tanımlayıcıdır; Strateji, CObject'ten miras alınan bir sınıf temelinde oluşturulan bir stratejidir.
Buna göre, aktif stratejiler kitabı olan CDictionary StrategyBook dahil olmak üzere gerekli değişkenleri beyan ediyorum; EA'nın OnInit () işlevinde kendilerine benzersiz GUID'ler atamak da dahil olmak üzere çeşitli parametreleri başlatan gerekli Strategy01, Strategy02 stratejilerini oluşturuyorum. OnInit () işlevinin en sonunda, kodu çağırarak stratejileri StrategyBook'a kaydetmeye karar veriyorum
StrategyBook.AddObject(Strategy01.strGUID,Strategy01);
StrategyBook.AddObject(Strategy02.strGUID,Strategy02);
Ve sonra her iki satırda da "StrategyXX - parametre dönüşümüne izin verilmiyor" hatasını alıyorum.
C# ile olan deneyimime dayanarak, her şey doğru şekilde yapıldı. Ancak MQL5'te bu hatayı alıyorum.
Bu ne ile ilgili olabilir?
Birkaç nedeni olabilir. Büyük olasılıkla, ya tür uyumsuzluğu ya da işaretçilerle yanlış çalışma. Ayrıca, şablon yöntemlerle çalışmanın özelliklerini de göz ardı edemeyiz (bunların da kendi nüansları vardır).
Genel olarak, hazır bir ticaret motoru kullanmak daha iyidir, çok fazla zaman ve sinir tasarrufu sağlarsınız: https://www.mql5.com/tr/articles/2166.
Evet, sonunda yapmaya karar verdiğim şey buydu.
Yeni makale MQL5 Yemek Kitabı: Implementing an Associative Array or a Dictionary for Quick Data Access makalesi yayınlandı:
Yazar Vasiliy Sokolov
Tüm çabalarınız için teşekkürler, ancak kod örneklerinden hiçbirini çalıştıramıyorum.
Görünüşe göre Dictionary dict; CDictionary dict olmalı;
Basit bir çalışma örneğine ne dersiniz?
Yeni MT4 (Build 1080, 12 Mayıs 2017) ile ilgili olarak bu hatalar derleme sırasında ortaya çıkar ve yürütmeyi engeller:
'm_array' - nesne içeren yapılara izin verilmez Dictionary.mqh 303 25
Merhaba,
Daha önce başka bir kişi tarafından söylendiği gibi, derlenebilir bir örnek yoktur.
Sadece Rusça yorumlar içeren bir dosya.
Vasiliy'nin kütüphanesini minnetle ve başarıyla kullanıyorum. Gerçekten çok yardımcı oldu!
Ben de bazı derleyici hataları aldığımı ve bunları düzeltebildiğimi hatırlıyorum. Ancak, hangileri olduğunu ve ne yaptığımı gerçekten söyleyemem.
Ve MQL5 kodunun biçimlendirmesinden son derece rahatsız olduğum ve her şeyi her zaman modern bir C++ formatına göre yeniden biçimlendirdiğim için (uygun girintileme, gereksiz parantezlerden kaçınma, yorum karmaşası yok, vb), koddaki gerçek değişikliğin ne olduğunu söylemem imkansız. Tek hatırladığım, değişikliklerin küçük olduğu.
Düzgün biçimlendirilmiş kütüphaneyi kullanmak isterseniz, işte burada:
(Not, sekme kullanıyorum, bu yüzden biçimlendirme burada bozuk görünüyor, ancak MetaEditor'de değil!)
Sanırım bir öğeyi silerken ve son öğeye ulaşmaya çalışırken bir hata buldum:
CDictionary.mqh dosyasında hata oluşacaktır:
'Dictionary.mqh' içindegeçersiz işaretçi erişimi (463,9)
Bunu doğrulayabilecek biri var mı? Nasıl düzeltileceği hakkında fikri olan var mı?