void OpenOrderWithOB(int direction, double obHigh, double obLow) { double sl = StopLossPoints * PointValue; double tp = CalculateTakeProfit(); // ใช้ขนาดล็อตที่กำหนดระหว่าง MinLotSize และ MaxLotSize double lotSize = MinLotSize; MqlTradeRequest request; MqlTradeResult result; ZeroMemory(request); ZeroMemory(result); request.action = TRADE_ACTION_DEAL; request.symbol = SymbolName; request.volume = lotSize; request.type = direction; request.deviation = 2; request.magic = 0; request.type_filling = ORDER_FILLING_IOC; if(direction == ORDER_TYPE_BUY) { request.price = SymbolInfoDouble(SymbolName, SYMBOL_ASK); request.sl = request.price - sl; request.tp = request.price + tp; request.comment = "Buy with OB"; } else if(direction == ORDER_TYPE_SELL) { request.price = SymbolInfoDouble(SymbolName, SYMBOL_BID); request.sl = request.price + sl; request.tp = request.price - tp; request.comment = "Sell with OB"; } if(!OrderSend(request, result)) { Print("Failed to send order: ", GetLastError()); } else { Print("Order opened: ", result.order); } }
request.sl = request.price - sl; request.tp = request.price + tp;
You buy at the Ask and sell at the Bid. Pending Buy Stop orders become market orders when hit by the Ask.
-
Your buy order's TP/SL (or Sell Stop's/Sell Limit's entry) are triggered when the Bid / OrderClosePrice reaches it. Using Ask±n, makes your SL shorter and your TP longer, by the spread. Don't you want the specified amount used in either direction?
-
Your sell order's TP/SL (or Buy Stop's/Buy Limit's entry) will be triggered when the Ask / OrderClosePrice reaches it. To trigger close at a specific Bid price, add the average spread.
MODE_SPREAD (Paul) - MQL4 programming forum - Page 3 #25 -
Prices (open, SL, and TP) must be a multiple of ticksize. Using Point means code breaks on 4 digit brokers (if any still exists), exotics (e.g. USDZAR where spread is over 500 points), and metals. Compute what a logical PIP is and use that, not points.
How to manage JPY pairs with parameters? - MQL4 programming forum (2017)
Slippage defined in index points - Expert Advisors and Automated Trading - MQL5 programming forum (2018) -
The charts show Bid prices only. Turn on the Ask line to see how big the spread is (Tools → Options (control+O) → charts → Show ask line.)
Most brokers with variable spreads widen considerably at end of day (5 PM ET) ± 30 minutes.
My GBPJPY shows average spread = 26 points, average maximum spread = 134.
My EURCHF shows average spread = 18 points, average maximum spread = 106.
(your broker will be similar).
Is it reasonable to have such a huge spreads (20 PIP spreads) in EURCHF? - General - MQL5 programming forum (2022)

- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use