MQL4/MQL5'te numaralandırma ve öğe uzunluğu nasıl elde edilir? - sayfa 2

 
Alain Verleyen :
Uzunluk asla bilinmez ve bu konu sadece kötü bir tasarımdan kaynaklanmaktadır.
Bu gereksinim bir AutoTester projesinden gelir.
Birçok Göstergede/EA'da, giriş parametreleri özel numaralandırma içerir, numaralandırmada hangi öğeyi (ve göreli değeri) bulmamız gerekir.
Bu yüzden "kötü tasarım" demeyin. falan... falan...
 
Xiangdong Guo :
Bu gereksinim bir AutoTester projesinden gelir.
Birçok Göstergede/EA'da, giriş parametreleri özel numaralandırma içerir, numaralandırmada hangi öğeyi (ve göreli değeri) bulmamız gerekir.
Bu yüzden "kötü tasarım" demeyin. falan... falan...
Elbette kötü bir tasarım. Ama benim için sorun değil.
 
Marco vd Heijden :
"Enum uzunluğu" ne demek?
 enum fruit
  {
   APPLE= 0 , //APPLE
   BANANA= 1 , //BANANA
   GRAPE= 2 , //GRAPE
   ORANGE= 3 , //ORANGE
   CARROT= 4 , //CARROT
  };
  
sinput fruit type; //PICK A FRUIT 

Belki havuç bir meyve değildir... hala Xiangdong Guo'nun 'enum uzunluğu' ile ne demek istediğini anlamıyorum.

Her seçenek dize adından gelen harf sayısı?

Kaç seçenek mümkün?

Seçeneğin sayısal değeri?

Sadece kötü tasarım değil, aynı zamanda ne demek istediği konusunda da çok net değil.

 
Marco vd Heijden :
Değerlerin sayısı, yani meyve örneğinde 5.
 
Alain Verleyen :
Değerlerin sayısı, yani meyve örneğinde 5.

Statik olduğuna katılıyorum, değişken olamaz, bu nedenle başlangıçta her zaman bilinen bir sabit değer olacaktır.

Ancak eğer Xiangdong Guo kendisinin tasarlamadığı veya yazmadığı göstergeleri test ediyor ve giriş parametrelerini otomatik olarak bilmek veya algılamak istiyor...

Kullanılabilir seçeneklerin sayısını bilmenin nasıl yardımcı olabileceğinden emin değil, belki de mevcut tüm seçenekleri çapraz test etmek istiyor ve yalnızca çalıştırılacak testlerin sayısını mı arıyor?

Oluşturacağı mevcut seçeneklerin sınırlarının dışına dönüştürmeye çalıştığınızda, bu değerleri çözmek için varsayılan seçenekleri tarardım, var olmadığı için enum hatasını dönüştüremez.

 
Marco vd Heijden :

MT4/MT5, öğeyi numaralandırmadan almak için C++/C# işlevini kullanır. Ancak MetaQuotes, bu işlevleri MQL4/MQL5'e taşımaz. Hımm...hımm...

 enum DURATION_INTERVALS   // Enumeration of named constants
   {
    month= 1 ,     // Interval of one month
    two_months,   // Two months
    quarter,     // Three months - quarter
    halfyear= 6 ,   // Half a year
    year= 12 ,     // Year - 12 months
   };

input DURATION_INTERVALS HistoryDuration = month;

 
Xiangdong Guo :

MT4/MT5, öğeyi numaralandırmadan almak için C++/C# işlevini kullanır. Ancak MetaQuotes, bu işlevleri MQL4/MQL5'e taşımaz. Hım...hım...

Hangi işlev ? Sorun nedir ? Neden enum öğeleri arasında dolaşmak istiyorsunuz?
 
Alain Verleyen :
Hangi işlev? Sorun nedir ? Neden enum öğeleri arasında dolaşmak istiyorsunuz?

Birisi MQL ile mümkün olmayan bir şeyi yapmak isterse/yapmaya ihtiyaç duyarsa, bu mutlaka "kötü tasarım" anlamına gelmez.

Konu başlatıcıya: MQL'nin mevcut sürümünde istediğinizi yapmanız mümkün değil.

Tek yol, tüm öğeleri bir diziye kopyalamak ve bu diziyi kullanarak döngünüzü yapmaktır. Ancak, yalnızca kodu değiştirebildiğiniz zaman/yapabilirseniz yapılabilir.

 
Andrey Barinov :

Birinin MQL ile mümkün olmayan bir şeyi yapması/yapması gerekiyorsa, bu mutlaka "kötü tasarım" anlamına gelmez.

Konu başlatıcıya: MQL'nin mevcut sürümünde istediğinizi yapmanız mümkün değil.

Tek yol, tüm öğeleri bir diziye kopyalamak ve bu diziyi kullanarak döngünüzü yapmaktır. Ancak, yalnızca kodu değiştirebildiğiniz zaman/yapabilirseniz yapılabilir.

Dizi yerine numaralandırma kullanmak kötü bir tasarımdır. değil mi?

 
Alain Verleyen :

Dizi yerine numaralandırma kullanmak kötü bir tasarımdır. değil mi?

Hayır, enum yerine dizi kullanmak kötü bir tasarımdır.

Örnek: Bir dize değeriniz olduğunu düşünün. Ve görev, bu dizgenin eşit olup olmadığını/içinde enum öğeleri adlarından birini (EnumToString()) içerip içermediğini bulmaktır.

Bunu nasıl çözersiniz?