Bir moderatör yanlış yapıştırılan kodu biçimlendirdi. Genellikle bu tür kodlar kaldırılır.
StanislavKorotky Lütfen bu hatayı incelemeye yardımcı olabilir misiniz, MT5 güncellemelerinden sonra başladığına inanıyorum çünkü kodun önceki aylarda herhangi bir değişiklik yapılmadan çalıştığını biliyordum.
parametre dönüştürme türü 'long[][2]' to 'string[][] &' is not allowed SymbolFilter.mqh 199 20
Aşağıdaki kodun sorunu tekrarlamaya yardımcı olacağından şüpheleniyorum:
void printSymbols() { SymbolFilter f; // filtre nesnesi string symbols[]; // isimler için dizi long permissions[][2]; // veri için dizi (özellik değerleri) // istenen sembol özelliklerinin listesi ENUM_SYMBOL_INFO_INTEGER modes[] = { SYMBOL_TRADE_MODE, SYMBOL_ORDER_MODE }; // filtreyi uygulayın, sonuçları içeren dizileri alın f.let(SYMBOL_VISIBLE, true).select(true, modes, symbols, permissions); const int n = ArraySize(symbols); PrintFormat("===== Trade permissions for the symbols (%d) ===== ", n); for(int i = 0; i < n; ++i) { Print(symbols[i] + ":"); for(int j = 0; j < ArraySize(modes); ++j) { // bit ve sayı açıklamalarını "olduğu gibi" göster PrintFormat(" %s (%d)", SymbolMonitor::stringify(permissions[i][j], modes[j]), permissions[i][j]); } } }
parametre dönüştürme türü 'long[][2]' to 'string[][] &' is not allowed SymbolFilter.mqh 199 20
Aşağıdaki kodun sorunu tekrarlamaya yardımcı olacağından şüpheleniyorum:
Lütfen satırları bulun:
// bu aşırı yüke ihtiyacımız var çünkü yerleşik ArraySort // dizgi dizilerini desteklemez void ArraySort(string &s[][]) const { QuickSortTm<string> qt(s); }
başlık dosyalarında SymbolFilter.mqh ve TradeFilter.mqh dosyalarını açın ve yanlarına aşağıdaki yöntem aşırı yükünü ekleyin:
// bu aşırı yüke ihtiyacımız var çünkü yerleşik ArraySort // dizgi dizilerini desteklemez void ArraySort(string &s[][]) const { QuickSortTm<string> qt(s); } template<typename T> void ArraySort(T &s[][]) const { ::ArraySort(s); }NOT. Bu soru makale ile ilgisiz görünüyor.
Lütfen satırları bulun:
başlık dosyalarında SymbolFilter.mqh ve TradeFilter.mqh ve yanlarına aşağıdaki yöntem aşırı yükünü ekleyin:
PS. Bu soru makale ile ilgisiz görünüyor.Hızlı yanıtınız için teşekkür ederim, güncellemeyi yaptıktan sonra daha fazla hata aldım:
parameter convertion type 'double[][2]' to 'string[][] &' is not allowed TradeFilter.mqh 338 20 cannot convert parameter 'double[][2]' to 'OrderMonitor&[][]' TradeFilter.mqh 338 20 parameter convertion type 'double[][2]' to 'string[][] &' is not allowed TradeFilter.mqh 338 20 cannot convert parameter 'double[][2]' to 'PositionMonitor&[][]' TradeFilter.mqh 338 20 parameter convertion type 'long[][2]' to 'string[][] &' is not allowed TradeFilter.mqh 163 17 cannot convert parameter 'long[][2]' to 'OrderMonitor&[][]' TradeFilter.mqh 163 17 parameter convertion type 'long[][2]' to 'string[][] &' is not allowed TradeFilter.mqh 163 17 cannot convert parameter 'long[][2]' to 'PositionMonitor&[][]' TradeFilter.mqh 163 17 etc..
ArraySort yerine genel QuickSortTm'yi doğrudan çağırmanın sorunu geçici olarak düzelttiğini fark ettim, ancak bunun en uygun çözüm olduğuna inanmıyorum
QuickSortTm<V> qt(array);
//ArraySort(dizi);
Bu garip, yukarıda önerilen düzeltmeden sonra /MQL5/Scripts/MQL5Book/p6/SymbolFilterTradeMode.mq5 komut dosyasını derleme 5346'da başarıyla derledim ve çalıştırdım. Kaynak kodunuzu göstermemişsiniz.
Sürüm 5 yapı 5327
üzerinde çalışıyorum
void printActiveOrders() { OrderFilter filter; ENUM_ORDER_PROPERTY_DOUBLE properties[] = {ORDER_VOLUME_INITIAL, ORDER_PRICE_OPEN, ORDER_SL, ORDER_TP}; double d[][4]; ENUM_ORDER_TYPE types[]; ulong tickets[], magics[]; string symbols[], comments[]; filter.select(properties, tickets, d); filter.select(ORDER_SYMBOL, tickets, symbols); filter.select(ORDER_COMMENT, tickets, comments); filter.select(ORDER_TYPE, tickets, types); filter.select(ORDER_MAGIC, tickets, magics); Print("Orders .................. ", ArraySize(tickets)); for (int i=0; i < ArraySize(tickets); i++) { Print(tickets[i], "\t", magics[i], "\t", symbols[i], "\t", EnumToString(types[i]), " \t", NormalizeDouble(d[i][0],3), "\t", d[i][1], " \t ", d[i][2], " \t", d[i][3], "\t", comments[i]); } } void printPositions() { PositionFilter filter; ENUM_POSITION_PROPERTY_DOUBLE properties[] = {POSITION_PRICE_OPEN, POSITION_VOLUME, POSITION_SL, POSITION_TP, POSITION_PROFIT, POSITION_SWAP}; ENUM_POSITION_TYPE types[]; double d[][6]; ulong tickets[], extIds[]; string symbols[], comments[]; filter.let(POSITION_MAGIC, sets.MagicNumber).select(properties, tickets, d); filter.select(POSITION_SYMBOL, tickets, symbols); filter.select(POSITION_COMMENT, tickets, comments); filter.select(POSITION_TYPE, tickets, types); filter.select(POSITION_IDENTIFIER, tickets, extIds); Print("Tickets\t Parent Id\tSymbols \t Trade Type \t\t\t\t\t\tEntry \t Lots \t\t SL \t\t\t TP \t\t\t\t Profit \tSwat \t\tComments"); for ( int i =0; i < ArraySize(tickets); i++) { Print(tickets[i], "\t", extIds[i] == 0 ? "\t\t\t\t\t\t\t\t\t" : (string)extIds[i], "\t", symbols[i], "\t", EnumToString(types[i]), " \t", (string)NormalizeDouble(d[i][0],3), "\t", d[i][1], " \t ", d[i][2], " \t", d[i][3], " \t", d[i][4], " \t ", d[i][5], "\t", comments[i]); //Print(tickets[i], "\t", extIds[i] == 0 ? "\t\t\t\t\t\t\t\t\t" : extIds[i], "\t", symbols[i], "\t", EnumToString(types[i]), " \t", NormalizeDouble(d[i][0],3), "\t", d[i][1], " \t ", d[i][2], " \t", d[i][3], " \t", d[i][4], " \t ", d[i][5]); } }
Yan tarafta sık sık şu mesajları görüyorum:
This single line message always shows whenever I attach my EA to a chart: Unresolved int value as enum: 8 for MonitorInterface<ENUM_POSITION_PROPERTY_INTEGER,ENUM_POSITION_PROPERTY_DOUBLE,ENUM_POSITION_PROPERTY_STRING>::TradeState While these ones below shows when it is detached 2025.10.17 19:30:01.347 Deriv Trader (Volatility 10 (1 s) Index.0,M15) 8 leaked strings left 2025.10.17 19:30:01.347 Deriv Trader (Volatility 10 (1 s) Index.0,M15) 2 undeleted dynamic objects found: 2025.10.17 19:30:01.347 Deriv Trader (Volatility 10 (1 s) Index.0,M15) 1 object of class 'WebSocketConnectionHybi' 2025.10.17 19:30:01.347 Deriv Trader (Volatility 10 (1 s) Index.0,M15) 1 object of class 'MqlWebSocketTransport' 2025.10.17 19:30:01.347 Deriv Trader (Volatility 10 (1 s) Index.0,M15) 576 bytes of leaked memory found
Kaynağımı atladığım için beni affedin, bu yüzden önerdiğiniz düzeltmeye geri döndüm, böylece hataları tekrar alabiliyorum ve günlüğe göre kodumun bu kısımları hataya yol açan kısımlar gibi görünüyor
Yan tarafta, sık sık şu mesajları görüyorum:
T harfinin zaten sınıf şablonu typename'i olarak kullanıldığını gözden kaçırmışım (derleyicinin bu durumda bir hata üretmemesi garip), bu nedenle T'yi başka bir serbest harfle değiştirmek sorun olmayacaktır, örneğin X:
template<typename X> void ArraySort(X &s[][]) const { ::ArraySort(s); }
İlk uyarıya gelince, işte forumlardan bir açıklama (size daha önce verdiğim):
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi üzerine forum
Uzmanlar: Yatırımcılar için MQL5 Programlama - Kitaptan Kaynak Kodlar. Bölüm 7
Stanislav Korotky, 2025.06.14 16:26
Bu sadece MQL5'in ilgili yerleşik numaralandırmasının normalde ardışık olarak atanan sabitlerde bir boşluğa sahip olmasından kaynaklanan bir uyarıdır. Bu boşluk, MQL5 sürekli değiştiği ve bazı sabitler eskimiş olabileceği ve daha sonra ortadan kaldırılabileceği için meydana gelir. Bu tür uyarıları önlemek için kaynak kodunu düzenleyebilirsiniz.
Ve sızan bellek hakkında - korkarım özel kaynak kodunuzda bir eksiklik var, kitap böyle şeyleri göstermedi. Sorunu yeniden üretmek için eksiksiz bir test kodu sağlamalısınız.
NOT. İlgilendiğiniz tüm özellikler için tek bir seçim çalıştırmak daha verimlidir:
// ÖRNEK: pozisyonlar için kar, sembol, bilet talep edin // belirli sihirli sayıya göre, kâra göre sıralanmış #include <MQL5Book/Tuples.mqh> #include <MQL5Book/PositionFilter.mqh> #property script_show_inputs input ulong Magic; void OnStart() { int props[] = {POSITION_PROFIT, POSITION_SYMBOL, POSITION_TICKET}; Tuple3<double,string,ulong> tuples[]; PositionFilter filter; filter.let(POSITION_MAGIC, Magic).select(props, tuples, true); ArrayPrint(tuples); }
Not: Moderatörlerin kitapla ilgili tüm soru ve cevapları (#41'den başlayarak) uygun başlığa taşıması gerektiğini düşünüyorum, örneğin burada - https://www.mql5.com/en/forum/459067.
- 2023.12.15
- www.mql5.com
T harfinin zaten sınıf şablonu typename'i olarak kullanıldığını gözden kaçırdım (derleyicinin bu durumda bir hata üretmemesi garip), bu nedenle T'yi başka bir serbest harfle değiştirmek sorun olmayacaktır, örneğin X:
İlk uyarıya gelince, işte forumlardan bir açıklama (size daha önce vermiştim):
Ve sızan bellek hakkında - korkarım özel kaynak kodunuzda bir eksiklik var, kitap böyle şeyleri göstermedi. Sorunu yeniden oluşturmak için eksiksiz bir test kodu sağlamalısınız.
NOT. İlgilendiğiniz tüm mülkler için tek bir seçim yapmak daha etkilidir:
Not: Bence moderatörler kitapla ilgili tüm soru ve cevapları (#41'den başlayarak) uygun başlığa, örneğin buraya - https://www.mql5.com/en/forum/459067taşımalıdır.
Sızıntı konusunda haklı olduğuna inanıyorum, sanırım nereden geldiğine dair bir fikrim var.
Çok teşekkür ederim kardeşim.
void printActiveOrders() { int properties[] = {ORDER_VOLUME_INITIAL, ORDER_PRICE_OPEN, ORDER_SL, ORDER_TP, ORDER_TICKET, ORDER_MAGIC, ORDER_TYPE, ORDER_SYMBOL, ORDER_COMMENT}; Tuple9<double,double,double,double,long,long,long,string,string> values[]; OrderFilter filter; filter.select(properties, values); Print("\nFound: ", ArraySize(values), " Orders\n{ORDER_VOLUME_INITIAL, ORDER_PRICE_OPEN, ORDER_SL, ORDER_TP, ORDER_TICKET, ORDER_MAGIC, ORDER_TYPE, ORDER_SYMBOL, ORDER_COMMENT}"); ArrayPrint(values); } void printDeals() { DealFilter filter; int properties[] = {DEAL_TIME, DEAL_SYMBOL, DEAL_TICKET, DEAL_TYPE, DEAL_VOLUME, DEAL_PRICE, DEAL_COMMISSION, DEAL_PROFIT}; Tuple8<long,string,long,long,double,double,double,double> data[]; filter.select(properties, data, true); // Zamana göre filtrele Print("\nFound: ", ArraySize(data), " Deals\nTIME, SYMBOL, TICKET, TYPE, VOLUME, PRICE, COMMISSION, PROFIT"); ArrayPrint(data); }
@StanislavKorotky
Fırsatlara ve Siparişlere ve bu kodla erişebiliyorum, ancak belirli bir zaman dilimi için aynı şeye nasıl erişeceğimi bulamadım. Lütfen belirli bir zaman dilimi için aynı şeyi nasıl yapacağıma dair herhangi bir belge veya örnek konusunda bana rehberlik edebilir misiniz?
Fırsatlara ve Siparişlere ve bu kodla erişebiliyorum, ancak belirli bir zaman dilimi için aynı şeye nasıl erişeceğimi bulamadım. Lütfen belirli bir zaman dilimi için aynı şeyi nasıl yapacağıma dair herhangi bir belge veya örnek konusunda bana rehberlik edebilir misiniz?
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Yatırımcılar için MQL5 Programlama - Kitaptan kaynak kodları. Bölüm 6:
“Yatırımcılar için MQL5 Programlama” kitabının 6. bölümünde, MQL5 dilinin önemli bir bileşeni olan ticaret otomasyonu hakkında konuşacağız. Finansal enstrüman özellikleri ve işlem hesabı ayarları gibi temel unsurların açıklamasıyla başlayacağız. Bunlar, düzgün çalışan Uzman Danışmanlar oluşturmak için ön koşullardır.
Yazar: MetaQuotes