Skip to content

Model Messages

ProtoOAAccessRights

Enum for specifying access right for a trader.

Name Value Description
FULL_ACCESS 0 Enable all trading.
CLOSE_ONLY 1 Only closing trading request are enabled.
NO_TRADING 2 View only access.
NO_LOGIN 3 No access.

ProtoOAAccountType

Enum for specifying type of an account.

Name Value Description
HEDGED 0 Allows multiple positions on a trading account for a symbol.
NETTED 1 Only one position per symbol is allowed on a trading account.
SPREAD_BETTING 2 Spread betting type account.

ProtoOAArchivedSymbol

Field Type Label Description
symbolId int64 Required The unique identifier of the symbol in specific server environment within cTrader platform. Different brokers might have different IDs.
name string Required Name of the symbol (e.g. EUR/USD).
utcLastUpdateTimestamp int64 Required The Unix time in milliseconds of the last update of the symbol.
description string Optional Description of the symbol.

ProtoOAAsset

Asset entity.

Field Type Label Description
assetId int64 Required The unique asset ID.
name string Required The asset name.
displayName string Optional User friendly name.
digits int32 Optional Precision of the asset.

ProtoOAAssetClass

Asset class entity.

Field Type Label Description
id int64 Optional Unique asset ID.
name string Optional Asset class name.
sortingNumber double Optional The number used for sorting Asset Classes in the UI (lowest number should appear at the top).

ProtoOABonusDepositWithdraw

Bonus deposit/withdrawal entity.

Field Type Label Description
operationType ProtoOAChangeBonusType Required Type of the operation. Deposit/Withdrawal.
bonusHistoryId int64 Required The unique ID of the bonus deposit/withdrawal operation.
managerBonus int64 Required Total amount of broker's bonus after the operation.
managerDelta int64 Required Amount of bonus deposited/withdrew by manager.
ibBonus int64 Required Total amount of introducing broker's bonus after the operation.
ibDelta int64 Required Amount of bonus deposited/withdrew by introducing broker.
changeBonusTimestamp int64 Required The Unix time in milliseconds when the bonus operation was executed.
externalNote string Optional Note added to operation. Visible to the trader.
introducingBrokerId int64 Optional ID of introducing broker who deposited/withdrew bonus.
moneyDigits uint32 Optional Specifies the exponent of the monetary values. E.g. moneyDigits = 8 must be interpret as business value multiplied by 10^8, then real balance would be 10053099944 / 10^8 = 100.53099944. Affects managerBonus, managerDelta, ibBonus, ibDelta.

ProtoOAChangeBalanceType

Balance operation entity.

Covers all cash movement operations related to account, trading, IB operations, mirroring, etc.

Name Value Description
BALANCE_DEPOSIT 0 Cash deposit.
BALANCE_WITHDRAW 1 Cash withdrawal.
BALANCE_DEPOSIT_STRATEGY_COMMISSION_INNER 3 Received mirroring commission.
BALANCE_WITHDRAW_STRATEGY_COMMISSION_INNER 4 Paid mirroring commission.
BALANCE_DEPOSIT_IB_COMMISSIONS 5 For IB account. Commissions paid by trader.
BALANCE_WITHDRAW_IB_SHARED_PERCENTAGE 6 For IB account. Withdrawal of commissions shared with broker.
BALANCE_DEPOSIT_IB_SHARED_PERCENTAGE_FROM_SUB_IB 7 For IB account. Commissions paid by sub-ibs.
BALANCE_DEPOSIT_IB_SHARED_PERCENTAGE_FROM_BROKER 8 For IB account. Commissions paid by broker.
BALANCE_DEPOSIT_REBATE 9 Deposit rebate for trading volume for period.
BALANCE_WITHDRAW_REBATE 10 Withdrawal of rebate.
BALANCE_DEPOSIT_STRATEGY_COMMISSION_OUTER 11 Mirroring commission.
BALANCE_WITHDRAW_STRATEGY_COMMISSION_OUTER 12 Mirroring commission.
BALANCE_WITHDRAW_BONUS_COMPENSATION 13 For IB account. Share commission with the Broker.
BALANCE_WITHDRAW_IB_SHARED_PERCENTAGE_TO_BROKER 14 IB commissions.
BALANCE_DEPOSIT_DIVIDENDS 15 Deposit dividends payments.
BALANCE_WITHDRAW_DIVIDENDS 16 Negative dividend charge for short position.
BALANCE_WITHDRAW_GSL_CHARGE 17 Charge for guaranteedStopLoss.
BALANCE_WITHDRAW_ROLLOVER 18 Charge of rollover fee for Shariah compliant accounts.
BALANCE_DEPOSIT_NONWITHDRAWABLE_BONUS 19 Broker's operation to deposit bonus.
BALANCE_WITHDRAW_NONWITHDRAWABLE_BONUS 20 Broker's operation to withdrawal bonus.
BALANCE_DEPOSIT_SWAP 21 Deposits of negative SWAP.
BALANCE_WITHDRAW_SWAP 22 SWAP charges.
BALANCE_DEPOSIT_MANAGEMENT_FEE 27 Mirroring commission.
BALANCE_WITHDRAW_MANAGEMENT_FEE 28 Mirroring commission. Deprecated since 7.1 in favor of BALANCE_WITHDRAW_COPY_FEE (34).
BALANCE_DEPOSIT_PERFORMANCE_FEE 29 Mirroring commission.
BALANCE_WITHDRAW_FOR_SUBACCOUNT 30 Withdraw for subaccount creation (cTrader Copy).
BALANCE_DEPOSIT_TO_SUBACCOUNT 31 Deposit to subaccount on creation (cTrader Copy).
BALANCE_WITHDRAW_FROM_SUBACCOUNT 32 Manual user's withdraw from subaccount (cTrader Copy), to parent account.
BALANCE_DEPOSIT_FROM_SUBACCOUNT 33 Manual user's deposit to subaccount (cTrader Copy), from parent account.
BALANCE_WITHDRAW_COPY_FEE 34 Withdrawal fees to Strategy Provider.
BALANCE_WITHDRAW_INACTIVITY_FEE 35 Withdraw of inactivity fee from the balance.
BALANCE_DEPOSIT_TRANSFER 36 Deposit within the same server (from another account).
BALANCE_WITHDRAW_TRANSFER 37 Withdraw within the same server (to another account).
BALANCE_DEPOSIT_CONVERTED_BONUS 38 Bonus being converted from virtual bonus to real deposit.
BALANCE_DEPOSIT_NEGATIVE_BALANCE_PROTECTION 39 Applies if negative balance protection is configured by broker, should make balance = 0.

ProtoOAChangeBonusType

Bonus operation type ENUM.

Name Value Description
BONUS_DEPOSIT 0
BONUS_WITHDRAW 1

ProtoOAClientPermissionScope

Open API application permission in regards to token ENUM.

Name Value Description
SCOPE_VIEW 0 Allows to use only view commends. Trade is prohibited.
SCOPE_TRADE 1 Allows to use all commands.

ProtoOAClosePositionDetail

Trading details for closing deal.

Field Type Label Description
entryPrice double Required Position price at the moment of filling the closing order.
grossProfit int64 Required Amount of realized gross profit after closing deal execution.
swap int64 Required Amount of realized swap related to closed volume.
commission int64 Required Amount of realized commission related to closed volume.
balance int64 Required Account balance after closing deal execution.
quoteToDepositConversionRate double Optional Quote/Deposit currency conversion rate on the time of closing deal execution.
closedVolume int64 Optional Closed volume in cents.
balanceVersion int64 Optional Balance version of the account related to closing deal operation.
moneyDigits uint32 Optional Specifies the exponent of the monetary values. E.g. moneyDigits = 8 must be interpret as business value multiplied by 10^8, then real balance would be 10053099944 / 10^8 = 100.53099944. Affects grossProfit, swap, commission, balance, pnlConversionFee.
pnlConversionFee int64 Optional Fee for conversion applied to the Deal in account's ccy when trader symbol's quote asset id <> ProtoOATrader.depositAssetId.

ProtoOACommissionType

Enum for specifying type of trading commission.

Name Value Description
USD_PER_MILLION_USD 1 USD per million USD volume - usually used for FX. Example: 50 USD for 1 mil USD of trading volume.
USD_PER_LOT 2 USD per 1 lot - usually used for CFDs and futures for commodities, and indices. Example: 15 USD for 1 contract.
PERCENTAGE_OF_VALUE 3 Percentage of trading volume - usually used for Equities. Example: 0.005% of notional trading volume. Multiplied by 100,000.
QUOTE_CCY_PER_LOT 4 Quote ccy of Symbol per 1 lot - will be used for CFDs and futures for commodities, and indices. Example: 15 EUR for 1 contract of DAX.

ProtoOACtidProfile

Trader profile entity.

Empty due to GDPR.

Field Type Label Description
userId int64 Required

ProtoOACtidTraderAccount

Trader account entity.

Field Type Label Description
ctidTraderAccountId uint64 Required Unique identifier of the trader's account. Used to match responses to trader's accounts.cTrader platform. Different brokers might have different ids
isLive bool Optional If TRUE then the account is belong to Live environment and live host must be used to authorize it
traderLogin int64 Optional TraderLogin for a specific account. Value is displayed on Client App UI
lastClosingDealTimestamp int64 Optional The Unix time in milliseconds of the last ProtoOAClosePositionDetail happened to this account.
lastBalanceUpdateTimestamp int64 Optional The Unix time in milliseconds of the last ProtoOADepositWithdraw happened to this account.
brokerTitleShort string Optional The name of the broker to which the account belongs to. Shortened to be displayed in the UI.

ProtoOADayOfWeek

Name Value Description
NONE 0
MONDAY 1
TUESDAY 2
WEDNESDAY 3
THURSDAY 4
FRIDAY 5
SATURDAY 6
SUNDAY 7

ProtoOADeal

Execution entity.

Field Type Label Description
dealId int64 Required The unique ID of the execution deal.
orderId int64 Required Source order of the deal.
positionId int64 Required Source position of the deal.
volume int64 Required Volume sent for execution, in cents.
filledVolume int64 Required Filled volume, in cents.
symbolId int64 Required The unique identifier of the symbol in specific server environment within cTrader platform. Different servers have different IDs.
createTimestamp int64 Required The Unix time in milliseconds when the deal was sent for execution.
executionTimestamp int64 Required The Unix time in milliseconds when the deal was executed.
utcLastUpdateTimestamp int64 Optional The Unix time in milliseconds when the deal was created, executed or rejected.
executionPrice double Optional Execution price.
tradeSide ProtoOATradeSide Required Buy/Sell.
dealStatus ProtoOADealStatus Required Status of the deal.
marginRate double Optional Rate for used margin computation. Represented as Base/Deposit.
commission int64 Optional Amount of trading commission associated with the deal.
baseToUsdConversionRate double Optional Base to USD conversion rate on the time of deal execution.
closePositionDetail ProtoOAClosePositionDetail Optional Closing position detail. Valid only for closing deal.
moneyDigits uint32 Optional Specifies the exponent of the monetary values. E.g. moneyDigits = 8 must be interpret as business value multiplied by 10^8, then real balance would be 10053099944 / 10^8 = 100.53099944. Affects commission.

ProtoOADealOffset

Deal details for ProtoOADealOffsetListReq.

Field Type Label Description
dealId int64 Required The unique ID of the execution Deal.
volume int64 Required Matched volume, in cents.
executionTimestamp int64 Optional The Unix time in milliseconds when the offset Deal was executed.
executionPrice double Optional Execution price of the offset Deal.

ProtoOADealStatus

Deal status ENUM.

Name Value Description
FILLED 2 Deal filled.
PARTIALLY_FILLED 3 Deal is partially filled.
REJECTED 4 Deal is correct but was rejected by liquidity provider (e.g. no liquidity).
INTERNALLY_REJECTED 5 Deal rejected by server (e.g. no price quotes).
ERROR 6 Deal is rejected by LP due to error (e.g. symbol is unknown).
MISSED 7 Liquidity provider did not sent response on the deal during specified execution time period.

ProtoOADepositWithdraw

Account deposit/withdrawal operation entity.

Field Type Label Description
operationType ProtoOAChangeBalanceType Required Type of the operation. Deposit/Withdrawal.
balanceHistoryId int64 Required The unique ID of the deposit/withdrawal operation.
balance int64 Required Account balance after the operation was executed.
delta int64 Required Amount of deposit/withdrawal operation.
changeBalanceTimestamp int64 Required The Unix time in milliseconds when deposit/withdrawal operation was executed.
externalNote string Optional Note added to operation. Visible to the trader.
balanceVersion int64 Optional Balance version used to identify the final balance. Increments each time when the trader's account balance is changed.
equity int64 Optional Total account's equity after balance operation was executed.
moneyDigits uint32 Optional Specifies the exponent of the monetary values. E.g. moneyDigits = 8 must be interpret as business value multiplied by 10^8, then real balance would be 10053099944 / 10^8 = 100.53099944. Affects balance, delta, equity.

ProtoOADepthQuote

Depth of market entity.

Field Type Label Description
id uint64 Required Quote ID.
size uint64 Required Quote size in cents.
bid uint64 Optional Bid price for bid quotes.
ask uint64 Optional Ask price for ask quotes.

ProtoOADynamicLeverage

Field Type Label Description
leverageId int64 Required Unique ID of dynamic leverage.
tiers RepeatedField<ProtoOADynamicLeverageTier> Repeated Tiers sorted by volume. Last tier's leverage is applied also to volume above specified.

ProtoOADynamicLeverageTier

Field Type Label Description
volume int64 Required Max USD volume (in cents) of the Open Position (per side) to apply specified leverage. Last tier's leverage is applied also to volume above specified.
leverage int32 Required Applied leverage.

ProtoOAErrorCode

Error code ENUM.

Name Value Description
OA_AUTH_TOKEN_EXPIRED 1 Authorization
ACCOUNT_NOT_AUTHORIZED 2 When account is not authorized.
RET_NO_SUCH_LOGIN 12 When such account no longer exists.
ALREADY_LOGGED_IN 14 When client tries to authorize after it was already authorized.
INCORRECT_BOUNDARIES 35 When requested period (from,to) is too large or invalid values are set to from/to.
RET_ACCOUNT_DISABLED 64 When account is disabled.
CONNECTIONS_LIMIT_EXCEEDED 67 Limit of connections is reached for this Open API client.
WORSE_GSL_NOT_ALLOWED 68 Not allowed to increase risk for Positions with Guaranteed Stop Loss.
SYMBOL_HAS_HOLIDAY 69 Trading disabled because symbol has holiday.
CH_CLIENT_AUTH_FAILURE 101 Open API client is not activated or wrong client credentials.
CH_CLIENT_NOT_AUTHENTICATED 102 When a command is sent for not authorized Open API client.
CH_CLIENT_ALREADY_AUTHENTICATED 103 Client is trying to authenticate twice.
CH_ACCESS_TOKEN_INVALID 104 Access token is invalid.
CH_SERVER_NOT_REACHABLE 105 Trading service is not available.
CH_CTID_TRADER_ACCOUNT_NOT_FOUND 106 Trading account is not found.
CH_OA_CLIENT_NOT_FOUND 107 Could not find this client id.
REQUEST_FREQUENCY_EXCEEDED 108 General
SERVER_IS_UNDER_MAINTENANCE 109 Server is under maintenance.
CHANNEL_IS_BLOCKED 110 Operations are not allowed for this account.
NOT_SUBSCRIBED_TO_SPOTS 112 Pricing
ALREADY_SUBSCRIBED 113 When subscription is requested for an active.
SYMBOL_NOT_FOUND 114 Symbol not found.
UNKNOWN_SYMBOL 115 Note: to be merged with SYMBOL_NOT_FOUND.
NO_QUOTES 117 Trading
NOT_ENOUGH_MONEY 118 Not enough funds to allocate margin.
MAX_EXPOSURE_REACHED 119 Max exposure limit is reached for a {trader, symbol, side}.
POSITION_NOT_FOUND 120 Position not found.
ORDER_NOT_FOUND 121 Order not found.
POSITION_NOT_OPEN 122 When trying to close a position that it is not open.
POSITION_LOCKED 123 Position in the state that does not allow to perform an operation.
TOO_MANY_POSITIONS 124 Trading account reached its limit for max number of open positions and orders.
TRADING_BAD_VOLUME 125 Invalid volume.
TRADING_BAD_STOPS 126 Invalid stop price.
TRADING_BAD_PRICES 127 Invalid price (e.g. negative).
TRADING_BAD_STAKE 128 Invalid stake volume (e.g. negative).
PROTECTION_IS_TOO_CLOSE_TO_MARKET 129 Invalid protection prices.
TRADING_BAD_EXPIRATION_DATE 130 Invalid expiration.
PENDING_EXECUTION 131 Unable to apply changes as position has an order under execution.
TRADING_DISABLED 132 Trading is blocked for the symbol.
TRADING_NOT_ALLOWED 133 Trading account is in read only mode.
UNABLE_TO_CANCEL_ORDER 134 Unable to cancel order.
UNABLE_TO_AMEND_ORDER 135 Unable to amend order.
SHORT_SELLING_NOT_ALLOWED 136 Short selling is not allowed.
NOT_SUBSCRIBED_TO_PNL 137 This session is not subscribed via ProtoOAv1PnLChangeSubscribeReq

ProtoOAExecutionType

Execution event type ENUM.

Name Value Description
ORDER_ACCEPTED 2 Order passed validation.
ORDER_FILLED 3 Order filled.
ORDER_REPLACED 4 Pending order is changed with a new one.
ORDER_CANCELLED 5 Order cancelled.
ORDER_EXPIRED 6 Order with GTD time in force is expired.
ORDER_REJECTED 7 Order is rejected due to validations.
ORDER_CANCEL_REJECTED 8 Cancel order request is rejected.
SWAP 9 Type related to SWAP execution events.
DEPOSIT_WITHDRAW 10 Type related to event of deposit or withdrawal cash flow operation.
ORDER_PARTIAL_FILL 11 Order is partially filled.
BONUS_DEPOSIT_WITHDRAW 12 Type related to event of bonus deposit or bonus withdrawal.

ProtoOAExpectedMargin

Expected margin computation entity.

Field Type Label Description
volume int64 Required Volume in cents used for computation of expected margin.
buyMargin int64 Required Buy margin amount.
sellMargin int64 Required Sell margin amount.

ProtoOAHoliday

Field Type Label Description
holidayId int64 Required Unique ID of holiday.
name string Required Name of holiday.
description string Optional Description of holiday.
scheduleTimeZone string Required Timezone used for holiday.
holidayDate int64 Required Amount of days from 1st Jan 1970, multiply it by 86400000 to get Unix time in milliseconds.
isRecurring bool Required If TRUE, then the holiday happens each year.
startSecond int32 Optional Amount of seconds from 00:00:00 of the holiday day when holiday actually starts.
endSecond int32 Optional Amount of seconds from 00:00:00 of the holiday day when holiday actually finishes.

ProtoOAInterval

Symbol trading session entity.

Field Type Label Description
startSecond uint32 Required Interval start, specified in seconds starting from SUNDAY 00:00 in specified time zone (inclusive to the interval).
endSecond uint32 Required Interval end, specified in seconds starting from SUNDAY 00:00 in specified time zone (exclusive from the interval).

ProtoOALightSymbol

Lightweight symbol entity.

Field Type Label Description
symbolId int64 Required The unique identifier of the symbol in specific server environment within cTrader platform. Different brokers might have different IDs.
symbolName string Optional Name of the symbol (e.g. EUR/USD).
enabled bool Optional If TRUE then symbol is visible for traders.
baseAssetId int64 Optional Base asset.
quoteAssetId int64 Optional Quote asset.
symbolCategoryId int64 Optional Id of the symbol category used for symbols grouping.
description string Optional
sortingNumber double Optional The number used for sorting Symbols in the UI (lowest number should appear at the top).

ProtoOALimitedRiskMarginCalculationStrategy

Name Value Description
ACCORDING_TO_LEVERAGE 0
ACCORDING_TO_GSL 1
ACCORDING_TO_GSL_AND_LEVERAGE 2

ProtoOAMarginCall

Margin call entity, specifies threshold for exact margin call type.

Only 3 instances of margin calls are supported, identified by marginCallType.

See ProtoOANotificationType for details.

Field Type Label Description
marginCallType ProtoOANotificationType Required Type of margin call. All margin calls are similar, only difference is in marginLevelThreshold.
marginLevelThreshold double Required Margin level threshold for margin call.
utcLastUpdateTimestamp int64 Optional The Unix time in milliseconds of the last update of the margin call.

ProtoOAMinCommissionType

Enum for specifying type of minimum trading commission.

Name Value Description
CURRENCY 1
QUOTE_CURRENCY 2

ProtoOANotificationType

Type of notification, currently only 3 instances of marginCall are supported.

Name Value Description
MARGIN_LEVEL_THRESHOLD1 61 one of three margin calls, they are all similar.
MARGIN_LEVEL_THRESHOLD2 62 one of three margin calls, they are all similar.
MARGIN_LEVEL_THRESHOLD3 63 one of three margin calls, they are all similar.

ProtoOAOrder

Trade order entity.

Field Type Label Description
orderId int64 Required The unique ID of the order. Note: trader might have two orders with the same id if orders are taken from accounts from different brokers.
tradeData ProtoOATradeData Required Detailed trader data.
orderType ProtoOAOrderType Required Order type.
orderStatus ProtoOAOrderStatus Required Order status.
expirationTimestamp int64 Optional The Unix time in milliseconds of expiration if the order has time in force GTD.
executionPrice double Optional Price at which an order was executed. For order with FILLED status.
executedVolume int64 Optional Part of the volume that was filled in cents (e.g. 1000 in protocol means 10.00 units).
utcLastUpdateTimestamp int64 Optional The Unix time in milliseconds of the last update of the order.
baseSlippagePrice double Optional Used for Market Range order with combination of slippageInPoints to specify price range were order can be executed.
slippageInPoints int64 Optional Used for Market Range and STOP_LIMIT orders to to specify price range were order can be executed.
closingOrder bool Optional If TRUE then the order is closing part of whole position. Must have specified positionId.
limitPrice double Optional Valid only for LIMIT orders.
stopPrice double Optional Valid only for STOP and STOP_LIMIT orders.
stopLoss double Optional Absolute stopLoss price.
takeProfit double Optional Absolute takeProfit price.
clientOrderId string Optional Optional ClientOrderId. Max Length = 50 chars.
timeInForce ProtoOATimeInForce Optional Order's time in force. Depends on order type.
positionId int64 Optional ID of the position linked to the order (e.g. closing order, order that increase volume of a specific position, etc.).
relativeStopLoss int64 Optional Relative stopLoss that can be specified instead of absolute as one. Specified in 1/100000 of unit of a price. (e.g. 123000 in protocol means 1.23, 53423782 means 534.23782) For BUY stopLoss = entryPrice - relativeStopLoss, for SELL stopLoss = entryPrice + relativeStopLoss.
relativeTakeProfit int64 Optional Relative takeProfit that can be specified instead of absolute one. Specified in 1/100000 of unit of a price. (e.g. 123000 in protocol means 1.23, 53423782 means 534.23782) ForBUY takeProfit = entryPrice + relativeTakeProfit, for SELL takeProfit = entryPrice - relativeTakeProfit.
isStopOut bool Optional If TRUE then order was stopped out from server side.
trailingStopLoss bool Optional If TRUE then order is trailingStopLoss. Valid for STOP_LOSS_TAKE_PROFIT order.
stopTriggerMethod ProtoOAOrderTriggerMethod Optional Trigger method for the order. Valid only for STOP and STOP_LIMIT orders.

ProtoOAOrderStatus

Order status ENUM.

Name Value Description
ORDER_STATUS_ACCEPTED 1 Order request validated and accepted for execution.
ORDER_STATUS_FILLED 2 Order is fully filled.
ORDER_STATUS_REJECTED 3 Order is rejected due to validation.
ORDER_STATUS_EXPIRED 4 Order expired. Might be valid for orders with partially filled volume that were expired on LP.
ORDER_STATUS_CANCELLED 5 Order is cancelled. Might be valid for orders with partially filled volume that were cancelled by LP.

ProtoOAOrderTriggerMethod

Stop Order and Stop Lost triggering method ENUM.

Name Value Description
TRADE 1 Stop Order: buy is triggered by ask, sell by bid; Stop Loss Order: for buy position is triggered by bid and for sell position by ask.
OPPOSITE 2 Stop Order: buy is triggered by bid, sell by ask; Stop Loss Order: for buy position is triggered by ask and for sell position by bid.
DOUBLE_TRADE 3 The same as TRADE, but trigger is checked after the second consecutive tick.
DOUBLE_OPPOSITE 4 The same as OPPOSITE, but trigger is checked after the second consecutive tick.

ProtoOAOrderType

Order type ENUM.

Name Value Description
MARKET 1
LIMIT 2
STOP 3
STOP_LOSS_TAKE_PROFIT 4
MARKET_RANGE 5
STOP_LIMIT 6

ProtoOAPayloadType

Name Value Description
PROTO_OA_APPLICATION_AUTH_REQ 2100
PROTO_OA_APPLICATION_AUTH_RES 2101
PROTO_OA_ACCOUNT_AUTH_REQ 2102
PROTO_OA_ACCOUNT_AUTH_RES 2103
PROTO_OA_VERSION_REQ 2104
PROTO_OA_VERSION_RES 2105
PROTO_OA_NEW_ORDER_REQ 2106
PROTO_OA_TRAILING_SL_CHANGED_EVENT 2107
PROTO_OA_CANCEL_ORDER_REQ 2108
PROTO_OA_AMEND_ORDER_REQ 2109
PROTO_OA_AMEND_POSITION_SLTP_REQ 2110
PROTO_OA_CLOSE_POSITION_REQ 2111
PROTO_OA_ASSET_LIST_REQ 2112
PROTO_OA_ASSET_LIST_RES 2113
PROTO_OA_SYMBOLS_LIST_REQ 2114
PROTO_OA_SYMBOLS_LIST_RES 2115
PROTO_OA_SYMBOL_BY_ID_REQ 2116
PROTO_OA_SYMBOL_BY_ID_RES 2117
PROTO_OA_SYMBOLS_FOR_CONVERSION_REQ 2118
PROTO_OA_SYMBOLS_FOR_CONVERSION_RES 2119
PROTO_OA_SYMBOL_CHANGED_EVENT 2120
PROTO_OA_TRADER_REQ 2121
PROTO_OA_TRADER_RES 2122
PROTO_OA_TRADER_UPDATE_EVENT 2123
PROTO_OA_RECONCILE_REQ 2124
PROTO_OA_RECONCILE_RES 2125
PROTO_OA_EXECUTION_EVENT 2126
PROTO_OA_SUBSCRIBE_SPOTS_REQ 2127
PROTO_OA_SUBSCRIBE_SPOTS_RES 2128
PROTO_OA_UNSUBSCRIBE_SPOTS_REQ 2129
PROTO_OA_UNSUBSCRIBE_SPOTS_RES 2130
PROTO_OA_SPOT_EVENT 2131
PROTO_OA_ORDER_ERROR_EVENT 2132
PROTO_OA_DEAL_LIST_REQ 2133
PROTO_OA_DEAL_LIST_RES 2134
PROTO_OA_SUBSCRIBE_LIVE_TRENDBAR_REQ 2135
PROTO_OA_UNSUBSCRIBE_LIVE_TRENDBAR_REQ 2136
PROTO_OA_GET_TRENDBARS_REQ 2137
PROTO_OA_GET_TRENDBARS_RES 2138
PROTO_OA_EXPECTED_MARGIN_REQ 2139
PROTO_OA_EXPECTED_MARGIN_RES 2140
PROTO_OA_MARGIN_CHANGED_EVENT 2141
PROTO_OA_ERROR_RES 2142
PROTO_OA_CASH_FLOW_HISTORY_LIST_REQ 2143
PROTO_OA_CASH_FLOW_HISTORY_LIST_RES 2144
PROTO_OA_GET_TICKDATA_REQ 2145
PROTO_OA_GET_TICKDATA_RES 2146
PROTO_OA_ACCOUNTS_TOKEN_INVALIDATED_EVENT 2147
PROTO_OA_CLIENT_DISCONNECT_EVENT 2148
PROTO_OA_GET_ACCOUNTS_BY_ACCESS_TOKEN_REQ 2149
PROTO_OA_GET_ACCOUNTS_BY_ACCESS_TOKEN_RES 2150
PROTO_OA_GET_CTID_PROFILE_BY_TOKEN_REQ 2151
PROTO_OA_GET_CTID_PROFILE_BY_TOKEN_RES 2152
PROTO_OA_ASSET_CLASS_LIST_REQ 2153
PROTO_OA_ASSET_CLASS_LIST_RES 2154
PROTO_OA_DEPTH_EVENT 2155
PROTO_OA_SUBSCRIBE_DEPTH_QUOTES_REQ 2156
PROTO_OA_SUBSCRIBE_DEPTH_QUOTES_RES 2157
PROTO_OA_UNSUBSCRIBE_DEPTH_QUOTES_REQ 2158
PROTO_OA_UNSUBSCRIBE_DEPTH_QUOTES_RES 2159
PROTO_OA_SYMBOL_CATEGORY_REQ 2160
PROTO_OA_SYMBOL_CATEGORY_RES 2161
PROTO_OA_ACCOUNT_LOGOUT_REQ 2162
PROTO_OA_ACCOUNT_LOGOUT_RES 2163
PROTO_OA_ACCOUNT_DISCONNECT_EVENT 2164
PROTO_OA_SUBSCRIBE_LIVE_TRENDBAR_RES 2165
PROTO_OA_UNSUBSCRIBE_LIVE_TRENDBAR_RES 2166
PROTO_OA_MARGIN_CALL_LIST_REQ 2167
PROTO_OA_MARGIN_CALL_LIST_RES 2168
PROTO_OA_MARGIN_CALL_UPDATE_REQ 2169
PROTO_OA_MARGIN_CALL_UPDATE_RES 2170
PROTO_OA_MARGIN_CALL_UPDATE_EVENT 2171
PROTO_OA_MARGIN_CALL_TRIGGER_EVENT 2172
PROTO_OA_REFRESH_TOKEN_REQ 2173
PROTO_OA_REFRESH_TOKEN_RES 2174
PROTO_OA_ORDER_LIST_REQ 2175
PROTO_OA_ORDER_LIST_RES 2176
PROTO_OA_GET_DYNAMIC_LEVERAGE_REQ 2177
PROTO_OA_GET_DYNAMIC_LEVERAGE_RES 2178
PROTO_OA_DEAL_LIST_BY_POSITION_ID_REQ 2179
PROTO_OA_DEAL_LIST_BY_POSITION_ID_RES 2180
PROTO_OA_ORDER_DETAILS_REQ 2181
PROTO_OA_ORDER_DETAILS_RES 2182
PROTO_OA_ORDER_LIST_BY_POSITION_ID_REQ 2183
PROTO_OA_ORDER_LIST_BY_POSITION_ID_RES 2184
PROTO_OA_DEAL_OFFSET_LIST_REQ 2185
PROTO_OA_DEAL_OFFSET_LIST_RES 2186
PROTO_OA_GET_POSITION_UNREALIZED_PNL_REQ 2187
PROTO_OA_GET_POSITION_UNREALIZED_PNL_RES 2188
PROTO_OA_V1_PNL_CHANGE_EVENT 2189
PROTO_OA_V1_PNL_CHANGE_SUBSCRIBE_REQ 2190
PROTO_OA_V1_PNL_CHANGE_SUBSCRIBE_RES 2191
PROTO_OA_V1_PNL_CHANGE_UN_SUBSCRIBE_REQ 2192
PROTO_OA_V1_PNL_CHANGE_UN_SUBSCRIBE_RES 2193

ProtoOAPosition

Trade position entity.

Field Type Label Description
positionId int64 Required The unique ID of the position. Note: trader might have two positions with the same id if positions are taken from accounts from different brokers.
tradeData ProtoOATradeData Required Position details. See ProtoOATradeData for details.
positionStatus ProtoOAPositionStatus Required Current status of the position.
swap int64 Required Total amount of charged swap on open position.
price double Optional VWAP price of the position based on all executions (orders) linked to the position.
stopLoss double Optional Current stop loss price.
takeProfit double Optional Current take profit price.
utcLastUpdateTimestamp int64 Optional The Unix time in milliseconds of the last change of the position, including amend SL/TP of the position, execution of related order, cancel or related order, etc.
commission int64 Optional Current unrealized commission related to the position.
marginRate double Optional Rate for used margin computation. Represented as Base/Deposit.
mirroringCommission int64 Optional Amount of unrealized commission related to following of strategy provider.
guaranteedStopLoss bool Optional If TRUE then position's stop loss is guaranteedStopLoss.
usedMargin uint64 Optional Amount of margin used for the position in deposit currency.
stopLossTriggerMethod ProtoOAOrderTriggerMethod Optional Stop trigger method for SL/TP of the position.
moneyDigits uint32 Optional Specifies the exponent of the monetary values. E.g. moneyDigits = 8 must be interpret as business value multiplied by 10^8, then real balance would be 10053099944 / 10^8 = 100.53099944. Affects swap, commission, mirroringCommission, usedMargin.
trailingStopLoss bool Optional If TRUE then the Trailing Stop Loss is applied.

ProtoOAPositionStatus

Position status ENUM.

Name Value Description
POSITION_STATUS_OPEN 1
POSITION_STATUS_CLOSED 2
POSITION_STATUS_CREATED 3 Empty position is created for pending order.
POSITION_STATUS_ERROR 4

ProtoOAPositionUnrealizedPnL

Field Type Label Description
positionId int64 Required The position ID.
grossUnrealizedPnL int64 Required The gross unrealized PnL of the position denoted in the account deposit currency.
netUnrealizedPnL int64 Required The net unrealized PnL of the position denoted in the account deposit currency. It does not include potential closing commission.

ProtoOAQuoteType

Price quote type.

Name Value Description
BID 1
ASK 2

ProtoOAStopOutStrategy

The strategy for choosing which Position to close during a Stop Out

Name Value Description
MOST_MARGIN_USED_FIRST 0 A Stop Out strategy that closes a Position with the largest Used Margin
MOST_LOSING_FIRST 1 A Stop Out strategy that closes a Position with the least PnL

ProtoOASwapCalculationType

Enum for specifying SWAP calculation type for symbol.

Name Value Description
PIPS 0 Specifies type of SWAP computation as PIPS (0)
PERCENTAGE 1 Specifies type of SWAP computation as PERCENTAGE (1, annual, in percent)
POINTS 2 Specifies type of SWAP computation as POINTS (2)

ProtoOASymbol

Trading symbol entity.

Field Type Label Description
symbolId int64 Required The unique identifier of the symbol in specific server environment within cTrader platform. Different servers have different IDs.
digits int32 Required Number of price digits to be displayed.
pipPosition int32 Required Pip position on digits.
enableShortSelling bool Optional If TRUE then the short selling with the symbol is enabled.
guaranteedStopLoss bool Optional If TRUE then setting of guaranteedStopLoss is available for limited risk accounts.
swapRollover3Days ProtoOADayOfWeek Optional Day of the week when SWAP charge amount will be tripled. Doesn't impact Rollover Commission.
swapLong double Optional SWAP charge for long positions.
swapShort double Optional SWAP charge for short positions.
maxVolume int64 Optional Maximum allowed volume in cents for an order with a symbol.
minVolume int64 Optional Minimum allowed volume in cents for an order with a symbol.
stepVolume int64 Optional Step of the volume in cents for an order.
maxExposure uint64 Optional Value of max exposure per symbol, per account. Blocks execution if breached.
schedule RepeatedField<ProtoOAInterval> Repeated Symbol trading interval, specified in seconds starting from SUNDAY 00:00 in specified time zone.
commission int64 Optional Commission base amount. Total commission depends on commissionType. Use preciseTradingCommissionRate.
commissionType ProtoOACommissionType Optional Commission type. See ProtoOACommissionType for details.
slDistance uint32 Optional Minimum allowed distance between stop loss and current market price.
tpDistance uint32 Optional Minimum allowed distance between take profit and current market price.
gslDistance uint32 Optional Minimum allowed distance between guaranteed stop loss and current market price.
gslCharge int64 Optional Guaranteed stop loss fee.
distanceSetIn ProtoOASymbolDistanceType Optional Unit of distance measure for slDistance, tpDistance, gslDistance.
minCommission int64 Optional Minimum commission amount per trade. Use preciseMinCommission.
minCommissionType ProtoOAMinCommissionType Optional Minimum commission Type. See ProtoOAMinCommissionType for details.
minCommissionAsset string Optional Currency for minimum commission. (USD or quote currency).
rolloverCommission int64 Optional Administrative Fee, charged instead of Swaps if the Account is marked as a "Shariah Compliant (Swap Free)". The Administrative Fee is charged daily as USD per current open volume of Position in lots. The Account charged in the Deposit currency.
skipRolloverDays int32 Optional Initial period before the first rolloverCommission will be charged on the account.
scheduleTimeZone string Optional Time zone for the symbol trading intervals.
tradingMode ProtoOATradingMode Optional Rules for trading with the symbol. See ProtoOATradingMode for details.
rolloverCommission3Days ProtoOADayOfWeek Optional Day of the week (in UTC) when Administrative Fee charge amount will be tripled. Applied only if RolloverChargePeriod = 0 or 1.
swapCalculationType ProtoOASwapCalculationType Optional Specifies type of SWAP computation as PIPS (0) or PERCENTAGE (1, annual, in percent).
lotSize int64 Optional Lot size of the Symbol (in cents).
preciseTradingCommissionRate int64 Optional Commission base amount. Total commission depends on commissionType: for non-percentage types it is multiplied by 10^8, for percentage of value commission type it is multiplied by 10^5.
preciseMinCommission int64 Optional Minimum commission amount per trade multiplied by 10^8.
holiday RepeatedField<ProtoOAHoliday> Repeated List of holidays for this symbol specified by broker.
pnlConversionFeeRate int32 Optional Percentage (1 = 0.01%) of the realized Gross Profit, which will be paid by the Trader for any trade if the Quote Asset of the traded Symbol is not matched with the Deposit Asset.
leverageId int64 Optional The unique identifier of dynamic leverage entity. https://help.ctrader.com/ctrader/trading/dynamic-leverage
swapPeriod int32 Optional Period of charging swaps in hours. 24 means swaps will be charged 1 time per day, 12 - every 12 hours, 8 - every 8 hours, etc.
swapTime int32 Optional Time in minutes from 00:00 (UTC) when intraday swaps are charged for the first time.
skipSWAPPeriods int32 Optional Count of swapPeriods before the first SWAP charge.
chargeSwapAtWeekends bool Optional If enabled, SWAP will be charged for all days of the week, including Saturday and Sunday.
measurementUnits string Optional Specifies the units in which the base Asset of the Symbol is denominated.

ProtoOASymbolCategory

Symbol category entity.

Field Type Label Description
id int64 Required The unique identifier of the symbol category.
assetClassId int64 Required Link to the asset class. One asset class can have many symbol categories.
name string Required Category name.
sortingNumber double Optional The number used for sorting Symbol Categories in the UI (lowest number should appear at the top).

ProtoOASymbolDistanceType

Enum for specifying stop loss and take profit distances.

Name Value Description
SYMBOL_DISTANCE_IN_POINTS 1
SYMBOL_DISTANCE_IN_PERCENTAGE 2

ProtoOATickData

Historical tick data type.

Field Type Label Description
timestamp int64 Required The Unix time in milliseconds of the tick. See ProtoOAGetTickDataRes.tickData for details.
tick int64 Required Tick price.

ProtoOATimeInForce

Order's time in force ENUM.

Name Value Description
GOOD_TILL_DATE 1
GOOD_TILL_CANCEL 2
IMMEDIATE_OR_CANCEL 3
FILL_OR_KILL 4
MARKET_ON_OPEN 5

ProtoOATotalMarginCalculationType

Enum for specifying margin calculation type for an account.

Name Value Description
MAX 0
SUM 1
NET 2

ProtoOATradeData

Position/order trading details entity.

Field Type Label Description
symbolId int64 Required The unique identifier of the symbol in specific server environment within cTrader platform. Different brokers might have different IDs.
volume int64 Required Volume in cents (e.g. 1000 in protocol means 10.00 units).
tradeSide ProtoOATradeSide Required Buy, Sell.
openTimestamp int64 Optional The Unix time in milliseconds when position was opened or order was created.
label string Optional Text label specified during order request.
guaranteedStopLoss bool Optional If TRUE then position/order stop loss is guaranteedStopLoss.
comment string Optional User-specified comment.
measurementUnits string Optional Specifies the units in which the Symbol is denominated.
closeTimestamp uint64 Optional The Unix time in milliseconds when a Position was closed

ProtoOATrader

Trading account entity.

Field Type Label Description
ctidTraderAccountId int64 Required The unique Trader's Account ID used to match the responses to the Trader's Account.
balance int64 Required Current account balance.
balanceVersion int64 Optional Balance version used to identify the final balance. Increments each time when the trader's account balance is changed.
managerBonus int64 Optional Amount of broker's bonus allocated to the account.
ibBonus int64 Optional Amount of introducing broker bonus allocated to the account.
nonWithdrawableBonus int64 Optional Broker's bonus that cannot be withdrew from the account as cash.
accessRights ProtoOAAccessRights Optional Access rights that an owner has to the account in cTrader platform. See ProtoOAAccessRights for details.
depositAssetId int64 Required Deposit currency of the account.
swapFree bool Optional If TRUE then account is Shariah compliant.
leverageInCents uint32 Optional Account leverage (e.g. If leverage = 1:50 then value = 5000).
totalMarginCalculationType ProtoOATotalMarginCalculationType Optional Margin computation type for the account (MAX, SUM, NET).
maxLeverage uint32 Optional Maximum allowed leverage for the account. Used as validation when a Trader can change leverage value.
frenchRisk bool Optional If TRUE then account is AMF compliant. Use isLimitedRisk and limitedRiskMarginCalculationStrategy.
traderLogin int64 Optional ID of the account that is unique per server (Broker).
accountType ProtoOAAccountType Optional Account type: HEDGED, NETTED, etc.
brokerName string Optional Some whitelabel assigned to trader by broker at the moment of account creation.
registrationTimestamp int64 Optional The Unix timestamp in milliseconds of the account registration. Should be used as minimal date in historical data requests.
isLimitedRisk bool Optional If TRUE then account is compliant to use specific margin calculation strategy. Such accounts are require to have guaranteed stop loss on all positions.
limitedRiskMarginCalculationStrategy ProtoOALimitedRiskMarginCalculationStrategy Optional Special strategy used in margin calculations for this account (if account isLimitedRisk).
moneyDigits uint32 Optional Specifies the exponent of the monetary values. E.g. moneyDigits = 8 must be interpret as business value multiplied by 10^8, then real balance would be 10053099944 / 10^8 = 100.53099944. Affects balance, managerBonus, ibBonus, nonWithdrawableBonus.
fairStopOut bool Optional If TRUE - Position is fully closed on Stop Out, if FALSE - smart (partial closing) Stop Out is applied, if unspecified - Stop Out format is determined by Broker.
stopOutStrategy ProtoOAStopOutStrategy Optional The Stop Out strategy that is used for this Trader. The Trader can change the value in the cTrader UI if this option is not disabled by the Broker

ProtoOATradeSide

Trader side ENUM.

Used for order, position, deal.

Name Value Description
BUY 1
SELL 2

ProtoOATradingMode

Enum for specifying symbol trading mode.

Name Value Description
ENABLED 0
DISABLED_WITHOUT_PENDINGS_EXECUTION 1
DISABLED_WITH_PENDINGS_EXECUTION 2
CLOSE_ONLY_MODE 3

ProtoOATrendbar

Historical Trendbar entity.

Field Type Label Description
volume int64 Required Bar volume in ticks.
period ProtoOATrendbarPeriod Optional Bar period.
low int64 Optional Low price of the bar.
deltaOpen uint64 Optional Delta between open and low price. open = low + deltaOpen.
deltaClose uint64 Optional Delta between close and low price. close = low + deltaClose.
deltaHigh uint64 Optional Delta between high and low price. high = low + deltaHigh.
utcTimestampInMinutes uint32 Optional The Unix time in minutes of the bar, equal to the timestamp of the open tick.

ProtoOATrendbarPeriod

Trendbar period ENUM.

Name Value Description
M1 1
M2 2
M3 3
M4 4
M5 5
M10 6
M15 7
M30 8
H1 9
H4 10
H12 11
D1 12
W1 13
MN1 14