
    !:h0,                    0   d dl mZ d dlmZ d dlmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlm Z  d dlm!Z! d dlm"Z" d dlm#Z# d dl$m%Z% d dl&m'Z'  G d dee      Z(y)    )Exchange)ImplicitAPI)AnyBalances
CurrenciesIntMarketNumOrder	OrderBook	OrderSide	OrderTypeStrStringsTickerTickersTradeTradingFees)List)ExchangeError)AuthenticationError)PermissionDenied)ArgumentsRequired)
BadRequest)InsufficientFunds)InvalidAddress)InvalidOrder)OrderNotFound)NotSupported)DDoSProtection)ExchangeNotAvailable)	TICK_SIZE)Precisec                       e Zd Zdef fdZi fdefdZi fdefdZi fde	e
   fdZdede
fdZi fdefdZi fd	Zi fd
Zd<de
fdZd<dede
defdZi fdedefdZdi fdedefdZdi fdededefdZd<de
defdZdddi fdededede	e   fdZd<dede
defdZ de!fdZ"i fde!fdZ#de$fdZ%d<dede
de&fd Z'd!e$fd"Z(d#e$fd$Z)di fded!e*d%e+d&e,d'e-f
d(Z.di fd)ede$fd*Z/di fde$fd+Z0di fde$fd,Z1di fd)ede$fd-Z2dddi fde$dedede	e&   fd.Z3dddi fde$dedede	e&   fd/Z4dddi fd)ede$dedefd0Z5dddi fde$dedefd1Z6d2d3i ddfd4Z7d5e8d6ed7ed8ed9ed:efd;Z9 xZ:S )=
onetradingreturnc                    | j                  t        t        |          i ddddddgddd	d
dddi dd ddddddddddddddddddddddddddddddddi d dd!dd"dd#dd$dd%dd&dd'dd(dd)dd*dd+dd,dd-dd.dd/dd0di d1dd2dd3dd4dd5dd6dd7dd8dd9dd:dd;dd<dd=dd>dd?dd@ddAdi dBddCddDddEddFddGddHddIddJddKddLddMddNddOddPddQddRddddddddddddddSdTdUdVdWdXdYdZd[d\d]d^	d_d`dadadbdcddgdedfdgdhg diig djdkgg dldmdbdndodd| j	                  dp      | j	                  dq      | j	                  dr      | j	                  dp      g| j	                  ds      | j	                  dt      g| j	                  du      | j	                  dt      g| j	                  dv      | j	                  dq      g| j	                  dw      | j	                  dx      g| j	                  dy      | j	                  dz      g| j	                  d{      | j	                  d|      gg| j	                  dr      | j	                  dq      g| j	                  ds      | j	                  dq      g| j	                  du      | j	                  dx      g| j	                  dv      | j	                  dz      g| j	                  dw      | j	                  d}      g| j	                  dy      | j	                  d~      g| j	                  d{      | j	                  d~      ggdgdidddddt
        di dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        i dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        i dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        i dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        dt        t        t        t        t        t        t        t        t        t         dɜ	dt        id˜dddidddiddgdԜdddddd ddd ddddd֜ddddddddלd ddddddڜdddddۜddddddܜd dddddddddޜddid	d d dd d dd      S )Nidr%   namezOne Trading	countriesAT	rateLimiti,  versionv1proThasCORSspotmarginFswapfutureoption	addMargincancelAllOrderscancelOrdercancelOrderscloseAllPositionsclosePositioncreateDepositAddresscreateOrdercreateReduceOnlyOrdercreateStopLimitOrdercreateStopMarketOrdercreateStopOrderfetchAccountsfetchBalancefetchBorrowRateHistoriesfetchBorrowRateHistoryfetchClosedOrdersfetchCrossBorrowRatefetchCrossBorrowRatesfetchCurrenciesfetchDepositfetchDepositAddressfetchDepositAddressesfetchDepositAddressesByNetworkfetchDepositsfetchDepositsWithdrawalsfetchFundingHistoryfetchFundingRatefetchFundingRateHistoryfetchFundingRatesfetchIndexOHLCVfetchIsolatedBorrowRatefetchIsolatedBorrowRatesfetchLedgerfetchLeveragefetchMarginModefetchMarketsfetchMarkOHLCVfetchMyTrades
