A cBot can have a valid signal and still submit an order the current symbol cannot accept. Before it trades, record the broker-specific symbol specification: instrument identity, volume and price increments, order constraints, costs and market hours.
That is not a backtest result or a prediction about a fill. It is the operating record that lets you tell the difference between a strategy decision and a contract constraint.
A symbol is more than the chart label
A cTrader symbol is the broker's tradable instrument, not merely the price chart a strategy recognises. cTrader states that symbol availability depends on the broker and its setup, while pricing depends on liquidity providers and other trading conditions in the Markets guide.
The useful question before automation is therefore not “does the chart look familiar?” It is “what does this account allow this symbol to do right now?” Record the exact displayed symbol name, broker or server context, account type and observation time. A familiar label can hide a different contract or different availability.
Build a five-part symbol record
cTrader's Active Symbol Panel exposes market hours, trade-volume limits, commission, swaps, leverage and other symbol details. The Symbol API reference exposes the same sort of execution inputs programmatically. A pre-trade record can be short, but it needs to separate fields a cBot may calculate with from fields a trader may casually assume.
| Record | What to capture | Why the cBot needs it |
|---|---|---|
| Identity and availability | Symbol name, account context, trading enabled status and market hours | A request can be correctly formed for the wrong instrument or sent while that instrument is unavailable. |
| Volume rules | Minimum, maximum and step volume | A risk calculation can produce a size that is below the minimum or between permitted increments. |
| Price rules | Pip size, tick size, digits, minimum stop-loss and take-profit distances | A stop or target can be meaningful in strategy terms yet fail a current order constraint. |
| Costs and financing | Commission type and amount, swap long, swap short and the three-day rollover field | A holding-period assumption must use the cost definition attached to the actual symbol. |
| Trading schedule and leverage | Sessions, current open status and leverage tiers where relevant | Time-based logic and capacity checks need the account's current operating window, not a remembered one. |
Do not replace this record with a generic forex template. cTrader documents bid and ask as separate prices and defines the spread as ask minus bid; it also notes that spreads can vary with liquidity providers, broker settings, session and news in its market-pricing explanation. A snapshot of a current spread is an observation, not a permanent contract assumption.
Make the sizing path inspectable
A cBot normally converts its sizing logic into volume in units. cTrader documents VolumeInUnitsMin, VolumeInUnitsMax and VolumeInUnitsStep, together with NormalizeVolumeInUnits() in the Symbol reference. Capture the requested volume and the final normalised volume separately in a demo or controlled test.
That distinction matters even when the platform accepts the order. Rounding down can leave the position smaller than the intended risk; rounding up can make it larger. Neither outcome is equivalent to “the strategy used its planned size.” The record should say which policy the code applies and whether an order is skipped when normalisation produces an unsuitable result.
Keep pip, tick and distance calculations separate
Pip size and tick size are distinct symbol properties. So are minimum stop-loss and take-profit distances. A system that uses a fixed numerical price offset without reading the current definition can turn a sensible protection rule into an invalid request.
The practical check is simple: preserve the raw calculated entry, stop and target; preserve the submitted values after rounding; then record the platform response. This does not prove future execution. It proves what the cBot attempted under the specification you saved.
Read costs by their unit, not their label
“Commission” is incomplete without its calculation basis. cTrader's commission-type reference lists bases including USD per million USD volume, USD per lot, a percentage of trading volume and quote currency per lot.
Write down the commission type beside the commission field. Do the same for swap long, swap short and the rollover field. The point is not to estimate a future cost from one screen. It is to make a backtest, a paper run and a later live review use an identifiable set of assumptions.
For a broader execution check after those assumptions change, use the post-change cBot test. For the order lifecycle itself, see how to backtest pending orders in cTrader.
Turn the record into a small release gate
Before enabling a cBot on a new symbol or account, make the record reviewable:
- Save the five-part record with its timestamp and account context.
- Compare each field the code reads or assumes with the saved specification.
- Run controlled cases for minimum volume, a volume increment, and the relevant protective-order distance.
- Keep the request, normalised values, response and any rejection message together.
- Repeat the record when the broker, account type or symbol conditions change.
realbacktesting is a trading-software studio for cTrader built around results traders can inspect rather than simply accept. Its methodology makes data, execution and cost assumptions visible for published backtests. The same discipline helps at the symbol level: name the conditions, retain the evidence and avoid treating an accepted order as proof that its assumptions were correct.
Frequently asked
Is a cTrader symbol the same at every broker?
No. cTrader says symbol availability depends on the broker and its setup, and pricing depends on liquidity providers and trading conditions. Treat the specification visible in the account you will use as the record to inspect.
Does a valid cBot signal guarantee a valid order?
No. The order can still conflict with current volume increments, price-distance limits, market hours or trading status. The signal and the executable request are separate checks.
Is the current spread a permanent input for a cBot?
No. cTrader defines spread as the current ask-minus-bid difference and lists several factors that can affect it. Capture the observation, but do not mistake it for a fixed future cost.
The stubborn takeaway
Before trusting a cBot to trade a symbol, trust the symbol record more than the label on the chart.