Framework error codes

The following section describes the code values of an Sway.Result object – error codes in the framework. Almost all the error codes relate to trading requests.

All the values described in this section are in the Sway.ErrorCodes enumeration, for example Sway.ErrorCodes.OKAY.

8.1 Success/no-failure values

There are three values which are treated by Sway.Result as isOkay=true and isError=false:

Sway.ErrorCodes.

Description

OKAY

No error; success

SUCCESS

Synonym for OKAY; same numeric value (zero)

CANCELLED

Action cancelled or dismissed by the user

NO_ACTION_REQUIRED

No action. For example, a trading request such as FLATTEN when there are no open orders or trades on the account.

All the remaining values represent error conditions, and the Sway.Result will report isOkay=false and isError=true.

8.2 Not-yet-implemented errors

The following errors are not currently issued by the framework under any circumstances. But in future they may be issued if e.g. the implementation of some functionality is specific to each broker back-end platform, and Sway Charts Pro has only completed the integration with some platforms:

Sway.ErrorCodes.

Description

NOTYETIMPLMENTED

Functionality has not yet been implemented.

TR_NOTYETIMPLEMENTED

More specifically, trading functionality which has not yet been implemented

8.3 Failed internal validation of trading actions

The following error codes represent failed internal validation of trading actions – e.g. no trading volume specified – before trying to pass them to the broker's back-end system.

Sway.ErrorCodes.

Description

TR_INVALIDJOBDEFINITION

Invalid request definition for a trading job (generally invalid, rather than a problem such as TR_NOVOLUME)

TR_BADINSTRUMENT

Unrecognised or missing instrumentId

TR_BELOWMINIMUMVOLUME

Specified volume is below the minimum for the market

TR_CANTUSEBREAKEVENONPENDING

Attempt to set break-even exit on a pending order rather than an open trade

TR_TRADESLWRONGSIDEOFBID

Stop-loss on an open buy trade is the wrong side of the current (bid) price

TR_TRADESLWRONGSIDEOFASK

Stop-loss on an open sell trade is the wrong side of the current (ask) price

TR_TRADETPWRONGSIDEOFBID

Take-profit on an open buy trade is the wrong side of the current (bid) price

TR_TRADETPWRONGSIDEOFASK

Take-profit on an open sell trade is the wrong side of the current (ask) price

TR_ORDERSLWRONGSIDEOFBUYENTRY

Stop-loss on a pending buy order is the wrong side of the entry price for the order

TR_ORDERSLWRONGSIDEOFSELLENTRY

Stop-loss on a pending sell order is the wrong side of the entry price for the order

TR_ORDERTPWRONGSIDEOFBUYENTRY

Take-profit on a pending buy order is the wrong side of the entry price for the order

TR_ORDERTPWRONGSIDEOFSELLENTRY

Take-profit on a pending sell order is the wrong side of the entry price for the order

TR_ACCOUNTREADONLY

Access to the trading account is read-only and trading is not permitted (Account.accountReadOnly = true)

TR_UNEXPECTEDTRADINGACTION

Unexpected trading action, such as trying to close an order ID which identifies a credit record on the account rather than an order or trade

TR_INTERNALERROR

Unexpected internal trading error

TR_NOVOLUME

No volume specified on trading request

TR_NOENTRYPRICE

No entry price specified for a new pending order

TR_NEEDSLWITHRISKVOLUME

Risk-based trading volume, such as {cashRisk: x}, requires a stop-loss

TR_CANTHAVERISKVOLUMEANDSL

Can't set both the volume and stop-loss to cash/risk based values; one of them must be an absolute value rather than a cash-based value such as {equityPercent: 0.5}

TR_PARTIALCLOSENOEFFECT

Requested partial close will have effect. For example, a percentage-based partial close where the resulting volume is less than the minimum trading increment for the market.

TR_PARTIALCLOSEISFULLCLOSE

Requested partial close will execute a full close. (For example: volume is 10K, minimum trading increment is 1K; a request for a 95% close gets rounded up to 10K)

TR_PARTIALCLOSENOTMULTIPLE

Requested volume for a partial close is not a multiple of the minimum trading increment on the market (e.g. closing 5K on a market where the minimum volume is 10K)

TR_AMBIGUOUSENTRYOFFSET

Can't use price offsets for the entry where the tradingAction is BUY_PENDING or SELL_PENDING

TR_NOCANDLEDATAFORCOMMAND

Unable to get the candle data required for a trading action

TR_RRRWITHNOSTOPLOSS

Can't use an rrr value for the take-profit unless a stop-loss is specified.

8.4 Trading requests blocked by user settings/preferences