fetchOHLCVfetchOpenInterestHistoryfetchOpenOrders
fetchOrderfetchOrderBookfetchOrdersfetchOrderTradesfetchPositionfetchPositionHistoryfetchPositionModefetchPositionsfetchPositionsForSymbolfetchPositionsHistoryfetchPositionsRiskfetchPremiumIndexOHLCVfetchTickerfetchTickers	fetchTimefetchTradesfetchTradingFeefetchTradingFeesfetchTransactionFeefetchTransactionFees)fetchTransactionsfetchTransferfetchTransfersfetchWithdrawalfetchWithdrawalsreduceMarginsetLeverage	setMarginsetMarginModesetPositionModetransferwithdraw
timeframesz	1/MINUTESz	5/MINUTESz
15/MINUTESz
30/MINUTESz1/HOURSz4/HOURSz1/DAYSz1/WEEKSz1/MONTHS)	1m5m15m30m1h4h1d1w1MurlszQhttps://github.com/ccxt/ccxt/assets/43336371/bdbc26fd-02f2-4ca7-9f1e-17333690bb1czhttps://api.onetrading.com/fast)publicprivatezhttps://onetrading.com/zhttps://docs.onetrading.comzhttps://onetrading.com/fees)logoapiwwwdocfeesr   get)
currencieszcandlesticks/{instrument_code}r   instrumentszorder-book/{instrument_code}zmarket-tickerzmarket-ticker/{instrument_code}time)zaccount/balanceszaccount/feesaccount/ordersaccount/orders/{order_id}z account/orders/{order_id}/tradeszaccount/tradeszaccount/trades/{trade_id}r   )r   r   z!account/orders/client/{client_id})r   postdeleter   tradingz0.0015z0.0010100z0.001325010005000z0.000910000z0.0007520000z0.00065z0.0006z0.0005)takermaker)	tierBased
percentager   r   tiersrequiredCredentials)apiKeysecretprecisionMode
exceptionsINVALID_CLIENT_UUIDORDER_NOT_FOUNDONLY_ONE_ERC20_ADDRESS_ALLOWEDDEPOSIT_ADDRESS_NOT_USEDINVALID_CREDENTIALSMISSING_CREDENTIALSINVALID_APIKEYINVALID_SCOPESINVALID_SUBJECTINVALID_ISSUERINVALID_AUDIENCEINVALID_DEVICE_IDINVALID_IP_RESTRICTIONAPIKEY_REVOKEDAPIKEY_EXPIREDSYNCHRONIZER_TOKEN_MISMATCHSESSION_EXPIREDINTERNAL_ERRORCLIENT_IP_BLOCKEDMISSING_PERMISSIONILLEGAL_CHARSUNSUPPORTED_MEDIA_TYPE"ACCOUNT_HISTORY_TIME_RANGE_TOO_BIGCANDLESTICKS_TIME_RANGE_TOO_BIGINVALID_INSTRUMENT_CODEINVALID_ORDER_TYPEINVALID_UNITINVALID_PERIODINVALID_TIMEINVALID_DATEINVALID_CURRENCYINVALID_AMOUNTINVALID_PRICEINVALID_LIMITINVALID_QUERYINVALID_CURSORINVALID_ACCOUNT_IDINVALID_SIDE!INVALID_ACCOUNT_HISTORY_FROM_TIME%INVALID_ACCOUNT_HISTORY_MAX_PAGE_SIZE#INVALID_ACCOUNT_HISTORY_TIME_PERIODINVALID_ACCOUNT_HISTORY_TO_TIME INVALID_CANDLESTICKS_GRANULARITYINVALID_CANDLESTICKS_UNITINVALID_ORDER_BOOK_DEPTHINVALID_ORDER_BOOK_LEVELINVALID_PAGE_CURSORINVALID_TIME_RANGEINVALID_TRADE_IDINVALID_UI_ACCOUNT_SETTINGSNEGATIVE_AMOUNTNEGATIVE_PRICEMIN_SIZE_NOT_SATISFIEDBAD_AMOUNT_PRECISIONBAD_PRICE_PRECISIONBAD_TRIGGER_PRICE_PRECISIONMAX_OPEN_ORDERS_EXCEEDEDMISSING_PRICEMISSING_ORDER_TYPEMISSING_SIDE!MISSING_CANDLESTICKS_PERIOD_PARAMMISSING_CANDLESTICKS_UNIT_PARAMMISSING_FROM_PARAMMISSING_INSTRUMENT_CODEMISSING_ORDER_IDMISSING_TO_PARAMMISSING_TRADE_IDINVALID_ORDER_ID)		NOT_FOUNDINSUFFICIENT_LIQUIDITYINSUFFICIENT_FUNDS
NO_TRADINGSERVICE_UNAVAILABLEGATEWAY_TIMEOUT	RATELIMITCF_RATELIMITINTERNAL_SERVER_ERRORzOrder not found.)exactbroadcommonCurrenciesMIOTAIOTAoptionsmethodfetchPrivateTradingFeesEURCHF)rr   fiatfeatures)IOCFOKPOGTD)
marginModetriggerPricetriggerDirectiontriggerPriceTypestopLossPricetakeProfitPriceattachedStopLossTakeProfittimeInForcehedgedtrailingleveragemarketBuyByCostmarketBuyRequiresPriceselfTradePreventionicebergd   i )r
  limitdaysBack	untilDayssymbolRequired)r
  triggerr  r  )r
  r  r  r  r  gUUUUUU?)r
  r  r  daysBackCanceledr  r  r  r  r  i  )	sandboxr>   createOrdersr]   ra   r`   rc   rG   r^   )linearinverse)r2   r4   r5   )deep_extendsuperr%   describeparse_numberr"   r   r   r   r   r   r   r   r   r!   r    r   )self	__class__s    W/var/www/html/turnos/venv/lib/python3.12/site-packages/ccxt/async_support/onetrading.pyr&  zonetrading.describe   sz   j$ @ B ZE
,ZE
MZE
 $ZE
 	ZE

 tZE
 4ZE
  QQQ %Q 	Q
 %Q %Q UQ "4Q tQ Q $UQ  Q 'Q tQ (Q  '!Q" (#Q$ "4%Q&  'Q( )Q* +E+Q, )%-Q. $T/Q0 '1Q2 (3Q4 "45Q6 7Q8 &u9Q: (;Q< 1%=Q>  ?Q@ +EAQB &uCQD #EEQF *5GQH $UIQJ "5KQL *5MQN +EOQP uQQR  SQT "5UQV WQX !%YQZ  [Q\ d]Q^ +E_Q` "4aQb dcQd !$eQf ugQh #DiQj  kQl 'mQn $UoQp !%qQr *5sQt (uQv %ewQx )%yQz t{Q| }Q~ TQ@ uAQB "5CQD #DEQF &uGQH 'IQJ &+!&"'#($) %$"!&#(!!aQZE
