Compare commits

...

2 Commits

Author SHA1 Message Date
d319769fe0
Finish porting data structures for positions 2022-11-02 19:09:50 +00:00
48858bf20b
Fix price parsing 2022-11-02 19:04:05 +00:00
4 changed files with 55 additions and 6 deletions

View File

@ -86,7 +86,7 @@ class OANDAExchange(BaseExchange):
print("Positions", response)
for item in response["itemlist"]:
item["account"] = self.account.name
item["account_id"] = self.account_id
item["account_id"] = self.account.id
item["unrealized_pl"] = float(item["unrealized_pl"])
items.append(item)
return (True, items)

View File

@ -104,7 +104,10 @@ get_all_positions_schema = {
{
"symbol": "symbol",
"unrealized_pl": "unrealized_pl",
"price:": "current_price",
"price": "current_price",
"units": "qty",
"side": "side",
"value": "market_value",
}
],
)

View File

@ -115,9 +115,56 @@ class OpenPositions(BaseModel):
],
"lastTransactionID": "73",
}
def parse_prices(x):
if float(x["long"]["units"]) > 0:
return x["long"]["averagePrice"]
elif float(x["short"]["units"]) > 0:
return x["short"]["averagePrice"]
else:
return 0
def parse_units(x):
if float(x["long"]["units"]) > 0:
return x["long"]["units"]
elif float(x["short"]["units"]) > 0:
return x["short"]["units"]
else:
return 0
def parse_value(x):
if float(x["long"]["units"]) > 0:
return float(x["long"]["units"]) * float(x["long"]["averagePrice"])
elif float(x["short"]["units"]) > 0:
return float(x["short"]["units"]) * float(x["short"]["averagePrice"])
else:
return 0
def parse_side(x):
if float(x["long"]["units"]) > 0:
return "long"
elif float(x["short"]["units"]) > 0:
return "short"
else:
return "unknown"
OpenPositions_schema = {
"itemlist": (
"positions",
[{"symbol": "instrument", "unrealized_pl": "unrealizedPL"}],
[
{
"symbol": "instrument",
"unrealized_pl": "unrealizedPL",
"price": parse_prices,
"units": parse_units,
"side": parse_side,
"value": parse_value,
}
],
)
}

View File

@ -1,5 +1,4 @@
{% include 'partials/notify.html' %}
<table class="table is-fullwidth is-hoverable" id="positions-table">
<thead>
<th>account</th>
@ -19,8 +18,8 @@
<td>{{ item.account }}</td>
<td>{{ item.symbol }}</td>
<td>{{ item.price }}</td>
<td>{{ item.qty }}</td>
<td>{{ item.market_value }}</td>
<td>{{ item.units }}</td>
<td>{{ item.value }}</td>
<td>{{ item.unrealized_pl }}</td>
<td>{{ item.side }}</td>
<td>