[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 131

 
Vinin :

Konunun devamı

Bir önceki burada https://www.mql5.com/ru/forum/111497

MT4 test cihazında, optimizasyon sonuçlarının ve optimizasyon grafiğinin sütunlarında hiçbir şey görüntülenmez, yalnızca boştur. Neden Yardım!!!
 
Sergey_Rogozin :

Tek boyutlu bir ValueArr[] dizisini doldurmaya çalışıyorum.

Doğru olup olmadığından emin değilim.

Her onayda GetValue() işlevi bir int değeri döndürür. ValueArr[] nasıl doldurulur?

Girişim doğru mu?

Dizi boyutunun her onayda bir artmasını istiyor musunuz? Daha sonra boyutu bilgisayarın kullanılabilir belleği ile sınırlı olacaktır.

Her tikte, ValueArr[] dizisinin boyutunu ArrayResize() işleviyle artırın ve diziye yeni veriler ekleyin. Tekrar - nereye eklenir? Başına mı sonuna mı???

Başa ise, daha önce kaydedilen verileri kaydırmak gerekir, aksi takdirde yeni kaydedilenler tarafından silinirler.

Sonunda ise, o zaman:

init'te dizi size = sıfır olarak ayarlayın ve başlangıçta onu 1 (size++) artırın, ardından dizi boyutunu değiştirin ( ArrayResize(ValueArr, size);) ve size- tarafından indekslenen ValueArr[] dizi hücresini girin. GetValue() işlevi tarafından alınan 1 (ValueArr[size -1]) verisi; (ValueArr[size-1]=GetValue();)

 
artmedia70 :

Dizi boyutunun her onayda bir artmasını istiyor musunuz? Daha sonra boyutu bilgisayarın kullanılabilir belleği ile sınırlı olacaktır.

Her tikte, ValueArr[] dizisinin boyutunu ArrayResize() işleviyle artırın ve diziye yeni veriler ekleyin. Tekrar - nereye eklenir? Başına mı sonuna mı???

Başa ise, daha önce kaydedilen verileri kaydırmak gerekir, aksi takdirde yeni kaydedilenler tarafından silinirler.

init'te dizi boyutu = sıfır olarak ayarlayın ve başlangıçta onu 1 (size++) artırın, ardından dizi boyutunu değiştirin ArrayResize(ValueArr, size); ve size-1 (ValueArr[size-1]) tarafından indekslenen ValueArr[] dizisinin hücresine GetValue() işlevi tarafından alınan verileri girin;

Evet, GetValue()'dan gelen veriler her onayda ValueArr[] dizisine yazılacaktır.

Dizi boyutu her onayda artar, ancak hemen tanımlanabilir, örneğin [10000].


Dizinin öğeleri, alındıkları sıraya göre düzenlenir, yani. ilk kaydedilen - "genel kuyrukta" ilk,

ikinci öğe, sıradaki ikinci öğedir.


Eğer doğru anladıysam, şöyle görünüyor:


 int size= 0 ;
 int ValueArr[size];
 
//-----------------

int start()
 {
   size++;
   ArrayResize (ValueArr, size);
   ValueArr[size- 1 ] = GetValue();
   
 return ();
 }

//-----------------

int GetValue()
 {
 .......
 return (Val);
 }

Umarım seni doğru anlamışımdır.

 
Sergey_Rogozin :

Dizinin öğeleri, alındıkları sıraya göre düzenlenir, yani. ilk kaydedilen - "genel kuyrukta" ilk,

neden bir zaman serisi dizisi kullanmıyorsunuz?
 
eddy :
neden bir zaman serisi dizisi kullanmıyorsunuz?
Zaman serisi? Bu, bir kene geçmişi gibi bir şeyi kaydetmede bir şekilde yardımcı olur mu?
 
Sergey_Rogozin :

Tek boyutlu bir ValueArr[] dizisini doldurmaya çalışıyorum.

Doğru olup olmadığından emin değilim.

Her onayda GetValue() işlevi bir int değeri döndürür. ValueArr[] nasıl doldurulur?

Girişim doğru mu?

Böyle
 int ValueArr[size]; 

yasaktır. Bir dizi bildirildiğinde, boyut olarak bir sabit belirtilir veya hiçbir şey belirtilmez ve ardından dizi dinamik olarak kabul edilir.

doğru olacak

 int ValueArr[]; 

int init()
{
   ArrayResize(ValueArr,size);
}
 
tik - hayır
 

Lütfen bana söyle! MT4'te yeni bir işlem açmak için öncekinin sonucunu dikkate alacak bir fonksiyon var mı? Evet ise, nasıl doğru yazılır?

 
sto_mat :

Lütfen bana söyle! MT4'te yeni bir işlem açmak için öncekinin sonucunu dikkate alacak bir fonksiyon var mı? Evet ise, nasıl doğru yazılır?


öyle bir yerleşik fonksiyon yok, kendiniz yazmanız gerekiyor, burada bir örnek gösterdim: https://www.mql5.com/en/forum/131277/page113
 
alsu :
Böyle

yasaktır. Bir dizi bildirildiğinde, boyut olarak bir sabit belirtilir veya hiçbir şey belirtilmez ve ardından dizi dinamik olarak kabul edilir.

doğru olacak


O zaman muhtemelen şöyledir:

 int size, ValueArr[]; 
//-----------------
 int init()
 {
   ArrayResize (ValueArr,size);
 }
//-----------------

int start()
 {
   ValueArr[size- 1 ] = GetValue();
 return ();
 }

//-----------------

int GetValue()
 {
 .......
 return (Val);
 }

Bu doğru?

Neden: