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

 
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?
5940 --Son 10 çubuğu kopyalamak için kaynak dizinin başlangıç dizini (çubuk - 6 dizin).
 

rulo :
5940 --Son 10 çubuğu kopyalamak için kaynak dizinin başlangıç dizini (çubuk - 6 dizin).

Değerli Uzmanlar, Hayır.   Ders kitabında hatalar var mı?   

İşte düşüncelerim:

Kodun başında   isminde    f-i   int ArrayCopyRates , hangi   Geçerli grafiğin çubuklarının verilerini RateInfo[][6] türünde iki boyutlu bir diziye kopyalar ve bu işlevin örneğine göre kopyalanan çubukların sayısını veya hata durumunda -1'i döndürür :

 double array1[][ 6 ];
ArrayCopyRates (array1, "EURUSD" , PERIOD_H1 );
Print ( "Текущий бар " , TimeToStr (array1[ 0 ][ 0 ]), "цена открытия " , array1[ 0 ][ 1 ]);

geçerli çubuk, indeksli çubuktur   0-0, yani   aslına dönmek   kod,   Biz   dizi1 dizininin 0-0 (geçerli çubuk) dizinindeki öğeyi içine kopyalayın   sıralamak   başlangıç indeksli dizi2   0-0, öğreticide yazılanın aksine son 10 çubuğu alıyoruz (son çubuğun mevcut çubuk olduğu, [0] indeksli çubuk olduğu) ki bu, öğreticide yazılanın aksine… ve buna göre, öğeyi indeks ile kopyalamak     Dizi1'den diziye çubuklar*6-60,60   ilk eleman indeksi 0 olan dizi2, geçmişten çubuklar hakkında bilgi alırız.

 

Merhaba.

Özel bir gösterge var.

Bir Uzman Danışman yazıyorum..ve soru ortaya çıktı...göstergeme nasıl başvurabilirim? Yani, belirtilen çubuktan verileri alın (benim durumumda 2. çubuğu almanız gerekir). WindowsPriceMax var ama anladığım kadarıyla sadece alt pencere grafiğinin son değerini gösteriyor ve örneğin göstergede 3 satırım olup olmadığı net değil, ne gösterecek?

 
Tragedy :

Merhaba.

Özel bir gösterge var.

Bir Uzman Danışman yazıyorum..ve soru ortaya çıktı...göstergeme nasıl başvurabilirim? Yani, belirtilen çubuktan verileri alın (benim durumumda 2. çubuğu almanız gerekir). WindowsPriceMax var ama anladığım kadarıyla sadece alt pencere grafiğinin son değerini gösteriyor ve örneğin göstergede 3 satırım olup olmadığı net değil, ne gösterecek?



double iCustom(dize sembolü, int zaman çerçevesi, dize adı, ..., int modu, int shift)

Belirtilen özel göstergenin hesaplanması. Özel gösterge derlenmelidir (EX4 uzantılı dosya) ve terminal_directory\experts\indicators dizininde bulunmalıdır.
Seçenekler:

sembol - Göstergenin hesaplanacağı cihazın sembolik adı. NULL, geçerli karakter anlamına gelir.
zaman çerçevesi - Dönem. Grafik dönemlerinden biri olabilir. 0, mevcut grafiğin periyodu anlamına gelir.
isim - Özel göstergenin adı.
... - Parametre listesi (gerekirse). Geçirilen parametreler, bildirim sırasına ve özel göstergenin harici (harici) değişkenlerinin türüne uygun olmalıdır.
mod - Gösterge çizgisinin dizini. 0 ile 7 arasında olabilir ve SetIndexBuffer işlevlerinden biri tarafından kullanılan dizinle eşleşmelidir.
shift - Gösterge arabelleğinden alınan değerin indeksi (geçerli çubuğa göre belirtilen sayıda periyot önce kaydırma).

 

Teşekkür ederim. Yardım etti. Sadece önceden kurulu olarak gelen iMac *** iStoch *** göstergelerinin bu şekilde çağrıldığını sanıyordum.

 
Lisi4ka330 :

Değerli Uzmanlar, Hayır.   Ders kitabında hatalar var mı?   

İşte düşüncelerim:

Kodun başında   isminde    f-i   int ArrayCopyRates , hangi   Geçerli grafiğin çubuklarının verilerini RateInfo[][6] türünde iki boyutlu bir diziye kopyalar ve bu işlevin örneğine göre kopyalanan çubukların sayısını veya hata durumunda -1'i döndürür :

