Closed mullenba closed 7 years ago
So I changed some code... I'm not very knowledgeable about GIT pulls and such, so I'll include my changes here if it helps.
From the Oanda docs, it appears that the gtdTime field was missing from the limit orders when a GTD order is used. So I made the following changes to the init function of the LimitOrderRequest class in requests/limitorder.py (I'm removing the big comment block for clarity.)
class LimitOrderRequest(BaseRequest):
"""create a LimitOrderRequest.
LimitOrderRequest is used to build the body for a LimitOrder.
The body can be used to pass to the OrderCreate endpoint.
"""
def __init__(self,
instrument,
units,
price,
positionFill=OrderPositionFill.DEFAULT,
clientExtensions=None,
takeProfitOnFill=None,
timeInForce=TimeInForce.GTC,
gtdTime = None, # inserting missing field for GTD trades
stopLossOnFill=None,
trailingStopLossOnFill=None,
tradeClientExtensions=None):
super(LimitOrderRequest, self).__init__()
# by default for a LIMIT order
self._data.update({"type": OrderType.LIMIT})
self._data.update({"timeInForce": timeInForce})
# required
self._data.update({"instrument": instrument})
self._data.update({"units": Units(units).value})
self._data.update({"price": PriceValue(price).value})
# Only if GTD
if timeInForce == 'GTD':
self._data.update({"gtdTime": gtdTime})
# optional
self._data.update({"positionFill": positionFill})
self._data.update({"clientExtensions": clientExtensions})
self._data.update({"takeProfitOnFill": takeProfitOnFill})
self._data.update({"stopLossOnFill": stopLossOnFill})
self._data.update({"trailingStopLossOnFill": trailingStopLossOnFill})
self._data.update({"tradeClientExtensions": tradeClientExtensions})
Also, the time value provided to gtdDate needs to be UTC. I used the following code:
from oandapyV20.types import DateTime
gtdTime = DateTime(datetime.utcnow() + timedelta(seconds = 30*60)).value
Hope this helps! Your stuff is great!
Hi, I'm a bit limited available (holiday) , but it seems you found a missing parameter, gtdTime. Will come back to it.
@mullenba fixed this one. Thanks!
I'm trying to figure out limit orders with take profit and time limits. Here's an example of my code:
I'm not sure where/how to put the time in for the GTD portion of the limit order. I don't see anything called out in the docs.
Here's the error I get.
Thanks!