MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1878
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
ENUM_TIMEFRAMES içinde minimum ve maksimum değerler bilinmektedir. Bu nedenle, açıkça belirtilebilirler.
Diğer numaralandırmalarla, yaklaşık değer aralıklarını bilmek yeterlidir. Enum bildiriminde herhangi bir sabit belirtilmemişse, buradaki değerler genellikle 0'dan başlar. i_max_enum herhangi bir iki basamaklı veya üç basamaklı sayıya ayarlanabilir: 50, 100, 255.
Minimum ve maksimum enum değerlerini de deneysel olarak alabilirsiniz. Bunları bir yere yazın ve en uygun hız için StringToEnum'da belirtin:
Komut dosyasının sonucu:
ENUM_ACCOUNT_INFO_DOUBLE dosyasını açın ve bakın. Sabitlerin sayısı Count(14) şeklindedir. Böylece uygulama başladığında, gerekli tüm numaralandırmaları işlemek, minimum ve maksimum değerlerini yazmak ve StringToEnum'da karşılık gelen min ve max'ı en optimum hızda kullanmak mümkündür.
Not INT_MIN ve INT_MAX ile ikinci seçenek enumFindMinMax gerçekten çok yavaştır. Önce denedim. Ve sonra enumFindMinMax'in tamamlanmasını beklemekten yoruldum ve -500 ile 500 arasında değerler koydum
Böylece, tüm int aralığını kullanmanın gerekli olmadığı sonucuna vardım.
Terminalin garip davranışıyla karşı karşıya kaldı.
Durum şudur: Bir Uzman Danışman, belirli bir anda başka bir çizelge açan ve yeni çizelgede belirli bir şablon belirleyen bir çizelge üzerinde çalışır. Bu şablon, yeni bir çizelgede ikinci Uzman Danışmanın lansmanını içerir.
Hafta ortasında her şey yolunda gidiyor, ancak kapalı bir piyasada, hafta sonları yeni bir grafikte yeni bir şablon başlatılıyor (bu, grafiğin görünümündeki değişiklikten görülebilir) ve ikinci Uzman Danışman bunu yapıyor. ondan başlamayın. İkinci Uzman Danışmanı "zorlamanın" tek yolu, herhangi bir komut dosyasını, tamamen boş olsa bile herhangi bir grafikte manuel olarak çalıştırmaktır. Ardından yeni çizelgedeki ikinci Uzman Danışman çalışmaya başlar.
Bu kodu ilk Expert Advisor'da ve ChartOpen ve ChartApplyTemplate fonksiyonlarının yardımıyla ve CChart sınıfının yardımıyla yazdım - her zaman aynı çıkıyor, kapalı bir piyasada yeni bir grafikte ikinci Expert Advisor başlamıyor terminali bir şekilde manuel olarak "itene kadar".
Kim benzerleriyle karşılaşabilir? Bununla nasıl başa çıkılır, hangi yönde "kazılır"?
Kim benzerleriyle karşılaşabilir? Bununla nasıl başa çıkılır, hangi yönde "kazılır"?
Başlamadığını nasıl belirlediniz, bu nasıl görülebilir?
not
böyle dene
Bir numaralandırma işlevi kullanarak ( #18697 ile aynı), EnumToString kullanarak çevirerek ve aradığınız ile karşılaştırarak bir sabiti bulabilirsiniz. Sadece sonucu döndürmek için kalır.
Ama yine de bir örneğiniz (veya en azından bir anahtar satırınız) olabilir mi, yoksa aklınıza bir şey gelmez mi? Ayrıca, soldakiler arasından ihtiyacınız olanları eleyerek büyük bir değerler listesi üzerinde yinelenecek mi, yoksa sadece yararlı değerlerin bir listesi mi var? Şu anda bana öyle geliyor ki, elenecek bir şey yok, listede solcu yok ... ama fikre tutunamıyorum.
Ama yine de bir örneğiniz (veya en azından bir anahtar satırınız) olabilir mi, yoksa aklınıza bir şey gelmez mi? Ayrıca, soldakiler arasından ihtiyacınız olanları eleyerek büyük bir değerler listesi üzerinde yinelenecek mi, yoksa sadece yararlı değerlerin bir listesi mi var? Şu anda bana öyle geliyor ki, elenecek bir şey yok, listede solcu yok ... ama fikre tutunamıyorum.
Mümkün olan tüm enum değerlerinin tekrar etmemesi için (gerçekten uzun olduğu için) aşağıdaki hazırlıklar yapılmalıdır #18771 (caching gibi bir şey). Ayrıca, bu işlevi #18763 kullanarak, bir dizgiyi/dizeleri, gerekli tüm numaralandırmaların aralıklarını bilerek bir numaralandırmaya kolayca dönüştürebilirsiniz. Veya nispeten dar olan #18768 aralığında numaralandırmayı arayın.
Başlamadığını nasıl belirlediniz, bu nasıl görülebilir?
not
böyle dene
OnInit bölümündeki ikinci Uzman Danışman, günlüğe sonuçlar çıkarır ve bunlar günlükte değildir. Günlükte Expert Advisor'ın başlamasıyla ilgili terminalden gelen bir mesaj bile yok. Ve uzmanın adı sağ üst köşedeki çizelgede görünmüyor.
Bunun için hangi işlev kullanılır? mqlrate? Ve eğer ObjectGet aracılığıyla, o zaman orada nesnenin özelliğini belirtmeliyim, eğer OBJPROP_PRICE alırsak, o zaman fiyatı mevcut çubuğa nasıl getireceğini.
Alın. Ve nesnenin belirli bir özelliğini elde etmek için bir nesneden bir çubuktaki fiyatı veya zamanı ada veya nesne türüne ve adına göre alma işlevi vardır. Bir çubuk numarası değil, sıfırdan bir ofset kullanılır.
Alın. Ve nesnenin belirli bir özelliğini elde etmek için bir nesneden bir çubuktaki fiyatı veya zamanı ada veya nesne türüne ve adına göre alma işlevi vardır. Bir çubuk numarası değil, sıfırdan bir ofset kullanılır.
Bunu ObjectGetValueByTime() işlevini kullanarak yapabilirsiniz.
Misal
Benim sorunum şu: Terminal\MQL4\Indicators klasöründeki göstergeler listesinde göstergeler var, ancak doğrudan MQL4 terminalinin kendi listesinde, bu göstergelerin çizelgeye sürüklendiği listede, aynı göstergeler orada değil. Bu göstergeler, terminal tablosunda kullanılabilecekleri şekilde terminalin kendi listelerinde görünecek şekilde nasıl yapılır? MQL4? Ekranın sağ tarafında , terminalde bulunan göstergeler bunlardır. MQL4 ve solundaki klasördeki aynı terminalin göstergeleridir. MQL4 4\Göstergeler (örnek olarak)
Bunların gösterge olmaması muhtemeldir.