は、実行ポリシーを返します。 - ページ 2 12345678 新しいコメント Ivan_Invanov 2020.07.18 16:01 #11 Vladimir Karputov:CTradeトレードクラスでの例最初に'SYMBOL_FILLING_FOK' をチェックし、次に'SYMBOL_FILLING_IOC' をチェックする。チェックは「ANDビット演算」を用いて行う。ビット単位のAND演算2値表現xとyのビット単位のAND演算。この式の値は,x と y がともに 0 でないすべてのビットに 1 (TRUE) を含み,それ以外のすべてのビットに 0 (FALSE) を含む。 例ビット演算の 詳細はこちら このコードによって、実行ポリシーはiocかfokのどちらか、またはそのどちらでもないということになり、同時に2つ存在することはできないということになるのですね。それとも、また誤解していたのでしょうか? Ivan_Invanov 2020.07.18 16:17 #12 結局、同時に2つ存在することはできないのでしょうか? 同時に2つ存在するためには、関数は何を返さなければならないのでしょうか? Ivan_Invanov 2020.07.18 16:47 #13 私はあなたの答えを誤解していたようです。1つの取引口座に関することではなく、一般的なことを指しているのですね。ご協力ありがとうございました。 Alexey Viktorov 2020.07.18 17:46 #14 Ivan_Invanov: 結局、同時に2つ存在することはできないのですか? 同時に2つ存在するためには、関数は何を返すべきですか? 2であれば、この関数は3を返します。しかし、これは典型的なケースです。選択肢が3つしかないことから、1、2、または1+2の合計の可能性があります。第3の選択肢ではなく、和である。したがって、ビット演算による チェックでは、「このフィル・ポリシーを適用できるか」という質問にしか答えられない。 Vladimir Karputov 2020.07.19 04:46 #15 Ivan_Invanov: 結局、同時に2つ存在することはできないのですか? 同時に2つ存在するためには、関数は何を返すべきですか? MetaQuotes-Demoサーバーの2文字に対するチェックの例。 2020.07.19 07:35:07.922 Info_FILLING (USDRUB,H1) MetaQuotes-Demo 2020.07.19 07:35:07.922 Info_FILLING (USDRUB,H1) Fill or Kill, SYMBOL_FILLING_FOK: false 2020.07.19 07:35:07.922 Info_FILLING (USDRUB,H1) Immediate or Cancel, SYMBOL_FILLING_IOC: true 2020.07.19 07:35:07.922 Info_FILLING (USDRUB,H1) Return: true 2020.07.19 07:35:07.922 Info_FILLING (USDRUB,H1) Flags of allowed order filling modes: SYMBOL_TRADE_EXECUTION_INSTANT 2020.07.19 07:35:07.922 Info_FILLING (USDRUB,H1) 2020.07.19 07:35:45.291 Info_FILLING (EURUSD,H1) MetaQuotes-Demo 2020.07.19 07:35:45.291 Info_FILLING (EURUSD,H1) Fill or Kill, SYMBOL_FILLING_FOK: true 2020.07.19 07:35:45.291 Info_FILLING (EURUSD,H1) Immediate or Cancel, SYMBOL_FILLING_IOC: false 2020.07.19 07:35:45.291 Info_FILLING (EURUSD,H1) Return: true 2020.07.19 07:35:45.291 Info_FILLING (EURUSD,H1) Flags of allowed order filling modes: SYMBOL_TRADE_EXECUTION_INSTANT これらの記号については、仕様書(記入欄)を参照してください。 そして、より一般的なバリエーションとして、シンボルに対してすべてのフィルが使用可能な場合、次のようになります。 2020.07.19 07:40:22.818 Info_FILLING (NZDUSD,H1) MetaQuotes-Demo 2020.07.19 07:40:22.818 Info_FILLING (NZDUSD,H1) Fill or Kill, SYMBOL_FILLING_FOK: true 2020.07.19 07:40:22.818 Info_FILLING (NZDUSD,H1) Immediate or Cancel, SYMBOL_FILLING_IOC: true 2020.07.19 07:40:22.818 Info_FILLING (NZDUSD,H1) Return: true 2020.07.19 07:40:22.818 Info_FILLING (NZDUSD,H1) Flags of allowed order filling modes: SYMBOL_TRADE_EXECUTION_INSTANT および仕様 Ivan_Invanov 2020.07.19 06:23 #16 ありがとうございます。 Ivan_Invanov 2020.07.19 10:38 #17 Alexey Viktorov: また、2 を指定した場合は、3 を返します。しかし、これは典型的なケースです。選択肢が3つしかないことから、1、2、または1+2の合計の可能性があります。第3の選択肢ではなく、和である。したがって、ビット演算による チェックでは、「このフィル・ポリシーを適用できるか」という質問にしか答えられない。 は、1つの変数が2つの項を返すことができることをまだ理解していない。また、1メンバーとして3の値を返すと、ビット演算が効かなくなります。EXECUTION_INSTANT モードを選択するだけで、常にFOK ポリシーを持つことにしました。 Alexey Viktorov 2020.07.19 10:50 #18 Ivan_Invanov: 1つの変数が2つのメンバーを返すというのは、いまだに理解できません。また、1つのメンバーを3として返すと、ビット演算が効かなくなります。EXECUTION_INSTANT モードを選択するだけで、常にFOK ポリシーを持つことにしました。 これを理解するためには、フラグとは何かを理解する必要があります。 フラグの次の値は、それぞれ前の値を2倍した値になります。すなわち、1、2、4、8、16、32......であるから、値が33であれば、この値には1と32しか含まれていないことになる。同様に、値が18の場合、16と2でしか構成できない。そして、値3は1と2からしか構成できない。 つまり、ビット演算は、チェックした値がフラグの和に存在するかどうかをチェックするだけです。任意の数字が18に含まれるかどうかをチェックすると、値2と16をチェックする以外はfalseになる。 Ivan_Invanov 2020.07.19 11:15 #19 Alexey Viktorov:これを理解するためには、フラグとは何かを理解する必要があります。フラグの次の値は、それぞれ前の値を2倍した値になります。すなわち、1、2、4、8、16、32......であるから、値が33であれば、この値には1と32しか含まれていないことになる。同様に、値が18の場合、16と2でしか構成できない。そして、値3は1と2からしか構成できない。 つまり、ビット演算は、チェックした値がフラグの和に存在するかどうかをチェックするだけです。18に任意の数字が含まれるかどうかを調べると、値2と16をチェックする以外はfalseになります。 はい、2進数の扱い方は理解しています。 uint filling=(uint)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE); if((filling&SYMBOL_FILLING_FOK)==SYMBOL_FILLING_FOK) { m_type_filling=ORDER_FILLING_FOK; このコードから、例えば、この関数は 3 を返します。 (11&1)==1 ; 11==01 いや、それは嘘だ、うまくいかなかったんだ。 書いていて思ったのですが、もしかしたら操作を勘違いしていたのかもしれませんね。 10進数の値を2進数に変換して、ビット単位の演算を行うということです。 == は、第1項と第2項が等しいとき、真となる。これでよいのでしょうか? Ivan_Invanov 2020.07.19 11:47 #20 桁に値があれば真のフラグとなり、トリプレットは両方の桁に値を入れる。ただ、それならなぜこのコードが動作するのか? 12345678 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
CTradeトレードクラスでの例最初に'SYMBOL_FILLING_FOK' をチェックし、次に'SYMBOL_FILLING_IOC' をチェックする。
チェックは「ANDビット演算」を用いて行う。
ビット単位のAND演算
2値表現xとyのビット単位のAND演算。この式の値は,x と y がともに 0 でないすべてのビットに 1 (TRUE) を含み,それ以外のすべてのビットに 0 (FALSE) を含む。
例
ビット演算の 詳細はこちら
結局、同時に2つ存在することはできないのですか? 同時に2つ存在するためには、関数は何を返すべきですか?
結局、同時に2つ存在することはできないのですか? 同時に2つ存在するためには、関数は何を返すべきですか?
MetaQuotes-Demoサーバーの2文字に対するチェックの例。
これらの記号については、仕様書(記入欄)を参照してください。
そして、より一般的なバリエーションとして、シンボルに対してすべてのフィルが使用可能な場合、次のようになります。
および仕様
また、2 を指定した場合は、3 を返します。しかし、これは典型的なケースです。選択肢が3つしかないことから、1、2、または1+2の合計の可能性があります。第3の選択肢ではなく、和である。したがって、ビット演算による チェックでは、「このフィル・ポリシーを適用できるか」という質問にしか答えられない。
1つの変数が2つのメンバーを返すというのは、いまだに理解できません。また、1つのメンバーを3として返すと、ビット演算が効かなくなります。EXECUTION_INSTANT モードを選択するだけで、常にFOK ポリシーを持つことにしました。
これを理解するためには、フラグとは何かを理解する必要があります。
フラグの次の値は、それぞれ前の値を2倍した値になります。すなわち、1、2、4、8、16、32......であるから、値が33であれば、この値には1と32しか含まれていないことになる。同様に、値が18の場合、16と2でしか構成できない。そして、値3は1と2からしか構成できない。
つまり、ビット演算は、チェックした値がフラグの和に存在するかどうかをチェックするだけです。任意の数字が18に含まれるかどうかをチェックすると、値2と16をチェックする以外はfalseになる。
これを理解するためには、フラグとは何かを理解する必要があります。
フラグの次の値は、それぞれ前の値を2倍した値になります。すなわち、1、2、4、8、16、32......であるから、値が33であれば、この値には1と32しか含まれていないことになる。同様に、値が18の場合、16と2でしか構成できない。そして、値3は1と2からしか構成できない。
つまり、ビット演算は、チェックした値がフラグの和に存在するかどうかをチェックするだけです。18に任意の数字が含まれるかどうかを調べると、値2と16をチェックする以外はfalseになります。
はい、2進数の扱い方は理解しています。
このコードから、例えば、この関数は 3 を返します。
(11&1)==1 ; 11==01 いや、それは嘘だ、うまくいかなかったんだ。
書いていて思ったのですが、もしかしたら操作を勘違いしていたのかもしれませんね。
10進数の値を2進数に変換して、ビット単位の演算を行うということです。
== は、第1項と第2項が等しいとき、真となる。これでよいのでしょうか?