Bug in handling of isFilled field of com.jbooktrader.platform.position.OpenOrder class
Closed this issue · 1 comments
GoogleCodeExporter commented
What steps will reproduce the problem?
1. isFilled is not initialized to false in constructor
2. Note that once isFilled is set to true, it can never go to false
------------------------
What is the expected output? What do you see instead?
Found it by browsing code
------------------------
What version of the product are you using? On what operating system?
5.04, Windows
------------------------
Please provide any additional information below.
public void add(Execution execution) {
sharesFilled += execution.m_shares;
avgFillPrice += execution.m_price * execution.m_shares;
if (sharesFilled == order.m_totalQuantity) {
avgFillPrice /= sharesFilled;
date = strategy.getTime();
isFilled = true;
}
}
Suppose that I have a position of 100 shares in Stock XYZ that has been
filled at an average price of $100. Now, let's say that I decide to add to
that position by purchasing 1000 more shares at $100. Before the 1000
shares purchase executes, isFilled is still true from the previous purchase
of the 100 shares, but this does not make sense.
Note that the isFilled field qualifies the avgFillPrice so that we know
when it is a meaningful quantity.
Original issue reported on code.google.com by endosc...@gmail.com
on 29 Aug 2008 at 8:00
GoogleCodeExporter commented
This is not a bug. When 100 shares have been filled, the corresponding instance
of
OpenOrder is discarded. When the next order to purchase 1000 more shares is
submitted, a new instance of OpenOrder is created. There is no need to
explicitly
initialize the "isFilled" to false, as it happens by default when the new
instance is
created.
Original comment by eugene.k...@gmail.com
on 29 Aug 2008 at 11:37
- Changed state: Invalid