Send multiple orders using data.frame. All columns need to be filled. See details.

Some Forex brokers take 200ms to accept orders into market, so take this time on mind. Always check MT5's "Experts" tab.

MT5.MultipleOrders(df_orders)

Arguments

df_orders

data.frame; see details.

Value

Returns {logical} vector. TRUE if order was successful accepted, otherwise will return FALSE.

Details

Take note that buy orders are rejected when order's stop loss are higher than order's price, and vice-versa for sell orders. This is a sanity check made by MT5, not by mt5R. Always check MT5's "Experts" tab for more details when an order is rejected.

df_orders {data.frame} \([nx7]\) columns should be on the same order and type of MT5.SingleOrder arguments.

  • sSymbol {character}: symbol to send the order.

  • iCmd {int}:

    • 0: ORDER_TYPE_BUY_LIMIT

    • 1: ORDER_TYPE_SELL_LIMIT

  • fVol {numeric}: volume order.

  • fPrice {numeric}: where the order will be positioned. Use fPrice = 0 for market order.

  • fStop {numeric}: if applicable use any value > 0.

  • fGain {numeric}: if applicable use any value > 0.

  • iFillType {int}:

    • 0: ORDER_FILLING_RETURN (default)

    • 1: ORDER_FILLING_FOK (market order)

    • 2: ORDER_FILLING_IOC

Using fPrice = 0 for Market Order, automatically iFillType will be set to 1.

References

https://www.mql5.com/en/docs/constants/tradingconstants/orderproperties

https://www.investopedia.com/terms/m/marketorder.asp

See also

Examples

if (FALSE) { ## Two LONG positions, PETR4 with volumn of 100 and price of 22.0 and VALE5 with volumn of 500 and price of 65. Orders <- data.frame(sSymbol = "PETR4", iCmd = 0, fVol = 100, fPrice = 22, fStop = 0, fGain = 0, iFillType = 0) Orders <- rbind(Orders, data.frame(sSymbol = "ABEV3", iCmd = 0, fVol = 200, fPrice = 14.3, fStop = 0, fGain = 0, iFillType = 0)) MT5.MultipleOrders(Orders) ## Forex order. First one is a market order (fPrice = 0) Orders <- data.frame(sSymbol = "EURUSD", iCmd = 0, fVol = 0.01, fPrice = 0, fStop = 0, fGain = 0, iFillType = 1) Orders <- rbind(Orders, data.frame(sSymbol = "GBPUSD", iCmd = 0, fVol = 0.01, fPrice = 1.3276, fStop = 0, fGain = 0, iFillType = 0)) MT5.MultipleOrders(Orders) }