Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 22

 
A1exPit :
Bir diziye veri aktarırken sırayla kendisini dolduracağını kastetmiştim, yani. dizi1[] = x; hücre numarası doğrudan belirtilmezse x değeri hangi hücreye yazılır?

Numara. Tüm hücreleri aynı değerle doldurmak istiyorsanız, ArrayInitialize() öğesini kullanın .

Farklı değerler yazmanız gerekiyorsa, sırayla bir döngüde. Belirli bir hücreye yazmanız gerekiyorsa, hücrenin adresini belirtin.

 
Vitalie Postolache :

Numara. Tüm hücreleri aynı değerle doldurmak istiyorsanız, ArrayInitialize() öğesini kullanın .

Farklı değerler yazmanız gerekiyorsa, sırayla bir döngüde. Belirli bir hücreye yazmanız gerekiyorsa, hücrenin adresini belirtin.

Teşekkürler,

Başka bir soru şudur: ArrayCopy aracılığıyla, öncekindeki dolu hücre sayısına eşit boyutta yeni bir dizi oluşturabilir miyim? Yoksa önce ikinci diziyi oluşturmak ve sonra kopyalamak mı gerekiyor?

int    ArrayCopy (
   void &        dst_array[],         // куда копируем
   const void &  src_array[],         // откуда копируем
   int           dst_start= 0 ,         // с какого индекса пишем в приемник
   int           src_start= 0 ,         // с какого индекса копируем из источника
   int           count= WHOLE_ARRAY      // сколько элементов
   );
 
A1exPit :

Teşekkürler,

Başka bir soru şudur: ArrayCopy aracılığıyla, öncekindeki dolu hücre sayısına eşit boyutta yeni bir dizi oluşturabilir miyim? Yoksa önce ikinci diziyi oluşturmak ve sonra kopyalamak mı gerekiyor?

int    ArrayCopy (
   void &        dst_array[],         // куда копируем
   const void &  src_array[],         // откуда копируем
   int           dst_start= 0 ,         // с какого индекса пишем в приемник
   int           src_start= 0 ,         // с какого индекса копируем из источника
   int           count= WHOLE_ARRAY      // сколько элементов
   );
Tabii ki önce oluşturun.
 
Vitalie Postolache :
Tabii ki önce oluşturun.
Tekrar teşekkürler.
 
Spread = MarketInfo ( Symbol (), MODE_SPREAD );
if ( Spread >= 0 ) ExtSpread [x] = Spread;
if ( TimeCurrent () - iTime ( NULL , 0 , 0 ) >= 60 ){
int Spread2[x];
ArrayCopy ( Spread2[],ExtSpread[], 0 , 0 , WHOLE_ARRAY );}
x=x+ 1 ;
if (x > 1000 ) x = 0 ;

Bunun gibi, ExtSpread[] dizisine Spread değerini yazarım ve dakika çubuğunun sonunda onu başka bir diziye aktarırım - teoride bir sonraki çubuğa kadar hayatta kalması gerekir.

ExtSpread boyutu[1000]

Yani ve böyle bir soru, dizideki numaralandırma sıfırdan başlıyor ve sonra 1000 boyutunda son hücresi 999 mu olacak?

O zaman doğru olacaktır: x++ ve if ( x > 999 ) x=0;

 
A1exPit :
Spread = MarketInfo ( Symbol (), MODE_SPREAD );
if ( Spread >= 0 ) ExtSpread [x] = Spread;
if ( TimeCurrent () - iTime ( NULL , 0 , 0 ) >= 60 ){
int Spread2[x];
ArrayCopy ( Spread2[],ExtSpread[], 0 , 0 , WHOLE_ARRAY );}
x=x+ 1 ;
if (x > 1000 ) x = 0 ;

Bunun gibi, ExtSpread[] dizisine Spread değerini yazarım ve dakika çubuğunun sonunda onu başka bir diziye aktarırım - teoride bir sonraki çubuğa kadar hayatta kalması gerekir.

ExtSpread boyutu[1000]

Yani ve böyle bir soru, dizideki numaralandırma sıfırdan başlıyor ve sonra 1000 boyutunda son hücresi 999 mu olacak?

O zaman doğru olacaktır: x++ ve if ( x > 999 ) x=0;

Spread = ( int ) MarketInfo ( Symbol (), MODE_SPREAD );
if ( Spread >= 0 ) ExtSpread [x] = Spread;
if ( TimeCurrent () - iTime ( NULL , 0 , 0 ) >= 60 ){
int Spread2[]; ArrayInitialize (Spread2, EMPTY_VALUE ); ArrayResize ( Spread2,x, 0 );
ArrayCopy ( Spread2,ExtSpread, 0 , 0 , WHOLE_ARRAY );}
x=x+ 1 ;
if (x > 999 ) x = 0 ;
 
Tünaydın! lütfen söyle bana, android için mt4 636 sürümünü indirdim ama broker listesini göremiyorum. Terminal sürümü artık desteklenmiyor mu?((Destekleniyorsa, çalışan sürümü nereden indirebilirim?)
 

Etkilenmiş:

scomoroh , 2016.12.04 18:58

Derleme sırasında bir hata oluşur. Sorun ne? Karar vermeme yardım et!
Dosyalar:
 
Vladimir Karputov :

Etkilenmiş:

scomoroh , 2016.12.04 18:58

Derleme sırasında bir hata oluşur. Sorun ne? Karar vermeme yardım et!

ArrayInitialize (max, 0 ) => ArrayInitialize (dizi, 0 );

for ( int a= 1 ;a<=pr;a++) => for ( int a= 1 ;a<pr;a++)      

Çok, çok uygun olmayan kod, başlangıçta terminali birkaç dakika askıda tutar ve daha sonra sert bir şekilde yavaşlar ve birkaç çizelgede başlatırsanız, genel olarak

 
Vitalie Postolache :

ArrayInitialize (max, 0 ) => ArrayInitialize (dizi, 0 );

for ( int a= 1 ;a<=pr;a++) => for ( int a= 1 ;a<pr;a++)      

Çok, çok uygun olmayan kod, başlangıçta terminali birkaç dakika askıda tutar ve daha sonra sert bir şekilde yavaşlar ve birkaç çizelgede başlatırsanız, genel olarak

Evet, teşekkürler, her şeyi düzelttim, hata yok. Yavaşlıyor, evet, çok. Optimize etmek için hangi yöne hareket edeceğimi söyleme, yoksa her şeyi yeniden yazmam mı gerekecek?