t !!## 
uZE
J k?@ 11 6KZE
b  	 ) cZE
d !%"&!..x8!..w7
 "&!2!23!79J9J89T U!%!2!25!94;L;LX;V W!%!2!25!94;L;LX;V W!%!2!26!:D<M<Mg<V W!%!2!26!:D<M<Mh<W X!%!2!27!;T=N=Ny=Y Z!%!2!27!;T=N=Ny=Y Z& "&!2!23!79J9J79S T!%!2!25!94;L;LW;U V!%!2!25!94;L;LX;V W!%!2!26!:D<M<Mi<X Y!%!2!26!:D<M<Mh<W X!%!2!27!;T=N=Nx=X Y!%!2!27!;T=N=Nx=X Y&eZE
b "$cZE
j YkZE
l N)<N%}N 5nN /	N
 *+>N *+>N %&9N %&9N &':N %&9N '(;N ()<N -.AN %&9N %&9N  23F!N" &':#N$ %&9%N& ()9'N( )*:)N* $Z+N, -j-N. 9*/N0 6z1N2 .z3N4 )*5N6 #J7N8 %j9N: #J;N< #J=N> '
?N@ %jANB $ZCND $ZENF $ZGNH %jINJ )*KNL #LMNN 8ONP <ZQNR ::SNT 6zUNV 7
WNX 0YNZ /
[N\ /
]N^ *:_N` )*aNb '
cNd 2:eNf &|gNh %liNj -lkNl +LmNn *<oNp 2<qNr /
sNt $\uNv ),wNx #LyNz 89J{N| 67H}N~ )*;N@ ./@ANB 'CND '(9ENF '(9GNH 'INJ "/.?*;"6+?';!/$2-:[N` 'aSmZE
T !UZE
\ 7% 	]ZE
h $&+(-,1,0).+06:#'#'"&#(	( #($)$)+027/4#()$, %)&+!$$*%+*/& ',#($)*/	# ',!$#($)*/( $(&+!$$*,2%+#($)*/	*  #q;z ##
 ##CEiZE
 Z Z	    c                 d   K   | j                  |       d{   }| j                  |d      S 7 w)a>  
        fetches the current integer timestamp in milliseconds from the exchange server

        https://docs.onetrading.com/#time

        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns int: the current integer timestamp in milliseconds from the exchange server
        Nepoch_millis)publicGetTimesafe_integerr(  paramsresponses      r*  
fetch_timezonetrading.fetch_timey  s5      ++F33   >:: 4s   0.0c                   K   | j                  |       d{   }i }t        dt        |            D ]  }||   }| j                  |d      }| j	                  |      }| j                  ||| j                  |d      |dd| j                  | j                  | j                  |d                  dddddddddi d      ||<    |S 7 w)	a  
        fetches all available currencies on an exchange

        https://docs.onetrading.com/#currencies

        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict: an associative dictionary of currencies
        Nr   coder)   	precisionminmax)amountr   )r(   r5  r)   infoactivefeer6  r   depositlimitsnetworks)publicGetCurrenciesrangelensafe_stringsafe_currency_codesafe_currency_structurer'  parse_precision)r(  r1  r2  resulticurrencyr(   r5  s           r*  fetch_currencieszonetrading.fetch_currencies  s      11&99 q#h-( 	A{H!!(F3B**2.D77((6: !..t/C/CDDTDTU]_jDk/lm &*48(,T : 9 F4L		( C :s   CC	B2Cc                 b   K   | j                  |       d{   }| j                  |      S 7 w)a  
        retrieves data on all markets for onetrading

        https://docs.onetrading.com/#instruments

        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict[]: an array of objects representing market data
        N)publicGetInstrumentsparse_marketsr0  s      r*  fetch_marketszonetrading.fetch_markets  s3      226:: !!(++ ;s   /-/marketc                    | j                  |di       }| j                  |di       }| j                  |d      }| j                  |d      }|dz   |z   }| j                  |      }| j                  |      }| j                  |d      }	i d|d|dz   |z   d|d|d	d d
|d|dd ddddddddddddd|	dk(  dddd d d d d d d | j                  | j	                  | j                  |d                  | j                  | j	                  | j                  |d                  dd d dd d dd d d| j                  |d      d ddd |d
S ) Nbasequoter5  _stater(   symbol/settlebaseIdquoteIdsettleIdtyper2   Tr3   Fr4   r5   r6   r<  ACTIVEcontractr"  amount_precisionmarket_precision)r:  pricer7  min_size)r  r:  ra  cost)
r#  contractSizeexpiryexpiryDatetimestrike
optionTyper6  r?  createdr;  )
safe_valuerD  rE  r'  rG  safe_number)
r(  rP  	baseAsset
quoteAssetrY  rZ  r(   rR  rS  rU  s
             r*  parse_marketzonetrading.parse_market  s'   OOFFB7	__VWb9
!!)V4"":v6c\G#&&v.''0  10
"0
dSj5(0
 D0
 U	0

 d0
 f0
 w0
 0
 F0
 D0
 e0
 E0
 e0
 e0
 u(0
  !0
" d#0
$  "++D,@,@AQAQRXZlAm,no**4+?+?@P@PQWYk@l+mn  
  
  
  ++FJ?$ _0
 0	
r+  c                 r  K   | j                  |d      }| j                  |d      }|0| j                  | j                  di       }| j                  |dd      }|dk(  r| j	                  |       d{   S |dk(  r| j                  |       d{   S t        | j                  dz   |z   dz         7 @7 $w)al  
        fetch the trading fees for multiple markets

        https://docs.onetrading.com/#fee-groups
        https://docs.onetrading.com/#fees

        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
        r   Nrr   r  fetchPublicTradingFeesz% fetchTradingFees() does not support zB, fetchPrivateTradingFees and fetchPublicTradingFees are supported)rD  omitrj  r   fetch_private_trading_feesfetch_public_trading_feesr   r(   )r(  r1  r   r   s       r*  fetch_trading_feeszonetrading.fetch_trading_fees
  s      !!&(368,>oodll4FKG%%gx9RSF..88@@@//77???tww)PPSYY  ]a   a  b  b	 A?s$   A0B72B33B7B5#B75B7c           	        K   | j                          d {    | j                  |       d {   }| j                  |di       }| j                  |d      }| j                  |      }| j                  |di       }i }t	        dt        | j                              D ]>  }| j                  |   }	||	| j                  |d      | j                  |d      dd|d||	<   @ |S 7 7 w)Nr   	fee_tiers	maker_fee	taker_feeTr;  rV  r   r   r   r   r   )load_marketspublicGetFeesrj  parse_fee_tiersrB  rC  symbolsrk  )
r(  r1  r2  firstfeeTiersr   	firstTierrH  rI  rV  s
             r*  rs  z$onetrading.fetch_public_trading_fees   s     !!!++F33( !R0??5+6$$X.OOHa4	q#dll+, 
	A\\!_F )))[A)))[A"!F6N
	 K 	"3s    C%C!C%C#B2C%#C%c           	      F  K   | j                          d {    | j                  |       d {   }| j                  |di       }| j                  |d      }| j                  |d      }t	        j
                  |d      }t	        j
                  |d      }| j                  |d      }i }| j                  |      }t        dt        | j                              D ]<  }	| j                  |	   }
||
| j                  |      | j                  |      dd|d||
<   > |S 7 7 w)	Nactive_fee_tierrw  rx  r   rv  r   Try  )rz  privateGetAccountFeesrj  rD  r#   
string_divr|  rB  rC  r}  r'  )r(  r1  r2  activeFeeTiermakerFeetakerFeer  rH  r   rI  rV  s              r*  rr  z%onetrading.fetch_private_trading_feesH  s     !!!33F;;, 2CRH##M;?##M;?%%h6%%h6??8[9$$X.q#dll+, 
	A\\!_F  **84**84"!F6N
	 U 	";s    D!DD!DC-D!D!Nc                    g }g }t        dt        |            D ]  }||   }| j                  |d      }| j                  |d      }| j                  |d      }	t	        j
                  |	d      }	t	        j
                  |d      }|j                  || j                  |	      g       |j                  || j                  |      g        ||dS )Nr   volumerx  rw  r   )r   r   )rB  rC  rk  rD  r#   r  appendr'  )
