Compare commits
2 Commits
1f75da40af
...
d319769fe0
Author | SHA1 | Date | |
---|---|---|---|
d319769fe0 | |||
48858bf20b |
@ -86,7 +86,7 @@ class OANDAExchange(BaseExchange):
|
|||||||
print("Positions", response)
|
print("Positions", response)
|
||||||
for item in response["itemlist"]:
|
for item in response["itemlist"]:
|
||||||
item["account"] = self.account.name
|
item["account"] = self.account.name
|
||||||
item["account_id"] = self.account_id
|
item["account_id"] = self.account.id
|
||||||
item["unrealized_pl"] = float(item["unrealized_pl"])
|
item["unrealized_pl"] = float(item["unrealized_pl"])
|
||||||
items.append(item)
|
items.append(item)
|
||||||
return (True, items)
|
return (True, items)
|
||||||
|
@ -104,7 +104,10 @@ get_all_positions_schema = {
|
|||||||
{
|
{
|
||||||
"symbol": "symbol",
|
"symbol": "symbol",
|
||||||
"unrealized_pl": "unrealized_pl",
|
"unrealized_pl": "unrealized_pl",
|
||||||
"price:": "current_price",
|
"price": "current_price",
|
||||||
|
"units": "qty",
|
||||||
|
"side": "side",
|
||||||
|
"value": "market_value",
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -115,9 +115,56 @@ class OpenPositions(BaseModel):
|
|||||||
],
|
],
|
||||||
"lastTransactionID": "73",
|
"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 = {
|
OpenPositions_schema = {
|
||||||
"itemlist": (
|
"itemlist": (
|
||||||
"positions",
|
"positions",
|
||||||
[{"symbol": "instrument", "unrealized_pl": "unrealizedPL"}],
|
[
|
||||||
|
{
|
||||||
|
"symbol": "instrument",
|
||||||
|
"unrealized_pl": "unrealizedPL",
|
||||||
|
"price": parse_prices,
|
||||||
|
"units": parse_units,
|
||||||
|
"side": parse_side,
|
||||||
|
"value": parse_value,
|
||||||
|
}
|
||||||
|
],
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
{% include 'partials/notify.html' %}
|
{% include 'partials/notify.html' %}
|
||||||
|
|
||||||
<table class="table is-fullwidth is-hoverable" id="positions-table">
|
<table class="table is-fullwidth is-hoverable" id="positions-table">
|
||||||
<thead>
|
<thead>
|
||||||
<th>account</th>
|
<th>account</th>
|
||||||
@ -19,8 +18,8 @@
|
|||||||
<td>{{ item.account }}</td>
|
<td>{{ item.account }}</td>
|
||||||
<td>{{ item.symbol }}</td>
|
<td>{{ item.symbol }}</td>
|
||||||
<td>{{ item.price }}</td>
|
<td>{{ item.price }}</td>
|
||||||
<td>{{ item.qty }}</td>
|
<td>{{ item.units }}</td>
|
||||||
<td>{{ item.market_value }}</td>
|
<td>{{ item.value }}</td>
|
||||||
<td>{{ item.unrealized_pl }}</td>
|
<td>{{ item.unrealized_pl }}</td>
|
||||||
<td>{{ item.side }}</td>
|
<td>{{ item.side }}</td>
|
||||||
<td>
|
<td>
|
||||||
|
Loading…
Reference in New Issue
Block a user