記事"MetaTrader 5のマルチ通貨モードの実行"についてのディスカッション - ページ 3 123456 新しいコメント Yedelkin 2011.03.03 22:11 #21 Lizar:16進数のロジックはどこでも同じです。数体系についてはこちらを ご覧ください。そこでは位置数システムについて読むことができ、16進数や2進数への言及を見ることができる。そこには、システムからシステムへの変換の例がもっとある。すべてのビット演算は2進法を対象としています。MQL5でのビット演算についてはこちら。 これらの記事は、すでに何を言っているのかわかっているときに読むとよいでしょう :) 例えば、あなたは列挙で接頭辞 "0x "を使用しています。私が理解する限り、これは16進数が記述されていることを意味し、"(flag_event & CHARTEVENT_NEWBAR_M1)!=0" という式は "bitwise AND" 演算を使用しています。ビット演算は2進法を想定していると書かれていますね。では、(2進法用の)&演算子は16進数とどのように関係するのでしょうか? もう一つの質問:私の理解が正しければ、「(flag_event & CHARTEVENT_NEWBAR_M1)!=0」という式は「flag_event !"= CHARTEVENT_NEWBAR_M1」という式と等価です。これは正しいのでしょうか?もしそうなら、なぜビット演算を使うのですか? --- 2011.03.03 22:15 #22 Вы же пишите, что побитовые операции предназначены для двоичной системыCPU内部の数値は2進数だ。だから、頭の中で255やFFを「見て」、それを8や0x00000100と比較したとしても、違いはない。イェデルキン:私の理解が正しければ、"(flag_event & CHARTEVENT_NEWBAR_M1)!=0" という表現は、"flag_event !"= CHARTEVENT_NEWBAR_M1" という表現と同じです。これは正しいのでしょうか?もしそうなら、なぜビット演算を使うのですか? しかし、ビット演算は比較よりも応用範囲が広く、一般的です。特に、定数を扱うときにはビット演算を使うのが古典的な振る舞いとなっています。 Yedelkin 2011.03.03 22:27 #23 sergeev:CPU内部の数字はバイナリなんだ。ですから、255やFFを頭の中で「見て」、8や0x00000100と比較したとしても、違いはありません。 違いは用語的なものだ。しかし、あなたの言葉から、プログラマーにとってはどうでもいいことだと理解しました。 セルゲイエフ: しかし、ビット演算は単なる比較よりも応用範囲が広く、より一般的なものです。特に、定数を扱うときにはビット演算を使うのが古典的な振る舞いとなっています。 なるほど!つまり、ビット演算に少し慣れていなくても、比較演算子を使って式を書き換えても大丈夫ということですね。分かりやすく説明してくれてありがとう! Konstantin Gruzdev 2011.03.03 22:51 #24 Yedelkin:この手の記事は、すでに内容を知っているときに読むといい)例えば、あなたは列挙に接頭辞 "0x "を使っています。私が理解する限り、これは16進数が書かれていることを意味し、「(flag_event & CHARTEVENT_NEWBAR_M1)!=0」という式は「ビットごとのAND演算」を使用しています。ビット演算は2進法を想定していると書かれていますね。では、(2進法用の)&演算子と16進数との関係はどうなるのでしょうか?これらのシステムはすべて、視覚的に異なる方法で数字を表現しているだけなので、ある数字が10であれば、それはどこでも10なのです。カンプの場合、どのようなシステムで数字を書こうと、すべての数字は2進数に変換される。私が書くこれらの文字でさえ、2進数に変換される。他のシステムでは、数字は主に分かりやすくするため、あるいは習慣的にラベルを付ける。まあ、賢く見せるためにそうする人もいる。この場合、16進数が使われるのは、文章をコンパクトにするため、まあ、わかりやすくするためだ。16進数がどのように形成されるかを知ることで、見やすさが生まれる。もう一つの質問:私の理解が正しければ、"(flag_event & CHARTEVENT_NEWBAR_M1)!"=0"という表現は、"flag_event !"= CHARTEVENT_NEWBAR_M1"という表現と等価です。これは正しいのでしょうか?もしそうなら、なぜビット演算を使うのですか?いいえ、必ずしもそうとは限りません。flag_eventに何が書かれているかによります。CHARTEVENT_NEWBAR_M1だけが flag_event に書き込まれた場合、flag_event = CHARTEVENT_NEWBAR_M1 です。CHARTEVENT_NEWBAR_M1|CHARTEVENT_NEWBAR_M5 がflag_event に書き込ま れた場合、flag_event != CHARTEVENT_NEWBAR_M1 となります。しかし、どちらの場合も条件 (flag_event & CHARTEVENT_NEWBAR_M1)=0が満たされます 。もし、flag_event 、CHARTEVENT_NEWBAR_M5と書くと 、flag_event != CHARTEVENT_NEWBAR_M1 となります。 しかし、 (flag_event & CHARTEVENT_NEWBAR_M1)=0 となります。これらのトリックを理解するには、数システムとビット演算を理解する必要がある。そうでなければ死んでしまう。 Konstantin Gruzdev 2011.03.03 22:55 #25 Yedelkin:なるほど!つまり、ビット演算を使うのはちょっと珍しいとしても、比較演算子を使って式を書き換えても大丈夫ということですね?ご説明ありがとうございます! いつでも置き換えることはできますが、追加の計算が必要になるかもしれません。この場合は注意してください :)。 Yedelkin 2011.03.03 23:19 #26 Lizar: いつでも交換することはできますが、追加の計算が必要になるかもしれません。この場合は注意してください :)。 わかりました!もう一つ質問がある。16進数を書くときに2の位を使いますが、2の位を使うことに意味があるのでしょうか、それとも習慣の問題なのでしょうか?例えば、0x00000003, 0x00000009, などの組み合わせは使えますか? Konstantin Gruzdev 2011.03.03 23:31 #27 Yedelkin:オーケー!もう一つ質問です。16進数を書くとき、2進数を使いますよね。 2進数を使うことに意味があるのでしょうか、それとも習慣の問題なのでしょうか?例えば、0x00000003、0x00000009などの組み合わせは使えるのでしょうか?いいえ、これはビット演算の 使用によるものです。スパイでは(flag_eventで)1つの数値に複数の数値(イベント)を追加し、EAでは1つの数値から複数の数値を取り出し、スパイが送信したイベントを確認します。その逆もしかり。あ、よく読んでなかった。そうです。ただし、1つの数字がすべてのイベントに当てはまるとは限りません。2進数を使っているのは、2進数を16進数で書いているからです。各ビットは異なるイベントを表します。 Pawel Wojnarowski 2011.03.14 22:16 #28 脱帽だよ、諸君 :)真の傑作だ。シンプルかつエレガントでパワフルなソリューションだ。本当にありがとう、コンスタンチン。) Artapov Alexandr 2011.03.24 18:01 #29 デフォルトでは、price[rates_total-1]は最後の未完了バーの終値に等しく、これは最後の買値に等しい。 アスク価格を強制的に取得したい場合は、例えばこの行を以下のように置き換えてください。この関数は、価格イベントだけでなく、例えば次のようなイベントも Expert Advisor に渡すことができますか?例えば、インジケーターのイベントや、他のインストゥルメントからのそれらの組み合わせ/バリエーション、つまり、シグナルがすでにそこで受信されているかのように。もし可能であれば、どのように実装すればよいでしょうか。ご回答ありがとうございました。 Konstantin Gruzdev 2011.03.24 18:19 #30 artall:デフォルトでは、price[rates_total-1]は最後の未完了バーの終値に等しく、これは最後の買値に等しい。アスク価格を強制的に取得したい場合は、例えばこの行を以下のように置き換えます。この関数は、価格イベントだけでなく、例えば以下のようなイベントも Expert Advisor に渡すことができますか?例えば、インジケータのイベントや、他のインストゥルメントからのそれらの組み合わせ/バリエーション、つまり、シグナルがすでにそこで受信されているかのように。もし可能であれば、どのように実装すればよいでしょうか。回答ありがとうございます。 この目的のためには、インジケーター自体に標準関数EventChartCustomを 適切な場所に埋め込んで使用するのがよいでしょう。 123456 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
16進数のロジックはどこでも同じです。数体系についてはこちらを ご覧ください。そこでは位置数システムについて読むことができ、16進数や2進数への言及を見ることができる。そこには、システムからシステムへの変換の例がもっとある。
すべてのビット演算は2進法を対象としています。MQL5でのビット演算についてはこちら。
これらの記事は、すでに何を言っているのかわかっているときに読むとよいでしょう :)
例えば、あなたは列挙で接頭辞 "0x "を使用しています。私が理解する限り、これは16進数が記述されていることを意味し、"(flag_event & CHARTEVENT_NEWBAR_M1)!=0" という式は "bitwise AND" 演算を使用しています。ビット演算は2進法を想定していると書かれていますね。では、(2進法用の)&演算子は16進数とどのように関係するのでしょうか?
もう一つの質問:私の理解が正しければ、「(flag_event & CHARTEVENT_NEWBAR_M1)!=0」という式は「flag_event !"= CHARTEVENT_NEWBAR_M1」という式と等価です。これは正しいのでしょうか?もしそうなら、なぜビット演算を使うのですか?
Вы же пишите, что побитовые операции предназначены для двоичной системы
CPU内部の数値は2進数だ。
だから、頭の中で255やFFを「見て」、それを8や0x00000100と比較したとしても、違いはない。
私の理解が正しければ、"(flag_event & CHARTEVENT_NEWBAR_M1)!=0" という表現は、"flag_event !"= CHARTEVENT_NEWBAR_M1" という表現と同じです。これは正しいのでしょうか?もしそうなら、なぜビット演算を使うのですか?
CPU内部の数字はバイナリなんだ。
ですから、255やFFを頭の中で「見て」、8や0x00000100と比較したとしても、違いはありません。
違いは用語的なものだ。しかし、あなたの言葉から、プログラマーにとってはどうでもいいことだと理解しました。
しかし、ビット演算は単なる比較よりも応用範囲が広く、より一般的なものです。特に、定数を扱うときにはビット演算を使うのが古典的な振る舞いとなっています。
なるほど!つまり、ビット演算に少し慣れていなくても、比較演算子を使って式を書き換えても大丈夫ということですね。分かりやすく説明してくれてありがとう!
この手の記事は、すでに内容を知っているときに読むといい)
例えば、あなたは列挙に接頭辞 "0x "を使っています。私が理解する限り、これは16進数が書かれていることを意味し、「(flag_event & CHARTEVENT_NEWBAR_M1)!=0」という式は「ビットごとのAND演算」を使用しています。ビット演算は2進法を想定していると書かれていますね。では、(2進法用の)&演算子と16進数との関係はどうなるのでしょうか?
これらのシステムはすべて、視覚的に異なる方法で数字を表現しているだけなので、ある数字が10であれば、それはどこでも10なのです。カンプの場合、どのようなシステムで数字を書こうと、すべての数字は2進数に変換される。私が書くこれらの文字でさえ、2進数に変換される。他のシステムでは、数字は主に分かりやすくするため、あるいは習慣的にラベルを付ける。まあ、賢く見せるためにそうする人もいる。この場合、16進数が使われるのは、文章をコンパクトにするため、まあ、わかりやすくするためだ。16進数がどのように形成されるかを知ることで、見やすさが生まれる。
もう一つの質問:私の理解が正しければ、"(flag_event & CHARTEVENT_NEWBAR_M1)!"=0"という表現は、"flag_event !"= CHARTEVENT_NEWBAR_M1"という表現と等価です。これは正しいのでしょうか?もしそうなら、なぜビット演算を使うのですか?
いいえ、必ずしもそうとは限りません。flag_eventに何が書かれているかによります。CHARTEVENT_NEWBAR_M1だけが flag_event に書き込まれた場合、flag_event = CHARTEVENT_NEWBAR_M1 です。CHARTEVENT_NEWBAR_M1|CHARTEVENT_NEWBAR_M5 がflag_event に書き込ま れた場合、flag_event != CHARTEVENT_NEWBAR_M1 となります。しかし、どちらの場合も条件 (flag_event & CHARTEVENT_NEWBAR_M1)=0が満たされます 。
もし、flag_event 、CHARTEVENT_NEWBAR_M5と書くと 、flag_event != CHARTEVENT_NEWBAR_M1 となります。 しかし、 (flag_event & CHARTEVENT_NEWBAR_M1)=0 となります。
これらのトリックを理解するには、数システムとビット演算を理解する必要がある。そうでなければ死んでしまう。
なるほど!つまり、ビット演算を使うのはちょっと珍しいとしても、比較演算子を使って式を書き換えても大丈夫ということですね?ご説明ありがとうございます!
いつでも交換することはできますが、追加の計算が必要になるかもしれません。この場合は注意してください :)。
わかりました!もう一つ質問がある。16進数を書くときに2の位を使いますが、2の位を使うことに意味があるのでしょうか、それとも習慣の問題なのでしょうか?例えば、0x00000003, 0x00000009, などの組み合わせは使えますか?
オーケー!もう一つ質問です。16進数を書くとき、2進数を使いますよね。 2進数を使うことに意味があるのでしょうか、それとも習慣の問題なのでしょうか?例えば、0x00000003、0x00000009などの組み合わせは使えるのでしょうか?
いいえ、これはビット演算の 使用によるものです。スパイでは(flag_eventで)1つの数値に複数の数値(イベント)を追加し、EAでは1つの数値から複数の数値を取り出し、スパイが送信したイベントを確認します。その逆もしかり。
あ、よく読んでなかった。そうです。ただし、1つの数字がすべてのイベントに当てはまるとは限りません。2進数を使っているのは、2進数を16進数で書いているからです。各ビットは異なるイベントを表します。
デフォルトでは、price[rates_total-1]は最後の未完了バーの終値に等しく、これは最後の買値に等しい。
アスク価格を強制的に取得したい場合は、例えばこの行を以下のように置き換えてください。
この関数は、価格イベントだけでなく、例えば次のようなイベントも Expert Advisor に渡すことができますか?
例えば、インジケーターのイベントや、他のインストゥルメントからのそれらの組み合わせ/バリエーション、つまり、シグナルがすでにそこで受信されているかのように。もし可能であれば、どのように実装すればよいでしょうか。
ご回答ありがとうございました。
デフォルトでは、price[rates_total-1]は最後の未完了バーの終値に等しく、これは最後の買値に等しい。
アスク価格を強制的に取得したい場合は、例えばこの行を以下のように置き換えます。
この関数は、価格イベントだけでなく、例えば以下のようなイベントも Expert Advisor に渡すことができますか?
例えば、インジケータのイベントや、他のインストゥルメントからのそれらの組み合わせ/バリエーション、つまり、シグナルがすでにそこで受信されているかのように。もし可能であれば、どのように実装すればよいでしょうか。
回答ありがとうございます。