r(  r  rP  	takerFees	makerFeesrI  tierr  r   r   s
             r*  r|  zonetrading.parse_fee_tiersu  s    		q#h-( 	AAA;D%%dH5F$$T;7E$$T;7E&&ue4E&&ue4Efd&7&7&>?@fd&7&7&>?@	A 
 	
r+  tickerc                 v   | j                  | j                  |d            }| j                  |d      }| j                  ||d      }| j                  |d      }| j                  |d      }| j                  |d      }| j                  |d      }	| j                  |d      }
| j                  i d	|d
|d| j	                  |      d| j                  |d      d| j                  |d      d| j                  |d      dd d| j                  |d      dd dd dd d|d|dd d|d|dd |	|
|d|      S )Nr   instrument_coderT  
last_priceprice_change_percentageprice_changebase_volumequote_volumerV  	timestampdatetimehighlowbidbest_bid	bidVolumeaskbest_ask	askVolumevwapopencloselastpreviousClosechanger   average)
baseVolumequoteVolumer;  )	parse8601rD  safe_symbolsafe_tickeriso8601)r(  r  rP  r  marketIdrV  r  r   r  r  r  s              r*  parse_tickerzonetrading.parse_ticker  s   * NN4#3#3FF#CD	##F,=>!!(FC85%%f.GH
!!&.9%%fm<
&&v~> !
f!
!
 Y/!
 D$$VV4	!

 4##FE2!
 4##FJ7!
 !
 4##FJ7!
 !
 D!
 D!
 T!
 D!
 T!
 f!
  *!!
" t#!
$ %&)!
* + 	r+  rV  c                    K   | j                          d{    | j                  |      }d|d   i}| j                  | j                  ||             d{   }| j	                  ||      S 7 W7 w)a  
        fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market

        https://docs.onetrading.com/#market-ticker-for-instrument

        :param str symbol: unified symbol of the market to fetch the ticker for
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
        Nr  r(   )rz  rP  #publicGetMarketTickerInstrumentCodeextendr  )r(  rV  r1  rP  requestr2  s         r*  fetch_tickerzonetrading.fetch_ticker  sz      !!!V$vd|
 AA$++gW]B^__&   6221 	"
 `s"   A2A.A A2A0A20A2r}  c                 0  K   | j                          d{    | j                  |      }| j                  |       d{   }i }t        dt	        |            D ]   }| j                  ||         }|d   }|||<   " | j                  |d|      S 7 {7 Sw)a  
        fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market

        https://docs.onetrading.com/#market-ticker

        :param str[] [symbols]: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
        Nr   rV  )rz  market_symbolspublicGetMarketTickerrB  rC  r  filter_by_array_tickers)r(  r}  r1  r2  rH  rI  r  rV  s           r*  fetch_tickerszonetrading.fetch_tickers  s      !!!%%g.33F;;* q#h-( 	$A&&x{3FH%F#F6N	$ ++FHgFF9 	";s"   BB)B BABBr  c           	      H  K   | j                          d{    | j                  |      }d|d   i}|||d<   | j                  | j                  ||             d{   }| j	                  | j                  |d            }| j                  ||d   |ddd	d
      S 7 7 Aw)a%  
        fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data

        https://docs.onetrading.com/#order-book

        :param str symbol: unified symbol of the market to fetch the order book for
        :param int [limit]: the maximum amount of order book entries to return
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict: A dictionary of `order book structures <https://docs.ccxt.com/#/?id=order-book-structure>` indexed by market symbols
        Nr  r(   depthr   rV  bidsasksra  r:  )rz  rP   publicGetOrderBookInstrumentCoder  r  rD  parse_order_book)r(  rV  r  r1  rP  r  r2  r  s           r*  fetch_order_bookzonetrading.fetch_order_book  s      !!!V$vd|
 $GG>>t{{7TZ?[\\p NN4#3#3Hf#EF	$$Xvh/?FTZ\cemnnM 	" ]s#   B"BAB"B A B" B"c           	      X   | j                  |d      }| j                  |d      }| j                  |d      }dddddd	}| j                  ||      }||z   }| j                  |      }	|	d
z  }
| j                  | j                  |d            }|
| j	                  ||
z        z  }| j                  | j
                  di       }| j                  |dd      }|| j                  |d      | j                  |d      | j                  |d      | j                  |d      | j                  ||      gS )NgranularityunitperiodmhdwM)MINUTESHOURSDAYSWEEKSMONTHS  r   r^   r  total_amountr  r  r  r  )rj  rD  parse_timeframer  parse_to_intr   rk  )r(  ohlcvrP  r  r  r  unitslowercaseUnit	timeframedurationInSecondsdurationr  alignedTimestampr   volumeFields                  r*  parse_ohlcvzonetrading.parse_ohlcvY  sD    ooe];V4!!+x8
 ((5]*	 00;$t+NN4#3#3E6#BC	#d&7&7	H8L&MM//$,,bA&&w.IUF+UF+UE*UG,UK0
 	
r+  r   sincec                   K   | j                          d{    | j                  |      }| j                  | j                  |      }|j	                  d      \  }}	| j                  |      }
|
dz  }|d}|d   ||	d}|?| j                         }| j                  |      |d<   | j                  |||z  z
        |d<   n;| j                  |      |d<   | j                  | j                  |||z              |d<   | j                  | j                  ||             d{   }| j                  |d	      }| j                  |||||      S 7 57 .w)
a  
        fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market

        https://docs.onetrading.com/#candlesticks

        :param str symbol: unified symbol of the market to fetch OHLCV data for
        :param str timeframe: the length of time each candle represents
        :param int [since]: timestamp in ms of the earliest candle to fetch
        :param int [limit]: the maximum amount of candles to fetch
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns int[][]: A list of candles ordered, open, high, low, close, volume
        NrW  r  i  r(   )r  r  r  tofromcandlesticks)rz  rP  rD  r   splitr  millisecondsr  sum#publicGetCandlesticksInstrumentCoder  	safe_listparse_ohlcvs)r(  rV  r  r  r  r1  rP  
periodUnitr  r  r  r  r  nowr2  r  s                   r*  fetch_ohlcvzonetrading.fetch_ohlcv  sZ     !!!V$%%dooyA
!'', 00;$t+=E%d| 
 =##%C LL-GDM"ll31A+ABGFO"ll51GFO LL%9I)JKGDMAA$++gW]B^__ x8  	5%HH? 	", `s"   EEDEE ,EEtradec                    | j                  |di       }| j                  |d|      }| j                  |d      }|!| j                  | j                  |d            }| j	                  |dd      }| j                  |d      }| j                  |d      }| j                  |d	      }| j                  |d
      }	| j                  |	|d      }
| j                  |d      }d }d }|M| j                  |d      }| j                  |      }| j                  |d      }|||d}| j                  |d      }| j                  | j                  |dd      | j                  |d      || j                  |      |
d |||||||d|      S )Nr=  r  trade_timestampr   side
taker_sidera  r:  r  r  rT  
fee_amountfee_currencyfee_percentage)rc  rJ  ratefee_typetrade_idsequenceorder_id)r(   orderr  r  rV  r\  r  ra  r:  rc  takerOrMakerr=  r;  )rj  r/  r  rD  safe_string_lower_2r  rE  safe_string_lower
safe_tradesafe_string_2r  )r(  r  rP  feeInfor  r  priceStringamountString
costStringr  rV  feeCostStringr  r=  feeCurrencyIdfeeCurrencyCodefeeRateStrings                    r*  parse_tradezonetrading.parse_trade  s   N //%3w6%%e->?	t'7'7v'FGI''v|D&&ug6''x8%%eX6
##E+<=!!(FC8((,?$ ,,WnEM"55mDO ,,W6FGM%+%C
  11':FL$$UJ
C%%eZ8"Y/ "( 
  	r+  c                 T   | j                  |dg       }d|i}t        dt        |            D ]i  }||   }| j                  |d      }| j	                  |      }| j                         }| j                  |d      |d<   | j                  |d      |d<   |||<   k | j                  |      S )	Nbalancesr;  r   currency_code	availablefreelockedused)rj  rB  rC  rD  rE  accountsafe_balance)	r(  r2  r  rH  rI  balance
currencyIdr5  r  s	            r*  parse_balancezonetrading.parse_balance   s    ??8Z<)q#h-( 	#AqkG))'?CJ**:6DllnG"..wDGFO"..wAGFO"F4L	#   ((r+  c                    K   | j                          d{    | j                  |       d{   }| j                  |      S 7 .7 w)aQ  
        query for balance and get the amount of funds available for trading or funds locked in orders

        https://docs.onetrading.com/#balances

        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
        N)rz  privateGetAccountBalancesr  r0  s      r*  fetch_balancezonetrading.fetch_balance  sI      !!!77??" !!(++% 	"?s   A	AA	AA	A	statusc                 B    ddddddddddd
}| j                  |||      S )Nr  closedcanceledrejectedfailed	triggered)
FILLEDFILLED_FULLYFILLED_CLOSEDFILLED_REJECTEDOPENREJECTEDCLOSEDFAILEDSTOP_TRIGGEREDDONErD  )r(  r  statusess      r*  parse_order_statuszonetrading.parse_order_status*  s>    $')" )
 &&99r+  r  c                    | j                  |d|      }| j                  |d      }| j                  |d      }| j                  | j                  |d            }| j                  | j                  |d            }| j                  |      }| j                  |d      }	| j	                  |	|d      }
| j                  |d      }| j                  |d	      }| j                  |d
      }| j                  |d      }| j                  |d      }| j                  | j                  |d            }| j                  |d      }| j                  |dg       }| j                  i d|d|d|d|d| j                  |      dd d|
d| j                  |      d|d|d|d|d| j                  |d      d	|dd dd d|d ||d|      S )Nr  r  	client_idr   r  r  rT  ra  r:  filled_amountr  r\  time_in_forceis_post_onlytradesr(   clientOrderIdr;  r  r  lastTradeTimestamprV  r  postOnlyr  trigger_pricerc  r  filled)	remainingr  r-  )rj  rD  r  r'  r  r  parse_time_in_force
safe_orderr  parse_order_typerk  )r(  r  rP  rawOrderr(   r.  r  	rawStatusr  r  rV  ra  r:  r2  r  r\  r  r0  	rawTradess                      r*  parse_orderzonetrading.parse_order9  sW   F ??5'59h
3((;?NN4#3#3Hf#EF	++D,<,<Xx,PQ	((3##H.?@!!(FC8  73!!(H5!!(O<%%h7%%h7..t/?/?//Z[??8^<OOE8R8	  
" 
] 
 E 
 	 

 Y/ 
 !$ 
 f 
 D))$/ 
 ; 
  
 D 
 U 
 D,,XG 
 f 
 D 
  t! 
" f# 
$ + 
, - 	r+  r\  c                 0    ddi}| j                  |||      S )Nbookedr  r%  )r(  r\  typess      r*  r6  zonetrading.parse_order_type  s%    g
 tT22r+  r  c                 6    ddddd}| j                  |||      S )NGTCGTTr  r  )GOOD_TILL_CANCELLEDGOOD_TILL_TIMEIMMEDIATE_OR_CANCELLEDFILL_OR_KILLr%  )r(  r  timeInForcess      r*  r4  zonetrading.parse_time_in_force  s,    #(#&+!	
 k;GGr+  r  r:  ra  c                 R  K   | j                          d{    | j                  |      }|j                         }|d   ||j                         | j                  ||      d}	d}
|dk(  s|dk(  rd}
| j	                  |g d      }|L|d	k(  rt        | j                  d
z         | j                  ||      |	d<   d|	d<   | j                  |g d      }n#|dk(  rt        | j                  dz   |z   dz         |
r| j                  ||      |	d<   | j                  |dd      }|||	d<   | j                  |ddg      }| j                  |ddd      }| j                  |d      }||	d<   | j                  | j                  |	|             d{   }| j                  ||      S 7 7 w)a  
        create a trade order

        https://docs.onetrading.com/#create-order

        :param str symbol: unified symbol of the market to create an order in
        :param str type: 'limit'
        :param str side: 'buy' or 'sell'
        :param float amount: how much of currency you want to trade in units of base currency
        :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :param float [params.triggerPrice]: onetrading only does stop limit orders and does not do stop market
        :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
        Nr(   )r  r\  r  r:  FLIMITSTOPT)r  r1  	stopPriceMARKETz? createOrder() cannot place stop market orders, only stop limitr1  r\  z1 createOrder() requires a triggerPrice param for z ordersra  r.  r)  r  r+  rA  )rz  rP  upperamount_to_precisionsafe_number_nr   r(   price_to_precisionrq  r   r  privatePostAccountOrdersr  r:  )r(  rV  r\  r  r:  ra  r1  rP  uppercaseTyper  priceIsRequiredr  r.  r  r2  s                  r*  create_orderzonetrading.create_order  s     !!!V$

%d|!JJL..vv>	
  G#}'>"O))&2`a#( +l!lmm'+'>'>v|'TGO$$GFOYYv'UVFf$#DGG.a$adh$hkt$tuu#66vuEGG**6?KP$#0GK YYv'EFF((Qfg6=1#. 66t{{7F7STT  &11i 	"H Us"   F'F"E4F'F%F'%F'r(   c                   K   | j                          d{    | j                  |dd      }| j                  |ddg      }d}i }|d}||d<   n||d<   d}|dk(  r*| j                  | j	                  ||             d{   }n)| j                  | j	                  ||             d{   }| j                  |      S 7 7 A7 w)aq  
        cancels an open order

        https://docs.onetrading.com/#close-order-by-order-id

        :param str id: order id
        :param str symbol: not used by bitmex cancelOrder()
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
        Nr.  r)  !privateDeleteAccountOrdersOrderId(privateDeleteAccountOrdersClientClientIdr  )rz  r  rq  rT  r  rU  r:  )r(  r(   rV  r1  r.  r   r  r2  s           r*  cancel_orderzonetrading.cancel_order  s      !!!**6?KP6O[#AB4$?F#0GK "$GJ88!CCDKKPWY_D`aaH!JJ4;;W^`fKghhH ))% 	" bhs4   CC A)C C)C*C+CCCc                    K   | j                          d{    i }|| j                  |      }|d   |d<   | j                  | j                  ||             d{   }|S 7 L7 w)a  
        cancel all open orders

        https://docs.onetrading.com/#close-all-orders

        :param str symbol: unified market symbol, only orders in the market of self symbol are cancelled when symbol is not None
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
        Nr(   r  )rz  rP  privateDeleteAccountOrdersr  )r(  rV  r1  r  rP  r2  s         r*  cancel_all_orderszonetrading.cancel_all_orders  ss      !!![[(F)/G%&88Wf9UVV  	"
 Ws"   A'A#AA'A%A'%A'c                    K   | j                          d{    ddj                  |      i}| j                  | j                  ||             d{   }|S 7 B7 w)a~  
        cancel multiple orders

        https://docs.onetrading.com/#close-all-orders

        :param str[] ids: order ids
        :param str symbol: unified market symbol, default is None
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict: an list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
        Nids,)rz  joinrX  r  )r(  r[  rV  r1  r  r2  s         r*  cancel_orderszonetrading.cancel_orders.  sa      !!!388C=
 88Wf9UVV  	" Ws!   AA;AAAAc                    K   | j                          d{    d|i}| j                  | j                  ||             d{   }| j                  |      S 7 B7 w)a  
        fetches information on an order made by the user

        https://docs.onetrading.com/#get-order

        :param str id: the order id
        :param str symbol: not used by onetrading fetchOrder
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
        Nr  )rz  privateGetAccountOrdersOrderIdr  r:  )r(  r(   rV  r1  r  r2  s         r*  fetch_orderzonetrading.fetch_orderE  sh      !!!
 <<T[[RX=YZZT ))] 	" [s!   AA,AAAAc                   K   | j                          d{    i }d}|| j                  |      }|d   |d<   |@| j                  |d      }|t        | j                  dz         | j                  |      |d<   |||d<   | j                  | j                  ||             d{   }| j                  |dg       }	| j                  |	|||      S 7 7 -w)	a  
        fetch all unfilled currently open orders

        https://docs.onetrading.com/#get-orders

        :param str symbol: unified market symbol
        :param int [since]: the earliest time in ms to fetch open orders for
        :param int [limit]: the maximum number of  open orders structures to retrieve
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
        Nr(   r  r  zs fetchOpenOrders() requires a "to" iso8601 string param with the since argument is specified, max range is 100 daysr  max_page_sizeorder_history)
rz  rP  rD  r   r(   r  privateGetAccountOrdersr  r  parse_orders)
r(  rV  r  r  r1  r  rP  r  r2  orderHistorys
             r*  fetch_open_orderszonetrading.fetch_open_orders  s     !!!	
 [[(F)/G%&!!&$/Bz'  3h  )h  i  i"ll51GFO',GO$55dkk'66RSS` ~~hD  vueDDO 	", T"   CCBC'C(,CCc           	      n   K   ddi}| j                  |||| j                  ||             d{   S 7 w)a&  
        fetches information on multiple closed orders made by the user

        https://docs.onetrading.com/#get-orders

        :param str symbol: unified market symbol of the market orders were made in
        :param int [since]: the earliest time in ms to fetch orders for
        :param int [limit]: the maximum number of order structures to retrieve
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
        with_cancelled_and_rejectedTN)rh  r  )r(  rV  r  r  r1  r  s         r*  fetch_closed_orderszonetrading.fetch_closed_orders  s?      *4
 ++FE5$++gW]B^____s   ,535c                 "  K   | j                          d{    d|i}|||d<   | j                  | j                  ||             d{   }| j                  |dg       }d}	|| j	                  |      }	| j                  ||	||      S 7 t7 Bw)a  
        fetch all the trades made from a single order

        https://docs.onetrading.com/#trades-for-order

        :param str id: order id
        :param str symbol: unified market symbol
        :param int [since]: the earliest time in ms to fetch trades for
        :param int [limit]: the maximum number of trades to retrieve
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
        Nr  rc  trade_history)rz  $privateGetAccountOrdersOrderIdTradesr  rj  rP  parse_trades)
r(  r(   rV  r  r  r1  r  r2  tradeHistoryrP  s
             r*  fetch_order_tradeszonetrading.fetch_order_trades  s      !!!

 ',GO$BB4;;wX^C_``> x"E[[(F  vueDDW 	" as"   BB3B
BABBc                   K   | j                          d{    i }d}|| j                  |      }|d   |d<   |@| j                  |d      }|t        | j                  dz         | j                  |      |d<   |||d<   | j                  | j                  ||             d{   }| j                  |dg       }	| j                  |	|||      S 7 7 -w)	a  
        fetch all trades made by the user

        https://docs.onetrading.com/#all-trades

        :param str symbol: unified market symbol
        :param int [since]: the earliest time in ms to fetch trades for
        :param int [limit]: the maximum number of trades structures to retrieve
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
        Nr(   r  r  zq fetchMyTrades() requires a "to" iso8601 string param with the since argument is specified, max range is 100 daysr  rc  rn  )
