Я хочу получить среднюю стоимость одной позиции.

Я использую API IB_insync и prePositions (). Выход:

[Position(account='DU1675421', contract=Stock(conId=29622888, symbol='HEIA', exchange='AEB', currency='EUR', localSymbol='HEIA', tradingClass='HEIA'), position=100.0, avgCost=90.97088),
 Position(account='DU1675421', contract=Future(conId=176791153, symbol='N225M', lastTradeDateOrContractMonth='20191212', multiplier='100', currency='JPY', localSymbol='164120019', tradingClass='NK225M'), position=1.0, avgCost=2284540.0)]

Я хотел бы иметь среднюю стоимость 1 позиции. Как бы я это сделал?

b = ib.reqPositions()
while ib.sleep(0.5):
    plb = b
    print (plb)

B.avgCost () не работает.

0
Matthijs van Driel 28 Окт 2019 в 13:04

1 ответ

Похоже, что reqPositions возвращает список именованных кортежей.
Чтобы получить доступ к элементу в namedtuple, вам нужно будет перебрать список, например

for position in b:
    print(position.avgCost)
0
Josh 29 Окт 2019 в 19:53
Обратите внимание, что avgCost включает множитель, то есть это среднее значение уплаченных (или полученных для коротких позиций) цен, включая комиссию и умноженное на множитель, но не умноженное на количество позиций.
 – 
Gascoyne
1 Фев 2021 в 04:08