は、実行ポリシーを返します。 - ページ 3

 
Ivan_Invanov:

はい、2進数の扱い方は理解しています。

このコードから、例えば、関数が3を返すと出てきます。

(11&1)==1 ; 11==01 いや、それは嘘だ、うまくいかなかったんだ。

書いていて思ったのですが、もしかしたら操作を勘違いしていたのかもしれませんね。

10進数の値を2進数に変換して、ビット単位の演算を行うということです。

== は、第1項と第2項が等しいとき、真となる。これでよいのでしょうか?

これは、独学で勉強した私にはわからないことです。ただ、調べ方と得られるものがわかっているだけです。(11&1)==1は、11がフラグ1+2+8からしか構成されないので、1が集合に含まれるため、真となる。

返却されるものを確認する

return(1|2|8);
 
Alexey Viktorov:
これは、独学で勉強した私にはわからないことです。ただ、調べ方と得られるものがわかっているだけです。(11&1)==1は、11がフラグ1+2+8からしか構成できないので、1が集合に含まれるため、真となる。

返却されるものを確認する

これはバイナリで書いたものです、指定するのを忘れていました。関数が3を返した場合に書いたコードに値を代入して、FOKと比較しました。バイナリーはこのように書かれています。(0b11 & 0b1)==0b1 ;括弧内の結果 0b11 は 0b11==0b1 ;という表現になるが、私見では偽になる。すべてがうまくいくためには、それが真実でなければならない。まあ、このサンプルがヘルプに載っているのだから、そうなのだろう。何か勘違いしていたようです。今、Cのヘルプと、その前のmqlのヘルプを見ました。同じようです。非常に間抜けな質問をしていたら申し訳ないのですが、回答してくださった皆様、ありがとうございました。
 
mqlのヘルプには、trueという値は 0以外の任意の値であると書かれているので、それが答えになるのでしょう。そして、平等、Cの平等で。等式ではなく、比較した項が0より大きければ、その値は真であることが判明したのです。そうですね。かなり不明瞭に書かれていますね。演算子「==」についてです。
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
  • www.mql5.com
Внутреннее представление – целое число размером 1 байт. Необходимо отметить, что в логических выражениях допустимо использовать вместо типа bool другие целые или...
 

ビット単位の演算で、P O B I T O R T 演算です。ビットで動作します。例えば、1 は 00000001 です。2は00000010です。フラグは、1、2、4、8などしかありません。要するに、1ビットがビジー状態なのです。

また、フラグのセットは、例えば00000101のように、任意のビットを占有することができます。このセットには、フラグ00000001と00000100が含まれています。 そして、あるフラグがフラグのセットに含まれているかどうかを調べるには、フラグとセットのビット単位の「アンド」を行い、フラグを残せば、それはセットに入っていることを意味するのです。

(00000101&00000100) ==00000100- true.これは、セット00000101の中にフラグ00000101があることを意味します。

 
Dmitry Fedoseev:

ビット単位の演算で、P O B I T O R T 演算です。ビットで動作します。例えば、1 は 00000001 です。2は00000010です。フラグは、1、2、4、8などしかありません。要するに、1ビットがビジー状態なのです。

また、フラグのセットは、例えば00000101のように、任意のビットを占有することができます。このセットには、フラグ00000001と00000100が含まれています。 そして、あるフラグがフラグのセットに含まれているかどうかを調べるには、フラグとセットのビット単位の「アンド」を行い、フラグを残せば、それはセットに入っていることを意味するのです。

(00000101&00000100) ==00000100- true.これは、セット00000101の中にフラグ00000101があることを意味します。

(正項1==正項2)であるが、正項1は正項2と等しくないというのは本当だろうか?ヘルプによると、truthは0以外の任意の値であり、その後、コードが動作するので、そう判明したのです。
 
Ivan_Invanov:
(正項1==正項2)であるが、正項1は正項2と等しくないというのは本当だろうか?ヘルプによると、truthは0以外の任意の値であり、その後、コードが動作するので、そう判明したのです。
私が戸惑うのは、次に平等という言葉が書かれていることです。
 
参考文献はどこですか?具体的にはどこで、何を?
 
Dmitry Fedoseev:
リファレンスのどの場所にあるのでしょうか?まさに、どこで、何を?

これは矛盾しているように思います。aとbが等しい場合ではなく、aとbがゼロから異なる場合に真となる。まあ、矛盾というか、はっきり書いてないんですけどね。わかったような気がします、ありがとうございます。

ファイル:
1111.jpg  29 kb
 
ENUM_SYMBOL_TRADE_EXECUTION 型が書いてないし、ヘルプのヘッダーもごっちゃになっている(文字列用に書かれたようで、その後言及されずに整数の話をし始めた)。3つのオプションをすべて試しましたが、毎回コンパイラーエラーが発生します。どうしたんですか?
long execution = (long) SymbolInfoInteger(_Symbol, ENUM_SYMBOL_TRADE_EXECUTION);
string execution = (string) SymbolInfoString(_Symbol, ENUM_SYMBOL_TRADE_EXECUTION);
double execution = (double) SymbolInfoDouble(_Symbol, ENUM_SYMBOL_TRADE_EXECUTION);
 
Ivan_Invanov:
ENUM_SYMBOL_TRADE_EXECUTION 型が書いてないし、ヘルプのヘッダもごっちゃになっている(文字列用に書かれたようで、その後、言及せずに整数について話し始めた) .3つのオプションをすべて試しましたが、毎回コンパイラーエラーが発生します。どうしたんですか?

この方法でやるしかない。

//--- Check trade execution mode
  ENUM_SYMBOL_TRADE_EXECUTION market_info = ENUM_SYMBOL_TRADE_EXECUTION(SymbolInfoInteger(Symbol(), SYMBOL_TRADE_EXEMODE));
    
  if((market_info & SYMBOL_TRADE_EXECUTION_EXCHANGE) != SYMBOL_TRADE_EXECUTION_EXCHANGE)
  {
    MessageBox("Символ " + Symbol() + " не поддерживает TRADE EXECUTION EXCHANGE режим!", "Ошибка", MB_OK | MB_ICONHAND);
    return(false);
  }