Данная статья, построенная в форме справочника по функциям MQL4, призвана помочь переходу с MQL4 на MQL5. Для каждой функции языка MQL4 приведено описание и представлен способ ее реализации на MQL5, что позволит вам значительно ускорить перевод своих программ с MQL4 на MQL5. Для удобства функции разбиты на группы, как в документации по MQL4.
知ることになる)その後、ハッキング
MQL4から MQL5へ プログラムを移行しています。
私はこのエラーに直面しました。
m30までのタイムフレームでは、Period()の値は正しいです。
2019.05.22 17:45:38.628 TestStat (GBPUSD,M15) 4854 Period()=15
2019.05.22 17:46:08.267 TestStat (GBPUSD,M30) 4854 Period()=30
タイムフレームH1からは、理解しがたい値が表示されます。
2019.05.22 17:31:07.446 TestStat (GBPUSD,H1) 4854 Period()=16385
。 2019.05.22 17:46:39.362 TestStat (GBPUSD,H4) 4854 Period()=16388。
2019.05.22 17:46:55.552 TestStat (GBPUSD,D1) 4854 Period()=16408
2019年5月21日付の端末版ビルド2057。
ありがとうございます。
説明文に
期間
現在のチャートのタイムフレーム値を返します。
ENUM_TIMEFRAMESPeriod()。
戻り値
現在のチャートのタイムフレーム値を保持する_Period 変数の内容。Value には ENUM_TIMEFRAMES の列挙値のいずれ かを指定することができる。
こちらもご覧ください
周期秒、チャート周期、日付と 時刻、オブジェクトの可視性
=================
それがあまりできていない。説明文に正しく記載されていること。フォーラムで原因を探すのはやめたほうがいい。
Period() は、次のように、現在のタイムフレームの値を出力しないことが判明しました:値は 、列挙型 ENUM_TIMEFRAMESの値のいずれかであることが できます。
まったく別のものです。
開発者向けの言語表記を修正してほしい。
ArrayResize capacity MT5(build 2057)で以下のような結果が出ています。
結果
説明
現在のチャートのタイムフレーム値を格納する_Period 変数の内容。 ENUM_TIMEFRAMES列挙の 値のいずれかを 指定することができる。
これがうまくできていない。説明文に正しく記載されていること。フォーラムで原因を探すのはやめたほうがいい。
だから、この値が分単位の期間と等しいとはどこにも書かれていない(4分の1であったように)。
https://www.mql5.com/ru/articles/81
そこからリンク記事が始まります。
だから、この値が(4分の1であったように)分単位の期間と等しいとはどこにも書いていない。
https://www.mql5.com/ru/articles/81
リンク先の記事はここからです。
Value can be one of ENUM_TIMEFRAMESenumeration values という言語記述がある。
さらに下の言語説明をご覧ください。
グラフ期間
すべての定義済みチャートピリオドには一意の識別子があります。PERIOD_CURRENT 識別子は、mql5-program が動作しているチャートの現在の期間を意味します。
enum_timeframes
識別子
商品説明
PERIOD_CURRENT
当 期
PERIOD_M1
1分
PERIOD_M2
2分
PERIOD_M3
3分
PERIOD_M4
4分
PERIOD_M5
5分
PERIOD_M6
6分
PERIOD_M10
10分
PERIOD_M12
12分
PERIOD_M15
15分
PERIOD_M20
20分
PERIOD_M30
30分
PERIOD_H1
1時間
PERIOD_H2
2時間
PERIOD_H3
3時間
PERIOD_H4
4時間
PERIOD_H6
6時間
PERIOD_H8
8時間
PERIOD_H12
12時間
PERIOD_D1
1日
PERIOD_W1
1週間
PERIOD_MN1
1ヶ月
======================
そして、説明のどこにも、この値が秒単位であることは書かれていません。
説明文が全てを物語っているはずです。
他の記事も調べないといけないとなると、それはもう大変です。
コードを提供してくれたTheXpertに 改めて感謝します。
ArrayResize capacity MT5(build 2057)で以下のような結果が出ています。
1.最初のArrayResizeは非常に重要で、size + reserved_sizeを考慮して本当にメモリを割り当て、容量を設定します。
2.以後、reserved_size の値を変更して ArrayResize を実行しても、それぞれ割り当てられたメモリ量と容量に影響はない。
3 メモリの新規確保は容量を超えた場合のみ行われ、その場合は再度size + reserved_sizeで確保されたメモリ量を決定し、新たな容量を設定します。
4.reserved_size < 0 の場合、予約されたメモリをサイズ分解放する。
そして、説明のどこにも、この値が秒単位であることは書かれていません。
だから、秒単位じゃないんです...。
Value can be one of ENUM_TIMEFRAMESenumeration valuesという言語記述がある。
言語の説明でさらに詳しくご覧ください。
グラフ期間
すべての定義済みチャート期間には一意の識別子があります。PERIOD_CURRENT 識別子は、mql5 プログラムが動作しているチャートの現在の期間を意味します。
enum_timeframes
======================
そして、この値が秒単位であることは説明のどこにも書かれていない。
説明文が全てを物語っているはずです。
そして、他の記事にも目を通さなければならないときは、残念なことです。
これが秒単位の値だと誰が言ったのですか?
Value can be one of enumeration ENUM_TIMEFRAMES... という言語記述がある。
言語の説明でさらに詳しくご覧ください。
グラフ期間
すべての定義済みチャートピリオドには一意の識別子があります。PERIOD_CURRENT 識別子は、mql5 プログラムが実行されているチャートの現在の期間を表 します。
enum_timeframes
識別子
商品説明
PERIOD_CURRENT
当 期
PERIOD_M1
1分
PERIOD_M2
2分
PERIOD_M3
3分
PERIOD_M4
4分
PERIOD_M5
5分
PERIOD_M6
6分
PERIOD_M10
10分
PERIOD_M12
12分
PERIOD_M15
15分
PERIOD_M20
20分
PERIOD_M30
30分
PERIOD_H1
1時間
PERIOD_H2
2時間
PERIOD_H3
3 時間
PERIOD_H4
4 時間
PERIOD_H6
6 時間
PERIOD_H8
8 時間
PERIOD_H12
12時間
PERIOD_D1
1日
PERIOD_W1
1週間
PERIOD_MN1
1ヶ月
======================
そして、この値が秒単位であることは説明のどこにも書かれていない。
説明文が全てを物語っているはずです。
また、他の記事をスルーしてしまうと、それはそれで残念なことになります。
列挙値には決して依存してはならない。
PeriodSeconds()を使用する。