ccxt 4.4.45__py2.py3-none-any.whl → 4.4.47__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. ccxt/__init__.py +1 -1
  2. ccxt/abstract/binance.py +1 -0
  3. ccxt/abstract/binancecoinm.py +1 -0
  4. ccxt/abstract/binanceus.py +1 -0
  5. ccxt/abstract/binanceusdm.py +1 -0
  6. ccxt/abstract/bybit.py +1 -0
  7. ccxt/ace.py +58 -0
  8. ccxt/alpaca.py +80 -0
  9. ccxt/ascendex.py +110 -3
  10. ccxt/async_support/__init__.py +1 -1
  11. ccxt/async_support/ace.py +58 -0
  12. ccxt/async_support/alpaca.py +80 -0
  13. ccxt/async_support/ascendex.py +110 -3
  14. ccxt/async_support/base/exchange.py +1 -1
  15. ccxt/async_support/bigone.py +113 -4
  16. ccxt/async_support/binance.py +4 -5
  17. ccxt/async_support/binanceus.py +10 -0
  18. ccxt/async_support/bingx.py +1 -2
  19. ccxt/async_support/bit2c.py +56 -0
  20. ccxt/async_support/bitbank.py +58 -0
  21. ccxt/async_support/bitbns.py +60 -0
  22. ccxt/async_support/bitfinex.py +2 -3
  23. ccxt/async_support/bitfinex1.py +8 -0
  24. ccxt/async_support/bitflyer.py +71 -0
  25. ccxt/async_support/bitget.py +103 -40
  26. ccxt/async_support/bithumb.py +54 -0
  27. ccxt/async_support/bitmex.py +1 -2
  28. ccxt/async_support/bitopro.py +74 -0
  29. ccxt/async_support/bitrue.py +97 -17
  30. ccxt/async_support/bitso.py +59 -0
  31. ccxt/async_support/bitteam.py +73 -0
  32. ccxt/async_support/bitvavo.py +70 -2
  33. ccxt/async_support/bl3p.py +42 -0
  34. ccxt/async_support/blockchaincom.py +66 -2
  35. ccxt/async_support/blofin.py +87 -1
  36. ccxt/async_support/btcalpha.py +73 -0
  37. ccxt/async_support/btcbox.py +58 -0
  38. ccxt/async_support/btcmarkets.py +73 -0
  39. ccxt/async_support/btcturk.py +61 -0
  40. ccxt/async_support/bybit.py +87 -39
  41. ccxt/async_support/cex.py +57 -0
  42. ccxt/async_support/coinbase.py +1 -1
  43. ccxt/async_support/coinbaseexchange.py +76 -0
  44. ccxt/async_support/coinex.py +1 -2
  45. ccxt/async_support/delta.py +10 -6
  46. ccxt/async_support/gate.py +3 -4
  47. ccxt/async_support/hashkey.py +1 -2
  48. ccxt/async_support/hollaex.py +1 -1
  49. ccxt/async_support/htx.py +2 -4
  50. ccxt/async_support/hyperliquid.py +6 -7
  51. ccxt/async_support/krakenfutures.py +2 -0
  52. ccxt/async_support/lbank.py +1 -2
  53. ccxt/async_support/mexc.py +1 -0
  54. ccxt/async_support/okx.py +13 -9
  55. ccxt/async_support/onetrading.py +18 -3
  56. ccxt/async_support/oxfun.py +1 -2
  57. ccxt/async_support/whitebit.py +2 -2
  58. ccxt/async_support/woo.py +1 -2
  59. ccxt/async_support/woofipro.py +1 -2
  60. ccxt/base/errors.py +6 -0
  61. ccxt/base/exchange.py +16 -14
  62. ccxt/bigone.py +113 -4
  63. ccxt/binance.py +4 -5
  64. ccxt/binanceus.py +10 -0
  65. ccxt/bingx.py +1 -2
  66. ccxt/bit2c.py +56 -0
  67. ccxt/bitbank.py +58 -0
  68. ccxt/bitbns.py +60 -0
  69. ccxt/bitfinex.py +2 -3
  70. ccxt/bitfinex1.py +8 -0
  71. ccxt/bitflyer.py +71 -0
  72. ccxt/bitget.py +103 -40
  73. ccxt/bithumb.py +54 -0
  74. ccxt/bitmex.py +1 -2
  75. ccxt/bitopro.py +74 -0
  76. ccxt/bitrue.py +97 -17
  77. ccxt/bitso.py +59 -0
  78. ccxt/bitteam.py +73 -0
  79. ccxt/bitvavo.py +70 -2
  80. ccxt/bl3p.py +42 -0
  81. ccxt/blockchaincom.py +66 -2
  82. ccxt/blofin.py +87 -1
  83. ccxt/btcalpha.py +73 -0
  84. ccxt/btcbox.py +58 -0
  85. ccxt/btcmarkets.py +73 -0
  86. ccxt/btcturk.py +61 -0
  87. ccxt/bybit.py +87 -39
  88. ccxt/cex.py +57 -0
  89. ccxt/coinbase.py +1 -1
  90. ccxt/coinbaseexchange.py +76 -0
  91. ccxt/coinex.py +1 -2
  92. ccxt/delta.py +10 -6
  93. ccxt/gate.py +3 -4
  94. ccxt/hashkey.py +1 -2
  95. ccxt/hollaex.py +1 -1
  96. ccxt/htx.py +2 -4
  97. ccxt/hyperliquid.py +6 -7
  98. ccxt/krakenfutures.py +2 -0
  99. ccxt/lbank.py +1 -2
  100. ccxt/mexc.py +1 -0
  101. ccxt/okx.py +13 -9
  102. ccxt/onetrading.py +18 -3
  103. ccxt/oxfun.py +1 -2
  104. ccxt/pro/__init__.py +1 -1
  105. ccxt/pro/bingx.py +3 -5
  106. ccxt/pro/bitget.py +2 -4
  107. ccxt/pro/coinex.py +1 -1
  108. ccxt/pro/xt.py +1 -1
  109. ccxt/test/tests_async.py +2 -0
  110. ccxt/test/tests_sync.py +2 -0
  111. ccxt/whitebit.py +2 -2
  112. ccxt/woo.py +1 -2
  113. ccxt/woofipro.py +1 -2
  114. {ccxt-4.4.45.dist-info → ccxt-4.4.47.dist-info}/METADATA +4 -5
  115. {ccxt-4.4.45.dist-info → ccxt-4.4.47.dist-info}/RECORD +118 -118
  116. {ccxt-4.4.45.dist-info → ccxt-4.4.47.dist-info}/LICENSE.txt +0 -0
  117. {ccxt-4.4.45.dist-info → ccxt-4.4.47.dist-info}/WHEEL +0 -0
  118. {ccxt-4.4.45.dist-info → ccxt-4.4.47.dist-info}/top_level.txt +0 -0
