Skip to main content

IBrokerTerminal

Interface

The Broker API is a key component that enables trading. Its main purpose is to connect TradingView charts with your trading logic. Refer to the Core trading concepts article for more information.

Methods

accountManagerInfo

The library calls accountManagerInfo to get information required for building the Account Manager.

Signature

accountManagerInfo() => AccountManagerInfo

Returns

AccountManagerInfo


accountsMetainfo

The library calls accountsMetainfo to get a list of accounts for a particular user. The method should return an array that contains an ID and name for each account.

Note that if accountsMetainfo returns an array containing more than one element, you should implement the setCurrentAccount method. Refer to Multiple accounts for more information.

Signature

accountsMetainfo() => Promise<AccountMetainfo[]>

Returns

Promise<AccountMetainfo[]>


cancelOrder

The library calls cancelOrder to request canceling an order. You should handle this request on your backend side and provide the library with a new order state. To do this, call the IBrokerConnectionAdapterHost.orderUpdate method right afterwards.

Signature

cancelOrder(orderId: string) => Promise<void>

Parameters

NameTypeDescription
orderIdstringThe ID of the order to cancel.

Returns

Promise<void>


cancelOrders

Optional

The library calls cancelOrders to request canceling multiple orders for a symbol. You should handle this request on your backend side and provide the library with a new order states. To do this, call the IBrokerConnectionAdapterHost.orderUpdate method right afterwards.

cancelOrders is only called when users click the CXL all button in the Depth of Market widget.

Signature

cancelOrders(symbol: string, side: Side, ordersIds: string[]) => Promise<void>

Parameters

NameTypeDescription
symbolstringThe symbol identifier.
sideSideAn order side.
ordersIdsstring[]IDs of the orders to cancel. The orders are selected based on the specified symbol and side.

Returns

Promise<void>


chartContextMenuActions

The library calls chartContextMenuActions when users open the context menu on the chart. This method also renders the Trade button in the context menu.

This method should return an array of ActionMetaInfo elements, each of them representing one context menu item.

Signature

chartContextMenuActions(context: TradeContext, options?: DefaultContextMenuActionsParams) => Promise<ActionMetaInfo[]>

Parameters

NameTypeDescription
contextTradeContextA context object passed by the library.
options?DefaultContextMenuActionsParamsDefault options for the context menu action parameters.

Returns

A promise that resolves to an array of ActionMetaInfo , which may be empty. In that case, the Trade button will be removed from the context menu.

Promise<ActionMetaInfo[]>


closeIndividualPosition

Optional

The library calls closeIndividualPosition if the BrokerConfigFlags.supportCloseIndividualPosition or BrokerConfigFlags.supportPartialCloseIndividualPosition configuration flag is true. It allows closing the individual position by ID.

Note that the library expects you to call the IBrokerConnectionAdapterHost.positionUpdate method right afterwards. Otherwise, the library will return a timeout issue.

Signature

closeIndividualPosition(individualPositionId: string, amount?: number) => Promise<void>

Parameters

NameTypeDescription
individualPositionIdstringThe individual position ID.
amount?numberThe amount is specified if supportPartialCloseIndividualPosition is true and the user wants to close only part of the individual position.

Returns

Promise<void>


closePosition

Optional

The library calls closePosition to request closing the position by ID. You should handle this request on your backend side and provide the library with a new order state. To do this, call the IBrokerConnectionAdapterHost.positionUpdate method right afterwards. Otherwise, the library will return a timeout issue.

closePosition is only called if the BrokerConfigFlags.supportClosePosition or BrokerConfigFlags.supportPartialClosePosition configuration flag is true.

Signature

closePosition(positionId: string, amount?: number) => Promise<void>

Parameters

NameTypeDescription
positionIdstringThe position ID.
amount?numberThe amount is specified if supportPartialClosePosition is true and the user wants to close only part of the position.

Returns

Promise<void>


connectionStatus

Defines a connection status for the Broker API. If any other value than 1 ("Connected") is returned, the Account Manager will display an endless spinner instead of users' trading data. If you want to handle other scenarios, for example when the status is disconnected, you need to manage this scenario within your implementation and use the IBrokerConnectionAdapterHost.connectionStatusUpdate method.