rz  rP  rD  r   r(   r  privateGetAccountTradesr  r  rp  )
r(  rV  r  r  r1  r  rP  r  r2  rq  s
             r*  fetch_my_tradeszonetrading.fetch_my_trades@  s     !!!
 [[(F)/G%&!!&$/Bz'  3f  )f  g  g"ll51GFO',GO$55dkk'66RSS> ~~hD  vueDDg 	"& Tri  r   GETc                    | j                   d   |   dz   | j                  z   dz   | j                  ||      z   }| j                  || j	                  |            }|dk(  r|rt|d| j                  |      z   z  }n\|dk(  rW| j                          dd| j                  z   d}|d	k(  r| j                  |      }d|d
<   n|r|d| j                  |      z   z  }||||dS )Nr   rW  r   ?r   zapplication/jsonzBearer )AcceptAuthorizationPOSTzContent-Type)urlr   bodyheaders)	r   r-   implode_paramsrq  extract_params	urlencodecheck_required_credentialsr   json)	r(  pathr   r   r1  r~  r}  r|  querys	            r*  signzonetrading.sign  s    iis#c)DLL83>ATATUY[aAbb		&$"5"5d";<(?sT^^E222I++-,!*T[[!8G yy'*<'3!666CfdwOOr+  r5  reasonr|  r   r~  r}  c
                     |y | j                  |d      }
|
]| j                  dz   |z   }| j                  | j                  d   |
|       | j	                  | j                  d   |
|       t        |      y )Nerror r   r   )rD  r(   throw_exactly_matched_exceptionr   throw_broadly_matched_exceptionr   )r(  r5  r  r|  r   r~  r}  r2  requestHeadersrequestBodymessagefeedbacks               r*  handle_errorszonetrading.handle_errors  s}     ""8W5ww}t+H001I7T\]001I7T\]))r+  )N);__name__
__module____qualname__r   r&  r   r3  r   rK  r   r	   rO  dictrn  r   rt  rs  rr  r|  r   r  strr  r   r   r  r   r  listr  r  r   r  r   r  r  r   r'  r   r:  r6  r4  r   r   floatr
   rR  rV  rY  r^  ra  rh  rl  rr  ru  r  intr  __classcell__)r)  s   @r*  r%   r%      s   [# [z
 ') ;S ;$ -/ *: *X *, ,V ,09
4 9
F 9
v /1 b[ b, 68 &P 79 +Z
 
"24 2 26 2h 68 "3 "3F "3H 6:" &G7 &G &GP @DB QoS Qo QoS\ Qof(
 (
4 (
T 8<$]ajl ,I ,IC ,IWZ ,Iquvzq{ ,I\M Mv M M^) ) *, , ,:: :i iv i iV3S 3Hs H mqy{ C2 C2I C2Y C2X] C2fi C2J 9=R *S *# *> 59 c . 6:" s . 8<B 9*C 9* 9*v 59tZ^gi sEc sE sETW sEnrsxny sEj 7;\`ik ` `3 `VY `ptuzp{ `" ?CQUdhqs 8E3 8E 8E3 8E^a 8Et 37TX\eg ?EC ?Es ?ERU ?EB &eBSW P(# s  c TX `c r+  r%   N)) ccxt.async_support.base.exchanger   ccxt.abstract.onetradingr   ccxt.base.typesr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   typingr   ccxt.base.errorsr   r   r   r   r   r   r   r   r   r   r    r!   ccxt.base.decimal_to_precisionr"   ccxt.base.preciser#   r%    r+  r*  <module>r     sh    6 0 c  c  c  c  c  * 0 - . ' . + ) * ) + 1 4 %I; Ir+  