5
5
from python_trading212 .models import (
6
6
Position , Exchange , Instrument ,
7
7
Pie , Order , AccountCash , AccountMetadata ,
8
- NewPieIn , NewPieOut , HistoricalOrderData
8
+ HistoricalOrderData , LimitOrder , FilledOrder ,
9
+ MarketOrder , StopOrder , StopLimitOrder
9
10
)
10
11
11
12
@@ -104,21 +105,21 @@ def fetch_all_pies(self) -> List[Pie]:
104
105
pies .append (Pie (** pie ))
105
106
return pies
106
107
107
- def create_pie (self , new_pie : NewPieIn ) -> NewPieOut :
108
+ def create_pie (self , pie : Pie ) -> Pie :
108
109
"""Creates a new pie
109
110
110
111
https://t212public-api-docs.redoc.ly/#operation/create
111
112
112
113
Args:
113
- new_pie (NewPieIn ): the new pie to create
114
+ pie (Pie ): the new pie to create
114
115
115
116
Returns:
116
- NewPieOut : the new pie
117
+ Pie : the new pie
117
118
"""
118
119
endpoint = self .url + "equity/pie"
119
- response = self ._post (endpoint , new_pie .model_dump ())
120
+ response = self ._post (endpoint , pie .model_dump ())
120
121
121
- return NewPieOut (** response )
122
+ return Pie (** response )
122
123
123
124
def delete_pie (self , id : int ) -> None :
124
125
"""Deletes a pie by ID
@@ -147,22 +148,22 @@ def fetch_pie(self, id: int) -> Pie:
147
148
148
149
return Pie (** response )
149
150
150
- def update_pie (self , id : int , new_pie : NewPieIn ) -> NewPieOut :
151
+ def update_pie (self , id : int , pie : Pie ) -> Pie :
151
152
"""Updates a pie by ID
152
153
153
154
https://t212public-api-docs.redoc.ly/#operation/update
154
155
155
156
Args:
156
157
id (int): the ID of the pie
157
- new_pie (NewPieIn ): the new pie
158
+ pie (Pie ): the new pie
158
159
159
160
Returns:
160
- NewPieOut : the new pie
161
+ Pie : the new pie
161
162
"""
162
163
endpoint = self .url + f"equity/pie/{ id } "
163
- response = self ._post (endpoint , new_pie .model_dump ())
164
+ response = self ._post (endpoint , pie .model_dump ())
164
165
165
- return NewPieOut (** response )
166
+ return Pie (** response )
166
167
167
168
def fetch_all_orders (self ) -> List [Order ]:
168
169
""" Fetches all orders
@@ -180,6 +181,70 @@ def fetch_all_orders(self) -> List[Order]:
180
181
orders .append (Order (** order ))
181
182
return orders
182
183
184
+ def place_limit_order (self , limit_order : LimitOrder ) -> FilledOrder :
185
+ """Places a limit order
186
+
187
+ https://t212public-api-docs.redoc.ly/#operation/placeLimitOrder
188
+
189
+ Args:
190
+ limit_order (LimitOrder): the limit order to place
191
+
192
+ Returns:
193
+ FilledOrder: the filled order
194
+ """
195
+ endpoint = self .url + "equity/orders/limit"
196
+ response = self ._post (endpoint , limit_order .model_dump ())
197
+
198
+ return FilledOrder (** response )
199
+
200
+ def place_market_order (self , market_order : MarketOrder ) -> FilledOrder :
201
+ """Places a market order
202
+
203
+ https://t212public-api-docs.redoc.ly/#operation/placeMarketOrder
204
+
205
+ Args:
206
+ market_order (MarketOrder): the market order to place
207
+
208
+ Returns:
209
+ FilledOrder: the filled order
210
+ """
211
+ endpoint = self .url + "equity/orders/market"
212
+ response = self ._post (endpoint , market_order .model_dump ())
213
+
214
+ return FilledOrder (** response )
215
+
216
+ def place_stop_order (self , stop_order : StopOrder ) -> FilledOrder :
217
+ """Places a stop order
218
+
219
+ https://t212public-api-docs.redoc.ly/#operation/placeStopOrder
220
+
221
+ Args:
222
+ stop_order (StopOrder): the stop order to place
223
+
224
+ Returns:
225
+ FilledOrder: the filled order
226
+ """
227
+ endpoint = self .url + "equity/orders/stop"
228
+ response = self ._post (endpoint , stop_order .model_dump ())
229
+
230
+ return FilledOrder (** response )
231
+
232
+ def place_stop_limit_order (self , stop_limit_order : StopLimitOrder ) -> FilledOrder :
233
+ """Places a stop limit order
234
+
235
+ https://t212public-api-docs.redoc.ly/#operation/placeStopLimitOrder
236
+
237
+ Args:
238
+ stop_limit_order (StopLimitOrder): the stop limit order to place
239
+
240
+ Returns:
241
+ FilledOrder: the filled order
242
+ """
243
+ endpoint = self .url + "equity/orders/stop_limit"
244
+ response = self ._post (endpoint , stop_limit_order .model_dump ())
245
+
246
+ return FilledOrder (** response )
247
+
183
248
def fetch_order (self , id : int ) -> Order :
184
249
"""Fetches an order by ID
185
250
0 commit comments