今回は、JForex APIでテイクプロフィット価格を設定する方法に関して解説します。
オーダーにストップロスを設定する方法には2種類あります。
- 注文発注時にテイクプロフィット価格を設定
- 既存の注文orポジションに対してテイクプロフィット価格を設定
注文発注時にテイクプロフィット価格を設定する
注文の発注時にテイクプロフィット価格を設定するには、IEngineインターフェースの「submitOrder」の「takeProfitPrice」に価格を設定します。
IOrder submitOrder(String label,
Instrument instrument,
IEngine.OrderCommand orderCommand,
double amount,
double price,
double slippage,
double stopLossPrice,
double takeProfitPrice)
throws JFException
買い成行注文でテイクプロフィット価格を105.00にセットする場合
1 2 |
engine.submitOrder("orderLabel", Instrument.USDJPY, OrderCommand.BUY, 0.01, 0, 5, 0, 105.00); |
既存注文に対してテイクプロフィット価格を設定する
既存注文に対してテイクプロフィット価格を設定するには、IOrderインターフェースの「setTakeProfitPrice」を使用します。
テイクプロフィットを設定したいIOrderオブジェクトを取得し、そのオブジェクトに対して上記の関数を呼びます。
IOrder order = engine.getOrder(“orderLabel”);
テイクプロフィットを105.00にセットする場合
1 |
order.setTakeProfitPrice(105.00); |
テイクプロフィット注文をキャンセルする
既に設定してあるテイクプロフィット注文を削除したい場合は、テイクプロフィット価格を0に設定します。
1 |
order.setTakeProfitPrice(0); |
テイクプロフィットによるポジションクローズを検出する
テイクプロフィット価格に到達したことによってポジションがクローズされたことを検出するには、ストラテジのonMessageコールバック関数内でメッセージをチェックします。
IMessageインターフェースのgetReasonsの戻り値に「IMessage.Reason.ORDER_CLOSED_BY_TP」が含まれていればテイクプロフィットによるポジションクローズと判断できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public void onMessage(IMessage message) throws JFException { IOrder order = message.getOrder(); if (order == null) { return; } if (message.getType() == IMessage.Type.ORDER_CLOSE_OK) { if (message.getReasons().contains(IMessage.Reason.ORDER_CLOSED_BY_TP)) { //テイクプロフィットでポジションがクローズされた時の処理 } else { //テイクプロフィット以外でポジションがクローズされた時の処理 } } } |
コメント