Pour ce qui est des positions ouvertes que tu en ais 0, 1 ou 100 le problème reste le même.
Avoir tes positions ouvertes et les récupérer dans un DataFrame te permet par exemple de cumuler les plus (ou moins) values latentes.
Si avec l'API tu récupères dans un dataframe nommé df_pos tes positions et que les plus/ou moins values sont dans la colonne "Profit" tu peux alors faire df_pos['Profit'].cumsum() (par exemple)
Si tu as plusieurs positions pour un même actif (Hedging par exemple), tu peux les grouper par actif (si le nom de l'actif est dans la colonne "epic" par exemple à l'aide de "groupby" df.groupby("epic")["Profit"].cumsum() et tu obtiens une Pandas Series avec comme index les epic et comme valeur les profits (plus ou moins val) cumulés.
En fait, même pour des requêtes de types /markets/, renvoyer un DataFrame a un intérêt (ou du moins un dictionnaire dont certaines clés sont associées à un DataFrame) car ça permet avec le boolean indexing de filtrer sur un critère donné.
Si le résultat d'une requête de type /markets renvoie une liste de "Market data" qui est transformé par la lib en un DataFrame (nommé par exemple df_markets) tu peux ainsi faire
df_markets[df_markets["instrumentType "]=="CURRENCIES"] pour n'avoir un dataframe avec que les devises (par exemple)