Order types

 

Hello,

I am trying to place a buy limit order for XNGUSD. 

Suppose, it is trading at 7.140 and I want to place an order when it crosses previous candle high of 7.155, it is not letting me place a buy limit order. It says price has to be 36 points above the current price which would be 7.176. So how do traders place order when they want to execute at price when it crosses previous candle high/low ?

Also, I will my order be skipped if the price crosses 7.155 without trading at it ? 

 
Pushkar Bhandari:

Hello,

I am trying to place a buy limit order for XNGUSD. 

Suppose, it is trading at 7.140 and I want to place an order when it crosses previous candle high of 7.155, it is not letting me place a buy limit order. It says price has to be 36 points above the current price which would be 7.176. So how do traders place order when they want to execute at price when it crosses previous candle high/low ?

Also, I will my order be skipped if the price crosses 7.155 without trading at it ? 

The platform only displays bid prices. Buying can be done at the ask price. Due to the difference (spread) between Bid and Ask prices, you cannot buy at the price you see on the platform. In addition, the issue you mentioned as a problem is caused by the StopLevel applied by your broker company in the transactions. In limit orders, it may be requested to have a difference as much as the stop level.

 
Pushkar Bhandari: I am trying to place a buy limit order for XNGUSD. Suppose, it is trading at 7.140 and I want to place an order when it crosses previous candle high of 7.155, it is not letting me place a buy limit order. It says price has to be 36 points above the current price which would be 7.176. So how do traders place order when they want to execute at price when it crosses previous candle high/low ? Also, I will my order be skipped if the price crosses 7.155 without trading at it ? 

Take some time to familiarise yourself with contract specifications like Stops Level and Freeze Level that are set by the broker, as well as Ask, Bid and the Spread.

The following is for MetaTrader 4 but it also applies to MetaTrader 5:

Requirements and Limitations in Making Trades


Tables below show calculation values that limit the conduction of trades when opening, closing, placing, deleting or modifying orders.

To get the minimum distance to StopLevel and freezing distance FreezeLevel the MarketInfo() function should be called.


Requirements.

Correct prices used when performing trade operations.
Order Type
Open Price
Close Price
Open Price of a Pending Order
Transforming a Pending Order into aMarket Order
Buy
Ask
Bid


Sell
Bid
Ask


BuyLimit


Below the current Ask price
Ask price reaches open price
SellLimit


Above the current Bid price
Bid price reaches open price
BuyStop


Above the current Ask price
Ask price reaches open price
SellStop


Below the current Bid price
Bid price reaches open price

The possibility of deleting a pending order is regulated by the FreezeLevel parameter.


StopLevel Minimum Distance Limitation.

A trade operation will not be performed if any of the following conditions is disrupted.

Order Type
Open Price StopLoss (SL) TakeProfit (TP)
Buy
Modification is prohibited
Bid-SL StopLevel TP-Bid StopLevel
Sell
Modification is prohibited SL-Ask StopLevel Ask-TP StopLevel
BuyLimit
Ask-OpenPriceStopLevel OpenPrice-SL StopLevel TP-OpenPrice StopLevel
SellLimit
OpenPrice-Bid StopLevel SL-OpenPrice StopLevel OpenPrice-TP StopLevel
BuyStop
OpenPrice-Ask StopLevel OpenPrice-SL StopLevel TP-OpenPrice StopLevel
SellStop
Bid-OpenPrice StopLevel SL-OpenPrice StopLevel OpenPrice-TP StopLevel

FreezeLevel Limitation (Freezing Distance).

Market orders can not be closed if the StopLoss and TakeProfit values violate the FreezLevel parameter requirements.
StopLoss or TakeProfit orders can not be modified if StopLoss or TakeProfit values violate the StopLevel parameter requirements.
Pending orders can not be deleted or modified if the declared open price violates the FreezeLevel parameter requirements.

Order Type
Open Price StopLoss (SL) TakeProfit (TP)
Buy
Modification is prohibited Bid-SL > FreezeLevel TP-Bid > FreezeLevel
Sell
Modification is prohibited SL-Ask > FreezeLevel Ask-TP > FreezeLevel
BuyLimit
Ask-OpenPrice > FreezeLevel Regulated by the StopLevel parameter
Regulated by the StopLevel parameter
SellLimit
OpenPrice-Bid > FreezeLevel Regulated by the StopLevel parameter Regulated by the StopLevel parameter
BuyStop
OpenPrice-Ask > FreezeLevel Regulated by the StopLevel parameter Regulated by the StopLevel parameter
SellStop
Bid-OpenPrice > FreezeLevel Regulated by the StopLevel parameter Regulated by the StopLevel parameter
Requirements and Limitations in Making Trades - Appendixes - MQL4 Tutorial
Requirements and Limitations in Making Trades - Appendixes - MQL4 Tutorial
  • book.mql4.com
Requirements and Limitations in Making Trades - Appendixes - MQL4 Tutorial
 

Hello,

