[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 524

 

Güzel gün! Söyle bana, neden test cihazında hiçbir şekilde ok çizemiyorum? Misal

 bool napravlenieCCI=false;
 if ( CCI_50S< 100 &&CCI_50> 100 ||CCI_50S< 0 &&CCI_50> 0 || CCI_50S<- 100 &&CCI_50>- 100   )napravlenieCCI=true;
   if (napravlenieCCI){   string strela = DoubleToStr (Time[ 0 ], 0 ); 
   ObjectCreate (strela, OBJ_ARROW , 0 , iTime ( NULL , 0 , 0 ), iHigh ( NULL , 0 , 0 )+ 0.0004 ); 
   ObjectSet (strela, OBJPROP_ARROWCODE , 242 );
ObjectSet (strela, OBJPROP_COLOR , Red );}
oku göremiyorum.
 

Merhaba Viktor İvanoviç!

Bir şey net değil mi?
"Can" a dikkat edin, yani. nesnelerin kullanılacağı bir çözüm önerildi - bu sizin için net değil mi?
Ya da verilen nesnelerin seçimi?

Çalışma (koşullu) seviyeleri kullanarak herhangi bir gösterge olmadan yapabilirsiniz. Trend çizgileriyle "dikdörtgen", elips (mi) veya phi seviyelerine göre daha kolay olduğunu düşünüyorum. Çubukların yatay çizgileri "blok".

Senin önerin?

 

Öğretici , #include yönergesi hakkında şunları söylüyor:


" #include yönergesi programın herhangi bir yerinde belirtilebilir, ancak genellikle tüm eklemeler kaynak dosyanın başına yerleştirilir. Önişlemci #include <filename> satırını (veya #include "filename" satırını) içerikle değiştirir. Belirtilen ada sahip dosyanın.

Köşeli parantezler, dosyanın standart dizinden alınacağını belirtir.   Terminal_dizini\uzmanlar\dahil   (geçerli dizin görüntülenmez). Dosya adı tırnak içine alınmışsa, arama geçerli dizinde, yani ana kaynak dosyayı içeren dizinde yapılır (standart dizin aranmaz). "

Anladığım kadarıyla, parantezler köşeli parantezlerse, başlangıçta parantezlerden okunmasına izin vermeyin, denemez bile, hemen Terminal_directory\experts\include dizinine erişir , değil mi?

Ve tırnak işaretleri varsa, o zaman Terminal_directory\experts\include dizinine hemen başvurmadan tırnak içindeki yol hemen aranır. Onlar. herhangi bir bölümün herhangi bir klasörünü kaydedebilirsiniz, örneğin, E:\folder_1\folder_2\folder_N\ , vb. Bu durumda, bu dosyayı okumak için tırnak işaretleri kullanmanız gerekir, aksi takdirde program okumayacaktır. İlk durumda, program yalnızca standardı okuyacaktır. haklı mıyım?

 
Roll :

Merhaba Viktor İvanoviç!

Bir şey net değil mi?
"Can" a dikkat edin, yani. nesnelerin kullanılacağı bir çözüm önerildi - bu sizin için net değil mi?
Ya da verilen nesnelerin seçimi?

Çalışma (koşullu) seviyeleri kullanarak herhangi bir gösterge olmadan yapabilirsiniz. Trend çizgileriyle "dikdörtgen", elips (mi) veya phi seviyelerine göre daha kolay olduğunu düşünüyorum. Çubukların yatay çizgileri "blok".

Senin önerin?


 double h=High[ iHighest ( NULL , 0 ,MODE_HIGH,Quant_Bars ,1)];
double l=Low[ iLowest ( NULL , 0 ,MODE_LOW,Quant_Bars,1)];

Seviyeleri sayın. Ve sonra teknoloji meselesi

Test cihazında nesneleri kullanmamak daha iyidir (özellikle optimize ederken)

 
Onlar. seçiminiz çalışma seviyeleridir. Dış değişkenlerde nesnelerin (gösterge için kullanılan) oluşumuna bir yasak/izin koyarsanız, optimizasyona başlayabilirsiniz .
 

Tekrar merhaba. Önceki yanıt için teşekkürler - çok yardımcı oldu. Lütfen daha fazla yardım edin. Bir danışmandan, bugün (f0_5 (0) ise), dün (f0_5 (1) ise) vb. için hesaptaki karı (zararı) hesaplayan ihtiyacım olan işlevi aldım:

 double f0_5( int ai_0) {
   double ld_ret_4 = 0 ;
   for ( int pos_12 = 0 ; pos_12 < OrdersHistoryTotal (); pos_12++) {
       if (!( OrderSelect (pos_12, SELECT_BY_POS, MODE_HISTORY))) break ;
               if ( OrderCloseTime () >= iTime ( OrderSymbol (), PERIOD_D1 , ai_0) && OrderCloseTime () < iTime ( OrderSymbol (), PERIOD_D1 , ai_0) + 86400 ) ld_ret_4 = ld_ret_4 + OrderProfit () + OrderCommission () + OrderSwap ();
   }
   return (ld_ret_4);
}

Sonuç ondalık bir kesir olmalıdır (teoride), ancak işlev bir nedenden dolayı bir tamsayı döndürür. Genel olarak, iki ondalık basamaklı bir kesir olacak şekilde işlevi değiştirmeme yardım edin.

Her ne kadar burada hata yapıyor olabilirim: Print() ile kontrol ettim, ancak işlev aslında normal sayılıyor mu? Genel olarak, lütfen anlamama yardım edin.

 
MaxZ :

İşte size iyi bilinen bir gösterge.

Bu resmi alabilir misin? :)))))))



