Trading basics
发布时间:2026-09-17 | 浏览:1
If you're new to trading we recommend that you familiarise yourself with the basic concepts first. We have a wide range of articles and guides that cover important topics such as trading strategies and risk management which can be found here .
If you're ready to start using our API, we highly recommend that you first understand how we treat our products in a development environment.
Market instruments
Market instruments are a fundamental aspect of our API. Each market instrument represents either a CFD or spread bet whose price is determined by an underlying asset or market. In the majority of cases you can take a long (buy) or short (sell) position on a market to take advantage of rising and falling prices. You can find more information on the markets you can trade at www.ig.com/uk/services-ig .
Our instruments are identified by proprietary EPIC s, such as IX.D.FTSE.CFD.IP - this CFD contract shows that it is the FTSE100 cash price market.
There are several ways to locate instruments using our API:
Searching using the /markets?q={searchTerm} API
Using a watchlist that has either been created using the /watchlists API or our dealing platform
Please note that our markets are not always available to be traded. When retrieving market information on a particular product our API will also return the status of the market. Examples of market statuses are:
TRADEABLE - the market is open
CLOSED - we are not currently offering that market
A full list of market statuses along with descriptions can be found in the API reference .
Instrument prices
There are two ways to determine the latest bid (sell price)/offer (buy price) level for an instrument:
Subscribe to the instrument via the our streaming API. This is the recommended approach, allowing up to 40 concurrent subscriptions by default
Poll the /markets/{epic} API to obtain a regular market snapshot. This is not recommended as it will rapidly use up the API quota for an application
In addition, historical prices may be obtained via the /prices API.
Placing a trade involves opening a position . A basic position consists of:
An instrument and, if applicable, an expiry
An execution price level
A direction - buy or sell
Once opened, the position will then be either in profit or loss, depending on the market movement of the underlying instrument. Positions are then closed in order to realise any profit or loss.
Positions can either be opened immediately via the /positions API, or with conditional, working orders (via the /working-orders API) which only trigger when the desired price level is met. Positions will generally be created as market orders, where we will determine the appropriate execution price level when the position is placed. For more information about the different kinds of order types please visit the API order types section.
Confirming trades
Trade confirmation is done in two phases:
Acknowledgement - a deal reference is returned via the /positions/otc API when an order is placed
Confirmation - a deal identifier is received by subscribing to the TRADES:CONFIRMS Streaming API message (recommended), or by polling the /confirms REST API
Most orders are usually executed within a few milliseconds but it means the confirm may not be available immediately if there is a delay. Please also note the confirm is only available up to 1 minute via the REST API.
Historical trade and account activity can be viewed via the /history/transactions and /history/activity APIs.
Instrument expiry
Some of our CFD and spread bet instruments have an associated expiry (or period). This is the date at which the instrument will automatically close, eg DEC-14. CFDs that do not expire have an expiry of '-'.
When a market expires it will settle (close) based on the price of the underlying asset. You can instruct us to roll a product over which will result in your existing position being closed and automatically reopened with the next available expiry date, while realising any running profit or loss.
Market research
In addition to an EPIC, every instrument has an associated market group identifier, eg FT100. This typically refers to the underlying real-world instrument from which the IG instrument was derived. Market group identifiers are used by the research APIs such as /client-sentiment to provide contextual market information.
An instrument's market group may be determined via the /markets/{epic} API.
If you need more information please refer to the reference, glossary and support sections.
What is Tiered pricing and how does it work?
How does this affect how you use the API?
There are 2 new concepts that are exposed in our Public API
Repeat dealing windows
Example price tier:
Example scenarios:
Sell/buy trades with sizes up to 400 should submit the price of 6500/6503 respectively
Sell/buy trades with size up to 800 should submit price of 6499/6504 respectively
Price tiers are exposed in a new Lightstreamer subscription. Please see reference page for list of all fields: Streaming API Reference
If the instrument can be traded in multiple currencies, there will be a price tier per currency
See the following fields in the Streaming API Reference
CURRENCY1-5 - currency code
C1BIDSIZE1-5 The bid size thresholds for currency 1
C1ASKSIZE1-5 The ask size thresholds for currency 1
C2BIDSIZE1-5 The bid size thresholds for currency 2
C2ASKSIZE1-5 The ask size thresholds for currency 2
Recent trade history
Trading multiple times within a short time period in smaller sizes are still subject to price tiers. The sizes of previous trades are taken into account when deciding what price tier a trade belongs to and only recent trades are taken into account.
Using the example from the table above: If a user places 3 BUY trades of size 150 in quick succession, the first two trades are within the 300 size thresholds and the price submitted should be in the first tier (6502). However, the third trade will fall into the second tier, meaning users should submit the price from the second tier (6503).
How do I know what tier I am in when submitting multiple trades?
Repeat dealing windows are a way for users to keep track of sizes from previous trades that will be considered when trading.
A repeat dealing window is unique per instrument, direction, and currency.
Repeat dealing windows are exposed via streamed confirms under the TRADE:{account identifier} Lightstreamer subscription and also via the REST /repeat-dealing-window endpoint
Repeat dealing window example: User places a BUY trade with size 100 on instrument A at timestamp=0 This will result in a repeat deal window of:
direction=BUY, size=100, instrument=A, expiryTimestamp=30
The size of 100 will be taken into account when placing any trades before the expiry timestamp. e.g. Following on once again from the table above: BUY trades of size 200 are eligible for the first price tier (300), and larger sizes will be subject to higher price tiers. User places another BUY trade with size 100 on instrument A at timestamp 15 This will result in another repeat deal window being added:
direction=BUY, size=100, instrument=A, expiryTimestamp=30
direction=BUY, size=100, instrument=A, expiryTimestamp=45
This means the size of 200 will be considered when placing a trade for instrument A in the BUY direction. At timestamp 31, the first repeat deal window will expire, and the only size 100 will be taken into consideration for subsequent trades.
70% of retail investor accounts lose money when trading spread bets and CFDs with this provider. Spread bets and CFDs are complex instruments and come with a high risk of losing money rapidly due to leverage. You should consider whether you understand how spread bets and CFDs work, and whether you can afford to take the high risk of losing your money.