If the method is not implemented or returns a value other than 1, the following error will appear in the console: Method connectionStatus is not properly implemented.

Signature

connectionStatus() => ConnectionStatus

Returns

ConnectionStatus


currentAccount

The library calls currentAccount to get the current account's ID.

Signature

currentAccount() => AccountId

Returns

AccountId


editIndividualPositionBrackets

Optional

This method is called if the BrokerConfigFlags.supportIndividualPositionBrackets configuration flag is on. It displays a dialog that enables take-profit and stop-loss editing.

Note that the library expects you to call the IBrokerConnectionAdapterHost.positionUpdate method right afterwards.

Signature

editIndividualPositionBrackets(individualPositionId: string, brackets: Brackets) => Promise<void>

Parameters

NameTypeDescription
individualPositionIdstringID of existing individual position to be modified
bracketsBracketsnew Brackets to be set for the individual position

Returns

Promise<void>


editPositionBrackets

Optional

The library calls editPositionBrackets if the BrokerConfigFlags.supportPositionBrackets configuration flag is true. It shows a dialog that enables take-profit and stop-loss editing.

Note that the library expects you to call the IBrokerConnectionAdapterHost.positionUpdate method right afterwards.

Signature

editPositionBrackets(positionId: string, brackets: Brackets, customFields?: CustomInputFieldsValues) => Promise<void>

Parameters

NameTypeDescription
positionIdstringThe ID of the existing position to be modified.
bracketsBracketsNew brackets to be set for the position.
customFields?CustomInputFieldsValuesCustom fields to display in the dialog.

Returns

Promise<void>


executions

The library calls executions to request executions for the specified symbol. If you want executions to be displayed on the chart, set the BrokerConfigFlags.supportExecutions to true.

Signature

executions(symbol: string) => Promise<Execution[]>

Parameters

NameTypeDescription
symbolstringThe symbol identifier.

Returns

Promise<Execution[]>


formatter

Optional

Provide a custom price formatter for the specified symbol.

Signature

formatter(symbol: string, alignToMinMove: boolean) => Promise<INumberFormatter>

Parameters

NameTypeDescription
symbolstringsymbol identifier
alignToMinMovebooleanalign formatted number to the minimum movement amount of the symbol

Returns

Promise<INumberFormatter>


getOrderDialogOptions

Optional

Implement this method if you want to add custom fields to the standard Order Ticket.

Use the symbol parameter to return customization options for a particular symbol.

Signature

getOrderDialogOptions(symbol: string) => Promise<OrderDialogOptions>

Parameters

NameTypeDescription
symbolstringsymbol identifier

Returns

Promise<OrderDialogOptions>


getPositionDialogOptions

Optional

Implement this method if you want to customize the position dialog.

Signature

getPositionDialogOptions() => PositionDialogOptions

Returns

PositionDialogOptions


getSymbolSpecificTradingOptions

Optional

Implement this method if you want to have custom options available for different symbols.

Signature

getSymbolSpecificTradingOptions(symbol: string) => Promise<SymbolSpecificTradingOptions>

Parameters

NameTypeDescription
symbolstringsymbol identifier

Returns

Promise<SymbolSpecificTradingOptions>


individualPositions

Optional

Called by Trading Platform to request individual positions. Required if the BrokerConfigFlags.supportPositionNetting flag is set to true.

Signature

individualPositions() => Promise<IndividualPosition[]>

Returns

Promise<IndividualPosition[]>


isTradable

The library calls isTradable to check if a symbol can be traded. If the method returns false, users will see the Non-tradable symbol message in the UI when creating orders. You can also display a custom message with the reason why the symbol cannot be traded and the possible solution to resolve the issue. To do this, return an IsTradableResult object.

Signature

isTradable(symbol: string) => Promise<boolean | IsTradableResult>

Parameters

NameTypeDescription
symbolstringThe symbol identifier.

Returns

Promise<boolean | IsTradableResult>


leverageInfo

Optional

This method is called to receive leverageInfo from the broker.

Signature

leverageInfo(leverageInfoParams: LeverageInfoParams) => Promise<LeverageInfo>

Parameters

NameTypeDescription
leverageInfoParamsLeverageInfoParamsinformation about the specific symbol to provide leverage information for

