例えば、OrderSend関数や、OrderClose関数が実行されると、−1や1を返しますが、注文がTP・SLに掛かって、ポジションを閉じた場合、返してくれる関数や簡単な判定方法はありますか?
現状は
注文後、OpenPrice()からTP値を出して、現在値との大小を検出し、変数に1や−1を入れることで、TP・SLに掛かった、掛かってないを判定しています。もっとシンプルなやりかたあれば教えてください。
回答1
・orderselect で SELECT_BY_POS の MODE_TRADES なら 未決済注文「しか」selectされない。
・orderselect で SELECT_BY_POS の MODE_HISTORY なら 決済された注文「しか」selectされない。
・orderstotal で現在のポジション数がわかり
OrdersHistoryTotalで決済されたポジション数がわかる。
・最後に決済された注文を確認したいなら
OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS, MODE_HISTORY);
これらの応用で対応どうぞ。
回答2
TP,SLに掛かったら直ぐに清算されるので無意味です。
プログラムを組む価値無し。
残っているポシ゜ションをプログラム上で検出し、注文変更をするならOrderSelect,Ordermodifidです。
ただ、監視するだけなら、ターミナルをながめていれば済むことです。
Originally posted 2019-09-09 19:26:31.