Skip to main content
Version: v27

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

This function should return the information that will be used to build 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 User accounts for more information.

Signature

accountsMetainfo() => Promise<AccountMetainfo[]>

Returns

Promise<AccountMetainfo[]>


cancelOrder

This method is called to cancel a single order with the given id.

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

Signature

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

Parameters

NameTypeDescription
orderIdstringID for the order to cancel

Returns

Promise<void>


cancelOrders

This method is called to cancel multiple orders for a symbol and side. The ordersIds parameter should contain the list of order ids to be cancelled.

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

Signature

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

Parameters

NameTypeDescription
symbolstringsymbol identifier
sideSideorder side
ordersIdsstring[]ids already collected by symbol and side

Returns

Promise<void>


chartContextMenuActions

Chart can have a sub-menu Trading 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
contextTradeContextcontext object passed by a browser
options?DefaultContextMenuActionsParamsdefault options for the context menu action parameters

Returns

Promise<ActionMetaInfo[]>


closeIndividualPosition

Optional

This method is called if the BrokerConfigFlags.supportCloseIndividualPosition or BrokerConfigFlags.supportPartialCloseIndividualPosition configuration flag is on. 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
individualPositionIdstringIndividual 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

This method is called if the BrokerConfigFlags.supportClosePosition or BrokerConfigFlags.supportPartialClosePosition configuration flag is on. It allows closing 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

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

Parameters

NameTypeDescription
positionIdstringPosition 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 the connection status for the Broker API. You don't need to return values other than 1 (Connected) since the broker is already connected when you create the widget.

If the method is not implemented, the Account Manager will have a spinner instead of the user's trading data. In the console, the Trading.Core:Broker broker creation error will also be displayed.

Signature

connectionStatus() => ConnectionStatus

Returns

ConnectionStatus


currentAccount

The library calls currentAccount to get the current account 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

This method is called if the BrokerConfigFlags.supportPositionBrackets configuration flag is on. 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
positionIdstringis an ID of an 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

Called by Trading Platform to request executions for the specified symbol

Signature

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

Parameters

NameTypeDescription
symbolstringsymbol 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 this method 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 show 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
symbolstringsymbol 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

Method is called when a user wants to modify an existing order.

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

To enable order preview before modifying it, set BrokerConfigFlags.supportModifyOrderPreview to true.

Signature

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

Parameters

NameTypeDescription
orderOrderorder information
confirmId?stringis passed if supportModifyOrderPreview configuration flag is on.

Returns

Promise<void>


orders

Called by Trading Platform to request orders

Signature

orders() => Promise<Order[]>

Returns

Promise<Order[]>


ordersHistory

Optional

This method is called by the Trading Platform to request orders history. It is expected that returned orders will have a final status (rejected, filled, cancelled).

This method is optional. If you don't support orders history, please set the BrokerConfigFlags.supportOrdersHistory flag to false.

Signature

ordersHistory() => Promise<Order[]>

Returns

Promise<Order[]>


placeOrder

Method is called when a user wants to place an order. Order is pre-filled with partial or complete information. This function returns an object with the order ID. To enable order preview before placing it, set BrokerConfigFlags.supportPlaceOrderPreview to true.

Signature

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

Parameters

NameTypeDescription
orderPreOrderorder information
confirmId?stringis passed if the supportPlaceOrderPreview configuration flag is on.

Returns

PlaceOrderResult, which should include an orderId

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

Returns estimated commission, fees, margin, and other information for the order without it actually being placed. The method is called if the BrokerConfigFlags.supportPlaceOrderPreview or BrokerConfigFlags.supportModifyOrderPreview configuration flag is on.

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

NameType
idAccountId

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

Called by the Order Ticket and DOM panel to get symbol information.

Signature

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

Parameters

NameTypeDescription
symbolstringsymbol 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