Hatalar, hatalar, sorular - sayfa 512

 
Neofit :
Dizinin boyutunu ayarlayın. Dizi Yeniden Boyutlandır
 
Neofit :

Lütfen bana öğeleri Mqlrates yapıları olan bir diziyle nasıl çalışacağımı söyleyin.

İşte tam olarak ilgilendiğiniz şey. Örneğin:

MqlRates AdaptedRates[];

ArraySetAsSeries(AdaptedRates,true); 

AdaptedRates[300].open=1;

Hata ayıklayıcıda bir hata veriyor - Geçersiz dizi erişimi.

Anladığım kadarıyla bunun nedeni, bu gösterimi kullanarak, yalnızca sırayla bir dizi öğesi olan yapının öğelerini okuyabilmenizdir .

Soru, yapı elemanlarının nasıl doğru yazılacağıdır . İlgi çekmeyen tüm unsurlar doğrudan fiyatlardır .open .high .low .close .

Şimdiden özür dilerim, soru muhtemelen çok banal (ben bir programcı değilim), ancak cevabı yardımda bulamadım. Herhangi bir yardım için minnettar olacağım.

AdaptedRates[] adlı dinamik bir dizi kullanıyorsunuz. Hatırladığım kadarıyla dinamik dizilerle çalışırken ArrayResize () fonksiyonunu kullanarak onların boyutlarını ayarlamalısınız. Bu arada, derleyici üçüncü satırda belirtilen indeks 300'e yemin eder.
 
Swan :
Dizinin boyutunu ayarlayın. Dizi Yeniden Boyutlandır
Anladığım kadarıyla örneğin bedeni siz belirlerseniz
MqlRates AdaptedRates[302];  
O zaman indeksleme türünü seri olarak ayarlayamayacağım.
 
Neofit :
Anladığım kadarıyla örneğin bedeni siz belirlerseniz
MqlRates AdaptedRates[302];  
O zaman indeksleme türünü seri olarak ayarlayamayacağım.

:) Statik bir dizi değil, ArrayResize() kullanarak dinamik bir boyut ayarladınız.

Mesela: ArrayResize(AdaptedRates,302); vb.

 
Yedelkin :
AdaptedRates[] adlı dinamik bir dizi kullanıyorsunuz. Hatırladığım kadarıyla dinamik dizilerle çalışırken ArrayResize () fonksiyonunu kullanarak onların boyutlarını ayarlamalısınız. Bu arada, derleyici üçüncü satırda belirtilen indeks 300'e yemin eder.
Statik diziler zaman serisi olarak temsil edilemez, yani dizinin sonundan başlangıcına kadar dizi öğelerine erişim sağlayan ArraySetAsSeries() işlevi onlara uygulanamaz. Zaman serilerinde olduğu gibi bir diziye erişim sağlamanız gerekiyorsa, dinamik bir dizi nesnesi kullanın.

Bu referanstan bir alıntıdır.

Swan, Yedelkin bu kadar çabuk yanıt verdiğiniz için teşekkürler.

 
Neofit :
Anladığım kadarıyla örneğin bedeni siz belirlerseniz
MqlRates AdaptedRates[302];  
O zaman indeksleme türünü seri olarak ayarlayamayacağım.

Evet.

MqlRates AdaptedRates[];//diziyi dinamik tut

ArrayResize(AdaptedRates,302);//ve istediğiniz boyutu ayarlayın

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных - Документация по MQL5
 
Yedelkin :

:) Statik bir dizi değil, ArrayResize() kullanarak dinamik bir boyut ayarladınız.

ArrayResize(AdaptedRates,302) gibi; vb.

Popüler açıklama için teşekkürler, anladığım kadarıyla, dinamik bir dizinin bir hücresine herhangi bir erişimden önce, onu gerekli sınırlara ArrayResize yapmak arzu edilir, deneyeceğim.
 
pusheax :

Strateji test cihazında aksaklık .

Aniden durur ve tüm yerel ve uzak ajanlar yazıyı bitirir ve bu nedenle askıda kalır.

Bana daha fazla nasıl başlayacağımı söyleme, her şeye yeniden başlamanın zamanı geldi mi?
Düzenli olarak :-) İlk başta gerek yok.
 
Neofit :
Popüler açıklama için teşekkürler, anladığım kadarıyla, dinamik bir dizinin bir hücresine herhangi bir erişimden önce, onu gerekli sınırlara ArrayResize yapmak arzu edilir, deneyeceğim.

Not. Yalnızca gösterge arabellekleri için bu gerekli olmayacaktır. Orada, terminalin yürütme alt sistemi bunu kendi başına halleder.

Not 2. ArrayResize() öğesinin öğelerine herhangi bir erişimden önce değil, yalnızca dinamik bir dizinin boyutunu değiştirmeniz gerektiğinde kullanılması önerilir. Dinamik bir diziye boyutu bir kez verilecek ve ardından program basitçe öğelerine erişecek olabilir.

 
Yedelkin :

Not. Yalnızca gösterge arabellekleri için bu gerekli olmayacaktır. Orada, terminalin yürütme alt sistemi bunu kendi başına halleder.

Not 2. ArrayResize() öğesinin öğelerine herhangi bir erişimden önce değil, yalnızca dinamik bir dizinin boyutunu değiştirmeniz gerektiğinde kullanılması önerilir. Dinamik bir diziye boyutu bir kez verilecek ve ardından program basitçe öğelerine erişecek olabilir.

Aptalca söyledim, aslında, dinamik diziyi zaten 302'ye genişlettiysem, o zaman ArrayResize olmadan 0'dan 301'e kadar herhangi bir öğeye başvurabileceğimi anlıyorum.