A futures trade opens at Last price, not at Bid or Ask. Is this normal?

 

When working with Forex instruments, I have always assumed that the buy price is Ask, the sell price is Bid - and that this is true for any instrument. Consequently, when calculating TP and SL, I backed off from the transaction price. I was contacted by a client who noticed incorrect setting of SL and TP from the opening price. I looked it over and indeed sometimes a deal is opened at Ask or Bid and sometimes it is opened at the price within the spread. As it turned out, this is the Last price. And sometimes Last coincides with Ask or Bid, in which case the opening price looks "correct", and sometimes it does not and consequently all TP and SL calculations appear incorrect.

Specification of a trading instrument:

I understand that this is a futures instrument. Is this situation normal and in all futures the opening price is the Last price?

 

With exchange data flow, counter bids may be executed at the price within the spread and this will generate the Last price.
This can be seen from your description. Bid Ask is executed when there are no counter bids.
Terminal TP is implemented in forex execution, that is, it is triggered by a marker on the reverse side of the spread.
For TP to work correctly, use limit orders to lock in profits rather than the standard TP.
SL is unchanged, it still triggers with a marker. But better still use Stop orders rather than standard SL from the terminal.
To calculate the distance of fixing profit or loss, use the average actual opening price of the position.

The terminal SL and TP are on the mt5 server, but Limit orders are placed on the exchange, and Stop orders are placed on the server of the Quote Provider.
Do you understand the difference? Finally, please understand how the exchange Limit and Stop orders work and use them.
This is the bane of 90% of this forum.

 
Roman:

With exchange data flow, counter bids may be executed at the price within the spread and this will generate the Last price.
This can be seen from your description. Bid Ask is executed when there are no counter bids.
Terminal TP is implemented in forex execution, that is, it is triggered by a marker on the reverse side of the spread.
For TP to work correctly, use limit orders to lock in profits rather than the standard TP.
SL is unchanged, it still triggers with a marker. But better still use Stop orders rather than standard SL from the terminal.
To calculate the distance of fixing profit or loss, use the average actual opening price of the position.

The terminal SL and TP are on the mt5 server, but Limit orders are placed on the exchange, and Stop orders are placed on the server of the Quote Provider.
Do you understand the difference? Do you understand how the exchange Limit and Stop orders work?
This is the bane of 90% of this forum.

My TP and SL are not correctly placed at the time of opening a trade. I don't know how they work, maybe there are some problems, but I do know that they are not calculated correctly at the moment of opening. When I buy, I calculate TP and SL from the Ask price because I have to buy at this price.

And my TP and SL prices are calculated as follows:

TP = Ask+TP_pips*_Point.

SL=Ask-SL_pips*_Point.

For sales:

TP=Bid-TP_pips *_Point.

SL=Bid+SL_pips *_Point.

But if Last is inside the spread, it turns out that I did not calculate TP and SL from the opening price.

When I noticed it, I opened many deals to make sure. As soon as Last is inside the spread, a deal is always opened by it. If it is not inside the spread, I open a position by Last as well, but it has coincided with Ask or Bid.

 
Oleg Remizov:

I have TP and SL incorrectly set aside when a trade is opened. I did not follow how they are triggered, maybe there are problems too, but I definitely noticed that they are not calculated correctly at the moment of opening. When I buy, I calculate TP and SL from the Ask price because I have to buy at this price.

And my TP and SL prices are calculated as follows:

TP = Ask+TP_pips*_Point.

SL=Ask-SL_pips*_Point.

For sales:

TP=Bid-TP_pips *_Point.

SL=Bid+SL_pips *_Point.

But if Last is inside the spread, it turns out that I did not calculate TP and SL from the opening price.

When I noticed it, I opened many deals to make sure. As soon as Last is inside the spread, a deal is always opened by it. If it is not inside the spread, it turns out that I also open a position by Last, but it has coincided with Ask or Bid.

Calculate from the position price, not Last, Bid, Ask, but fromthe position price on the exchange.
In other words, you get an answer from the exchange, at what price your position is, and count all calculations from this price.
At the exchange netting, the position price is averaged when adding.

 
Roman:

Calculate from the entry price of the position, not Last, Bid, Ask, but fromthe price of the position on the exchange.
That is, get an answer from the exchange, at what price you have a position, and use this price to make all calculations.

Then I will have to modify an order which is already open, and there will be no guarantee that I will set a take and stop. It is not certain that the modification will be successful. If I mess up my calculations, the take and stop will not be as I expected, in an extreme case I will get an error [invalid stops] and the trade will simply not open. This is safer than opening but without SL and TP orders.

 
Oleg Remizov:

