Interactive Brokers TWS API Error: Cash Quantity cannot be used for this order

1.6k Views Asked by At

I'm trying to place an order using TWS Java API. I want to set a cash quantity instead of the quantity of shares. Below is my code:

...
Contract contract = new Contract();
contract.symbol("IBM");
contract.secType("STK");
contract.exchange("SMART");
contract.currency("USD");

Order order = new Order();
order.action("BUY");
order.orderType("MKT");
order.cashQty("500");
m_socket.placeOrder(NextOrderId, contract, order);

When I run this code, I get an error:

Cash Quantity cannot be used for this order

If I use the quantity of shares using order.totalQuantity(), the order is placed successfully. How can I set a cash quantity instead of a share quantity? Thank you!

1

There are 1 best solutions below

0
On

Cash Quantity orders can only be made on Forex trades through the api. Here is a link to their docs. As you can see, cashQty only shows under a forex trade. I ran into this issue as well and now use this basic calculation for figuring out how many shares I can buy based on the amount I want to invest.

(amount you want to spend) / (price of stock) = # of shares you can buy