Returns

Promise<LeverageInfo>


modifyOrder

The library calls modifyOrder to request modifying an existing order. You should handle this request on your backend side and provide the library with a new order state. To do this, call the IBrokerConnectionAdapterHost.orderUpdate method right afterwards. Otherwise, the library will return a timeout issue.

To enable an order preview before modification, set the BrokerConfigFlags.supportModifyOrderPreview configuration flag to true. Refer to Enable order preview for more information.

Signature

modifyOrder(order: Order, confirmId?: string) => Promise<void>

Parameters

NameTypeDescription
orderOrderOrder information.
confirmId?stringThe ID of the confirmed order. This parameter is passed if supportModifyOrderPreview is true.

Returns

Promise<void>


orders

The library calls orders to request data on the user's active orders. This data is displayed on the Orders and Positions pages of the Account Manager.

Signature

orders() => Promise<Order[]>

Returns

Promise<Order[]>


ordersHistory

Optional

The library calls ordersHistory to request orders history. It is expected that returned orders will have a final status (rejected, filled, cancelled).

This method is only required when you set the BrokerConfigFlags.supportOrdersHistory flag to true. This flag adds the History page, where order history is displayed, to the Account Manager. Refer to the History section for more information.

Signature

ordersHistory() => Promise<Order[]>

Returns

Promise<Order[]>


placeOrder

The library calls placeOrder to request placing an order pre-filled with partial or complete information. You should handle this request on your backend side. For more information, refer to Order creation.

To display an order preview before placing it, set BrokerConfigFlags.supportPlaceOrderPreview to true. Refer to Enable order preview for more information.

Signature

placeOrder(order: PreOrder, confirmId?: string) => Promise<PlaceOrderResult>

Parameters

NameTypeDescription
orderPreOrderOrder information.
confirmId?stringThe ID of the confirmed order. This parameter is passed if supportPlaceOrderPreview is true.

Returns

An object with the order ID.

Promise<PlaceOrderResult>


positions

Optional

Called by Trading Platform to request positions. Required if the BrokerConfigFlags.supportPositions flag is set to true.

Signature

positions() => Promise<Position[]>

Returns

Promise<Position[]>


previewLeverage

Optional

This method is called to receive LeveragePreviewResult object which holds messages about the leverage value set by the user.

Signature

previewLeverage(leverageSetParams: LeverageSetParams) => Promise<LeveragePreviewResult>

Parameters

NameTypeDescription
leverageSetParamsLeverageSetParamsleverageSetParams is an object similar to leverageInfoParams, but contains an additional leverage: number field, which holds the leverage value set by the user.

Returns

Promise<LeveragePreviewResult>


previewOrder

Optional

The library calls previewOrder to show an order preview when a user clicks Buy order or Modify order in the Order Ticket. To enable order preview, set the BrokerConfigFlags.supportPlaceOrderPreview or BrokerConfigFlags.supportModifyOrderPreview configuration flag to true.

This method returns estimated commission, fees, margin, and other information for the order without it actually being placed.

Signature

previewOrder(order: PreOrder) => Promise<OrderPreviewResult>

Parameters

NameTypeDescription
orderPreOrderOrder information.

Returns

Promise<OrderPreviewResult>


quantityFormatter

Optional

Provide a custom quantity formatter for the specified symbol.

Signature

quantityFormatter(symbol: string) => Promise<INumberFormatter>

Parameters

NameTypeDescription
symbolstringsymbol identifier

Returns

Promise<INumberFormatter>


reversePosition

Optional

This method is called if the BrokerConfigFlags.supportNativeReversePosition configuration flag is on. It allows reversing the position by ID.

Note that the library expects you to call the IBrokerConnectionAdapterHost.positionUpdate method right afterwards. Otherwise, the library will return a timeout issue.

Signature

reversePosition(positionId: string) => Promise<void>

Parameters

NameTypeDescription
positionIdstringposition

Returns

Promise<void>


setCurrentAccount

Optional

The library calls setCurrentAccount when users switch accounts using the drop-down menu in the Account Manager. This method provides your backend server with the ID of the selected account.

Note that setCurrentAccount is required if accountsMetainfo returns an array containing more than one element. Refer to Multiple accounts for more information.

Signature

setCurrentAccount(id: AccountId) => void

Parameters

NameTypeDescription
idAccountIdThe ID of the selected account.

Returns

void


setLeverage

Optional

This method is called to send user's leverage value to the broker. The value should be verified and corrected on the broker's side if required, and sent back in the response.

Signature

setLeverage(leverageSetParams: LeverageSetParams) => Promise<LeverageSetResult>

Parameters

NameTypeDescription
leverageSetParamsLeverageSetParamsleverageSetParams is an object similar to leverageInfoParams, but contains an additional leverage: number field, which holds the leverage value set by the user.

Returns

Promise<LeverageSetResult>


spreadFormatter

Optional

Provide a custom spread formatter for the specified symbol.

Signature

spreadFormatter(symbol: string) => Promise<INumberFormatter>

Parameters

NameTypeDescription
symbolstringsymbol identifier

Returns

Promise<INumberFormatter>


subscribeDOM

Optional

Library is requesting that realtime DOM (Depth of Market) updates should be supplied for this symbol

Signature

subscribeDOM(symbol: string) => void

Parameters

NameTypeDescription
symbolstringsymbol identifier

Returns

void


subscribeEquity

Optional

The method should be implemented if you use the standard Order Ticket and support stop loss. Equity is used to calculate Risk in Percent.

Once this method is called the broker should provide equity (Balance + P/L) updates via IBrokerConnectionAdapterHost.equityUpdate method.

Signature

subscribeEquity() => void

Returns

void


subscribeMarginAvailable

Optional

The method should be implemented if you use the standard Order Ticket and want to show the margin meter.

Once this method is called the broker should provide margin available updates via IBrokerConnectionAdapterHost.marginAvailableUpdate method.

Signature

subscribeMarginAvailable(symbol: string) => void

Parameters

NameTypeDescription
symbolstringsymbol identifier

Returns

void


subscribePipValue

Optional

The method should be implemented if you use a standard Order Ticket. pipValues is displayed in the Order info and it is used to calculate the Trade Value and risks. If this method is not implemented then pipValue from the symbolInfo is used in the order panel/dialog.

Once this method is called the broker should provide pipValue updates via IBrokerConnectionAdapterHost.pipValueUpdate method.

Signature

subscribePipValue(symbol: string) => void

Parameters

NameTypeDescription
symbolstringsymbol identifier

Returns

void


subscribeRealtime

Library is requesting that realtime updates should be supplied for this symbol.

Signature

subscribeRealtime(symbol: string) => void

Parameters

NameTypeDescription
symbolstringsymbol identifier

Returns

void


symbolInfo

The library calls symbolInfo to request symbol information for the Order Ticket and Depth of Market widget.

Signature

symbolInfo(symbol: string) => Promise<InstrumentInfo>

Parameters

NameTypeDescription
symbolstringThe symbol identifier.

Returns

Promise<InstrumentInfo>


unsubscribeDOM

Optional

Library is notifying that realtime DOM (Depth of Market) updates are no longer required for this symbol.

Signature

unsubscribeDOM(symbol: string) => void

Parameters

NameTypeDescription
symbolstringsymbol identifier

Returns

void


unsubscribeEquity

Optional

The method should be implemented if you use the standard Order Ticket and support stop loss.

Once this method is called the broker should stop providing equity updates.

Signature

unsubscribeEquity() => void

Returns

void


unsubscribeMarginAvailable

Optional

The method should be implemented if you use the standard Order Ticket want to show the margin meter.

Once this method is called the broker should stop providing margin available updates.

Signature

unsubscribeMarginAvailable(symbol: string) => void

Parameters

NameTypeDescription
symbolstringsymbol identifier

Returns

void


unsubscribePipValue

Optional

The method should be implemented if you use a standard Order Ticket and implement subscribePipValue.

Once this method is called the broker should stop providing pipValue updates.

Signature

unsubscribePipValue(symbol: string) => void

Parameters

NameTypeDescription
symbolstringsymbol identifier

Returns

void


unsubscribeRealtime

Library is notifying that realtime updates are no longer required for this symbol.

Signature

unsubscribeRealtime(symbol: string) => void

Parameters

NameTypeDescription
symbolstringsymbol identifier

Returns

void