初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 532

 
-Aleks-:
四捨五入で必要な秒数を確保する--四捨五入が問題なのだ。

ダッ

datetime Day00=86400*(time[n]/86400);//начало дня
であり、一日の始まりへの丸めがあります。86400=24*60*60
 
-Aleks-:

使い方がわからない。

2つ目の値は「MqlDateTime&dt_struct// 値を取るための構造体」が必要で、このMqlDateTimeの使い方がよくわかりません。

時間がある。時間には、年、月、日、時、分、秒などのパラメータがあります。関数TimeToStruct()を呼び出すと、時間がこれらの要素に分解される。そして、例えば、時間、分、秒をゼロにすれば、一日の始まりがわかります。

MqlDateTimeは、int、boolなどと同じようにデータ型です。これは単なる複合型であり、そのフィールド(時間、分、秒...)にアクセスするためには、ポイントを使用する必要があるのです。例:dt_struct.hour - 時間値。構造物について詳しくは、https://www.mql5.com/ru/docs/basis/types/classes

Документация по MQL5: Основы языка / Типы данных / Структуры и классы
Документация по MQL5: Основы языка / Типы данных / Структуры и классы
  • www.mql5.com
Основы языка / Типы данных / Структуры и классы - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
ログブックの順番は 何も変わらないので、このコメントは何を意味するのか

 
Aleksey Lebedev:

あの

と、冒頭の切り上げがあります。86400=24*60*60
あなたの式によると、我々は現在のバーとリモート間の日数を取得しますが、これらの日は条件付きです、それは今日の9時、前日1時間である可能性があり、次に秒の差は122400 、これは1.42日です - 1日に丸めると、必要性は2であること。
 
Alexey Kozitsyn:

時間はある。時間には、年、月、日、時、分、秒などのパラメータがあります。TimeToStruct()関数を 呼び出すと、時間をこれらの要素に分解することができます。そして、例えば、時間、分、秒をゼロにすれば、一日の始まりがわかります。

MqlDateTimeは、int、boolなどと同じようにデータ型です。これは単なる複合型であり、そのフィールド(時間、分、秒...)にアクセスするためには、ポイントを使用する必要があるのです。例:dt_struct.hour - 時間値。構造物について詳しくは、https://www.mql5.com/ru/docs/basis/types/classes

そして、このゼロ調整はどのように行うのでしょうか。
 
-Aleks-:
あなたの式によると、我々は現在のバーとリモートの間の日数を取得しますが、これらの日は、それが現在の日9時、前日の1時間かもしれない、すなわち、条件付きです。 その後、秒の差は1.42日に等しい122400になります - 我々は2であろうものを必要としながら1日に丸められたとき、"。

23h+24h+9h=2日8h...となり、1日分損したことになる。この数式が必要ならいらない。

現在の時間枠の各グラフで計算したいのですが。計算には、上のタイムフレームの日付(日数)を知る必要があります。ポイントは、各バーにおいて、現在のタイムフレームでバーが開く瞬間に、上位TFの最大 価格を知ることです。

もう一度。
datetime Day00=86400*(time[n]/86400);//начало дня для time[n]



そして、あなたは構造を言う...:)

 
Aleksey Lebedev:

23h+24h+9h=2日8h...となり、1日分損したことになる。この数式が必要な方には必要ないでしょう。

もう一度。



そして、あなたは構造を言う...:)

なぜ23時間なのか......1時間と書きましたが、ポイントは変わりません。

24(前日-昨日1時間)+24(昨日-今日1時間)+8(今日1時間後-マイナス1時間)=56/24=2.33だから、2日分できたことになりますよね?

 
-Aleks-:

なぜ23時間なのか......1時間と書いたが本質は変わらない

24(前日-昨日1時)+24(昨日-今日1時)+8(今日1時以降-マイナス1時)=56/24=2,33なので、2日ということになりますが、いかがでしょうか?

一昨日の23時間+α

昨日24時間+α

9h today=

2日 8h=2,(33)days

それが正しいやり方だと思います。

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

気にしないでください、その必要はありません)
 
Aleksey Lebedev:

一昨日23時間+α

24h 昨日+α

9h today=

2日 8h=2,(33)days

正しくは、このような感じです。

気にしないでください、その必要はありません)

さて、この日は9時ではなく、19時だと仮定してみましょう。

24(一昨日)+24(昨日-今日1時間)+18(今日1時間後-マイナス1時間)=66/24=2.75 つまり3日になるのですが、納得ですか?

まるで毎日レンジが変わっていないかのように、日中の計算で2日、3日と出てしまうのです。

バリアント

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

また、現在のバーが1時間で、計算されたバーが23時間だとすると、この場合、計算結果は1になるはずですが、0になってしまうのも困りものです。
 
-Aleks-:
また、現在のバーが1時間、推定バーが23時間と仮定した場合、計算結果が0となり、1となるはずですが、これもうまくいきません。

1になります。どちらの時刻もまず1日に切り上げられ、その後引き算されます。

理由: