Downloads 4 proto files from spotware/openapi-proto-messages (MIT license), compiles with prost-build, and adds payload-type constants + dispatch helpers. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
724 lines
44 KiB
Protocol Buffer
724 lines
44 KiB
Protocol Buffer
syntax = "proto2";
|
|
|
|
option go_package = "/openapi";
|
|
|
|
option java_multiple_files = true;
|
|
|
|
option java_generate_equals_and_hash = true;
|
|
|
|
option java_package = "com.xtrader.protocol.openapi.v2.model";
|
|
|
|
option java_outer_classname = "ContainerOpenApiV2ModelMessages";
|
|
|
|
enum ProtoOAPayloadType {
|
|
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;
|
|
}
|
|
|
|
/** Asset entity. */
|
|
message ProtoOAAsset {
|
|
required int64 assetId = 1; // The unique asset ID.
|
|
required string name = 2; // The asset name.
|
|
optional string displayName = 3; // User friendly name.
|
|
optional int32 digits = 4; // Precision of the asset.
|
|
}
|
|
|
|
/** Trading symbol entity. */
|
|
message ProtoOASymbol {
|
|
required int64 symbolId = 1; // The unique identifier of the symbol in specific server environment within cTrader platform. Different servers have different IDs.
|
|
required int32 digits = 2; // Number of price digits to be displayed.
|
|
required int32 pipPosition = 3; // Pip position on digits.
|
|
optional bool enableShortSelling = 4; // If TRUE then the short selling with the symbol is enabled.
|
|
optional bool guaranteedStopLoss = 5; // If TRUE then setting of guaranteedStopLoss is available for limited risk accounts.
|
|
optional ProtoOADayOfWeek swapRollover3Days = 6 [default = MONDAY]; // Day of the week when SWAP charge amount will be tripled. Doesn't impact Rollover Commission.
|
|
optional double swapLong = 7; // SWAP charge for long positions.
|
|
optional double swapShort = 8; // SWAP charge for short positions.
|
|
optional int64 maxVolume = 9; // Maximum allowed volume in cents for an order with a symbol.
|
|
optional int64 minVolume = 10; // Minimum allowed volume in cents for an order with a symbol.
|
|
optional int64 stepVolume = 11; // Step of the volume in cents for an order.
|
|
optional uint64 maxExposure = 12; // Value of max exposure per symbol, per account. Blocks execution if breached.
|
|
repeated ProtoOAInterval schedule = 13; // Symbol trading interval, specified in seconds starting from SUNDAY 00:00 in specified time zone.
|
|
optional int64 commission = 14 [deprecated = true]; // Commission base amount. Total commission depends on commissionType. Use preciseTradingCommissionRate.
|
|
optional ProtoOACommissionType commissionType = 15 [default = USD_PER_MILLION_USD]; // Commission type. See ProtoOACommissionType for details.
|
|
optional uint32 slDistance = 16; // Minimum allowed distance between stop loss and current market price.
|
|
optional uint32 tpDistance = 17; // Minimum allowed distance between take profit and current market price.
|
|
optional uint32 gslDistance = 18; // Minimum allowed distance between guaranteed stop loss and current market price.
|
|
optional int64 gslCharge = 19; // Guaranteed stop loss fee.
|
|
optional ProtoOASymbolDistanceType distanceSetIn = 20 [default = SYMBOL_DISTANCE_IN_POINTS]; // Unit of distance measure for slDistance, tpDistance, gslDistance.
|
|
optional int64 minCommission = 21 [deprecated = true]; // Minimum commission amount per trade. Use preciseMinCommission.
|
|
optional ProtoOAMinCommissionType minCommissionType = 22 [default = CURRENCY]; // Minimum commission Type. See ProtoOAMinCommissionType for details.
|
|
optional string minCommissionAsset = 23 [default = "USD"]; // Currency for minimum commission. (USD or quote currency).
|
|
optional int64 rolloverCommission = 24; // 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.
|
|
optional int32 skipRolloverDays = 25; // Initial period before the first rolloverCommission will be charged on the account.
|
|
optional string scheduleTimeZone = 26; // Time zone for the symbol trading intervals.
|
|
optional ProtoOATradingMode tradingMode = 27 [default = ENABLED]; // Rules for trading with the symbol. See ProtoOATradingMode for details.
|
|
optional ProtoOADayOfWeek rolloverCommission3Days = 28 [default = MONDAY]; // Day of the week (in UTC) when Administrative Fee charge amount will be tripled. Applied only if RolloverChargePeriod = 0 or 1.
|
|
optional ProtoOASwapCalculationType swapCalculationType = 29 [default = PIPS]; // Specifies type of SWAP computation as PIPS (0) or PERCENTAGE (1, annual, in percent).
|
|
optional int64 lotSize = 30; // Lot size of the Symbol (in cents).
|
|
optional int64 preciseTradingCommissionRate = 31; // 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.
|
|
optional int64 preciseMinCommission = 32; // Minimum commission amount per trade multiplied by 10^8.
|
|
repeated ProtoOAHoliday holiday = 33; // List of holidays for this symbol specified by broker.
|
|
optional int32 pnlConversionFeeRate = 34; // 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.
|
|
optional int64 leverageId = 35; // The unique identifier of dynamic leverage entity. https://help.ctrader.com/ctrader/trading/dynamic-leverage
|
|
optional int32 swapPeriod = 36; // 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.
|
|
optional int32 swapTime = 37; // Time in minutes from 00:00 (UTC) when intraday swaps are charged for the first time.
|
|
optional int32 skipSWAPPeriods = 38; // Count of swapPeriods before the first SWAP charge.
|
|
optional bool chargeSwapAtWeekends = 39; // If enabled, SWAP will be charged for all days of the week, including Saturday and Sunday.
|
|
optional string measurementUnits = 40; // Specifies the units in which the base Asset of the Symbol is denominated.
|
|
}
|
|
|
|
/** Lightweight symbol entity. */
|
|
message ProtoOALightSymbol {
|
|
required int64 symbolId = 1; // The unique identifier of the symbol in specific server environment within cTrader platform. Different brokers might have different IDs.
|
|
optional string symbolName = 2; // Name of the symbol (e.g. EUR/USD).
|
|
optional bool enabled = 3; // If TRUE then symbol is visible for traders.
|
|
optional int64 baseAssetId = 4; // Base asset.
|
|
optional int64 quoteAssetId = 5; // Quote asset.
|
|
optional int64 symbolCategoryId = 6; // Id of the symbol category used for symbols grouping.
|
|
optional string description = 7;
|
|
optional double sortingNumber = 8; // The number used for sorting Symbols in the UI (lowest number should appear at the top).
|
|
}
|
|
|
|
message ProtoOAArchivedSymbol {
|
|
required int64 symbolId = 1; // The unique identifier of the symbol in specific server environment within cTrader platform. Different brokers might have different IDs.
|
|
required string name = 2; // Name of the symbol (e.g. EUR/USD).
|
|
required int64 utcLastUpdateTimestamp = 3; // The Unix time in milliseconds of the last update of the symbol.
|
|
optional string description = 4; // Description of the symbol.
|
|
}
|
|
|
|
/** Symbol category entity. */
|
|
message ProtoOASymbolCategory {
|
|
required int64 id = 1; // The unique identifier of the symbol category.
|
|
required int64 assetClassId = 2; // Link to the asset class. One asset class can have many symbol categories.
|
|
required string name = 3; // Category name.
|
|
optional double sortingNumber = 4; // The number used for sorting Symbol Categories in the UI (lowest number should appear at the top).
|
|
}
|
|
|
|
enum ProtoOADayOfWeek {
|
|
NONE = 0;
|
|
MONDAY = 1;
|
|
TUESDAY = 2;
|
|
WEDNESDAY = 3;
|
|
THURSDAY = 4;
|
|
FRIDAY = 5;
|
|
SATURDAY = 6;
|
|
SUNDAY = 7;
|
|
}
|
|
|
|
/** Symbol trading session entity. */
|
|
message ProtoOAInterval {
|
|
required uint32 startSecond = 3; // Interval start, specified in seconds starting from SUNDAY 00:00 in specified time zone (inclusive to the interval).
|
|
required uint32 endSecond = 4; // Interval end, specified in seconds starting from SUNDAY 00:00 in specified time zone (exclusive from the interval).
|
|
}
|
|
|
|
/** Enum for specifying type of trading commission. */
|
|
enum ProtoOACommissionType {
|
|
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.
|
|
}
|
|
|
|
/** Enum for specifying stop loss and take profit distances. */
|
|
enum ProtoOASymbolDistanceType {
|
|
SYMBOL_DISTANCE_IN_POINTS = 1;
|
|
SYMBOL_DISTANCE_IN_PERCENTAGE = 2;
|
|
}
|
|
|
|
/** Enum for specifying type of minimum trading commission. */
|
|
enum ProtoOAMinCommissionType {
|
|
CURRENCY = 1;
|
|
QUOTE_CURRENCY = 2;
|
|
}
|
|
|
|
/** Enum for specifying symbol trading mode. */
|
|
enum ProtoOATradingMode {
|
|
ENABLED = 0;
|
|
DISABLED_WITHOUT_PENDINGS_EXECUTION = 1;
|
|
DISABLED_WITH_PENDINGS_EXECUTION = 2;
|
|
CLOSE_ONLY_MODE = 3;
|
|
}
|
|
|
|
/** Enum for specifying SWAP calculation type for symbol. */
|
|
enum ProtoOASwapCalculationType {
|
|
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)
|
|
}
|
|
|
|
/** Enum for specifying access right for a trader. */
|
|
enum ProtoOAAccessRights {
|
|
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.
|
|
}
|
|
|
|
/** Enum for specifying margin calculation type for an account. */
|
|
enum ProtoOATotalMarginCalculationType {
|
|
MAX = 0;
|
|
SUM = 1;
|
|
NET = 2;
|
|
}
|
|
|
|
/** Enum for specifying type of an account. */
|
|
enum ProtoOAAccountType {
|
|
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.
|
|
}
|
|
|
|
/** Trading account entity. */
|
|
message ProtoOATrader {
|
|
required int64 ctidTraderAccountId = 1; // The unique Trader's Account ID used to match the responses to the Trader's Account.
|
|
required int64 balance = 2; // Current account balance.
|
|
optional int64 balanceVersion = 3; // Balance version used to identify the final balance. Increments each time when the trader's account balance is changed.
|
|
optional int64 managerBonus = 4; // Amount of broker's bonus allocated to the account.
|
|
optional int64 ibBonus = 5; // Amount of introducing broker bonus allocated to the account.
|
|
optional int64 nonWithdrawableBonus = 6; // Broker's bonus that cannot be withdrew from the account as cash.
|
|
optional ProtoOAAccessRights accessRights = 7 [default = FULL_ACCESS]; // Access rights that an owner has to the account in cTrader platform. See ProtoOAAccessRights for details.
|
|
required int64 depositAssetId = 8; // Deposit currency of the account.
|
|
optional bool swapFree = 9; // If TRUE then account is Shariah compliant.
|
|
optional uint32 leverageInCents = 10; // Account leverage (e.g. If leverage = 1:50 then value = 5000).
|
|
optional ProtoOATotalMarginCalculationType totalMarginCalculationType = 11; // Margin computation type for the account (MAX, SUM, NET).
|
|
optional uint32 maxLeverage = 12; // Maximum allowed leverage for the account. Used as validation when a Trader can change leverage value.
|
|
optional bool frenchRisk = 13 [deprecated = true]; // If TRUE then account is AMF compliant. Use isLimitedRisk and limitedRiskMarginCalculationStrategy.
|
|
optional int64 traderLogin = 14; // ID of the account that is unique per server (Broker).
|
|
optional ProtoOAAccountType accountType = 15 [default = HEDGED]; // Account type: HEDGED, NETTED, etc.
|
|
optional string brokerName = 16; // Some whitelabel assigned to trader by broker at the moment of account creation.
|
|
optional int64 registrationTimestamp = 17; // The Unix timestamp in milliseconds of the account registration. Should be used as minimal date in historical data requests.
|
|
optional bool isLimitedRisk = 18; // If TRUE then account is compliant to use specific margin calculation strategy. Such accounts are require to have guaranteed stop loss on all positions.
|
|
optional ProtoOALimitedRiskMarginCalculationStrategy limitedRiskMarginCalculationStrategy = 19 [default = ACCORDING_TO_LEVERAGE]; // Special strategy used in margin calculations for this account (if account isLimitedRisk).
|
|
optional uint32 moneyDigits = 20; // 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.
|
|
optional bool fairStopOut = 21; // 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.
|
|
optional ProtoOAStopOutStrategy stopOutStrategy = 22 [default = MOST_MARGIN_USED_FIRST]; //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
|
|
}
|
|
|
|
/** Position status ENUM. */
|
|
enum ProtoOAPositionStatus {
|
|
POSITION_STATUS_OPEN = 1;
|
|
POSITION_STATUS_CLOSED = 2;
|
|
POSITION_STATUS_CREATED = 3; // Empty position is created for pending order.
|
|
POSITION_STATUS_ERROR = 4;
|
|
}
|
|
|
|
/** Trader side ENUM. Used for order, position, deal. */
|
|
enum ProtoOATradeSide {
|
|
BUY = 1;
|
|
SELL = 2;
|
|
}
|
|
|
|
/** Order type ENUM. */
|
|
enum ProtoOAOrderType {
|
|
MARKET = 1;
|
|
LIMIT = 2;
|
|
STOP = 3;
|
|
STOP_LOSS_TAKE_PROFIT = 4;
|
|
MARKET_RANGE = 5;
|
|
STOP_LIMIT = 6;
|
|
}
|
|
|
|
/** Order's time in force ENUM. */
|
|
enum ProtoOATimeInForce {
|
|
GOOD_TILL_DATE = 1;
|
|
GOOD_TILL_CANCEL = 2;
|
|
IMMEDIATE_OR_CANCEL = 3;
|
|
FILL_OR_KILL = 4;
|
|
MARKET_ON_OPEN = 5;
|
|
}
|
|
|
|
/** Order status ENUM. */
|
|
enum ProtoOAOrderStatus {
|
|
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.
|
|
}
|
|
|
|
/** Stop Order and Stop Loss triggering method ENUM. */
|
|
enum ProtoOAOrderTriggerMethod {
|
|
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.
|
|
}
|
|
|
|
/** Trade position entity. */
|
|
message ProtoOAPosition {
|
|
required int64 positionId = 1; // 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.
|
|
required ProtoOATradeData tradeData = 2; // Position details. See ProtoOATradeData for details.
|
|
required ProtoOAPositionStatus positionStatus = 3; // Current status of the position.
|
|
required int64 swap = 4; // Total amount of charged swap on open position.
|
|
optional double price = 5; // VWAP price of the position based on all executions (orders) linked to the position.
|
|
optional double stopLoss = 6; // Current stop loss price.
|
|
optional double takeProfit = 7; // Current take profit price.
|
|
optional int64 utcLastUpdateTimestamp = 8; // 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.
|
|
optional int64 commission = 9; // Current unrealized commission related to the position.
|
|
optional double marginRate = 10; // Rate for used margin computation. Represented as Base/Deposit.
|
|
optional int64 mirroringCommission = 11; // Amount of unrealized commission related to following of strategy provider.
|
|
optional bool guaranteedStopLoss = 12; // If TRUE then position's stop loss is guaranteedStopLoss.
|
|
optional uint64 usedMargin = 13; // Amount of margin used for the position in deposit currency.
|
|
optional ProtoOAOrderTriggerMethod stopLossTriggerMethod = 14 [default = TRADE]; // Stop trigger method for SL/TP of the position.
|
|
optional uint32 moneyDigits = 15; // 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.
|
|
optional bool trailingStopLoss = 16; //If TRUE then the Trailing Stop Loss is applied.
|
|
}
|
|
|
|
/** Position/order trading details entity. */
|
|
message ProtoOATradeData {
|
|
required int64 symbolId = 1; // The unique identifier of the symbol in specific server environment within cTrader platform. Different brokers might have different IDs.
|
|
required int64 volume = 2; // Volume in cents (e.g. 1000 in protocol means 10.00 units).
|
|
required ProtoOATradeSide tradeSide = 3; // Buy, Sell.
|
|
optional int64 openTimestamp = 4; // The Unix time in milliseconds when position was opened or order was created.
|
|
optional string label = 5; // Text label specified during order request.
|
|
optional bool guaranteedStopLoss = 6; // If TRUE then position/order stop loss is guaranteedStopLoss.
|
|
optional string comment = 7; // User-specified comment.
|
|
optional string measurementUnits = 8; // Specifies the units in which the Symbol is denominated.
|
|
optional uint64 closeTimestamp = 9; // The Unix time in milliseconds when a Position was closed
|
|
}
|
|
|
|
/** Trade order entity. */
|
|
message ProtoOAOrder {
|
|
required int64 orderId = 1; // 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.
|
|
required ProtoOATradeData tradeData = 2; // Detailed trader data.
|
|
required ProtoOAOrderType orderType = 3; // Order type.
|
|
required ProtoOAOrderStatus orderStatus = 4; // Order status.
|
|
optional int64 expirationTimestamp = 6; // The Unix time in milliseconds of expiration if the order has time in force GTD.
|
|
optional double executionPrice = 7; // Price at which an order was executed. For order with FILLED status.
|
|
optional int64 executedVolume = 8; // Part of the volume that was filled in cents (e.g. 1000 in protocol means 10.00 units).
|
|
optional int64 utcLastUpdateTimestamp = 9; // The Unix time in milliseconds of the last update of the order.
|
|
optional double baseSlippagePrice = 10; // Used for Market Range order with combination of slippageInPoints to specify price range were order can be executed.
|
|
optional int64 slippageInPoints = 11; // Used for Market Range and STOP_LIMIT orders to to specify price range were order can be executed.
|
|
optional bool closingOrder = 12; // If TRUE then the order is closing part of whole position. Must have specified positionId.
|
|
optional double limitPrice = 13; // Valid only for LIMIT orders.
|
|
optional double stopPrice = 14; // Valid only for STOP and STOP_LIMIT orders.
|
|
optional double stopLoss = 15; // Absolute stopLoss price.
|
|
optional double takeProfit = 16; // Absolute takeProfit price.
|
|
optional string clientOrderId = 17; // Optional ClientOrderId. Max Length = 50 chars.
|
|
optional ProtoOATimeInForce timeInForce = 18 [default = IMMEDIATE_OR_CANCEL]; // Order's time in force. Depends on order type.
|
|
optional int64 positionId = 19; // ID of the position linked to the order (e.g. closing order, order that increase volume of a specific position, etc.).
|
|
optional int64 relativeStopLoss = 20; // 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.
|
|
optional int64 relativeTakeProfit = 21; // 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.
|
|
optional bool isStopOut = 22; // If TRUE then order was stopped out from server side.
|
|
optional bool trailingStopLoss = 23; // If TRUE then order is trailingStopLoss. Valid for STOP_LOSS_TAKE_PROFIT order.
|
|
optional ProtoOAOrderTriggerMethod stopTriggerMethod = 24 [default = TRADE]; // Trigger method for the order. Valid only for STOP and STOP_LIMIT orders.
|
|
}
|
|
|
|
/** Execution event type ENUM. */
|
|
enum ProtoOAExecutionType {
|
|
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.
|
|
}
|
|
|
|
/** Bonus deposit/withdrawal entity. */
|
|
message ProtoOABonusDepositWithdraw {
|
|
required ProtoOAChangeBonusType operationType = 1; // Type of the operation. Deposit/Withdrawal.
|
|
required int64 bonusHistoryId = 2; // The unique ID of the bonus deposit/withdrawal operation.
|
|
required int64 managerBonus = 3; // Total amount of broker's bonus after the operation.
|
|
required int64 managerDelta = 4; // Amount of bonus deposited/withdrew by manager.
|
|
required int64 ibBonus = 5; // Total amount of introducing broker's bonus after the operation.
|
|
required int64 ibDelta = 6; // Amount of bonus deposited/withdrew by introducing broker.
|
|
required int64 changeBonusTimestamp = 7; // The Unix time in milliseconds when the bonus operation was executed.
|
|
optional string externalNote = 8; // Note added to operation. Visible to the trader.
|
|
optional int64 introducingBrokerId = 9; // ID of introducing broker who deposited/withdrew bonus.
|
|
optional uint32 moneyDigits = 10; // 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.
|
|
}
|
|
|
|
/** Bonus operation type ENUM. */
|
|
enum ProtoOAChangeBonusType {
|
|
BONUS_DEPOSIT = 0;
|
|
BONUS_WITHDRAW = 1;
|
|
}
|
|
|
|
/** Account deposit/withdrawal operation entity. */
|
|
message ProtoOADepositWithdraw {
|
|
required ProtoOAChangeBalanceType operationType = 1; // Type of the operation. Deposit/Withdrawal.
|
|
required int64 balanceHistoryId = 2; // The unique ID of the deposit/withdrawal operation.
|
|
required int64 balance = 3; // Account balance after the operation was executed.
|
|
required int64 delta = 4; // Amount of deposit/withdrawal operation.
|
|
required int64 changeBalanceTimestamp = 5; // The Unix time in milliseconds when deposit/withdrawal operation was executed.
|
|
optional string externalNote = 6; // Note added to operation. Visible to the trader.
|
|
optional int64 balanceVersion = 7; // Balance version used to identify the final balance. Increments each time when the trader's account balance is changed.
|
|
optional int64 equity = 8; // Total account's equity after balance operation was executed.
|
|
optional uint32 moneyDigits = 9; // 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.
|
|
}
|
|
|
|
/** Balance operation entity. Covers all cash movement operations related to account, trading, IB operations, mirroring, etc. */
|
|
enum ProtoOAChangeBalanceType {
|
|
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.
|
|
}
|
|
|
|
/** Execution entity. */
|
|
message ProtoOADeal {
|
|
required int64 dealId = 1; // The unique ID of the execution deal.
|
|
required int64 orderId = 2; // Source order of the deal.
|
|
required int64 positionId = 3; // Source position of the deal.
|
|
required int64 volume = 4; // Volume sent for execution, in cents.
|
|
required int64 filledVolume = 5; // Filled volume, in cents.
|
|
required int64 symbolId = 6; // The unique identifier of the symbol in specific server environment within cTrader platform. Different servers have different IDs.
|
|
required int64 createTimestamp = 7; // The Unix time in milliseconds when the deal was sent for execution.
|
|
required int64 executionTimestamp = 8; // The Unix time in milliseconds when the deal was executed.
|
|
optional int64 utcLastUpdateTimestamp = 9; // The Unix time in milliseconds when the deal was created, executed or rejected.
|
|
optional double executionPrice = 10; // Execution price.
|
|
required ProtoOATradeSide tradeSide = 11; // Buy/Sell.
|
|
required ProtoOADealStatus dealStatus = 12; // Status of the deal.
|
|
optional double marginRate = 13; // Rate for used margin computation. Represented as Base/Deposit.
|
|
optional int64 commission = 14; // Amount of trading commission associated with the deal.
|
|
optional double baseToUsdConversionRate = 15; // Base to USD conversion rate on the time of deal execution.
|
|
optional ProtoOAClosePositionDetail closePositionDetail = 16; // Closing position detail. Valid only for closing deal.
|
|
optional uint32 moneyDigits = 17; // 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.
|
|
}
|
|
|
|
/** Deal details for ProtoOADealOffsetListReq. */
|
|
message ProtoOADealOffset {
|
|
required int64 dealId = 1; // The unique ID of the execution Deal.
|
|
required int64 volume = 2; // Matched volume, in cents.
|
|
optional int64 executionTimestamp = 3; // The Unix time in milliseconds when the offset Deal was executed.
|
|
optional double executionPrice = 4; // Execution price of the offset Deal.
|
|
}
|
|
|
|
/** Deal status ENUM. */
|
|
enum ProtoOADealStatus {
|
|
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.
|
|
}
|
|
|
|
/** Trading details for closing deal. */
|
|
message ProtoOAClosePositionDetail {
|
|
required double entryPrice = 1; // Position price at the moment of filling the closing order.
|
|
required int64 grossProfit = 2; // Amount of realized gross profit after closing deal execution.
|
|
required int64 swap = 3; // Amount of realized swap related to closed volume.
|
|
required int64 commission = 4; // Amount of realized commission related to closed volume.
|
|
required int64 balance = 5; // Account balance after closing deal execution.
|
|
optional double quoteToDepositConversionRate = 6; // Quote/Deposit currency conversion rate on the time of closing deal execution.
|
|
optional int64 closedVolume = 7; // Closed volume in cents.
|
|
optional int64 balanceVersion = 8; // Balance version of the account related to closing deal operation.
|
|
optional uint32 moneyDigits = 9; // 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.
|
|
optional int64 pnlConversionFee = 10; // Fee for conversion applied to the Deal in account's ccy when trader symbol's quote asset id <> ProtoOATrader.depositAssetId.
|
|
}
|
|
|
|
/** Trendbar period ENUM. */
|
|
enum ProtoOATrendbarPeriod {
|
|
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;
|
|
}
|
|
|
|
/** Historical Trendbar entity. */
|
|
message ProtoOATrendbar {
|
|
required int64 volume = 3; // Bar volume in ticks.
|
|
optional ProtoOATrendbarPeriod period = 4 [default = M1]; // Bar period.
|
|
optional int64 low = 5; // Low price of the bar.
|
|
optional uint64 deltaOpen = 6; // Delta between open and low price. open = low + deltaOpen.
|
|
optional uint64 deltaClose = 7; // Delta between close and low price. close = low + deltaClose.
|
|
optional uint64 deltaHigh = 8; // Delta between high and low price. high = low + deltaHigh.
|
|
optional uint32 utcTimestampInMinutes = 9; // The Unix time in minutes of the bar, equal to the timestamp of the open tick.
|
|
}
|
|
|
|
/** Expected margin computation entity. */
|
|
message ProtoOAExpectedMargin {
|
|
required int64 volume = 1; // Volume in cents used for computation of expected margin.
|
|
required int64 buyMargin = 2; // Buy margin amount.
|
|
required int64 sellMargin = 3; // Sell margin amount.
|
|
}
|
|
|
|
/** Price quote type. */
|
|
enum ProtoOAQuoteType {
|
|
BID = 1;
|
|
ASK = 2;
|
|
}
|
|
|
|
/** Historical tick data type. */
|
|
message ProtoOATickData {
|
|
required int64 timestamp = 1; // The Unix time in milliseconds of the tick. See ProtoOAGetTickDataRes.tickData for details.
|
|
required int64 tick = 2; // Tick price.
|
|
}
|
|
|
|
/** Open API application permission in regards to token ENUM. */
|
|
enum ProtoOAClientPermissionScope {
|
|
SCOPE_VIEW = 0; // Allows to use only view commends. Trade is prohibited.
|
|
SCOPE_TRADE = 1; // Allows to use all commands.
|
|
}
|
|
|
|
/** Trader profile entity. Empty due to GDPR. */
|
|
message ProtoOACtidProfile {
|
|
required int64 userId = 1;
|
|
}
|
|
|
|
/** Trader account entity. */
|
|
message ProtoOACtidTraderAccount {
|
|
required uint64 ctidTraderAccountId = 1; // Unique identifier of the trader's account. Used to match responses to trader's accounts.cTrader platform. Different brokers might have different ids
|
|
optional bool isLive = 2; // If TRUE then the account is belong to Live environment and live host must be used to authorize it
|
|
optional int64 traderLogin = 3; // TraderLogin for a specific account. Value is displayed on Client App UI
|
|
optional int64 lastClosingDealTimestamp = 4; // The Unix time in milliseconds of the last ProtoOAClosePositionDetail happened to this account.
|
|
optional int64 lastBalanceUpdateTimestamp = 5; // The Unix time in milliseconds of the last ProtoOADepositWithdraw happened to this account.
|
|
optional string brokerTitleShort = 6; // The name of the broker to which the account belongs to. Shortened to be displayed in the UI.
|
|
}
|
|
|
|
/** Asset class entity. */
|
|
message ProtoOAAssetClass {
|
|
optional int64 id = 1; // Unique asset ID.
|
|
optional string name = 2; // Asset class name.
|
|
optional double sortingNumber = 3; // The number used for sorting Asset Classes in the UI (lowest number should appear at the top).
|
|
}
|
|
|
|
/** Depth of market entity. */
|
|
message ProtoOADepthQuote {
|
|
required uint64 id = 1; // Quote ID.
|
|
required uint64 size = 3; // Quote size in cents.
|
|
optional uint64 bid = 4; // Bid price for bid quotes.
|
|
optional uint64 ask = 5; // Ask price for ask quotes.
|
|
}
|
|
|
|
/** 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. */
|
|
message ProtoOAMarginCall {
|
|
required ProtoOANotificationType marginCallType = 1; // Type of margin call. All margin calls are similar, only difference is in marginLevelThreshold.
|
|
required double marginLevelThreshold = 2; // Margin level threshold for margin call.
|
|
optional int64 utcLastUpdateTimestamp = 3; // The Unix time in milliseconds of the last update of the margin call.
|
|
}
|
|
|
|
/** Type of notification, currently only 3 instances of marginCall are supported. */
|
|
enum ProtoOANotificationType {
|
|
MARGIN_LEVEL_THRESHOLD_1 = 61; // one of three margin calls, they are all similar.
|
|
MARGIN_LEVEL_THRESHOLD_2 = 62; // one of three margin calls, they are all similar.
|
|
MARGIN_LEVEL_THRESHOLD_3 = 63; // one of three margin calls, they are all similar.
|
|
}
|
|
|
|
/** Error code ENUM. */
|
|
enum ProtoOAErrorCode {
|
|
// Authorization
|
|
OA_AUTH_TOKEN_EXPIRED = 1; // When token used for account authorization is expired.
|
|
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.
|
|
RET_ACCOUNT_DISABLED = 64; // When account is disabled.
|
|
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.
|
|
|
|
// General
|
|
REQUEST_FREQUENCY_EXCEEDED = 108; // Request frequency is reached.
|
|
SERVER_IS_UNDER_MAINTENANCE = 109; // Server is under maintenance.
|
|
CHANNEL_IS_BLOCKED = 110; // Operations are not allowed for this account.
|
|
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.
|
|
|
|
// Pricing
|
|
NOT_SUBSCRIBED_TO_SPOTS = 112; // When trying to subscribe to depth, trendbars, etc. without spot subscription.
|
|
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.
|
|
INCORRECT_BOUNDARIES = 35; // When requested period (from,to) is too large or invalid values are set to from/to.
|
|
|
|
// Trading
|
|
NO_QUOTES = 117; // Trading cannot be done as not quotes are available. Applicable for Book B.
|
|
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.
|
|
}
|
|
|
|
enum ProtoOALimitedRiskMarginCalculationStrategy {
|
|
ACCORDING_TO_LEVERAGE = 0;
|
|
ACCORDING_TO_GSL = 1;
|
|
ACCORDING_TO_GSL_AND_LEVERAGE = 2;
|
|
}
|
|
|
|
message ProtoOAHoliday {
|
|
required int64 holidayId = 1; // Unique ID of holiday.
|
|
required string name = 2; // Name of holiday.
|
|
optional string description = 3; // Description of holiday.
|
|
required string scheduleTimeZone = 4; // Timezone used for holiday.
|
|
required int64 holidayDate = 5; // Amount of days from 1st Jan 1970, multiply it by 86400000 to get Unix time in milliseconds.
|
|
required bool isRecurring = 6; // If TRUE, then the holiday happens each year.
|
|
optional int32 startSecond = 7; // Amount of seconds from 00:00:00 of the holiday day when holiday actually starts.
|
|
optional int32 endSecond = 8; // Amount of seconds from 00:00:00 of the holiday day when holiday actually finishes.
|
|
}
|
|
|
|
message ProtoOADynamicLeverage {
|
|
required int64 leverageId = 1; // Unique ID of dynamic leverage.
|
|
repeated ProtoOADynamicLeverageTier tiers = 2; // Tiers sorted by volume. Last tier's leverage is applied also to volume above specified.
|
|
}
|
|
|
|
message ProtoOADynamicLeverageTier {
|
|
required int64 volume = 1; // 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.
|
|
required int32 leverage = 2; // Applied leverage.
|
|
}
|
|
|
|
message ProtoOAPositionUnrealizedPnL {
|
|
required int64 positionId = 1; // The position ID.
|
|
required int64 grossUnrealizedPnL = 2; // The gross unrealized PnL of the position denoted in the account deposit currency.
|
|
required int64 netUnrealizedPnL = 3; // The net unrealized PnL of the position denoted in the account deposit currency. It does not include potential closing commission.
|
|
}
|
|
|
|
enum ProtoOAStopOutStrategy {//The strategy for choosing which Position to close during a Stop Out
|
|
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
|
|
}
|