当サイトは、アフィリエイト広告を利用しています

JForexプログラミング入門その11-ポジションのクローズ

JForexプログラミング入門

今回は、JForex APIで保有ポジションをクローズする方法に関して解説します。

ポジションをクローズするために、以下の2種類のインターフェースを使用することができます。

  1. IOrderインターフェースのclose関数
  2. IEngineインターフェースのcloseOrders関数

IOrder.closeでポジションを決済する

IOrderインターフェースには、以下の4種類のclose関数が用意されています。

  1. void close()
  2. void close(double amount)
  3. void close(double amount, double price)
  4. void close(double amount, double price, double slippage)

void close()

指定オーダーに関するすべての数量を現在のマーケット価格で決済できます。

void close(double amount)

現在のマーケット価格でデフォルトスリページを使用して、指定された数量のポジションを決済できます。

void close(double amount, double price)

デフォルトスリページを使用し、価格、数量を指定してポジションを決済できます。

void close(double amount, double price, double slippage)

価格、数量、スリッページを指定してポジションを決済できます。

IEngine.CloseOrdersでポジションを決済する

IEngineインターフェースのCloseOrders関数を使用すれば複数のポジションをクローズすることができます。

IEngineインターフェースには、以下の2種類のCloseOrders関数が用意されています。

  1. void closeOrders(IOrder… orders)
  2. void closeOrders(Collection<IOrder> orders)

void closeOrders(IOrder… orders)

引数にクローズしたいIOrderオブジェクトを複数指定することで、一度に複数のポジションをクローズできます。

void closeOrders(Collection<IOrder> orders)

引数にIOrderのコレクションを渡すことでも複数クローズが可能です。

ポジションクローズにおける注意点

同一オーダーに対して毎秒1つ以上のclose要求を送信することは制限されます。

「IOrder.getClosePrice() 」と「IOrder.getCloseTime()」で取得できる情報は最後にクローズしたオーダーの情報のみとなります。

つまり、ポジションの一部をクローズ(partial close)した場合は最後にクローズした情報のみ読み出せます。

通常、ポジションをクローズする際は、以下のようにオーダー状態を確認することが推奨されます。

コメント