MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 886

 
Sergey Voytsekhovsky :

Evet kesinlikle. buna dikkat etmedi. Ve daha iyi görünüyor, yine daha az harf var.

Ancak bir operatörün altına koymak imkansız ?: aynı anda üç infaz (nasıl söyleyeceğimi bilmiyorum)?

Yalnızca küme parantezleri - durumu sınırlandırırlar.

 
int a,b,c,d,e,f,g,j;
a= 10 ;
b= 5 ;
d= 3 ;
f= 4 ;
j= 1 ;
a>b?{c=d;e=f;g=j}:{c= 0 ;e= 0 ;g= 0 };
Print ( "c=" ,c, " e=" ,e, " g=" ,g);

Böyle bir yapı çizmeye çalıştım, derleyici bana kötü kokulu bir şey sıçrattı. Hata nerede?

 
Sergey Voytsekhovsky :

UURRAA ve ruh şarkı söyledi. Alexey, çok teşekkür ederim!

Her şey çalıştı, dizi olmadan nasıl ortaya çıktığını tam olarak anlamadım

açıklaması kaldırıldı. Yani burada fazladan bir dizi olmadan yapabilirsiniz?


 #property indicator_color3    clrGreen , clrRed

Bu dizi.

 
Sergey Voytsekhovsky :

Evet kesinlikle. buna dikkat etmedi. Ve daha iyi görünüyor, yine daha az harf var.

Ancak bir operatörün altına koymak imkansız ?: aynı anda üç infaz (nasıl söyleyeceğimi bilmiyorum)?

Yapabilir. İki kullanıcı tanımlı işlev oluşturun ve bunları çağırın.

 int m = 5 ; //0;//
m = m == 0 ? f1 : f2;

int f1()
 {
   return ( 1 );
 }
int f2()
 {
   return ( 2 );
 }
 
Konstantin Nikitin :

Evet yaklaşık aynı. İyi ki atlamışlar. Ana şey, neyin ne olduğunu anlamasıdır ...

Her şeyi anlıyorum, teşekkürler.
Sadece kafam karıştı. Hepsi benim için yeni

 
Alexey Viktorov :

Yapabilir. İki kullanıcı tanımlı işlev oluşturun ve bunları çağırın.

seni doğru mu anladım???

ColorHistogram_2Colors[i]=ExtMainBuffer[i]>= 50 ?ColorUp(i):ColorDown(i);
//+------------------------------------------------------------------+ 
int ColorUp( int i)
 {
   ColorHistogram_2Buffer1[i]= 50 ;
   ColorHistogram_2Buffer2[i]=ExtMainBuffer[i];
   return ( 0 );
 }
int ColorDown( int i)
 {
   ColorHistogram_2Buffer1[i]=ExtMainBuffer[i];
   ColorHistogram_2Buffer2[i]= 50 ;
   return ( 1 );
 }

Göstergede kayıtlı - işe yarıyor.

 
Sergey Voytsekhovsky :

seni doğru mu anladım???

Göstergede kayıtlı - işe yarıyor.

Çalışıyorsa doğrudur. Ama bunu bu şekilde yapmazdım.

İlk olarak, birinin =50 yazılacağı arabelleklerin değiştirilmesiyle garip davranmazdım. Herhangi bir koşul olmadan her zaman bir arada 50 yazmak yeterlidir.

Ve ikinci ara belleğe 50'den büyük veya küçük bir değer girin. Ardından, <=> koşulu altında geriye sadece bir renk atamak kalır. Ve ayrı işlevler yok.

 
Alexey Viktorov :

Çalışıyorsa doğrudur. Ama bunu bu şekilde yapmazdım.

İlk olarak, birinin =50 yazılacağı arabelleklerin değiştirilmesiyle garip davranmazdım. Herhangi bir koşul olmadan her zaman bir arada 50 yazmak yeterlidir.

Ve ikinci ara belleğe 50'den büyük veya küçük bir değer girin. Ardından, <=> koşulu altında geriye sadece bir renk atamak kalır. Ve ayrı işlevler yok.

<>50 koşulu yalnızca rengi tanımlasaydı size katılırdım, ancak bu aynı zamanda histogram mumunun başlangıcı/sonudur. Bu nedenle, tartışmayacağım, büyük olasılıkla haklı olmanıza rağmen kontrol etmeye çalışacağım.

 
Alexey Viktorov :

Çalışıyorsa doğrudur. Ama bunu bu şekilde yapmazdım.

Evet, gerçekten de, bir mum çubuğunun başlangıcını/sonunu tanımlayan iki DRAW_COLOR_HISTOGRAM2 tamponundan herhangi biri ya başlangıç ya da bitiş olabilir. Artık her şey çok daha kolay:

   ColorHistogram_2Buffer1[i]= 50 ;
   ColorHistogram_2Buffer2[i]=ExtMainBuffer[i];
   ColorHistogram_2Colors [i]=ExtMainBuffer[i]>= 50 ? 0 : 1 ;

Bilim için teşekkürler.

 

Modlar arasında geçiş yaparken INDICATOR_MAXIMUM ve INDICATOR_MINIMUM değerleri nasıl sıfırlanır?

Sonuç olarak, bir modda bu değerler kullanılır, ancak diğerinde kullanılmaz. Ve modu, bu yüksek ve alçakların gereksiz olduğu moda geçerken, bir nedenden dolayı kaydedilirler. Bu sorun hem MQL4 hem de MQL5'te mevcuttur.

Örneğin, gösterge ilk modda başlatıldığında, kenarlıklar gereksizdir ve her şey doğru çalışır.

İkinci modda, gösterge penceresinin maksimum ve minimum sınırları belirlenir. Ve birinci moddan ikinciye geçerken her şey doğru çalışıyor


Ancak zaten ikinci moddan birinciye geçerken (birinci modda sınırlar kullanılmaz), bu yüksekler ve düşükler kaydedilir ve kullanıcı göstergenin gerçek değerlerini göremez


Ekli dosyalarda MQL4 kodu

Kimse bu problemle karşılaştı mı? Bunun nasıl çözüleceği hakkında bir fikri olan var mı?

Dosyalar:
test.mq4  4 kb