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」も返さない、ということになり、これは厳密に言うと、「そもそも実行されなかった」というべきなのかも知れません。
不思議な関数ですね。
コメントをお書きください
Shin (火曜日, 05 2月 2019 05:31)
5年も前の記事に対して今更ですが、ポジションが無い時は上記コードのFor文を実行しないため、単に初期値のー1を表示しています。
ポジションが無い時に実行されれば、0を返します。
EA作成代行 (水曜日, 06 2月 2019 01:12)
>Shinさん
ありゃ、本当だ。^^;
ご指摘ありがとうございました。