Çaydanlıktan gelen sorular - sayfa 68

 

x100intraday :

1. Beni ilgilendiren en önemli şey: Fiyat tamponlarına benzer şekilde geçici tamponları doğrudan doldurmak mümkün mü ( CopyTime ve bir diziye kopyalamanın diğer normal işlevlerine başvurmadan) ve nasıl ve değilse neden olmasın?

2. Bu amaç için, 1970'in başından beri saniyeleri depolamak için, ancak datetime değil, bir tür double veya long türünde, örneğin gerekli anlarda TimeToString aracılığıyla dönüştürülen başka bir tampon çifti oluşturmak gerçekten gerekli mi? değişmez bir dize olarak zaman biçimine ?

1. İmkansız. "Neden?" ile - geliştiricilere.

2. Sizin durumunuzda bu en basit çözümdür. (Çalışması garantilidir.) Tampon doldurma sorununu fiyat olanlara benzer şekilde gündeme getirdiğinizden beri.

Ve benim yerime, algoritmik düzeyde hafızayla ilgili bu tür israfı önlemeye çalışırdım. Ve hiçbir durumda %3 dolulukta yararlı veri içeren arabellekler oluşturmadım.

 
MetaDriver :

Ve benim yerime, algoritmik düzeyde hafızayla ilgili bu tür israfı önlemeye çalışırdım. Ve hiçbir durumda %3 dolulukta yararlı veri içeren arabellekler oluşturmadım.

Pekala, burada bir tür soru açıklaması zaten yürürlüğe giriyor: https://www.mql5.com/ru/forum/1111/page529#comment_101059 En az bir anlaşılır ve ilginç cevapla ve tam tersi. Faiz kızışıyor...
 
x100intraday :

evet, kötü))

" Tarih ve saat sabitleri ... " ve "... değişmez bir dize olarak gösterilebilir ".

ve sunulmayabilir.. Bu, olağan tarih/saat formatındaki veri girişi/çıkışı içindir.

Ayrıca, bu tür dizileri gösterge arabellekleriyle ilişkilendirmenin bir yolu yok (ve buna ihtiyacımız yok?), Bilinen nedenlerle SetIndexBuffer'ı bu veri türündeki dizilere uygulayamıyoruz.

hiçbir şey tarih saat türünün gösterge arabelleğinde olmasını engellemez (istenen).

Ve bağlanmıyoruz.

ama boşuna)

Ortaya çıkan kodu derliyoruz. else içindeki = EMPTY_VALUE olan satırlar için " sabit değerin kesilmesi " uyarısı (ne yazık ki şaşırdık) ve Terminal Uzman Raporunda bir hata: " Array out of range " aynı satırlar için (üzgünüz). son). Görünüşe göre, EMPTY_VALUE tarih saat tipine yerleştirilmek istemiyor , böyle bir dizinin boyutu sıfır kalıyor. EMPTY_VALUE değerini 0 olarak değiştirin , hata kaybolur, ancak dizi boyutu hala sıfırdır.

EMPTY_VALUE, double türündedir.

Gösterge arabelleği ile daha kolay olacaktır - dizinin boyutunu belirlemeniz gerekmez.

Başka bir şey de gariptir: ExtUpperBuffer ve ExtLowerBuffer arabelleklerinin boyutu sıfır değildir, bu da onların hala dolu oldukları, ancak fraktalların görünmediği anlamına gelir. Nasıl oluyor?

FIG bilir)

Beni ilgilendiren asıl şey şudur: Geçici arabellekleri doğrudan fiyatla aynı şekilde ( CopyTime ve diğer standart diziye kopyala işlevlerine başvurmadan) doldurmak mümkün müdür ve nasıl ve değilse neden olmasın? Bu amaç için 1970'in başından beri saniyeleri depolamak için başka bir tampon çifti oluşturmak gerçekten gerekli mi, ancak türde datetime değil, örneğin bir tür double veya long , ve gerekli anlarda TimeToString aracılığıyla TimeToString'e dönüştürülür . değişmez bir dize olarak zaman biçimi ?

veri tipine erişim tarih saat fiyat verilerine erişmeye benzer.

datatime aslında aynı int/long'dur.

Not: ek Fractals.mq5 kodunu yeniden oluşturamayacak kadar tembel olan kim, bana hesaplanan belirli zaman verilerini nasıl sakladığınızı söyleyin (yerleşik göstergelerin tutamaçlarını çağırmadan ve onlarla çalışmadan)?

her şey tamsayı verileriyle aynıdır, int/datetime/long aynıdır.

 
Swan :

evet, kötü))

hiçbir şey tarih saat türünün gösterge arabelleğinde olmasını engellemez (istenen).

