エラー、バグ、質問 - ページ 1525 1...151815191520152115221523152415251526152715281529153015311532...3185 新しいコメント 削除済み 2016.03.03 09:48 #15241 Yuri Evseenkov:MT4です。ここでもう一度、グローバル プログラム変数の初期化に関する 特殊性に注目していただきたい。 トレーディング、自動売買システム、ストラテジーテストに関するフォーラム バグ、バグ、質問 スラワ さん 2016.02.24 07:34 キューに入れます。アプリケーションはまだ2時間しか経っていない。一般的に、このような質問はフォーラムで行うべきものです。多くの人が影響を受ける可能性があるからです。勝手に引用して即答しますこれは計画的な行動です。実際、ドキュメントに明示的に 記述されています。アップロードとダウンロードは、すべてを完全に再初期化する必要があります。5では、あなたが正しくお気づきのように、状況は似ています。確かに、歴史的に4ではそうでしたし、新しいMQL4に変更する際に、最初はこの動作を変更しました(エキスパートと同じように、つまり期待通りの動作をさせるために)。しかし、この初期設定に基づく旧来の指標には、多くの疑問が生じました。帰らざるを得なくなった5では、アーキテクチャの関係ですぐにそうなった。パラメータを変更すると、古いパラメータを持つ古いインジケータは破棄され、変更されたパラメータを持つ新しいインジケータが作成されます。 Yuri Evseenkov 2016.03.03 10:12 #15242 Alexey Kozitsyn: ありがとうございます。結論 - ドキュメントからの引用: "... 定義済み関数OnInit(), その目的は、プログラムのすべてのグローバル 変数と静的 変数を正しく初期化することです".そのため、OnInit() では、すべてのグローバル変数や配列をゼロにするか、デフォルトにします。 События клиентского терминала - Программы MQL4 - Справочник MQL4 docs.mql4.com События клиентского терминала - Программы MQL4 - Справочник MQL4 Andriy Voitenko 2016.03.03 11:29 #15243 1.フォームの配列を作成しています。CArrayString list[5];2.<Ctrl+Space>でメソッドリストを呼び出そうとします。list[0]. メソッドのリストが表示されない。こんなんでいいのか? 削除済み 2016.03.03 11:31 #15244 Andrey Voytenko:1.フォームの配列を作成しています。2.コード内のメソッド一覧を<Ctrl+Space>で呼び出そうとするのですが。 メソッドのリストが表示されない。こんなんでいいのか?推測してみる。メソッド/メンバが指定されていないこと以外にもコードにエラーがある場合、必ずしもリストが表示されるとは限りません。試してみました。いや、前提が違う。しかし、何度かコンビにを繰り返し押すことで効果がありました。 Andriy Voitenko 2016.03.03 11:52 #15245 Alexey Kozitsyn:しかし、何度かコンビにを繰り返し押すことで効果がありました。 残念ながら、あなたのレシピではうまくいきません。 削除済み 2016.03.03 12:32 #15246 Andrey Voytenko: 残念ながら、あなたのレシピではうまくいきません。 いや、その通り、コードにエラーがあると、開いているメンバー/メソッドのリストが表示されないんだ。でも、エラーが出なければ...。の後、トラブル。 Andriy Voitenko 2016.03.03 13:23 #15247 1.シンプルなコードです。 uint a=50; int b=-20; Print(fmax(a,b));結果:502.モディファイ入力の追加。input uint a=50; int b=-20; Print(fmax(a,b)); 結果:429496727650の結果を期待。どこが間違ってるんだろう? Vladimir Karputov 2016.03.03 14:01 #15248 Andrey Voytenko:1.シンプルなコードです。 結果:502.モディファイ入力を追加しています。結果:429496727650という結果を期待していたのですが。どこが間違ってるんだろう?fmaxは2つの倍数を比較する。つまり、こんな感じです。//+------------------------------------------------------------------+ //| Test.mq5 | //| Copyright 2016, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2016, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.01" #property script_show_inputs //--- input uint a=50; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //uint a=50; int b=-20; Print("\"uint a=50\" as double:",DoubleToString((double)a,8)); Print("\"int b=-20\" as double:",DoubleToString((double)b,8)); Print(DoubleToString(fmax((double)b,(double)a),8)); } //+------------------------------------------------------------------+と結果が出ました。2016.03.03 16:00:24.821 Test (EURUSD,D1) "uint a=50" as double:50.00000000 2016.03.03 16:00:24.821 Test (EURUSD,D1) "int b=-20" as double:-20.00000000 2016.03.03 16:00:24.821 Test (EURUSD,D1) 50.00000000 ファイル: Test.mq5 2 kb Andriy Voitenko 2016.03.03 14:18 #15249 Karputov Vladimir:fmaxは2つの倍数を比較する。つまり、こんな感じです。MQLでは、暗黙の型変換が宣言され、実行されます。特にuint -> double。問題は、なぜ入力変数 で正しく動作しないかです。 Slava 2016.03.03 14:26 #15250 Andrey Voytenko:1.シンプルなコードです。 結果:502.インプットモディファイヤーを追加する。結果:429496727650という結果を期待していたのですが。どこが間違ってるんだろう?フルコードを教えてください。ここには2つの可能性があり、どちらも間違っています。1.コードは関数の外側で実行されます。2. 入力変数が関数内部で宣言されて いる 1...151815191520152115221523152415251526152715281529153015311532...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
MT4です。ここでもう一度、グローバル プログラム変数の初期化に関する 特殊性に注目していただきたい。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
バグ、バグ、質問
スラワ さん 2016.02.24 07:34
キューに入れます。アプリケーションはまだ2時間しか経っていない。
一般的に、このような質問はフォーラムで行うべきものです。多くの人が影響を受ける可能性があるからです。勝手に引用して即答します
これは計画的な行動です。実際、ドキュメントに明示的に 記述されています。
アップロードとダウンロードは、すべてを完全に再初期化する必要があります。
5では、あなたが正しくお気づきのように、状況は似ています。
確かに、歴史的に4ではそうでしたし、新しいMQL4に変更する際に、最初はこの動作を変更しました(エキスパートと同じように、つまり期待通りの動作をさせるために)。しかし、この初期設定に基づく旧来の指標には、多くの疑問が生じました。帰らざるを得なくなった
5では、アーキテクチャの関係ですぐにそうなった。パラメータを変更すると、古いパラメータを持つ古いインジケータは破棄され、変更されたパラメータを持つ新しいインジケータが作成されます。
ありがとうございます。結論 - ドキュメントからの引用: "... 定義済み関数OnInit(), その目的は、プログラムのすべてのグローバル 変数と静的 変数を正しく初期化することです".
そのため、OnInit() では、すべてのグローバル変数や配列をゼロにするか、デフォルトにします。
1.フォームの配列を作成しています。
CArrayString list[5];
2.<Ctrl+Space>でメソッドリストを呼び出そうとします。
list[0].
メソッドのリストが表示されない。こんなんでいいのか?1.フォームの配列を作成しています。
2.コード内のメソッド一覧を<Ctrl+Space>で呼び出そうとするのですが。
メソッドのリストが表示されない。こんなんでいいのか?推測してみる。メソッド/メンバが指定されていないこと以外にもコードにエラーがある場合、必ずしもリストが表示されるとは限りません。
試してみました。いや、前提が違う。しかし、何度かコンビにを繰り返し押すことで効果がありました。
Alexey Kozitsyn:
しかし、何度かコンビにを繰り返し押すことで効果がありました。
残念ながら、あなたのレシピではうまくいきません。
1.シンプルなコードです。
結果:50
2.モディファイ入力の追加。
結果:4294967276
50の結果を期待。どこが間違ってるんだろう?
1.シンプルなコードです。
結果:50
2.モディファイ入力を追加しています。
結果:4294967276
50という結果を期待していたのですが。どこが間違ってるんだろう?
fmaxは2つの倍数を比較する。つまり、こんな感じです。
と結果が出ました。
fmaxは2つの倍数を比較する。つまり、こんな感じです。
MQLでは、暗黙の型変換が宣言され、実行されます。特にuint -> double。
問題は、なぜ入力変数 で正しく動作しないかです。
1.シンプルなコードです。
結果:50
2.インプットモディファイヤーを追加する。
結果:4294967276
50という結果を期待していたのですが。どこが間違ってるんだろう?
フルコードを教えてください。
ここには2つの可能性があり、どちらも間違っています。
1.コードは関数の外側で実行されます。
2. 入力変数が関数内部で宣言されて いる