geçerli çubuk, indeksli çubuktur   0-0, yani   aslına dönmek   kod,   Biz   dizi1 dizininin 0-0 (geçerli çubuk) dizinindeki öğeyi içine kopyalayın   sıralamak   başlangıç indeksli dizi2   0-0, öğreticide yazılanın aksine son 10 çubuğu alıyoruz (son çubuğun mevcut çubuk olduğu, [0] indeksli çubuk olduğu) ki bu, öğreticide yazılanın aksine… ve buna göre, öğeyi indeks ile kopyalamak     Dizi1'den diziye çubuklar*6-60,60   ilk eleman indeksi 0 olan dizi2, geçmişten çubuklar hakkında bilgi alırız.


Yüksek sesle açıklama yapmadan, pratikte şunları kontrol ediyoruz:

 //+------------------------------------------------------------------+
//|                                                       массив.mq4 |
//|                                                  Copyright 2012, |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012,"
#property link       "https://forum.mql4.com/ru/46980/page525"
#property show_inputs
extern string s= " -----номер бара--------" ;
extern int a= 9 ; //номер 10 последних баров 
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
{ if (a< 10 )
{ double array1[][ 6 ]; double array2[ 10 ][ 6 ];
   ArrayCopyRates (array1);
   ArrayCopy (array2,array1, 0 , Bars * 6 - 60 , 60 );
// теперь array2 содержит 10 последних баров из истории(имеется в виду,что последний бар-это текущий бар,бар с индексом [0])
Alert ( "Контрольный бар - " ,a, " время - " , TimeToStr (array2[a][ 0 ]), "  цена открытия - " ,array2[a][ 1 ]);} return ( 0 );}
 
Roll :


Yüksek sesle açıklama yapmadan, pratikte şunları kontrol ediyoruz:

Evet, pratikte gerçekten Bars*6-60,60 indeksli öğenin mevcut bar olduğu ortaya çıkıyor... oysa bunu örnekte açıklamak gerekirse:

 double array1[][ 6 ];
ArrayCopyRates (array1, "EURUSD" , PERIOD_H1 );
Print ( "Текущий бар " , TimeToStr (array1[ 0 ][ 0 ]), "цена открытия " , array1[ 0 ][ 1 ]);
geçerli çubuk dizi1[ 0 ][ 0 ] ve diziyi kopyaladıktan sonra dizi1[Çubuklar*6-60,60][0] olur... yeniden numaralandırmanın bir yerde olduğu ortaya çıkıyor... tabii ki, pratikte işlevi kullandıktan sonra sonuç açıktır ... ama bence mantık berbat)))
 
Lisi4ka330 :

Evet, pratikte gerçekten Bars*6-60,60 indeksli elemanın mevcut bar olduğu ortaya çıkıyor...


Bu senin sonucun.
 
Roll :


Yüksek sesle açıklama yapmadan, pratikte şunları kontrol ediyoruz:

 #property show_inputs
extern string s= " -----номер бара--------" ;
extern int a= 9 ; //номер 10 последних баров 
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
{ if (a< 10 )
{ double array1[][ 6 ]; double array2[ 10 ][ 6 ];
   ArrayCopyRates (array1);
   ArrayCopy (array2,array1, 0 , Bars * 6 - 60 , 60 );
// теперь array2 содержит 10 последних баров из истории(имеется в виду,что последний бар-это текущий бар,бар с индексом [0])
Alert ( "Контрольный бар - " ,a, " время - " , TimeToStr (array2[a][ 0 ]), "  цена открытия - " ,array2[a][ 1 ]);} return ( 0 );}

İşte TimeToStr dizisinin belirli bir öğesi ( dizi2[a][ 0 ]

Ne doğru çıktı, katılıyorum. Ama Bars * 6 - 60 ile ne ilgisi var ... Hesapta Bar yerine yerine ne konuldu? Barlar ise, son 10 bar olduğu nasıl ortaya çıkıyor?

Forumda sadece bunu anlamadığımı değil, birçoğunun da olduğu görülebilir.

Tüm çubukların sayısının 6 ve eksi 60 ile çarpıldığı ortaya çıktı. 6'yı nereden bulduk? Ve evet, bu bir tür saçmalık.

 
hoz :

İşte TimeToStr dizisinin belirli bir öğesi (array2[a][ 0 ]

Ne doğru çıktı, katılıyorum. Ama Bars * 6 - 60 ile ne ilgisi var ... Hesapta Bar yerine yerine ne konuldu? Barlar ise, son 10 bar olduğu nasıl ortaya çıkıyor?

Forumda, sadece bunu anlamadığım değil, birçoğunun da olduğu görülebilir.



int Çubuklar -- Geçerli grafikteki çubukların sayısı .