ama boşuna)

Gösterge arabelleği ile daha kolay olacaktır - dizinin boyutunu belirlemeniz gerekmez.

Ve tam olarak neyi yanlış yapıyorum? Sonuçta, her şeyi ayrıntılı olarak boyadı, kaynak kodu genellikle düzenli, zamana göre test edilmiş, en basit! Değişiklikler basit ve açık... Bulanık bir zihin için kayboldum... Bir şeye takıldığımda, ayarlanabilir anahtarı olan bir araba tamircisini bile çağırın...

Ve tarih -saat türündeki dizileri gösterge arabelleklerine bağlamak için ne tür bir runik büyü? tekrar ediyorum:


SetIndexBuffer

Belirtilen gösterge arabelleğini, genel düzeyde bildirilen çift türde tek boyutlu dinamik diziyle ilişkilendirir.

 
x100intraday :

Ve tam olarak neyi yanlış yapıyorum? Sonuçta, her şeyi ayrıntılı olarak boyadı, kaynak kodu genellikle düzenli, zamana göre test edilmiş, en basit! Değişiklikler basit ve açık... Bulanık bir zihin için kayboldum... Bir şeye takıldığımda, ayarlanabilir anahtarı olan bir araba tamircisini bile çağırın...

Ve tarih -saat türündeki dizileri gösterge arabellekleriyle bağlamak için ne tür bir runik büyü? tekrar ediyorum:


SetIndexBuffer

Belirtilen gösterge arabelleğini, genel düzeyde bildirilen çift türde tek boyutlu dinamik diziyle ilişkilendirir.

Size bu tarih saat verildi. Her şeyi bir çift diziye yazın ve (gerekirse) kullanmadan önce tarih saatine yayınlayın.

Özünde, datetime ve double arasındaki fark yalnızca temsildedir. Çift olarak yazılan zaman, kayıp olmadan tarih saatine dönüştürülebilir.

ZY Ve diğer türlerde 8 bayt.

 
x100intraday :

Ve tam olarak neyi yanlış yapıyorum? Sonuçta, her şeyi ayrıntılı olarak çizdi, kaynak kodu genellikle düzenli, zamana göre test edilmiş, en basit! Değişiklikler basit ve açık... Bulanık bir zihin için kayboldum... Bir şeye takıldığımda, ayarlanabilir anahtarı olan bir araba tamircisini bile çağırın...

ayrıntılı olarak bu kodu değişikliklerle ve böylece sadece belirsiz bir şekilde tahmin edebilirsiniz ..

Ve tarih -saat türündeki dizileri gösterge arabellekleriyle bağlamak için ne tür bir runik büyü? tekrar ediyorum:


SetIndexBuffer

Belirtilen gösterge arabelleğini, genel düzeyde bildirilen çift türün tek boyutlu dinamik dizisiyle ilişkilendirir.

Urain zaten cevap verdi. peki, derleyici yemin etmemesi için şöyle bir şey:

 double ExtUpperTimeBuffer[]; //обьявляем
...
ExtUpperTimeBuffer[xz0]=( double )time[xz1]; //присваиваем
...
datetime XZ=( datetime )ExtUpperTimeBuffer[xz2]; //юзаем
 

Evet...

Temelde yeni bir şey gibi görünmüyor, ancak deyim yerindeyse ayaklarının altındaki zemin onaylandı.

Tıbbi tekmeler için hepinize teşekkür ederim. Yapmaya çalışacağım...

 
x100intraday :

Tıbbi tekmeler için hepinize teşekkür ederim.

Ve şansa bir tekme Mutluluk :D
 

array.Add() kitaplık işlevinin normal bir analogu var mı?

Not: Değilse, lütfen bir yıllık uyku hapı sağlayın.

 
x100intraday :

array.Add() kitaplık işlevinin normal bir analogu var mı?

Not: Değilse, lütfen bir yıllık uyku hapı sağlayın.

Tarihi neden indikatörde...... veya çift tip arabelleklerde .... saklamıyorsunuz?

Pek çok nokta ekledim, aksi takdirde ne tür bir bağlantı ortaya çıkıyor.

 double time[ 10 ];

time[ 0 ] = ( double ) D'3000.12.31 23:59' ;
time[ 1 ] = ( double ) D'2030.12.31 23:59' ;

Print ( TimeToString (( datetime )time[ 0 ]));
Print ( TimeToString (( datetime )time[ 1 ]));

Her şey hatasız doğru bir şekilde dönüştürülür

Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
  • www.mql5.com
Основы языка / Типы данных / Вещественные типы (double, float) - Документация по MQL5