Currently, I am paper trading through Python 3.10, using the API instead of the SDK.
I’m trying to place purchase orders for a specific amount of crypto and once a target is met, the position will be liquidated. I noticed lately I sometimes get “leftovers” after trading.
As an example, I would have holdings in LTC/USD for quantities around 0.001. As a result, I am unable to liquidate the position (since the smallest allowed quantity is 0.01).
This amount shouldn’t be the difference in quantity in buy and sell orders for the following reasons:
-
I am using FOK time-in-force, which should mean I will be getting the whole order amount.
-
I am not using sell orders, but instead using a close position endpoint, which means I should be liquidating all holdings in a given position.
I have noticed that sometimes I get a partial fill even with FOK, so perhaps that is relevant?
I have gone through my code to make sure I am ordering the correct quantities.
Any ideas on how to avoid this issue?
Code for orders
order = requests.post(
'{0}/v2/orders'.format(ALPACA_BASE_URL), headers=HEADERS, json={
'symbol': symbol,
'qty': qty,
'side': side,
'type': 'market',
'time_in_force': 'fok',
})
Code for closing position
order = requests.delete('{0}/v2/positions/{1}'.format(ALPACA_BASE_URL, symbol),
headers=HEADERS)