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

 
Bana metindeki tüm değerleri nasıl özetleyeceğimi söyle?
 void Hmin(){ datetime    h = iBars ( NULL , PERIOD_H1 ); 
       ObjectCreate ( 0 , "Hmin" +h, OBJ_TEXT , 1 , TimeCurrent (), 0 );     
       double Hmin=ObjectDescription( "Hmin" +h);     
       ObjectSetText( "Hmin" +h, MathMin (Hmin,AccountEquity()-AccountBalance()), 15 , "Arial" , clrWhite );
       ObjectSetInteger ( 0 , "Hmin" +h, OBJPROP_ANCHOR , ANCHOR_RIGHT );  
           }
Bu kod yalnızca onları oluşturur
 
Дмитрий :

Merhaba, lütfen anlamama yardım edin...

MathMax işlevi , maksimum iki sayısal değer döndürür, yani. -1 ve -2 çubuk farkıyla high[rates_total] iki özdeş diziden maksimum sayısal değeri döndürdüğü ortaya çıktı?

Basit bir deyişle: ilk dizi 12345 ve ikinci 1234 dizisinde, fonksiyon 5?

Numara. İşlev 12345 döndürür

 
Дмитрий :

Merhaba, lütfen anlamama yardım edin...

MathMax işlevi , maksimum iki sayısal değer döndürür, yani. -1 ve -2 çubuk farkıyla high[rates_total] iki özdeş diziden maksimum sayısal değeri döndürdüğü ortaya çıktı?

Basit bir deyişle: ilk dizi 12345 ve ikinci 1234 dizisinde, fonksiyon 5?

high[rates_total-1] ve high[rates_total-2]'de bulunan iki değerin maksimum değeri döndürülür.

Yüksek[oran_toplam-1] 12345 ve yüksek[oran_toplam-2] 1234 ise, ikisinden hangisi daha büyüktür?

12345, büyüklük sırasına göre 1234'ten açıkça daha büyüktür. Yüksek[rates_total-1] değerinden 12345 döndürür

 
Artyom Trishkin :

high[rates_total-1] ve high[rates_total-2]'de bulunan iki değerin maksimum değeri döndürülür.

Yüksek[oran_toplam-1] 12345 ve yüksek[oran_toplam-2] 1234 ise, ikisinden hangisi daha büyüktür?

12345, büyüklük sırasına göre 1234'ten açıkça daha büyüktür. Yüksek[rates_total-1] değerinden 12345 döndürür

Teşekkür ederim... ama burada yüksek[rates_total-1] zaten yüksek[rates_total-2]'den bir bar daha yüksekse, hattın rasyonelliği ile ilgili soru ortaya çıkıyor.

Yoksa burada farklı bir anlam mı var?

Teşekkür ederim.

 
Дмитрий :

Teşekkür ederim... ama burada yüksek[rates_total-1] zaten yüksek[rates_total-2]'den bir bar daha yüksekse, hattın rasyonelliği ile ilgili soru ortaya çıkıyor.

Yoksa burada farklı bir anlam mı var?

Teşekkür ederim.

Barlar ne durumda?

Aynı dizinin iki çubuğunda bulunan Yüksek değerleri karşılaştırıyorsunuz. Rate_total-1 ve Rate_total-2 hangi iki çubuğu karşılaştırdığınızı gösterir.

İndeks değerlerini değil, Rate_total-1 ve Rate_total-2 indekslerinin yer aldığı çubukların Yüksek değerlerini karşılaştırıyorsunuz.

Düşündüğünüz şey şöyle görünecek: MathMax (rates_total-1, Rates_total-2) - burası, oranların_toplam-1'in her zaman döndürüleceği yerdir.

 
Rustam Bikbulatov :
Bana metindeki tüm değerleri nasıl özetleyeceğimi söyle? Bu kod yalnızca oluşturur

Bakiye eksi öz sermaye almak istiyor musunuz? detaylı yaz

 
Artyom Trishkin :

Barlar ne durumda?

Üzerindeki Yüksek değerleri karşılaştırıyorsunuz...

açıklama için teşekkürler)
 

Hepinize iyi günler!

MT4'te ALL TIKS modelinde, dakika mumlarında danışmanı test ediyorum. Benim görevim, programın kod yürütmeye mümkün olduğunca az zaman harcamasını sağlamak. Ama beni ne şaşırttı!

Bu kod ile program her tiki kontrol eder ve kodu çalıştırmak için 6 saniye harcar. 375 milisaniye

 void OnTick ()
{
Tick++;
if (Tick!=x3)
{
Print ( "---------------------КАЖДЫЙ ТИК ----------Tick-----=" ,Tick);
x3=Tick;
}
}

Bu kodla, programın her onay işaretini değil, her dakika mumunun yalnızca ilk işaretini kontrol etmesi ve kod yürütmeye çok daha az zaman harcaması gerektiği gibi geldi.

void OnTick ()
{
Tick++;

if (Minute()!=x3) //&&Seconds()==0

{
Print ( "---------------------КАЖДЫЙ ТИК ----------Tick-----=" ,Tick, "  Bid  " ,   Bid, "  LoY  " ,   LoY);
x3=Minute();
}
}



Ancak program 6 saniye sürdü. 219 milisaniye. Bundan, kodun programa parantez içindeki ifadeyi 60 saniyede yalnızca 1 kez kontrol etmesini söylemesine rağmen, programın hala bu ifadeyi neredeyse her onay işaretini kontrol ettiği ve yürütme için neredeyse önceki kod kadar zaman harcadığı sonucuna vardım.
Daha sonra modeli AÇILIŞ FİYATINDA olarak değiştirip ikinci seçeneği çalıştırdım. Ama program aynı şeyi yürütmek için zaman harcadı   6 saniye 219 milisaniye.  


SORU . Kodu yürütmek için ÇOK daha az zaman harcamak için MT4 programını ALL TICKS modelinde, dakika mumlarında, her onay işaretini değil, yalnızca yeni bir dakika mumunun ilk işaretini kontrol etmeye zorlamak mümkün mü? Mümkünse, hangi işlevin veya dil yapısının yardımıyla?
Teşekkür ederim.

 
datetime current, last;

void OnTick()
   {
   current=iTime(symbol,frame,0);
   if(last==current) return;
   last=current;

   } 
 
Aleksei Stepanenko :

Kodumu sizin kodunuzla eşleşecek şekilde değiştirdim

 datetime current, last;
void OnTick ()
{
Tick++;
current= iTime ( NULL , 0 , 0 );
if (last==current) return ;
last=current;
{
Print ( "---------------------КАЖДЫЙ ТИК ----------Tick-----=" ,Tick);
}
}


Programın kodu yürütmek için harcadığı süre .... 6 , 235 , yani benim kodumdan (6.375) daha az, ancak bazen değil
Ve bana öyle geliyor ki, birçok kez daha az olmalı, çünkü program her dakika mumunun açılışının başlangıcında kene değerini sadece 1 kez kontrol etmelidir.

Hangimiz yanıldık ..... bana öyle geliyor.