Then I will have to modify an order which is already open and there is no guarantee that I will set a take and stop. It is not certain that the modification will be successful. If I mess up my calculations, the take and stop will not be what I expected, in extreme cases I will get an error [invalid stops] and the trade will simply not open. This is safer than it will open but without SL and TP orders.

What does forex do to people ))
Use Limit and Stop orders, not forex modification.
Limit for TP
Stop for SL
And don't forget the principle of filling limit orders.
You just need to learn the principle of stock orders, otherwise it's all pointless.

 
Roman:

What forex does to people ))
Use Limit and Stop orders, not forex modification.
Limit for TP
Stop for SL
And don't forget the principle of filling limit orders.
You just need to learn the principle of stock orders, otherwise it's all pointless.

I don't quite understand you.

So instead of SL and TP, which relate to a specific trade and are independently removed when it is closed, you are suggesting to place independent orders Buy Stop, Buy Limit, Sell Stop, Sell Limit?

For example, a Buy trade and I should place 2 pending orders to it: Sell Stop as StopLoss and Sell Limit instead of TakeProfit?

And I have to remember, that they are related to this trade, and if it will close for example manually, I need to cancel them urgently, so they will not be triggered and will not create an unplanned trade.

If Sell Stop is triggered, you must not forget to delete the Sell Limit paired with it , and ifSell Limit is triggered, you must not forget to delete theSell Stop paired with it. Is it like that?

 
Oleg Remizov:

I don't quite understand you.

So you are suggesting to place independent orders Buy Stop, Buy Limit, Sell Stop, Sell Limit instead of SL and TP, which refer to a specific trade and are independently deleted when it is closed?

For example, a Buy trade and I should place 2 pending orders to it: Sell Stop as StopLoss and Sell Limit instead of TakeProfit? And I have to remember that they are related to this trade, and if it will close, I need to cancel them urgently to prevent them from triggering an unplanned trade. Is that the case?

Yes, in that case the LimitTP order would be placed on the exchange and the StopSL order on the provider's server.
In AMP the provider is CQG, he keeps the stop orders on his server. And of course the server is in one collocation with the exchange in Chicago.
Implement OCO mode, one cancels the other, and they will be independently deleted.
I.e. if 1 contract LimitTP is executed, we cancel 1 contract StopSL, and so on, count the number of executed contracts.
And vice versa, if StopSL is executed, cancel LimitTP
Work with exchange bids, not terminal bids.

 
Roman:

Yes, in that case the LimitTP order would be placed on the exchange and the StopSL order on the provider's server.
In AMP the provider is CQG, he keeps the stop order on his server. And of course the server is in one collocation with the exchange in Chicago.
Implement OCO mode, one cancels the other, and they will be independently deleted.
I.e. if 1 contract LimitTP is executed, we cancel 1 contract StopSL, and so on, count the number of executed contracts.
And vice versa, if StopSL is executed, cancel LimitTP
Work with exchange bids, not terminal bids.

To be honest, I do not understand what all this trouble is about. What problem am I solving with these crutches? I have a trade opening at an unplanned Last price. I can't understand what kind of price this is and why my order is opened normally at Ask / Bid, and why it is opened inside the spread at this Last price.

 
Oleg Remizov:

Honestly, I don't understand what the big deal is... What problem am I solving with these crutches? I have a trade opening at an unplanned Last price. I cannot understand what kind of price this is and why my order is opened normally at Ask/Bid price and is opened inside the spread at this Last.

Look, there are two market orders at the same time in nanoseconds, one is a sell and the other is a buy.
If they don't reach Ask and sell, they meet in the middle of the spread and meet both sides.
You can get a Last price thereby. This will be the counter bids.
Therefore, your market order is matched with someone else's market order, and you get a position inside the spread.
Do not forget that CME is a global group of exchanges, with millions of orders, which fly in from all over the world.
Therefore, you have to get the price of the position you received and then calculate the distance from it.
Market will guarantee execution, but not price.
Limit guarantees price, but not execution.

As for the crutches, your right where to store the Stop order, on the server of the broker or in the collocation of the exchange.
Where the broker's server is located is not known, what the delay will be of this stop order at the time of sending it to the exchange is also not known.
How to execute the TP. With the terminal market or by filling your limit order at the exchange.
The choice is always yours.

 

You have never encountered slippage when opening positions¿¿¿¿

What do you see as the problem? Set the stops as they are, in OnTradeTransaction catch the moment the position is opened, check if the stops match the stated ones and change the stop levels if necessary. The whole problem............

Reason: