Skip to main content
Version: latest

IBrokerWithoutRealtime

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 an Account manager.

Signature

accountManagerInfo() => AccountManagerInfo

Returns

AccountManagerInfo


accountsMetainfo

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

Connection status for the Broker API.

You don't need to return values other than 1 (Connected) typically since the broker is already connected when you create the widget. You can use it if you want to display a spinner in the bottom panel while the data is being loaded.

Signature

connectionStatus() => ConnectionStatus

Returns

ConnectionStatus


currentAccount

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

This function is required for the Floating Trading Panel. The ability to trade via the panel depends on the result of this function: true or false. You don't need to implement this method if all symbols can be traded.

If you want to show a custom message with the reason why the symbol cannot be traded then you can return an object IsTradableResult.

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

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 dialog 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 dialog 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 dialog. 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


symbolInfo

Called by the internal Order dialog, DOM panel, and floating trading 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 dialog 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 dialog 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 dialog 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