Skip to main content
Version: v26

IBrokerWithoutRealtime

Interface
Types Module: Broker

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


cancelOrder

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

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.

ordersIds parameter should contain the list of order ids to be cancelled.

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?DefaultContextMenuActionsParams-

Returns

Promise<ActionMetaInfo[]>


closePosition

Optional

This method is called if supportClosePosition configuration flag is on. It allows to close the position by id.

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>


closeTrade

Optional

This method is called if supportCloseTrade configuration flag is on. It allows to close the trade by id.

Signature

closeTrade(tradeId: string, amount?: number) => Promise<void>

Parameters

NameTypeDescription
tradeIdstringtrade id
amount?numberThe amount is specified if supportPartialCloseTrade is true and the user wants to close only part of the trade.

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


editPositionBrackets

Optional

This method is called if supportPositionBrackets configuration flag is on. It shows a dialog that enables take profit and stop loss editing.

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>


editTradeBrackets

Optional

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

Signature

editTradeBrackets(tradeId: string, brackets: Brackets) => Promise<void>

Parameters

NameTypeDescription
tradeIdstringID of existing trade to be modified
bracketsBracketsnew Brackets to be set for the trade

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 use the standard Order dialog and want to customize it.

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


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 info for

Returns

Promise<LeverageInfo>


modifyOrder

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

Signature

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

Parameters

NameTypeDescription
orderOrderorder information
confirmId?stringis passed if supportPlaceOrderPreview 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 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.

Signature

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

Parameters

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

Returns

PlaceOrderResult, which should include an orderId

Promise<PlaceOrderResult>


positions

Optional

Called by Trading Platform to request positions

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 supportPlaceOrderPreview 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 supportNativeReversePosition configuration flag is on. It allows to reverse the position by id.

Signature

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

Parameters

NameTypeDescription
positionIdstringposition

Returns

Promise<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>


trades

Optional

Called by Trading Platform to request trades

Signature

trades() => Promise<Trade[]>

Returns

Promise<Trade[]>


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