İşte burada

 
İşte öğretici sayfası https://docs.mql4.com/en/array/ArrayCopy
Orada diyor ki:
 ArrayCopy (array2,array1, 0 , Bars * 6 - 60 , 60 );
// теперь array2 содержит 10 последних баров из истории (имеется в виду, что последний бар - это текущий бар, бар с индексом [0])

Dizi2 neden aniden son 10 çubuğu içersin?
Sonuçta, Bars*6 - 60 , 10 değerini döndürmez. Ben mantığı hiç görmüyorum.
Örneğin, tarihte 1000 bar vardır. Ardından Çubuklar*6 - 60 = 1000*6 - 60 = 6000 - 60 = 5940 . Ve son 10 bar nerede?
 
hoz :
İşte öğretici sayfası https://docs.mql4.com/en/array/ArrayCopy
Orada diyor ki:

Dizi2 neden aniden son 10 çubuğu içersin?
Sonuçta, Bars*6 - 60 , 10 değerini döndürmez. Ben mantığı hiç görmüyorum.
Örneğin, tarihte 1000 bar vardır. Ardından Çubuklar*6 - 60 = 1000*6 - 60 = 6000 - 60 = 5940 . Ve son 10 bar nerede?

Beni yine şaşırtıyorsun! Sözde son 10, 0'dan 10'a kadar olan çubuk, fiyat ile temas halinde grafikte var! Tarihteki 30. ve 5000. barları unutun! Biz olmadan çoktan geçtiler ve sadece testçi için gerekliler. Ve sıfırdan başlayarak en yenilerine ihtiyacımız var ve elbette yenilerine gelecekte, oraya bakıyoruz! ;))
 
borilunad :

Beni yine şaşırtıyorsun! Sözde son 10, 0'dan 10'a kadar olan çubuk, fiyat ile temas halinde grafikte var! Tarihteki 30. ve 5000. barları unutun! Biz olmadan çoktan geçtiler ve sadece testçi için gerekliler. Ve sıfırdan başlayarak en yenilerine ihtiyacımız var ve elbette yenilerine gelecekte, oraya bakıyoruz! ;))

Gerçek şu ki, ikincisi, yani. şimdiki fiyata yakın, zaten anladım. Ama bu kod parçasını anlamıyorum Bars*6 - 60 . Ne dönecek? Mantıksal olarak nasıl hesaplanacağını anlamak istiyorum. Açıklayabilir misin? Birisi için kolay olabilir ama ben eğitim açısından bir programcı değilim ve böyle bir bilgi akışını algılamak çok çılgınca. Ders kitabını okurum ve yavaş yavaş karşıma çıkan soruları sorarım. Şimdi ise, soruların yakında daha yeterli olacağını umuyorum.