The Sway Charts Pro platform lets the user set options such as "don't allow trades and orders without a stop-loss" or "don't allow trades or orders which risk more than x% of equity" (based on the order's volume and stop-loss).

The following error codes represent breaches of the user's rules:

Sway.ErrorCodes.

Description

TR_TRADINGGLOBALLYDISABLED

User has disabled all trading in the platform's settings

TR_SETTINGSREQUIRESL

User's settings require that all orders and trades have a stop-loss

TR_SLTOOWIDEFORMAXRISK

Volume and stop-loss imply a cash risk which is beyond the user's specified maximum

TR_MINRISKTOOLARGE

Special case of the above: even the minimum trading volume on the market would, with the specified stop-loss, imply a cash risk which is beyond the user's specified maximum

TR_WIDGETTYPECANTTRADE

Your widget (category) has not been given permission to place trades

8.5 Rejection by trading validators

There are two error codes relating to trading validators:

Sway.ErrorCodes.

Description

TR_VALIDATORREJECTION

Trading validator rejected the request ({status: "block"})

TR_VALIDATORTIMEOUT

Time-out while collecting a response from active trading validators

8.6 Trading requests rejected by the broker platform

The following error codes describe scenarios where a trading request passed internal validation by the framework; was sent to the broker; but the broker rejected the request (or failed in some other way).

There are some error codes whose meaning overlaps, or which are very near duplicates (such as TR_MARKETMOVED and TR_REQUOTE). These reflect different classes of rejection in different back-end broker platforms.

Sway.ErrorCodes.

Description

TR_NOCONNECTION

No current connection to the back-end broker platform

TR_CLIENTSIDETIMEOUT

Time-out (client-side, implemented by the framework) while waiting for a response from the back-end broker platform

TR_BROKERERROR

General, uncategorised error reported by the back-end broker platform

TR_GENERALREJECTION

General, uncategorised rejection reported by the back-end broker platform

TR_ACCOUNTSUSPENDED

Trading account is reported as suspended

TR_ACCOUNTCLOSED

Trading account is reported as closed

TR_NOFUNDS

Too little margin to place the trade

TR_MARKETCLOSED

Market is currently closed

TR_TOOMANYPENDINGORDERS

Too many open pending orders

TR_TOOMANYPOSITIONS

Too many open positions

TR_TOOMUCHVOLUME

Too much open volume

TR_LONGTRADESONLY

Only long trades are permitted on this market

TR_SHORTTRADESONLY

Only short trades are permitted on this market

TR_CLOSETRADESONLY

The market is in close-only mode. New orders are not accepted.

TR_MARKETSUSPENDED

Trading on this market has been suspended by the broker

TR_VOLUMETOOSMALL

Requested trading volume is too small

TR_VOLUMETOOLARGE

Requested trading volume is too large

TR_VOLUMEINVALID

Requested trading volume is reported as not valid

TR_VOLUMEREJECTED

General rejection of the requested trading volume

TR_MANDATORYSTOP

Broker requires that the order has a stop-loss

TR_ALEADYCLOSED

Request to close an order or trade which is already closed

TR_ORDERLOCKED

Order/trade is currently locked by the broker and cannot be modified or closed

TR_ORDERMISSING

Request to modify an order or trade which does not exist

TR_TOOMANYREQUESTS

Broker rejected the request because the framework is making too many requests

TR_INVALIDEXPIRY

Invalid expiry option/value on an order

TR_HEDGINGNOTALLOWED

Order would create a hedged trade, and is not permitted by the account

TR_MUSTUSEFIFO

Orders must be processed (usually: specifically, closed) in FIFO order on a non-hedging account

TR_TOOCLOSETOMODIFY

Back-end system does not allow modification of the order because its entry/exit is too close to the current price

TR_PRICEINDICATIVE

Market price is indicative, and cannot be traded against

TR_INSTRUCTIONREJECTIONWITHCODE

Platform-specific order rejection

TR_REJECTIONWITHCODE

Platform-specific order rejection

TR_NOPRICEFORJOB

Unable to obtain a price for executing the order

TR_TRIGGERTOOCLOSETOMARKET

Price (typically, entry price on a pending order) is too close to the current market price

TR_AUTOTRADINGDISABLEDBYBROKER

MT4/5-specific: the order has been placed via an EA, and automated trading is disabled by the broker

TR_MT4ERROR130

MT4-specific: error #130, which can mean either that the entry price on a pending order is too close to the market price, or that the s/l or t/p on a trade is too close to the current market price, or that the s/l or t/p on a pending order is too close to the requested entry price

TR_NOTPENDING

Attempt to delete an ID which is not a pending order

TR_MARKETORDERSNOTALLOWED

At-market orders are not allowed on this market

TR_LIMITORDERSNOTALLOWED

Limit orders are not allowed on this market

TR_STOPORDERSNOTALLOWED

Stop orders are not allowed on this market

TR_STOPLIMITORDERSNOTALLOWED

Stop-limit orders are not allowed on this market

TR_SLNOTALLOWED

Stop-losses are not allowed on this market

TR_TPNOTALLOWED

Take-profits are not allowed on this market

TR_ACCOUNTNOTRADINGRIGHTS

Your account does not have trading rights. (Generally implies that the account is not allowed to trade, rather than being logged in with a read-only password.)

8.7 Other (non-trading) errors

There is a small number of further error codes which do not relate to trading activity:

Sway.ErrorCodes.

Description

TR_BADCANDLEREQUEST

Invalid request for candle data

TR_MAILERROR

Problem with the mail system. Either no connection to the mail server, or an invalid send-mail request

Last updated