OANDA's FIFO requirement
This FAQ contains information regarding upcoming First in First Out (FIFO) changes that OANDA is making to its order handling. This FAQ contains the following information:
What is FIFO?
First in First Out (FIFO) is a forex trading requirement that complies with National Futures Association (NFA) regulation. It is a requirement that the first (or oldest) trade must be closed first if a customer has more than one open trade of the same pair and size.
In order to address this, changes will be implemented that will require all trades that have a take profit (TP), stop loss (SL), or trailing stop (TS) to be a unique size. After these changes are implemented, the only scenario in which two trades of the same currency pair can be the same size is if neither trade has a TP, SL, or TS.
Who does FIFO impact?
These changes will only impact customers who contract accounts from OANDA Corporation, this applies to both live and demo accounts. If you are not sure which division you contract with, please review our ‘ What division will I contract with when I apply for an OANDA account ’ FAQ.
When did these FIFO changes occur?
FIFO changes came into effect on August 16, 2019.
What do these changes entail and how do they impact customers?
After OANDA’s FIFO changes come into effect, any new trades entered on our OANDA platforms which do not comply with the FIFO requirement will be prompted with a warning prior to execution that the SL, TP or TS may cause a FIFO violation.
For additional information, please email fifo@oanda.com.
Please see some examples below of what will happen when users attempt to complete orders that are not FIFO compliant.
How does this affect/limit stop orders (Web & MT4) and entry orders (Mobile & Desktop)?
Limit / stop and entry orders are checked for FIFO compliance during trigger of their conditional price rather than during the order entry. If a limit/stop or entry order triggers and violates OANDA’s FIFO requirement, then the order is cancelled.
Customers will be able to check if their order was cancelled due to a FIFO violation under their activity history on OANDA or in their mailbox on the MT4 platform.
How does this affect MT4
MT4 will have the same restrictions as OANDA’s proprietary OANDA platform. However, OANDA is unable to inform customers of these cancellations when they are running expert advisors (EAs), although they will still receive a message in their MT4 Mailbox.
- On August 16th, MT4 users will receive a message in their MT4 Mailbox whenever an order is cancelled due to OANDA’s FIFO requirement.
Examples of what the FIFO changes will look like (market orders)
OANDA example 1
Step | Customer action |
Trade![]() |
---|---|---|
1 | Buy 1,000 EUR/USD +SL @ 1.05 | Trade 1: +1,000 EUR/USD +SL @ 1.05 |
2 | Buy another 1,000 EUR/USD +SL @ 1.05 | Trade 1: +1,000 EUR/USD +SL @ 1.05 / Trade 2: +1,000 EUR/USD +SL @ 1.05 |
3 | Customer receives notification that the trade has been cancelled | Trade 2 is cancelled because all trades with a SL, TP, or TS must have a unique size |
OANDA example 2
Step | Customer action | Trade activity |
---|---|---|
1 | Buy 1,000 EUR/USD | Trade 1: +1,000 EUR/USD |
2 | Buy another 1,000 EUR/USD | Trade 1: +1,000 EUR/USD / Trade 2: +1,000 EUR/USD |
3 | Customer receives notification that the trade has been executed | Trade 2 is accepted because neither trade has a SL, TP, or TS |
OANDA example 3
Step | Customer action | Resulting open trades |
---|---|---|
1 | Buy 1,000 EUR/USD | Trade 1: +1,000 EUR/USD |
2 | Buy another 1,000 EUR/USD | Trade 1: +1,000 EUR/USD / Trade 2: +1,000 EUR/USD |
3 | Add a SL to trade 1 +SL @ 1.05 | Attempt to add SL is cancelled because any trade that has a SL, TP, or TS must be of a unique size |
OANDA example 4
Step | Customer action | Resulting open trades |
---|---|---|
1 | Buy 1,001 EUR/USD +SL @ 1.05 | Trade 1: +1,001 EUR/USD +SL @ 1.05 |
2 | Buy 1,000 EUR/USD +SL @ 1.05 | Trade 1: +1,001 EUR/USD +SL @ 1.05 / Trade 2: +1,000 EUR/USD +SL @ 1.05 |
3 | Sell 1 EUR/USD To partially close the position by 1 unit, in turn reduces the size of trade 1 from 1,001 to 1,000 units. | Trade 1: +1,000 EUR/USD +SL @ 1.05 / Trade 2: +1,000 EUR/USD +SL @ 1.05 |
4 | Customer receives notification that the trade has been cancelled | Attempt to partially close trade is cancelled because all trades with a SL, TP, or TS must have a unique size |
5 | Sell 2 EUR/USD | Trade 1: +999 EUR/USD +SL @ 1.05 / Trade 2: +1,000 EUR/USD +SL @ 1.05 |
6 | To partially close the position by 2 units, in turn reduces the size of trade 1 from 1,001 to 999 units. | Trade is accepted because all trades with a SL, TP, or TS have a unique size |
MT4 example 1
Step | Customer action | Resulting open trades |
---|---|---|
1 | Buy .01 EUR/USD | Trade 1: +.01 EUR/USD |
2 | Buy .01 EUR/USD | Trade 1: +.01 EUR/USD / Trade 2: +.01 EUR/USD |
3 | Buy .02 EUR/USD with Stop Loss @ 1.20 | Trade 1: +.01 EUR/USD / Trade 2: +.01 EUR/USD / Trade 3: +.02 EUR/USD + SL @ 1.20 |
4 | Buy .01 EUR/USD | Trade 1: +.01 EUR/USD / Trade 2: +.01 EUR/USD / Trade 3: +.02 EUR/USD + SL @ 1.20/ Trade 4: +.01 EUR/USD |
5 | Buy .03 EUR/USD with Stop Loss @ 1.20 | Trade 1: +.01 EUR/USD / Trade 2: +.01 EUR/USD / Trade 3: +.02 EUR/USD + SL @ 1.20 / Trade 4: +.01 EUR/USD / Trade 5: +.03 EUR/USD + SL @ 1.20 |
6 | Buy .04 EUR/USD | Trade 1: +.01 EUR/USD / Trade 2: +.01 EUR/USD / Trade 3: +.02 EUR/USD + SL @ 1.20 / Trade 4: +.01 EUR/USD / Trade 5: +.03 EUR/USD + SL @ 1.20 / Trade 6: +.04 EUR/USD |
7 | Buy .05 EUR/USD | Trade 1: +.01 EUR/USD / Trade 2: +.01 EUR/USD / Trade 3: +.02 EUR/USD + SL @ 1.20 / Trade 4: +.01 EUR/USD / Trade 5: +.03 EUR/USD + SL @ 1.20 / Trade 6: +.04 EUR/USD / Trade 7: +.05 EUR/USD |
8 | Buy .02 EUR/USD with Stop Loss @ 1.25 (or anywhere) | Trade is cancelled - All trades with a SL, TP, or TS must have a unique size. Trade 3 was .02. |
9 | Buy .02 EUR/USD with Take Profit @ 1.15 (or anywhere) | Trade is cancelled - All trades with a SL, TP, or TS must have a unique size. Trade 3 is at .02 with a SL. |
10 | Buy .01 EUR/USD with Stop Loss @ 1.10 (or anywhere) | Trade is cancelled - All trades with a SL, TP, or TS must have a unique size. Trades 1,2, and 4 were .01. |
11 | Buy .03 EUR/USD | Trade is cancelled - All trades without a SL, TP, TS must not have the same size as a trade with a SL, TP, and TS. Trade 5 is at .03 with a SL. |
Examples of what the FIFO changes will look like (limit orders)
OANDA example 1
Step | Customer action | Resulting open trades |
---|---|---|
1 | Place a buy limit of 1,000 EUR/USD @ 1.15 AND +SL @ 1.05 |
Order![]() |
2 | Place another buy limit of 1,000 EUR/USD @1.10 +SL @ 1.05 | Order 2 is accepted |
3 | Order 1 is triggered as the price reaches 1.15 | Order 1 is accepted because there are no other trades with a SL, TP, or TS of the same size |
4 | Order 2 is triggered as the price reaches 1.10 | Order 2 is cancelled because an existing trade of 1,000 units with a SL already exists |
OANDA example 2
Step | Customer action | Resulting open trades |
---|---|---|
1 | Place a buy limit of 1,000 EUR/USD @ 1.15 and +SL @ 1.05 | Order 1 is accepted |
2 | Place another buy limit of 1,000 EUR/USD @ 1.10 +SL @ 1.05 | Order 2 is accepted |
3 | Order 1 is triggered as the price reaches 1.15 | Order 1 is accepted because there are no other trades with a SL, TP or TS of the same size |
4 | Customer manually closes trade 1 | Trade 1 closes |
5 | Order 2 is triggered as the price reaches 1.10 | Order 2 is accepted because there are no other trades with a SL, TP or TS of the same size |