Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 532

 
-Aleks- :
Yuvarlanması gereken saniyeler alacağız - sorun yuvarlama.

böyle

 datetime Day00= 86400 *(time[n]/ 86400 ); //начало дня
ve günün başlangıcına bir yuvarlama var. 86400=24*60*60
 
-Aleks- :

Evet giremiyorum, nasıl kullanılır.

İşte gerekli ikinci değer " MqlDateTime&    dt_struct        // değerleri kabul etmek için yapı ", ancak bu MqlDateTime'ın nasıl kullanılacağını anlamıyorum.

Zaman var. Zamanın şu gibi parametreleri vardır: yıl, ay, gün, saat, dakika, saniye vb. TimeToStruct() işlevini çağırarak, zamanı bu bileşenlere ayırırsınız. Ayrıca, örneğin, saatleri, dakikaları ve saniyeleri sıfırlayabilirsiniz - günün başlangıcını yapın.

MqlDateTime, tıpkı int, bool vb. gibi bir veri türüdür. Sadece bileşik bir tür, yani. alanlarına (saat, dakika, saniye...) erişmek için bir nokta kullanmanız gerekir. Örneğin: dt_struct.hour saat değeridir. Yapılar hakkında daha fazla bilgi https://www.mql5.com/ru/docs/basis/types/classes.

Документация по MQL5: Основы языка / Типы данных / Структуры и классы
Документация по MQL5: Основы языка / Типы данных / Структуры и классы
  • www.mql5.com
Основы языка / Типы данных / Структуры и классы - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Günlükteki sıradaki bu yorum, hiçbir şeyi değiştirmediği için atlandı ne anlama geliyor?

 
Aleksey Lebedev :

böyle

ve günün başlangıcına bir yuvarlama var. 86400=24*60*60
Formülünüze göre, mevcut çubuk ile uzak olan arasındaki gün sayısını alacağız, ancak bu günler koşullu, yani. geçerli günün 9 saati ve önceki günün 1 saati olabilir, o zaman saniye cinsinden fark 122400 olur, bu da 1.42 güne eşittir - yuvarlarken 1 gün olur, ancak 2 olmalıdır.
 
Alexey Kozitsyn :

Zaman var. Zamanın şu gibi parametreleri vardır: yıl, ay, gün, saat, dakika, saniye vb. TimeToStruct() işlevini çağırarak, zamanı bu bileşenlere ayrıştırırsınız. Ayrıca, örneğin, saatleri, dakikaları ve saniyeleri sıfırlayabilirsiniz - günün başlangıcını yapın.

MqlDateTime, tıpkı int, bool vb. gibi bir veri türüdür. Bu sadece bir bileşik tiptir, yani. alanlarına (saat, dakika, saniye...) erişmek için bir nokta kullanmanız gerekir. Örneğin: dt_struct.hour saat değeridir. Yapılar hakkında daha fazla bilgi https://www.mql5.com/ru/docs/basis/types/classes.

Ve, üzgünüm, bu sıfırlamayı nasıl yapacağım?
 
-Aleks- :
Formülünüze göre, mevcut çubuk ile uzak olan arasındaki gün sayısını alacağız, ancak bu günler koşullu, yani. geçerli günün 9 saati ve önceki günün 1 saati olabilir, o zaman saniye cinsinden fark 122400 olur, bu da 1.42 güne eşittir - yuvarlarken 1 gün olur, ancak 2 olmalıdır.

kayıp bir gün, 23h + 24h + 9h = 2 gün 8h... Gerekli ise bu formüle gerek yoktur:

Mevcut zaman çerçevesinin her grafiğinde bir hesaplama yapmam gerekiyor. Hesaplamak için üst TF'nin (gün) tarihini bilmeniz gerekir. Yukarıdaki kodu ekledim - nokta, her bir çubukta, mevcut TF'de çubuğun açıldığı anda üst TF'nin maksimum fiyatını bilmektir.

Tekrarlıyorum:
 datetime Day00= 86400 *(time[n]/ 86400 ); //начало дня для time[n]



Ama yine de diyorsun - yapılar .. :)

 
Aleksey Lebedev :

kayıp bir gün, 23h + 24h + 9h = 2 gün 8h... Gerekli ise bu formüle gerek yoktur:

Tekrarlıyorum:



Ama yine de diyorsun - yapılar .. :)

Neden 23 saatin var - 1 saat yazdım ama öz değişmiyor

24 (dünden önceki gün - dün saat birde) + 24 (dün - bugün saat birde) + 8 (bugün bir saatten sonra - eksi bir saat) \u003d 56/24 \u003d 2.33 yani. iki gün çıktı anlaştık mı?

 
-Aleks- :

Neden 23 saatin var - 1 saat yazdım ama öz değişmiyor

24 (dünden önceki gün - dün saat birde) + 24 (dün - bugün saat birde) + 8 (bugün bir saatten sonra - eksi bir saat) \u003d 56/24 \u003d 2.33 yani. iki gün çıktı anlaştık mı?

Dünün başlangıcından 23 saat önce+

24 saat dün+

bugün 9 saat=

2 gün 8h=2,(33) gün

Bu doğru, şöyle bir şey:

 int DayN=time[ 0 ]/ 86400 -time[ 163 ]/ 86400 ;

Önemli değil, gerekli değil)
 
Aleksey Lebedev :

Dünün başlangıcından 23 saat önce+

24 saat dün+

bugün 9 saat=

2 gün 8h=2,(33) gün

Bu doğru, şöyle bir şey:

Önemli değil, gerekli değil)

Şimdi bugün saat 9 değil de 19 olduğunu düşünelim.

24 (dünden önceki gün - dün saat birde) + 24 (dün - bugün saat birde) + 18 (bugün bir saatten sonra - eksi bir saat) \u003d 66/24 \u003d 2.75 yani. üç gün çıktı katılıyorum?

Günlük aralık nasıl değişirse değişsin ve gün içindeki hesaplama 2 veya 3 gün veriyor - sorun bu.

Seçenek

  int DayN=time[ 0 ]/ 86400 -time[ 163 ]/ 86400 ;

Mevcut çubuğun 1 saat olduğunu ve hesaplananın 23 saat olduğunu hayal edersek de uygun değildir, bu durumda hesaplamanın sonucu sıfır olacaktır, ancak 1 olmalıdır.
 
-Aleks- :
Mevcut çubuğun 1 saat olduğunu ve hesaplananın 23 saat olduğunu hayal edersek seçenek de uygun değildir, bu durumda hesaplamanın sonucu sıfır olacaktır, ancak 1 olmalıdır.

1 olacak, her iki zaman da önce bir tam güne yuvarlanır, sonra çıkarılır.