I am using octafx as a broker. I want to place a buy order for GBPUSD at 1.30235 or any price above above (which was the high of previous candle). So is buy stop order the right one for this order execution ? Also, it is allowing me to place the order only above 1.30252 which is way above the previous candle high which is my entry point. In market depth, we can see that buyers and sellers are at 1.30219 and 1.30228. So how do I execute this order when price crosses previous candle high ?

 
Pushkar Bhandari # :

Hello,

I am using octafx as a broker. I want to place a buy order for GBPUSD at 1.30235 or any price above above (which was the high of previous candle). So is buy stop order the right one for this order execution ? Also, it is allowing me to place the order only above 1.30252 which is way above the previous candle high which is my entry point. In market depth, we can see that buyers and sellers are at 1.30219 and 1.30228. So how do I execute this order when price crosses previous candle high ?

If in this situation you cannot place a pending order below the price of 1.30235, then you should check the properties of the symbol (in particular, the freeze levels). If freeze levels are indeed set for this symbol, then you only have to work with market trade orders.

 
Pushkar Bhandari #: So how do I execute this order when price crosses previous candle high ?

If you buy when the Ask crosses above the previous candle high, you are opening before the market crosses.

You place your pending buy at the high plus the average spread.

1.30252 is not "way above." It is 1.7 PIPs above the market 1.30235) when you have a spread of 0.9 PIPs

 
William Roeder #:

If you buy when the Ask crosses above the previous candle high, you are opening before the market crosses.

You place your pending buy at the high plus the average spread.

1.30252 is not "way above." It is 1.7 PIPs above the market 1.30235) when you have a spread of 0.9 PIPs

Thank you, this cleared a lot. So basically, the spread is the cost we incur on every trade ? I am trading through octafx, and the spread for XNGUSD is 10 to 15 points = Bid : Ask = 7.010 : 7.025 The margin required to trade 1 lot of XNGUSD is $800 approx. So $150 just for the spread cost seems high, no ? Leverage used is 1:500
 
William Roeder #:

If you buy when the Ask crosses above the previous candle high, you are opening before the market crosses.

You place your pending buy at the high plus the average spread.

1.30252 is not "way above." It is 1.7 PIPs above the market 1.30235) when you have a spread of 0.9 PIPs

Hi all,

I've a similar issue for a test. I understand that a buy order is likely to be executed rather immediately if OrderSend() is used with an Ask price. Though, I'm wondering if it's possible to be executed at a better price.

For example: I'm using a pending/buy limit order (start of new bar) with an entry price equal to the average of the previous bar close and the ask price (time expiration equivalent to one bar). I'm also using IOC as order filling type.

Though, when using strategy tester in visualization mode even with real ticks, it seems tick based prices move on/around the pending entry price level, but the order is not executed.

Am I missing something in the interpretation?

Nb: no error msg (limit price format should be ok) and I can execute market orders at Ask price without any issue.

 
Thomas110 #:

Hi all,

I've a similar issue for a test. I understand that a buy order is likely to be executed rather immediately if OrderSend() is used with an Ask price. Though, I'm wondering if it's possible to be executed at a better price.

For example: I'm using a pending/buy limit order (start of new bar) with an entry price equal to the average of the previous bar close and the ask price (time expiration equivalent to one bar). I'm also using IOC as order filling type.

Though, when using strategy tester in visualization mode even with real ticks, it seems tick based prices move on/around the pending entry price level, but the order is not executed.

Am I missing something in the interpretation?

Nb: no error msg (limit price format should be ok) and I can execute market orders at Ask price without any issue.

Did you not read the post above, namely "Requirements and Limitations in Making Trades"?

To be able to place a "Buy Limit" pending order, the opening price must be ... Ask-OpenPrice ≥ StopLevel

 
Fernando Carreiro #:

Did you not read the post above, namely "Requirements and Limitations in Making Trades"?

To be able to place a "Buy Limit" pending order, the opening price must be ... Ask-OpenPrice ≥ StopLevel

Retested it today. I could place the order (as previously - but also added this constraint to make sure); for now it seems the limit order is  sometimes triggered and executed, and sometimes it isn't.

Which means it's likely not a matter of syntax or requirement/constraint imo, otherwise I'd have an error message.

In tester's visualization mode, once placed with IOC filling type I can see the pending order price level and the price moving on/around it (twice in 4 bars) without execution (test with M1 bar close or real ticks)

Any idea of something I should monitor?

 
Thomas110 #:

Retested it today. I could place the order (as previously - but also added this constraint to make sure); for now it seems the limit order is  sometimes triggered and executed, and sometimes it isn't.

Which means it's likely not a matter of syntax or requirement/constraint imo, otherwise I'd have an error message.

In tester's visualization mode, once placed with IOC filling type I can see the pending order price level and the price moving on/around it (twice in 4 bars) without execution (test with M1 bar close or real ticks)

Any idea of something I should monitor?

Please remember that the Chart only shows Bid prices, not Ask prices, and the trigger only happens when the "Ask" price is valid for the order (it is a "Buy" order). It also depends on filling mode and available liquidity.

PS! Enable the Ask price line on the chart for the current ask price. Candles however, will continue to only be based on Bid prices.

Reason: