OrderSelect()関数の戻り値

OrderSelect()関数がどんな値を返すかというと、リファレンスによると、

 

It returns true if the function succeeds, otherwise falses.

 

とあり、「成功すれば、trueを、失敗すると、falseを返す」ということになります。

 

また、このようなbool型の関数の戻り値を整数型の変数に代入すると、成功すれば、「1」を、失敗すれば、「0」を返します。

 

今さら、なぜ、そんなことを記事にしたかというと、この関数は、ポジションが一つもないときはどんな値を返すのだろうか、ということが気になったからです。

 

さっそく、実験してみました。

上のようなインジケーターを用意しました。

 

これを実行すると、チャート左上に、

 

①ポジション数

②OrderSelect()関数の戻り値

 

が表示され、もしも、OrderSelect()関数が実行されなかったときは、②は「-1」と表示される仕組みになっています。

 

まず、ポジションを2つとったところ、

上のように出ました。

 

左の数字がポジション数で、右がOrderSelect()関数の結果で、この場合、成功したことを表しています。

 

この後、ポジションを2つとも決済してみました。すると、

ちょっと見づらいですが、右の数字は「-1」と出ました。

 

つまり、OrderSelect()関数は、ポジションが一つもないときは、「true」も「false」も返さない、ということになり、これは厳密に言うと、「そもそも実行されなかった」というべきなのかも知れません。

 

不思議な関数ですね。

コメントをお書きください

コメント: 2
  • #1

    Shin (火曜日, 05 2月 2019 05:31)

    5年も前の記事に対して今更ですが、ポジションが無い時は上記コードのFor文を実行しないため、単に初期値のー1を表示しています。
    ポジションが無い時に実行されれば、0を返します。

  • #2

    EA作成代行 (水曜日, 06 2月 2019 01:12)

    >Shinさん

    ありゃ、本当だ。^^;

    ご指摘ありがとうございました。