Getting new portion event with takeprofit and stoploss in one event

olegchubukov's avatar

olegchubukov since: 23 Aug 2019;

  15 Sep 2021, 11:14
Getting new portion event with takeprofit and stoploss in one event

Hey there!

As long as I know two events are sent when opening a new order with a takeprofit and stoploss in cTrader terminal.

I am going to forward new orders/positions to mt4 terminal. This means I have to make to calls to mt4 as well.

Is there a way or a known workaround of getting new position notifications with takeprofit and stoploss in one event from cTrader?

Thanks

Oleg

amusleh's avatar

amusleh since: 01 Mar 2021;

  17 Sep 2021, 08:58

Try to use Execution event when the type is either OrderFilled or OrderPartialFill, those response types will have stop loss and take profit of the filled order (position).

Community Developer | Spotware | Telegram: @algodeveloper
olegchubukov's avatar

olegchubukov since: 23 Aug 2019;

  17 Sep 2021, 09:21
RE:

amusleh said:

Try to use Execution event when the type is either OrderFilled or OrderPartialFill, those response types will have stop loss and take profit of the filled order (position).

That's exactly the problem. Stoplosses and takeprofits do not come in the ORDER_FILLED event, but in ORDER_ACCEPTED event under order type STOP_LOSS_TAKE_PROFIT.

amusleh's avatar

amusleh since: 01 Mar 2021;

  17 Sep 2021, 09:50

Hi,

The response for order filled contains both relative stop loss and relative take profit, here is an actual response for order filled Type:

{
   {
      "ctidTraderAccountId":"532255",
      "executionType":"ORDER_FILLED",
      "position":{
         "positionId":"239668487",
         "tradeData":{
            "symbolId":"1",
            "volume":"100000",
            "tradeSide":"BUY",
            "openTimestamp":"1631861204356",
            "guaranteedStopLoss":false
         },
         "positionStatus":"POSITION_STATUS_OPEN",
         "swap":"0",
         "price":1.1774,
         "utcLastUpdateTimestamp":"1631861204356",
         "commission":"-4",
         "marginRate":1.1774,
         "mirroringCommission":"0",
         "guaranteedStopLoss":false,
         "usedMargin":"235",
         "moneyDigits":2
      },
      "order":{
         "orderId":"359826732",
         "tradeData":{
            "symbolId":"1",
            "volume":"100000",
            "tradeSide":"BUY",
            "openTimestamp":"1631861204118",
            "guaranteedStopLoss":false
         },
         "orderType":"MARKET",
         "orderStatus":"ORDER_STATUS_FILLED",
         "executionPrice":1.1774,
         "executedVolume":"100000",
         "utcLastUpdateTimestamp":"1631861204356",
         "closingOrder":false,
         "clientOrderId":"ctd-1fa7f52eaa5946f0a79b1f18ec6b413d",
         "timeInForce":"IMMEDIATE_OR_CANCEL",
         "positionId":"239668487",
         "relativeStopLoss":"150",
         "relativeTakeProfit":"150",
         "trailingStopLoss":false
      },
      "deal":{
         "dealId":"330052413",
         "orderId":"359826732",
         "positionId":"239668487",
         "volume":"100000",
         "filledVolume":"100000",
         "symbolId":"1",
         "createTimestamp":"1631861204118",
         "executionTimestamp":"1631861204356",
         "utcLastUpdateTimestamp":"1631861204356",
         "executionPrice":1.1774,
         "tradeSide":"BUY",
         "dealStatus":"FILLED",
         "marginRate":1.1774,
         "commission":"-4",
         "baseToUsdConversionRate":1.1774,
         "moneyDigits":2
      },
      "isServerEvent":false
   }
}

You see the order has two fields, one for relative stop loss and another for relative take profit.

Community Developer | Spotware | Telegram: @algodeveloper
olegchubukov's avatar

olegchubukov since: 23 Aug 2019;

  17 Sep 2021, 10:18
RE:

amusleh said:

Hi,

The response for order filled contains both relative stop loss and relative take profit, here is an actual response for order filled Type:

{
   {
      "ctidTraderAccountId":"532255",
      "executionType":"ORDER_FILLED",
      "position":{
         "positionId":"239668487",
         "tradeData":{
            "symbolId":"1",
            "volume":"100000",
            "tradeSide":"BUY",
            "openTimestamp":"1631861204356",
            "guaranteedStopLoss":false
         },
         "positionStatus":"POSITION_STATUS_OPEN",
         "swap":"0",
         "price":1.1774,
         "utcLastUpdateTimestamp":"1631861204356",
         "commission":"-4",
         "marginRate":1.1774,
         "mirroringCommission":"0",
         "guaranteedStopLoss":false,
         "usedMargin":"235",
         "moneyDigits":2
      },
      "order":{
         "orderId":"359826732",
         "tradeData":{
            "symbolId":"1",
            "volume":"100000",
            "tradeSide":"BUY",
            "openTimestamp":"1631861204118",
            "guaranteedStopLoss":false
         },
         "orderType":"MARKET",
         "orderStatus":"ORDER_STATUS_FILLED",
         "executionPrice":1.1774,
         "executedVolume":"100000",
         "utcLastUpdateTimestamp":"1631861204356",
         "closingOrder":false,
         "clientOrderId":"ctd-1fa7f52eaa5946f0a79b1f18ec6b413d",
         "timeInForce":"IMMEDIATE_OR_CANCEL",
         "positionId":"239668487",
         "relativeStopLoss":"150",
         "relativeTakeProfit":"150",
         "trailingStopLoss":false
      },
      "deal":{
         "dealId":"330052413",
         "orderId":"359826732",
         "positionId":"239668487",
         "volume":"100000",
         "filledVolume":"100000",
         "symbolId":"1",
         "createTimestamp":"1631861204118",
         "executionTimestamp":"1631861204356",
         "utcLastUpdateTimestamp":"1631861204356",
         "executionPrice":1.1774,
         "tradeSide":"BUY",
         "dealStatus":"FILLED",
         "marginRate":1.1774,
         "commission":"-4",
         "baseToUsdConversionRate":1.1774,
         "moneyDigits":2
      },
      "isServerEvent":false
   }
}

You see the order has two fields, one for relative stop loss and another for relative take profit.

Oh, those ones! Great! A bit math and here we go. Didn't get that those numbers were points, not pips. Thank you!