@@ -212,6 +212,71 @@ class bitvavo(Exchange, ImplicitAPI):
212
212
  'apiKey': True,
213
213
  'secret': True,
214
214
  },
215
+ 'features': {
216
+ 'spot': {
217
+ 'sandbox': False,
218
+ 'createOrder': {
219
+ 'marginMode': False,
220
+ 'triggerPrice': True,
221
+ 'triggerPriceType': None,
222
+ 'triggerDirection': None,
223
+ 'stopLossPrice': True,
224
+ 'takeProfitPrice': True,
225
+ 'attachedStopLossTakeProfit': None,
226
+ 'timeInForce': {
227
+ 'IOC': True,
228
+ 'FOK': True,
229
+ 'PO': True,
230
+ 'GTD': False,
231
+ },
232
+ 'hedged': False,
233
+ 'trailing': False,
234
+ 'leverage': False,
235
+ 'marketBuyRequiresPrice': False,
236
+ 'marketBuyByCost': True,
237
+ 'selfTradePrevention': True, # todo implement
238
+ 'iceberg': False,
239
+ },
240
+ 'createOrders': None,
241
+ 'fetchMyTrades': {
242
+ 'marginMode': False,
243
+ 'limit': 1000,
244
+ 'daysBack': 100000,
245
+ 'untilDays': 100000,
246
+ },
247
+ 'fetchOrder': {
248
+ 'marginMode': False,
249
+ 'trigger': False,
250
+ 'trailing': False,
251
+ },
252
+ 'fetchOpenOrders': {
253
+ 'marginMode': False,
254
+ 'limit': None,
255
+ 'trigger': False,
256
+ 'trailing': False,
257
+ },
258
+ 'fetchOrders': {
259
+ 'marginMode': True,
260
+ 'limit': 1000,
261
+ 'daysBack': 100000,
262
+ 'untilDays': 100000,
263
+ 'trigger': False,
264
+ 'trailing': False,
265
+ },
266
+ 'fetchClosedOrders': None,
267
+ 'fetchOHLCV': {
268
+ 'limit': 1440,
269
+ },
270
+ },
271
+ 'swap': {
272
+ 'linear': None,
273
+ 'inverse': None,
274
+ },
275
+ 'future': {
276
+ 'linear': None,
277
+ 'inverse': None,
278
+ },
279
+ },
215
280
  'exceptions': {
216
281
  'exact': {
217
282
  '101': ExchangeError, # Unknown error. Operation may or may not have succeeded.
@@ -1103,7 +1168,7 @@ class bitvavo(Exchange, ImplicitAPI):
1103
1168
  """
1104
1169
  create a trade order
1105
1170
 
1106
- https://docs.bitvavo.com/#tag/Orders/paths/~1order/post
1171
+ https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1order/post
1107
1172
 
1108
1173
  :param str symbol: unified symbol of the market to create an order in
1109
1174
  :param str type: 'market' or 'limit'
@@ -1416,6 +1481,9 @@ class bitvavo(Exchange, ImplicitAPI):
1416
1481
 
1417
1482
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1418
1483
  """
1484
+
1485
+ https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1ordersOpen/get
1486
+
1419
1487
  fetch all unfilled currently open orders
1420
1488
  :param str symbol: unified market symbol
1421
1489
  :param int [since]: the earliest time in ms to fetch open orders for
@@ -1608,7 +1676,7 @@ class bitvavo(Exchange, ImplicitAPI):
1608
1676
  async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
1609
1677
  """
1610
1678
 
1611
- https://docs.bitvavo.com/#tag/Trades/paths/~1trades/get
1679
+ https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1trades/get
1612
1680
 
1613
1681
  fetch all trades made by the user
1614
1682
  :param str symbol: unified market symbol
@@ -121,6 +121,48 @@ class bl3p(Exchange, ImplicitAPI):
121
121
  'markets': {
122
122
  'BTC/EUR': self.safe_market_structure({'id': 'BTCEUR', 'symbol': 'BTC/EUR', 'base': 'BTC', 'quote': 'EUR', 'baseId': 'BTC', 'quoteId': 'EUR', 'maker': 0.0025, 'taker': 0.0025, 'type': 'spot', 'spot': True}),
123
123
  },
124
+ 'features': {
125
+ 'spot': {
126
+ 'sandbox': False,
127
+ 'createOrder': {
128
+ 'marginMode': False,
129
+ 'triggerPrice': False,
130
+ 'triggerPriceType': None,
131
+ 'triggerDirection': False,
132
+ 'stopLossPrice': False,
133
+ 'takeProfitPrice': False,
134
+ 'attachedStopLossTakeProfit': None,
135
+ 'timeInForce': {
136
+ 'IOC': False,
137
+ 'FOK': False,
138
+ 'PO': False,
139
+ 'GTD': False,
140
+ },
141
+ 'hedged': False,
142
+ 'leverage': False,
143
+ 'marketBuyRequiresPrice': False,
144
+ 'marketBuyByCost': False,
145
+ 'selfTradePrevention': False,
146
+ 'trailing': False,
147
+ 'iceberg': False,
148
+ },
149
+ 'createOrders': None,
150
+ 'fetchMyTrades': None,
151
+ 'fetchOrder': None,
152
+ 'fetchOpenOrders': None,
153
+ 'fetchOrders': None,
154
+ 'fetchClosedOrders': None,
155
+ 'fetchOHLCV': None,
156
+ },
157
+ 'swap': {
158
+ 'linear': None,
159
+ 'inverse': None,
160
+ },
161
+ 'future': {
162
+ 'linear': None,
163
+ 'inverse': None,
164
+ },
165
+ },
124
166
  'precisionMode': TICK_SIZE,
125
167
  })
126
168
 
@@ -219,6 +219,70 @@ class blockchaincom(Exchange, ImplicitAPI):
219
219
  # 'DIGITALGOLD': 'DGLD',
220
220
  },
221
221
  },
222
+ 'features': {
223
+ 'spot': {
224
+ 'sandbox': False,
225
+ 'createOrder': {
226
+ 'marginMode': False,
227
+ 'triggerPrice': True,
228
+ 'triggerPriceType': None,
229
+ 'triggerDirection': False,
230
+ 'stopLossPrice': False, # todo
231
+ 'takeProfitPrice': False, # todo
232
+ 'attachedStopLossTakeProfit': None,
233
+ 'timeInForce': {
234
+ 'IOC': True,
235
+ 'FOK': True,
236
+ 'PO': False,
237
+ 'GTD': True, # todo implementation
238
+ },
239
+ 'hedged': False,
240
+ 'leverage': False,
241
+ 'marketBuyRequiresPrice': False,
242
+ 'marketBuyByCost': False,
243
+ 'selfTradePrevention': False,
244
+ 'trailing': False,
245
+ 'iceberg': False,
246
+ },
247
+ 'createOrders': None,
248
+ 'fetchMyTrades': {
249
+ 'marginMode': False,
250
+ 'limit': 1000,
251
+ 'daysBack': 100000, # todo implementation
252
+ 'untilDays': 100000, # todo implementation
253
+ },
254
+ 'fetchOrder': {
255
+ 'marginMode': False,
256
+ 'trigger': False,
257
+ 'trailing': False,
258
+ },
259
+ 'fetchOpenOrders': {
260
+ 'marginMode': False,
261
+ 'limit': 1000,
262
+ 'trigger': False,
263
+ 'trailing': False,
264
+ },
265
+ 'fetchOrders': None, # todo implement
266
+ 'fetchClosedOrders': {
267
+ 'marginMode': False,
268
+ 'limit': 1000,
269
+ 'daysBack': 100000,
270
+ 'daysBackCanceled': 1,
271
+ 'untilDays': 100000,
272
+ 'trigger': False,
273
+ 'trailing': False,
274
+ },
275
+ 'fetchOHLCV': None, # todo webapi
276
+ },
277
+ 'swap': {
278
+ 'linear': None,
279
+ 'inverse': None,
280
+ },
281
+ 'future': {
282
+ 'linear': None,
283
+ 'inverse': None,
284
+ },
285
+ },
222
286
  'precisionMode': TICK_SIZE,
223
287
  'exceptions': {
224
288
  'exact': {
@@ -567,8 +631,8 @@ class blockchaincom(Exchange, ImplicitAPI):
567
631
  'orderQty': self.amount_to_precision(symbol, amount),
568
632
  'clOrdId': clientOrderId,
569
633
  }
570
- triggerPrice = self.safe_value_2(params, 'stopPx', 'stopPrice')
571
- params = self.omit(params, ['stopPx', 'stopPrice'])
634
+ triggerPrice = self.safe_value_n(params, ['triggerPrice', 'stopPx', 'stopPrice'])
635
+ params = self.omit(params, ['triggerPrice', 'stopPx', 'stopPrice'])
572
636
  if uppercaseOrderType == 'STOP' or uppercaseOrderType == 'STOPLIMIT':
573
637
  if triggerPrice is None:
574
638
  raise ArgumentsRequired(self.id + ' createOrder() requires a stopPx or triggerPrice param for a ' + uppercaseOrderType + ' order')
@@ -251,6 +251,93 @@ class blofin(Exchange, ImplicitAPI):
251
251
  'secret': True,
252
252
  'password': True,
253
253
  },
254
+ 'features': {
255
+ 'default': {
256
+ 'sandbox': False,
257
+ 'createOrder': {
258
+ 'timeInForce': {
259
+ 'IOC': True,
260
+ 'FOK': True,
261
+ 'PO': True,
262
+ 'GTD': False,
263
+ },
264
+ 'leverage': False,
265
+ 'marketBuyRequiresPrice': False,
266
+ 'marketBuyByCost': False,
267
+ 'selfTradePrevention': False,
268
+ 'trailing': False,
269
+ 'iceberg': False,
270
+ },
271
+ 'createOrders': {
272
+ 'max': 10,
273
+ },
274
+ 'fetchMyTrades': {
275
+ 'marginMode': False,
276
+ 'limit': 100,
277
+ 'daysBack': 100000,
278
+ 'untilDays': 100000,
279
+ },
280
+ 'fetchOrder': None,
281
+ 'fetchOpenOrders': {
282
+ 'marginMode': False,
283
+ 'limit': 100,
284
+ 'trigger': True,
285
+ 'trailing': False,
286
+ },
287
+ 'fetchOrders': None,
288
+ 'fetchClosedOrders': {
289
+ 'marginMode': False,
290
+ 'limit': 1000,
291
+ 'daysBack': 100000,
292
+ 'daysBackCanceled': 1,
293
+ 'untilDays': 100000,
294
+ 'trigger': True,
295
+ 'trailing': False,
296
+ },
297
+ 'fetchOHLCV': {
298
+ 'max': 1440,
299
+ },
300
+ },
301
+ 'spot': {
302
+ 'extends': 'default',
303
+ 'createOrder': {
304
+ 'marginMode': False,
305
+ 'triggerPrice': False,
306
+ 'triggerPriceType': None,
307
+ 'triggerDirection': False,
308
+ 'stopLossPrice': False,
309
+ 'takeProfitPrice': False,
310
+ 'attachedStopLossTakeProfit': None,
311
+ 'hedged': False,
312
+ },
313
+ },
314
+ 'forDerivatives': {
315
+ 'extends': 'default',
316
+ 'createOrder': {
317
+ 'marginMode': True,
318
+ 'triggerPrice': False, # todo
319
+ 'triggerPriceType': None,
320
+ 'triggerDirection': False,
321
+ 'stopLossPrice': True,
322
+ 'takeProfitPrice': True,
323
+ 'attachedStopLossTakeProfit': {
324
+ 'triggerPriceType': None,
325
+ 'limit': True,
326
+ },
327
+ 'hedged': True,
328
+ },
329
+ },
330
+ 'swap': {
331
+ 'linear': {
332
+ 'extends': 'forDerivatives',
333
+ },
334
+ 'inverse': None,
335
+ },
336
+ 'future': {
337
+ 'linear': None,
338
+ 'inverse': None,
339
+ },
340
+ },
254
341
  'exceptions': {
255
342
  'exact': {
256
343
  '400': BadRequest, # Body can not be empty
@@ -322,7 +409,6 @@ class blofin(Exchange, ImplicitAPI):
322
409
  'earn': 'earn',
323
410
  'spot': 'spot',
324
411
  },
325
- 'sandboxMode': False,
326
412
  'defaultNetwork': 'ERC20',
327
413
  'defaultNetworks': {
328
414
  'ETH': 'ERC20',
@@ -150,6 +150,79 @@ class btcalpha(Exchange, ImplicitAPI):
150
150
  'commonCurrencies': {
151
151
  'CBC': 'Cashbery',
152
152
  },
153
+ 'features': {
154
+ 'spot': {
155
+ 'sandbox': False,
156
+ 'createOrder': {
157
+ 'marginMode': False,
158
+ 'triggerPrice': False,
159
+ 'triggerPriceType': None,
160
+ 'triggerDirection': False,
161
+ 'stopLossPrice': False,
162
+ 'takeProfitPrice': False,
163
+ 'attachedStopLossTakeProfit': None,
164
+ 'timeInForce': {
165
+ 'IOC': False,
166
+ 'FOK': False,
167
+ 'PO': False,
168
+ 'GTD': False,
169
+ },
170
+ 'hedged': False,
171
+ 'leverage': False,
172
+ 'marketBuyRequiresPrice': False,
173
+ 'marketBuyByCost': False,
174
+ 'selfTradePrevention': False,
175
+ 'trailing': False,
176
+ 'iceberg': False,
177
+ },
178
+ 'createOrders': None,
179
+ 'fetchMyTrades': {
180
+ 'marginMode': False,
181
+ 'limit': 100,
182
+ 'daysBack': None,
183
+ 'untilDays': None,
184
+ },
185
+ 'fetchOrder': {
186
+ 'marginMode': False,
187
+ 'trigger': False,
188
+ 'trailing': False,
189
+ },
190
+ 'fetchOpenOrders': {
191
+ 'marginMode': False,
192
+ 'limit': 2000,
193
+ 'trigger': False,
194
+ 'trailing': False,
195
+ },
196
+ 'fetchOrders': {
197
+ 'marginMode': False,
198
+ 'limit': 2000,
199
+ 'daysBack': None,
200
+ 'untilDays': None,
201
+ 'trigger': False,
202
+ 'trailing': False,
203
+ },
204
+ 'fetchClosedOrders': {
205
+ 'marginMode': False,
206
+ 'limit': 2000,
207
+ 'daysBack': None,
208
+ 'daysBackCanceled': None,
209
+ 'untilDays': None,
210
+ 'trigger': False,
211
+ 'trailing': False,
212
+ },
213
+ 'fetchOHLCV': {
214
+ 'max': 720,
215
+ },
216
+ },
217
+ 'swap': {
218
+ 'linear': None,
219
+ 'inverse': None,
220
+ },
221
+ 'future': {
222
+ 'linear': None,
223
+ 'inverse': None,
224
+ },
225
+ },
153
226
  'precisionMode': TICK_SIZE,
154
227
  'exceptions': {
155
228
  'exact': {},
@@ -116,6 +116,64 @@ class btcbox(Exchange, ImplicitAPI):
116
116
  ],
117
117
  },
118
118
  },
119
+ 'features': {
120
+ 'spot': {
121
+ 'sandbox': False,
122
+ 'createOrder': {
123
+ 'marginMode': False,
124
+ 'triggerPrice': False,
125
+ 'triggerPriceType': None,
126
+ 'triggerDirection': False,
127
+ 'stopLossPrice': False,
128
+ 'takeProfitPrice': False,
129
+ 'attachedStopLossTakeProfit': None,
130
+ 'timeInForce': {
131
+ 'IOC': False,
132
+ 'FOK': False,
133
+ 'PO': False,
134
+ 'GTD': False,
135
+ },
136
+ 'hedged': False,
137
+ 'leverage': False,
138
+ 'marketBuyRequiresPrice': False,
139
+ 'marketBuyByCost': False,
140
+ 'selfTradePrevention': False,
141
+ 'trailing': False,
142
+ 'iceberg': False,
143
+ },
144
+ 'createOrders': None,
145
+ 'fetchMyTrades': None,
146
+ 'fetchOrder': {
147
+ 'marginMode': False,
148
+ 'trigger': False,
149
+ 'trailing': False,
150
+ },
151
+ 'fetchOpenOrders': {
152
+ 'marginMode': False,
153
+ 'limit': 100,
154
+ 'trigger': False,
155
+ 'trailing': False,
156
+ },
157
+ 'fetchOrders': {
158
+ 'marginMode': False,
159
+ 'limit': 100,
160
+ 'daysBack': None,
161
+ 'untilDays': None,
162
+ 'trigger': False,
163
+ 'trailing': False,
164
+ },
165
+ 'fetchClosedOrders': None,
166
+ 'fetchOHLCV': None,
167
+ },
168
+ 'swap': {
169
+ 'linear': None,
170
+ 'inverse': None,
171
+ },
172
+ 'future': {
173
+ 'linear': None,
174
+ 'inverse': None,
175
+ },
176
+ },
119
177
  'precisionMode': TICK_SIZE,
120
178
  'exceptions': {
121
179
  '104': AuthenticationError,
@@ -159,6 +159,79 @@ class btcmarkets(Exchange, ImplicitAPI):
159
159
  '1h': '1h',
160
160
  '1d': '1d',
161
161
  },
162
+ 'features': {
163
+ 'spot': {
164
+ 'sandbox': False,
165
+ 'createOrder': {
166
+ 'marginMode': False,
167
+ 'triggerPrice': True, # todo: check
168
+ 'triggerPriceType': None,
169
+ 'triggerDirection': False,
170
+ 'stopLossPrice': False,
171
+ 'takeProfitPrice': False,
172
+ 'attachedStopLossTakeProfit': None,
173
+ 'timeInForce': {
174
+ 'IOC': True,
175
+ 'FOK': True,
176
+ 'PO': True,
177
+ 'GTD': False,
178
+ },
179
+ 'hedged': False,
180
+ 'leverage': False,
181
+ 'marketBuyRequiresPrice': False,
182
+ 'marketBuyByCost': False,
183
+ 'selfTradePrevention': True, # todo: check
184
+ 'trailing': False,
185
+ 'iceberg': False,
186
+ },
187
+ 'createOrders': None,
188
+ 'fetchMyTrades': {
189
+ 'marginMode': False,
190
+ 'limit': 100,
191
+ 'daysBack': 100000,
192
+ 'untilDays': 100000,
193
+ },
194
+ 'fetchOrder': {
195
+ 'marginMode': False,
196
+ 'trigger': False,
197
+ 'trailing': False,
198
+ },
199
+ 'fetchOpenOrders': {
200
+ 'marginMode': False,
201
+ 'limit': 100,
202
+ 'trigger': False,
203
+ 'trailing': False,
204
+ },
205
+ 'fetchOrders': {
206
+ 'marginMode': False,
207
+ 'limit': 100,
208
+ 'daysBack': 100000,
209
+ 'untilDays': 100000,
210
+ 'trigger': False,
211
+ 'trailing': False,
212
+ },
213
+ 'fetchClosedOrders': {
214
+ 'marginMode': False,
215
+ 'limit': 100,
216
+ 'daysBack': 100000,
217
+ 'daysBackCanceled': 1,
218
+ 'untilDays': 100000,
219
+ 'trigger': False,
220
+ 'trailing': False,
221
+ },
222
+ 'fetchOHLCV': {
223
+ 'limit': 1000,
224
+ },
225
+ },
226
+ 'swap': {
227
+ 'linear': None,
228
+ 'inverse': None,
229
+ },
230
+ 'future': {
231
+ 'linear': None,
232
+ 'inverse': None,
233
+ },
234
+ },
162
235
  'precisionMode': TICK_SIZE,
163
236
  'exceptions': {
164
237
  'exact': {
@@ -136,6 +136,67 @@ class btcturk(Exchange, ImplicitAPI):
136
136
  },
137
137
  },
138
138
  },
139
+ 'features': {
140
+ 'spot': {
141
+ 'sandbox': False,
142
+ 'createOrder': {
143
+ 'marginMode': False,
144
+ 'triggerPrice': True,
145
+ 'triggerPriceType': None,
146
+ 'triggerDirection': False,
147
+ 'stopLossPrice': False,
148
+ 'takeProfitPrice': False,
149
+ 'attachedStopLossTakeProfit': None,
150
+ 'timeInForce': {
151
+ 'IOC': False,
152
+ 'FOK': False,
153
+ 'PO': False,
154
+ 'GTD': False,
155
+ },
156
+ 'hedged': False,
157
+ 'leverage': False,
158
+ 'marketBuyRequiresPrice': False,
159
+ 'marketBuyByCost': False,
160
+ 'selfTradePrevention': False,
161
+ 'trailing': False,
162
+ 'iceberg': False,
163
+ },
164
+ 'createOrders': None,
165
+ 'fetchMyTrades': {
166
+ 'marginMode': False,
167
+ 'limit': 100,
168
+ 'daysBack': 100000,
169
+ 'untilDays': 30,
170
+ },
171
+ 'fetchOrder': None,
172
+ 'fetchOpenOrders': {
173
+ 'marginMode': False,
174
+ 'limit': None,
175
+ 'trigger': False,
176
+ 'trailing': False,
177
+ },
178
+ 'fetchOrders': {
179
+ 'marginMode': False,
180
+ 'limit': 1000,
181
+ 'daysBack': 100000,
182
+ 'untilDays': 30,
183
+ 'trigger': False,
184
+ 'trailing': False,
185
+ },
186
+ 'fetchClosedOrders': None,
187
+ 'fetchOHLCV': {
188
+ 'limit': None,
189
+ },
190
+ },
191
+ 'swap': {
192
+ 'linear': None,
193
+ 'inverse': None,
194
+ },
195
+ 'future': {
196
+ 'linear': None,
197
+ 'inverse': None,
198
+ },
199
+ },
139
200
  'fees': {
140
201
  'trading': {
141
202
  'maker': self.parse_number('0.0005'),