初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 503 1...496497498499500501502503504505506507508509510...1503 新しいコメント 削除済み 2016.01.23 08:22 #5021 Vladimir Fionov: 通貨ペアの場合は、リミットを入れればすべて動くが、タイムフレームの場合は、h1インジケータに置いても動かない。https://docs.mql4.com/ru/chart_operations/periodwindowhttps://docs.mql4.com/ru/constants/chartconstants/enum_timeframes戻り値現在のグラフの期間(分)。if(Period() != 60) return(-1); // для H1試してみてください、もしかしたらうまくいくかもしれません。if(Period() != PERIOD_H1) return(-1);または、逆カンマを削除する。 Period - Документация на MQL4 docs.mql4.com Period - Документация на MQL4 Vladimir Fionov 2016.01.23 08:37 #5022 Vladimir Zubov:https://docs.mql4.com/ru/chart_operations/periodwindowhttps://docs.mql4.com/ru/constants/chartconstants/enum_timeframes戻り値現在のグラフの期間(分)。試しに使ってみて、効果を実感してください。 ありがとうございました!!うまくいきました。 Vladimir Fionov 2016.01.23 12:38 #5023 もう一つの質問ですが、#property strictを先頭に追加すると、array out of range in 'Indicator name' (100,41) というエラーが出ますが、これはどうすればいいのでしょうか? Vladimir Karputov 2016.01.23 12:40 #5024 Vladimir Fionov: もう一つ質問ですが、#property strictのインジケータを最初に追加する際、array out of range in 'Indicator name' (100,41) というエラーが出ますが、どう対処すればいいのでしょうか?配列が 範囲外になっているのを修正する必要があります。コード内の問題の特定:100行目、位置42の文字。 Vladimir Karputov 2016.01.23 13:16 #5025 Vladimir Fionov:どうしたんですか?フォーラムにコードを正しく貼り付けるema[]」配列の制限を超えるというエラーを修正する必要があります。変数"limit"の計算が誤っているのでしょう。 Vladimir Fionov 2016.01.23 13:21 #5026 Karputov Vladimir:フォーラムでコードを正しく挿入するema[]」配列の制限を超えるというエラーを修正する必要があります。変数"limit"の計算が誤っているのでしょう。 すみません、コードの挿入についてはわかりませんでしたが、コードそのものについては、#property strictを挿入して、それがなくてもすべてがうまくいくのに、なぜこのようなことが起こるのでしょう Vladimir Karputov 2016.01.23 13:28 #5027 Vladimir Fionov: すみません、コード挿入の件は知りませんでしたが、コード自体は、#property strictを挿入すると発生し、挿入しなくても全て動作するのはなぜでしょうか?MetaEditorのヘルプはご覧になりましたか?また、関数を使った作業、変数のスコープ、ローカル配列のメモリ解放も変更されています。この変更は非常に大きなものとなったため、MQL4プログラムを書く際の古いアプローチとの互換性を最大化するために、新しいプロパティ#property strictを 導入することにしました。MQL4 Wizardを使用して新しいMQL4プログラムを作成する場合、このプロパティは常にテンプレートに追加されます。といった具合に。コンパイラの違いによる一覧表。旧MQL4コンパイラ新MQL4コンパイラ新しいMQL4コンパイラと#property strictの関係init()、start()、deinit()の各エントリポイントは、任意のパラメータと任意の戻り値の型を持つことができる。init()、start()、deinit()は互換性のために保持されています。そして、新しいOnInit(),OnStart(),OnCalculate(),OnTick(),OnTimer(),OnChartEvent(),OnTester(),OnDeinit() はそれらの署名と完全に一致していなければなりません。同じinit()関数の戻り値は実行中のサブシステムでは一切解析されませんinit()関数とOnInit()関数の戻り値は、実行中のサブシステムでは一切解析されませんOnInit()から0以外の値を返すと、エキスパートまたはインジケータが停止し、プログラムがアンロードされる変数名には、特殊文字やフルストップを含む、ほぼすべての文字が使用可能です(予約語を除く)。変数名には、特殊文字やフルストップは使用できません。予約 語のリストが拡張され、short, long, const などの一般的な単語は名乗れなくなりました。同じ変数のスコープは、宣言から(ネストされたブロック内であっても)関数の終わりまでです。同じ変数の可視範囲 - 宣言から、その変数が宣言されているブロックの終わりまで。すべての変数(グローバル、ローカルとも)をゼロで暗黙的に初期化する。同グローバル変数のみの初期化。ローカル変数から、文字列のみ暗黙のうちに初期化されるローカル配列は,関数から離れると解放されません.ローカル配列は,関数から抜けるときに解放されます.ローカル配列は終了時に解放される{}。Array out of range "エラーが 発生しても、クリティカルエラーにはならない*。同じです。ただし、このエラーが重要な構造体の配列やクラスは除きます。「Array out of range " は重大なエラーで、プログラムを停止 させます。構造・クラスがない構造があり、クラスが ある。追加のデータ型が表示されます。同じ文字列 - 1バイト。datetime - 32ビット整数定義済み変数 Volume の型は double です。文字列 - unicode。datetime - 64ビット整数Volume は、long 型の定義済み変数である。同じArrayCopyRates() は、配列 double[][6] への仮想的なコピーを生成する。ArrayCopyRates() は、MqlRates[] 配列への仮想的なコピーを生成する。互換性を保つため、配列 double[][6] へのコピーは残されていますが、このコピーは仮想ではなく、現実のものです。また関数は、型があっても値を返さないことがあります。このため、コンパイラは関数の末尾に自動的にreturn(0)を挿入しています。同じです。どのような型の関数も必ず値を返さなければならない同時に開くファイル数 - 32同時に開いているファイル数 - 64同じファイルは常に共有モードで開かれる **。共有モードはFILE_SHARE_READとFILE_SHARE_WRITEで明示的に宣言する必要があります。同じ入力ウィンドウのスクリプトには、外部 変数名が表示されますshow_inputs モードのスクリプトでは、extern変数と入力 変数の名前が入力パラメーターウィンドウに表示されます。show_inputs モードのスクリプトでは、入力ウィンドウにextern および入力変数 名の代わりに文字列コメントが表示されます。* Array out of range" エラーに特別な注意を払う必要があります - 多くの古いカスタムインジケーターは、新しいコンパイラーでチャート上で実行すると、strict モードでこのエラーを発生します。原因を突き止め、解決することが望まれます。** 新しいMQL4とMQL5では、FILE_SHARE_READとFILE_SHARE_WRITEフラグがファイル共有モードを担当します。 Препроцессор - Документация на MQL4 docs.mql4.com Препроцессор - Документация на MQL4 エラー、バグ、質問 削除済み 2016.01.23 13:51 #5028 Vladimir Fionov: どうしたんですか? int idx; int counted = IndicatorCounted(); if (counted < 0) return (-1); if (counted > 0) counted--; int limit = Bars - counted; if(counted == 0) limit-=1; このような行を追加してみてください。 削除済み 2016.01.23 14:14 #5029 Vladimir Fionov:ご迷惑でしたら申し訳ございませんが、現在このようなエラーが発生しています。39位 同じエラー、配列が範囲外? Vladimir Fionov 2016.01.23 14:28 #5030 Vladimir Zubov: 同じエラー、配列が範囲外? はい 1...496497498499500501502503504505506507508509510...1503 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
通貨ペアの場合は、リミットを入れればすべて動くが、タイムフレームの場合は、h1インジケータに置いても動かない。
https://docs.mql4.com/ru/chart_operations/periodwindow
https://docs.mql4.com/ru/constants/chartconstants/enum_timeframes
戻り値現在のグラフの期間(分)。
試してみてください、もしかしたらうまくいくかもしれません。
または、逆カンマを削除する。
https://docs.mql4.com/ru/chart_operations/periodwindow
https://docs.mql4.com/ru/constants/chartconstants/enum_timeframes
戻り値現在のグラフの期間(分)。
試しに使ってみて、効果を実感してください。
もう一つ質問ですが、#property strictのインジケータを最初に追加する際、array out of range in 'Indicator name' (100,41) というエラーが出ますが、どう対処すればいいのでしょうか?
どうしたんですか?
すみません、コード挿入の件は知りませんでしたが、コード自体は、#property strictを挿入すると発生し、挿入しなくても全て動作するのはなぜでしょうか?
MetaEditorのヘルプはご覧になりましたか?
また、関数を使った作業、変数のスコープ、ローカル配列のメモリ解放も変更されています。この変更は非常に大きなものとなったため、MQL4プログラムを書く際の古いアプローチとの互換性を最大化するために、新しいプロパティ#property strictを 導入することにしました。MQL4 Wizardを使用して新しいMQL4プログラムを作成する場合、このプロパティは常にテンプレートに追加されます。
といった具合に。
コンパイラの違いによる一覧表。
旧MQL4コンパイラ
新MQL4コンパイラ
新しいMQL4コンパイラと#property strictの関係
init()、start()、deinit()の各エントリポイントは、任意のパラメータと任意の戻り値の型を持つことができる。
init()、start()、deinit()は互換性のために保持されています。
そして、新しいOnInit(),OnStart(),OnCalculate(),OnTick(),OnTimer(),OnChartEvent(),OnTester(),OnDeinit() はそれらの署名と完全に一致していなければなりません。
同じ
init()関数の戻り値は実行中のサブシステムでは一切解析されません
init()関数とOnInit()関数の戻り値は、実行中のサブシステムでは一切解析されません
OnInit()から0以外の値を返すと、エキスパートまたはインジケータが停止し、プログラムがアンロードされる
変数名には、特殊文字やフルストップを含む、ほぼすべての文字が使用可能です(予約語を除く)。
変数名には、特殊文字やフルストップは使用できません。
予約 語のリストが拡張され、short, long, const などの一般的な単語は名乗れなくなりました。
同じ
変数のスコープは、宣言から(ネストされたブロック内であっても)関数の終わりまでです。
同じ
変数の可視範囲 - 宣言から、その変数が宣言されているブロックの終わりまで。
すべての変数(グローバル、ローカルとも)をゼロで暗黙的に初期化する。
同
グローバル変数のみの初期化。ローカル変数から、文字列のみ暗黙のうちに初期化される
ローカル配列は,関数から離れると解放されません.
ローカル配列は,関数から抜けるときに解放されます.
ローカル配列は終了時に解放される{}。
Array out of range "エラーが 発生しても、クリティカルエラーにはならない*。
同じです。ただし、このエラーが重要な構造体の配列やクラスは除きます。
「Array out of range " は重大なエラーで、プログラムを停止 させます。
構造・クラスがない
構造があり、クラスが ある。追加のデータ型が表示されます。
同じ
文字列 - 1バイト。
datetime - 32ビット整数
定義済み変数 Volume の型は double です。
文字列 - unicode。
datetime - 64ビット整数
Volume は、long 型の定義済み変数である。
同じ
ArrayCopyRates() は、配列 double[][6] への仮想的なコピーを生成する。
ArrayCopyRates() は、MqlRates[] 配列への仮想的なコピーを生成する。互換性を保つため、配列 double[][6] へのコピーは残されていますが、このコピーは仮想ではなく、現実のものです。
また
関数は、型があっても値を返さないことがあります。このため、コンパイラは関数の末尾に自動的にreturn(0)を挿入しています。
同じです。
どのような型の関数も必ず値を返さなければならない
同時に開くファイル数 - 32
同時に開いているファイル数 - 64
同じ
ファイルは常に共有モードで開かれる **。
共有モードはFILE_SHARE_READとFILE_SHARE_WRITEで明示的に宣言する必要があります。
同じ
入力ウィンドウのスクリプトには、外部 変数名が表示されます
show_inputs モードのスクリプトでは、extern変数と入力 変数の名前が入力パラメーターウィンドウに表示されます。
show_inputs モードのスクリプトでは、入力ウィンドウにextern および入力変数 名の代わりに文字列コメントが表示されます。
* Array out of range" エラーに特別な注意を払う必要があります - 多くの古いカスタムインジケーターは、新しいコンパイラーでチャート上で実行すると、strict モードでこのエラーを発生します。原因を突き止め、解決することが望まれます。
** 新しいMQL4とMQL5では、FILE_SHARE_READとFILE_SHARE_WRITEフラグがファイル共有モードを担当します。
どうしたんですか?
ご迷惑でしたら申し訳ございませんが、現在このようなエラーが発生しています。
39位
同じエラー、配列が範囲外?