
    E#i):                    0   S SK Jr  S SKJr  S SKJrJrJrJrJ	r	J
r
JrJrJrJrJrJrJrJrJrJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJ r   S SKJ!r!  S SKJ"r"  S SKJ#r#  S SK$J%r%  S SK&J'r'   " S S\\5      r(g)    )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                   X  ^  \ rS rSrS\4U 4S jjr0 4S\4S jjr0 4S\4S jjr	0 4S\
\   4S jjrS\S\4S jr0 4S\4S	 jjr0 4S
 jr0 4S jrS@S\4S jjrS@S\S\S\4S jjr0 4S\S\4S jjrS0 4S\S\4S jjrS0 4S\S\S\4S jjrS@S\S\4S jjrSSS0 4S\S\S\S\S\
\   4
S jjrS@S\S\S\ 4S jjr!S\"4S jr#0 4S\"4S jjr$S\%4S  jr&S@S!\S\S\'4S" jjr(S#\%4S$ jr)S%\%4S& jr*S0 4S\S#\+S'\,S(\-S)\.4
S* jjr/S0 4S+\S\%4S, jjr0S0 4S\%4S- jjr1S0 4S.\
\   S\%4S/ jjr2S0 4S+\S\%4S0 jjr3SSS0 4S\%S\S\S\
\'   4S1 jjr4SSS0 4S\%S\S\S\
\'   4S2 jjr5SSS0 4S+\S\%S\S\4S3 jjr6SSS0 4S\%S\S\4S4 jjr7S5S60 SS4S7 jr8S8\9S9\S:\S;\S<\S=\4S> jr:S?r;U =r<$ )A
onetrading   returnc                 j  > U R                  [        [        U ]  5       0 SS_SS_SS/_SS_S	S
_SS_S0 SS _SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_0 S S_S!S_S"S_S#S_S$S_S%S_S&S_S'S_S(S_S)S_S*S_S+S_S,S_S-S_S.S_S/S_S0S_E0 S1S_S2S_S3S_S4S_S5S_S6S_S7S_S8S_S9S_S:S_S;S_S<S_S=S_S>S_S?S_S@S_SAS_E0 SBS_SCS_SDS_SES_SFS_SGS_SHS_SIS_SJS_SKS_SLS_SMS_SNS_SOS_SPS_SQS_SRS_E0 SSS_STS_SUS_SVS_SWS_SXS_SYS_SZS_S[S_S\S_S]S_S^S_S_S_S`S_SaS_SbS_ScS_E0 SdS_SeS_SfS_SgS_ShS_SiS_SjS_SkS_SlS_SmS_SnS_SoS_SpS_SqS_SrS_SsS_StS_ESSSSSSSSSSSSu.E_SvSwSxSySzS{S|S}S~SS.	_SSSSS.SS/SS._SS/ SQ0/ SQS// SQS.S._SSSSU R	                  S5      U R	                  S5      U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      //U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      //S./S.0_SSSS._S[
        _S0 S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _0 S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _E0 S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _E0 S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _E[        [        [        [        [        [        [        [        [         S.	ES[        0S._SSS0_SSS0SS/S._SSSSSS SSS SSSSS.SSSSSSSS.S SSSSSS.SSSSS.SSSSSS.S SSSSSSSSGS .GSGS0GS.	S S GS.S S GS.GS._5      $ (  Nidr%   namezOne Trading	countriesAT	rateLimiti,  versionv1proThasCORSspotmarginFswapfutureoption	addMarginborrowCrossMarginborrowIsolatedMarginborrowMargincancelAllOrderscancelOrdercancelOrderscloseAllPositionsclosePositioncreateDepositAddresscreateOrdercreateReduceOnlyOrdercreateStopLimitOrdercreateStopMarketOrdercreateStopOrderfetchAccountsfetchAllGreeksfetchBalancefetchBorrowInterestfetchBorrowRatefetchBorrowRateHistoriesfetchBorrowRateHistoryfetchBorrowRatesfetchBorrowRatesPerSymbolfetchClosedOrdersfetchCrossBorrowRatefetchCrossBorrowRatesfetchCurrenciesfetchDepositfetchDepositAddressfetchDepositAddressesfetchDepositAddressesByNetworkfetchDepositsfetchDepositsWithdrawalsfetchFundingHistoryfetchFundingIntervalfetchFundingIntervalsfetchFundingRatefetchFundingRateHistoryfetchFundingRatesfetchGreeksfetchIndexOHLCVfetchIsolatedBorrowRatefetchIsolatedBorrowRatesfetchIsolatedPositionsfetchLedgerfetchLeveragefetchLeveragesfetchLeverageTiersfetchLiquidationsfetchLongShortRatiofetchLongShortRatioHistoryfetchMarginAdjustmentHistoryfetchMarginModefetchMarginModesfetchMarketLeverageTiersfetchMarketsfetchMarkOHLCVfetchMarkPricefetchMarkPricesfetchMyLiquidationsfetchMySettlementHistoryfetchMyTrades
fetchOHLCVfetchOpenInterestfetchOpenInterestHistoryfetchOpenInterestsfetchOpenOrdersfetchOptionfetchOptionChain
fetchOrderfetchOrderBookfetchOrdersfetchOrderTradesfetchPositionfetchPositionHistoryfetchPositionModefetchPositionsfetchPositionsForSymbolfetchPositionsHistoryfetchPositionsRiskfetchPremiumIndexOHLCVfetchSettlementHistoryfetchTickerfetchTickers	fetchTimefetchTradesfetchTradingFeefetchTradingFeesfetchTransactionFeefetchTransactionFeesfetchTransactionsfetchTransferfetchTransfersfetchUnderlyingAssetsfetchVolatilityHistory)fetchWithdrawalfetchWithdrawalsreduceMarginrepayCrossMarginrepayIsolatedMargin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)r   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,  triggerr5  r?  )r,  r<  r@  r5  r?  gUUUUUU?)r,  r<  r=  daysBackCanceledr>  r@  r5  r?  r<  i  )	sandboxrB   createOrdersrv   r~   r{   r   rP   rw   )linearinverse)r3   r5   r6   )deep_extendsuperr%   describeparse_numberr"   r   r   r   r   r   r   r   r   r!   r    r   )self	__class__s    I/home/james-whalen/.local/lib/python3.13/site-packages/ccxt/onetrading.pyrH  onetrading.describe   su   j$ @ B {E
,{E
M{E
 ${E
 	{E

 t{E
 4{E
  rrr %r 	r
 %r %r Ur $Ur 'r r "4r tr r $Ur  r  '!r" t#r$ (%r& ''r( ()r* "4+r,  -r. !%/r0 1r2 &u3r4 "55r6 +E7r8 )%9r: #E;r< ,U=r> $T?r@ 'ArB (CrD "4ErF GrH &uIrJ (KrL 1%MrN  OrP +EQrR &uSrT 'UrV (WrX #EYrZ *5[r\ $U]r^ u_r` "5arb *5crd +Eerf )%grh uirj  krl !%mrn %eorp $Uqrr &usrt -eurv /wrx "5yrz #E{r| +E}r~ r@ !%ArB !%CrD "5ErF &uGrH +EIrJ  KrL dMrN $UOrP +EQrR %eSrT "4UrV uWrX #EYrZ d[r\ !$]r^ u_r` #Darb  crd 'erf $Ugrh !%irj *5krl (mrn %eorp )%qrr )%srt turv wrx Tyrz u{r| "5}r~ #Dr@ &uArB 'CrD $UErF  GrH !%IrJ (KrL )%MrN $)$) %$)',$"!&#(!!cr{E
v !!## 
w{E
L k?@ 11 6M{E
d  	 ) e{E
f !%"&!..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&g{E
d "$e{E
l Ym{E
n 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o{E
V	 !W	{E
^	 7% 	_	{E
j	 $&+(-,1,0).+06:#'#'"&#(	( #($)$)+027/4#()$, %)&+!$$*%+*/& ',#($)*/	# ',!$#($)*/( $(&+!$$*,2%+#($)*/	*  #q;z ##
 ##CEk	{E
 { {	    c                 H    U R                  U5      nU R                  US5      $ )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
epoch_millis)publicGetTimesafe_integerrJ  paramsresponses      rL  
fetch_timeonetrading.fetch_time  s)     %%f-   >::rN  c                 ~   U R                  U5      n0 n[        S[        U5      5       H  nX$   nU R                  US5      nU R	                  U5      nU R                  UUU R                  US5      USSU R                  U R                  U R                  US5      5      5      SSSSS.SSS.S.0 S.5      X7'   M     U$ )	z
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
r   coder*   N	precisionminmax)amountr   )r)   rY  r*   infoactivefeerZ  r   depositlimitsnetworks)publicGetCurrenciesrangelensafe_stringsafe_currency_codesafe_currency_structurerI  parse_precision)rJ  rT  rU  resulticurrencyr)   rY  s           rL  fetch_currenciesonetrading.fetch_currencies  s     ++F3 q#h-(A{H!!(F3B**2.D77((6: !..t/C/CDDTDTU]_jDk/lm &*48(,T : 9 FL	 )( rN  c                 F    U R                  U5      nU R                  U5      $ )z
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
)publicGetInstrumentsparse_marketsrS  s      rL  fetch_marketsonetrading.fetch_markets  s'     ,,V4 !!(++rN  marketc                    U R                  US0 5      nU R                  US0 5      nU R                  US5      nU R                  US5      nU R                  US5      nU R                  U5      nU R                  U5      nU R                  US5      n	U R                  US5      n
U
S:H  nUS-   U-   nU(       a  US	-   U-   n0 SU_S
U_SU_SU_SU(       a  UOS _SU_SU_SU(       a  UOS _SU(       a  SOS_SU(       + _SS_SU_SS_SS_SU	S:H  _SU_SU(       a  SOS _U(       a  SOS U(       a  U R                  S5      OS S S S S U R                  U R	                  U R                  US5      5      5      U R                  U R	                  U R                  US5      5      5      S.S S S.S S S.S S S.U R                  US5      S S.S .S US!.
E$ )"NbasequoterY  r)   statetypePERP/:symbolsettlebaseIdquoteIdsettleIdr5   r3   r4   Fr6   r7   r`  ACTIVEcontractrD  T1amount_precisionmarket_precision)r^  pricer[  min_size)r6  r^  r  cost)
rE  contractSizeexpiryexpiryDatetimestrike
optionTyperZ  rc  createdr_  )	safe_dictrh  ri  rI  rk  safe_number)rJ  rv  	baseAsset
quoteAssetr  r  r)   rx  ry  rz  r{  isPerpr  s                rL  parse_marketonetrading.parse_market  s   R NN6626	^^FGR8
!!)V4"":v6fd+&&v.''0  1/e#c\E)F0
"0
f0
 D0
 U	0

 ve40
 f0
 w0
 6t0
 fF&0
 J0
 e0
 F0
 e0
 e0
 u(0
  !0
" fd$#0
$ !'uD6<D--c2$"++D,@,@AQAQRXZlAm,no**4+?+?@P@PQWYk@l+mn  
  
  
  ++FJ?$ _0
 0	
rN  c                 H   U R                  US5      nU R                  US5      nUc0  U R                  U R                  S0 5      nU R                  USS5      nUS:X  a  U R	                  U5      $ US:X  a  U R                  U5      $ [        U R                  S-   U-   S-   5      e)a  
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
:param str [params.method]: fetchPrivateTradingFees or fetchPublicTradingFees
:returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
r"  r   r#  fetchPublicTradingFeesz% fetchTradingFees() does not support zB, fetchPrivateTradingFees and fetchPublicTradingFees are supported)rh  omit
safe_valuer!  fetch_private_trading_feesfetch_public_trading_feesr   r)   )rJ  rT  r"  r!  s       rL  fetch_trading_feesonetrading.fetch_trading_feesX  s     !!&(368,>oodll4FKG%%gx9RSF..226:://11&99tww)PPSYY  ]a   a  b  brN  c           	      t   U R                  5         U R                  U5      nU R                  US0 5      nU R                  US0 5      nU R                  US/ 5      nU R                  US/ 5      nU R	                  U5      nU R	                  U5      nU R                  US0 5      n	U R                  US0 5      n
0 n[        S[        U R                  5      5       H]  nU R                  U   nU R                  U5      nUS   (       a  U	OU
nUUU R                  US5      U R                  US5      SSUS.X'   M_     U$ )	Nr      	fee_tiersr3   	maker_fee	taker_feeTr_  r  r   r   r   r   r   )
load_marketspublicGetFeesr  	safe_listparse_fee_tiersrf  rg  symbolsrv  r  )rJ  rT  rU  spotFeesfuturesFeesspotFeeTiersfuturesFeeTiers	spotTiersfuturesTiersfirstSpotTierfirstFuturesTierrl  rm  r  rv  
tierObjects                   rL  r  $onetrading.fetch_public_trading_feeso  s5   %%f-V >>(Ar2nnXq"5~~hR@..k2F((6	++O<y!R8>>,2>q#dll+,A\\!_F[[(F+1&>@PJ  ))*kB))*kB"!"FN	 - rN  c           	         U R                  5         U R                  U5      nU R                  US5      nU R                  US0 5      nU R                  US0 5      nU R	                  US5      nU R	                  US5      n[
        R                  " US5      n[
        R                  " US5      nU R	                  US5      nU R	                  US5      n	[
        R                  " US5      n[
        R                  " U	S5      n	0 n
[        S[        U R                  5      5       Hi  nU R                  U   nU R                  U5      nUS   (       a  UOUnUS   (       a  UOU	nUUU R                  U5      U R                  U5      SSS S	.X'   Mk     U
$ )
Nactive_fee_tiersr   r  r  r  r   r3   Tr  )r  privateGetAccountFeesr  r  rh  r#   
string_divrf  rg  r  rv  rI  )rJ  rT  rU  activeFeeTierr  r  spotMakerFeespotTakerFeefuturesMakerFeefuturesTakerFeerl  rm  r  rv  makerFeetakerFees                   rL  r  %onetrading.fetch_private_trading_fees  su   --f5@ x1CD>>-B7nn]Ar:''+>''+>)),>)),>**;D**;D!,,_eD!,,_eDq#dll+,A\\!_F[[(F(.v|_H(.v|_H  **84**84"!FN - rN  Nc                    / n/ n[        S[        U5      5       H  nX   nU R                  US5      nU R                  US5      nU R                  US5      n	[        R
                  " U	S5      n	[        R
                  " US5      nUR                  XpR                  U	5      /5        UR                  XpR                  U5      /5        M     UUS.$ )Nr   volumer  r  r   )r   r   )rf  rg  r  rh  r#   r  appendrI  )
rJ  feeTiersrv  	takerFees	makerFeesrm  tierr  r   r   s
             rL  r  onetrading.parse_fee_tiers  s    		q#h-(A;D%%dH5F$$T;7E$$T;7E&&ue4E&&ue4Ef&7&7&>?@f&7&7&>?@ ) 
 	
rN  tickerc                 t   U R                  U R                  US5      5      nU R                  US5      nU R                  XBS5      nU R                  US5      nU R                  US5      nU R                  US5      nU R                  US5      n	U R                  US5      n
U R                  0 S	U_S
U_SU R	                  U5      _SU R                  US5      _SU R                  US5      _SU R                  US5      _SS _SU R                  US5      _SS _SS _SS _SU_SU_SS _SU_SU_SS _U	U
US.EU5      $ )Nr   instrument_code_
last_priceprice_change_percentageprice_changebase_volumequote_volumer  	timestampdatetimehighlowbidbest_bid	bidVolumeaskbest_ask	askVolumevwapopencloselastpreviousClosechanger   average)
baseVolumequoteVolumer_  )	parse8601rh  safe_symbolsafe_tickeriso8601)rJ  r  rv  r  marketIdr  r  r   r  r  r  s              rL  parse_tickeronetrading.parse_ticker  s   * NN4#3#3FF#CD	##F,=>!!(C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#!
$ %&)!
* + 	rN  r  c                     U R                  5         U R                  U5      nSUS   0nU R                  U R                  XB5      5      nU R	                  XS5      $ )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>`
r  r)   )r  rv  #publicGetMarketTickerInstrumentCodeextendr  )rJ  r  rT  rv  requestrU  s         rL  fetch_tickeronetrading.fetch_ticker9  s\     	V$vd|
 ;;DKK<XY&   22rN  r  c                     U R                  5         U R                  U5      nU R                  U5      n0 n[        S[	        U5      5       H  nU R                  X5   5      nUS   nXdU'   M!     U R                  USU5      $ )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>`
r   r  )r  market_symbolspublicGetMarketTickerrf  rg  r  filter_by_array_tickers)rJ  r  rT  rU  rl  rm  r  r  s           rL  fetch_tickersonetrading.fetch_tickers]  s     	%%g.--f5* q#h-(A&&x{3FH%F#6N ) ++FHgFFrN  r<  c           	         U R                  5         U R                  U5      nSUS   0nUb  X%S'   U R                  U R                  XS5      5      nU R	                  U R                  US5      5      nU R                  XdS   USSSS	5      $ )
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
r  r)   depthr   r  bidsasksr  r^  )r  rv   publicGetOrderBookInstrumentCoder  r  rh  parse_order_book)rJ  r  r<  rT  rv  r  rU  r  s           rL  fetch_order_bookonetrading.fetch_order_book  s     	V$vd|
 $G88W9UVp NN4#3#3Hf#EF	$$Xh/?FTZ\cemnnrN  c           	      N   U R                  US5      nU R                  US5      nU R                  US5      nSSSSSS	.nU R                  Xd5      nXW-   nU R                  U5      n	U	S
-  n
U R                  U R                  US5      5      nXR	                  X-  5      -  nU R                  U R
                  S0 5      nU R                  USS5      nUU R                  US5      U R                  US5      U R                  US5      U R                  US5      U R                  X5      /$ )NgranularityunitperiodmhdwM)MINUTESHOURSDAYSWEEKSMONTHS  r   rw   r  total_amountr  r  r  r  )r  rh  parse_timeframer  parse_to_intr!  r  )rJ  ohlcvrv  r  r  r  unitslowercaseUnit	timeframedurationInSecondsdurationr  alignedTimestampr!  volumeFields                  rL  parse_ohlcvonetrading.parse_ohlcv  s:    ooe];V4!!+x8
 ((5*	 00;$t+NN4#3#3E6#BC	#&7&7	8L&MM//$,,bA&&w.IUF+UF+UE*UG,U0
 	
rN  r   r  sincec                 j   U R                  5         U R                  U5      nU R                  U R                  U5      nUR	                  S5      u  pU R                  U5      n
U
S-  nUc  SnUS   UU	S.nUc>  U R                  5       nU R                  U5      US'   U R                  XU-  -
  5      US'   O:U R                  U5      US'   U R                  U R                  X4U-  5      5      US'   U R                  U R                  X5      5      nU R                  US5      nU R                  XX#U5      $ )	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
r}  r  i  r)   )r  r  r  tofromcandlesticks)r  rv  rh  r   splitr  millisecondsr  sum#publicGetCandlesticksInstrumentCoder  r  parse_ohlcvs)rJ  r  r  r  r<  rT  rv  
periodUnitr  r  r  r  r  nowrU  r  s                   rL  fetch_ohlcvonetrading.fetch_ohlcv  s4    	V$%%dooyA
!'', 00;$t+=E%d| 
 =##%C LL-GDM"ll31A+ABGFO"ll51GFO LL%9I)JKGDM;;DKK<XY x8  	%HHrN  tradec                     U R                  US0 5      nU R                  USU5      nU R                  US5      nUc!  U R                  U R                  US5      5      nU R	                  USS5      nU R                  US5      nU R                  US5      nU R                  US	5      nU R                  US
5      n	U R                  XS5      n
U R                  US5      nS nS nUbM  U R                  US5      nU R                  U5      nU R                  US5      nUUUS.nU R                  US5      nU R                  U R                  USS5      U R                  US5      UU R                  U5      U
S UUUUUUUS.U5      $ )Nra  r+  trade_timestampr   side
taker_sider  r^  r  r  r  
fee_amountfee_currencyfee_percentage)r  rn  ratefee_typetrade_idsequenceorder_id)r)   orderr  r  r  r{  r.  r  r^  r  takerOrMakerra  r_  )r  rR  r  rh  safe_string_lower_2r  ri  safe_string_lower
safe_tradesafe_string_2r  )rJ  r+  rv  feeInfor  r.  priceStringamountString
costStringr  r  feeCostStringr9  ra  feeCurrencyIdfeeCurrencyCodefeeRateStrings                    rL  parse_tradeonetrading.parse_trade0  s   N //%3w6%%e->?	t'7'7v'FGI''v|D&&ug6''x8%%eX6
##E+<=!!(C8((,?$ ,,WnEM"55mDO ,,W6FGM%+%C
  11':FL$$UJ
C%%eZ8"Y/ "( 
  	rN  c                 T   U R                  US/ 5      nSU0n[        S[        U5      5       Hh  nX$   nU R                  US5      nU R	                  U5      nU R                  5       nU R                  US5      US'   U R                  US5      US'   XU'   Mj     U R                  U5      $ )	Nbalancesr_  r   currency_code	availablefreelockedused)r  rf  rg  rh  ri  accountsafe_balance)	rJ  rU  rI  rl  rm  balance
currencyIdrY  rO  s	            rL  parse_balanceonetrading.parse_balance  s    ??8Z<)q#h-(AkG))'?CJ**:6DllnG"..wDGFO"..wAGFO"4L )   ((rN  c                 f    U R                  5         U R                  U5      nU R                  U5      $ )a)  
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>`
)r  privateGetAccountBalancesrS  rS  s      rL  fetch_balanceonetrading.fetch_balance  s3     	11&9" !!(++rN  statusc                 @    SSSSSSSSSSS.
nU R                  X!U5      $ )Nr  closedcanceledrejectedfailed	triggered)
FILLEDFILLED_FULLYFILLED_CLOSEDFILLED_REJECTEDOPENREJECTEDCLOSEDFAILEDSTOP_TRIGGEREDDONErh  )rJ  rY  statusess      rL  parse_order_statusonetrading.parse_order_status  s<    $')" )
 &99rN  r8  c                    U R                  USU5      nU R                  US5      nU R                  US5      nU R                  U R                  US5      5      nU R                  U R                  US5      5      nU R                  U5      nU R                  US5      n	U R	                  XS5      n
U R                  US5      nU R                  US	5      nU R                  US
5      nU R                  US5      nU R                  US5      nU R                  U R                  US5      5      nU R                  US5      nU R                  US/ 5      nU R                  0 SU_SU_SU_SU_SU R                  U5      _SS _SU
_SU R                  U5      _SU_SU_SU_SU_SU R                  US5      _S	U_SS _SS _SU_S UUS.EU5      $ )Nr8  r7  	client_idr   rY  r  r  r  r^  filled_amountr.  r{  time_in_forceis_post_onlytradesr)   clientOrderIdr_  r  r  lastTradeTimestampr  r3  postOnlyr-  trigger_pricer  r  filled)	remainingrY  rs  )r  rh  r  rl  r  r;  parse_time_in_force
safe_orderr  parse_order_typer  )rJ  r8  rv  rawOrderr)   rt  r  	rawStatusrY  r  r  r  r^  rx  r.  r{  r3  rv  	rawTradess                      rL  parse_orderonetrading.parse_order  sU   F ??5'59h
3((;?NN4#3#3Hf#EF	++D,<,<Xx,PQ	((3##H.?@!!(C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# 
$ + 
, - 	rN  r{  c                 .    SS0nU R                  X!U5      $ )Nbookedr<  rj  )rJ  r{  typess      rL  r|  onetrading.parse_order_type#  s#    g
 T22rN  r3  c                 4    SSSSS.nU R                  X!U5      $ )NGTCGTTr(  r)  )GOOD_TILL_CANCELLEDGOOD_TILL_TIMEIMMEDIATE_OR_CANCELLEDFILL_OR_KILLrj  )rJ  r3  timeInForcess      rL  rz  onetrading.parse_time_in_force)  s*    #(#&+!	
 ;GGrN  r.  r^  r  c                 (   U R                  5         U R                  U5      nUR                  5       nUS   UUR                  5       U R                  X5      S.n	Sn
US:X  d  US:X  a  Sn
U R	                  U/ SQ5      nUbL  US:X  a  [        U R                  S	-   5      eU R                  X5      U	S
'   SU	S'   U R                  U/ SQ5      nO$US:X  a  [        U R                  S-   U-   S-   5      eU
(       a  U R                  X5      U	S'   U R                  USS5      nUb  XS'   U R                  USS/5      nU R                  USSS5      nU R                  US5      nXS'   U R                  U R                  X5      5      nU R                  X5      $ )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>`
r)   )r  r{  r.  r^  FLIMITSTOPT)r-  rw  	stopPriceMARKETz? createOrder() cannot place stop market orders, only stop limitrw  r{  z1 createOrder() requires a triggerPrice param for z ordersr  rt  ro  r3  rq  r  )r  rv  upperamount_to_precisionsafe_number_nr   r)   price_to_precisionr  r   r=  privatePostAccountOrdersr  r  )rJ  r  r{  r.  r^  r  rT  rv  uppercaseTyper  priceIsRequiredr-  rt  r3  rU  s                  rL  create_orderonetrading.create_order2  s    	V$

%d|!JJL..v>	
  G#}'>"O))&2`a#( +l!lmm'+'>'>v'TGO$$GFOYYv'UVFf$#DGG.a$adh$hkt$tuu#66vEGG**6?KP$#0K YYv'EFF((Qfg6=1#. 00W1MN  11rN  r)   c                 H   U R                  5         U R                  USS5      nU R                  USS/5      nSn0 nUb  SnXFS'   OXS'   SnUS:X  a!  U R                  U R	                  Xc5      5      nO U R                  U R	                  Xc5      5      nU R                  U5      $ )a9  
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>`
rt  ro  !privateDeleteAccountOrdersOrderIdN(privateDeleteAccountOrdersClientClientIdr7  )r  r=  r  r  r  r  r  )rJ  r)   r  rT  rt  r"  r  rU  s           rL  cancel_orderonetrading.cancel_orderw  s     	**6?KP6O[#AB4$?F#0K "$J88==dkk'>Z[HDDT[[QXEabH ))rN  c                     U R                  5         0 nUb  U R                  U5      nUS   US'   U R                  U R                  X25      5      nU R	                  SU05      /$ )aj  
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>`
r)   r  r_  )r  rv  privateDeleteAccountOrdersr  r{  )rJ  r  rT  r  rv  rU  s         rL  cancel_all_ordersonetrading.cancel_all_orders  sj     	[[(F)/G%&224;;w3OP  2344rN  idsc                     U R                  5         SSR                  U5      0nU R                  U R                  XC5      5      nU R	                  SU05      nU/$ )aF  
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>`
r  ,r_  )r  joinr  r  r{  )rJ  r  r  rT  r  rU  r8  s          rL  cancel_ordersonetrading.cancel_orders  s[     	388C=
 224;;w3OP  23wrN  c                     U R                  5         SU0nU R                  U R                  XC5      5      nU R                  U5      $ )aK  
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>`
r7  )r  privateGetAccountOrdersOrderIdr  r  )rJ  r)   r  rT  r  rU  s         rL  fetch_orderonetrading.fetch_order  sK     	
 66t{{77STT ))rN  c                    U R                  5         0 nSnUb  U R                  U5      nUS   US'   UbA  U R                  US5      nUc  [        U R                  S-   5      eU R                  U5      US'   Ub  X5S'   U R                  U R                  XT5      5      nU R                  US/ 5      n	U R                  XX#5      $ )	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)
r  rv  rh  r   r)   r  privateGetAccountOrdersr  r  parse_orders)
rJ  r  r  r<  rT  r  rv  r  rU  orderHistorys
             rL  fetch_open_ordersonetrading.fetch_open_orders   s     		
 [[(F)/G%&!!&$/Bz'  3h  )h  i  i"ll51GFO',O$//G0LM` ~~hD  uDDrN  c           	      L    SS0nU R                  XX0R                  XT5      5      $ )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_rejectedT)r  r  )rJ  r  r  r<  rT  r  s         rL  fetch_closed_ordersonetrading.fetch_closed_ordersu  s.     *4
 %%fUKK<XYYrN  c                     U R                  5         SU0nUb  XFS'   U R                  U R                  Xe5      5      nU R                  US/ 5      nSn	Ub  U R	                  U5      n	U R                  XX45      $ )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>`
r7  Nr  trade_history)r  $privateGetAccountOrdersOrderIdTradesr  r  rv  parse_trades)
rJ  r)   r  r  r<  rT  r  rU  tradeHistoryrv  s
             rL  fetch_order_tradesonetrading.fetch_order_trades  s     	

 ',O$<<T[[=YZ> x"E[[(F  uDDrN  c                    U R                  5         0 nSnUb  U R                  U5      nUS   US'   UbA  U R                  US5      nUc  [        U R                  S-   5      eU R                  U5      US'   Ub  X5S'   U R                  U R                  XT5      5      nU R                  US/ 5      n	U R                  XX#5      $ )	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   r  r  )
r  rv  rh  r   r)   r  privateGetAccountTradesr  r  r  )
rJ  r  r  r<  rT  r  rv  r  rU  r  s
             rL  fetch_my_tradesonetrading.fetch_my_trades  s     	
 [[(F)/G%&!!&$/Bz'  3f  )f  g  g"ll51GFO',O$//G0LM> ~~hD  uDDrN  r   GETc                    U R                   S   U   S-   U R                  -   S-   U R                  X5      -   nU R                  X@R	                  U5      5      nUS:X  a  U(       a  USU R                  U5      -   -  nOcUS:X  a]  U R                  5         SSU R                  -   S.nUS	:X  a  U R                  U5      nSUS
'   OU(       a  USU R                  U5      -   -  nXsXeS.$ )Nr   r}  r   ?r   zapplication/jsonzBearer )AcceptAuthorizationPOSTzContent-Type)urlr"  bodyheaders)	r   r.   implode_paramsr  extract_params	urlencodecheck_required_credentialsr   json)	rJ  pathr   r"  rT  r  r  r  querys	            rL  signonetrading.sign  s    iis#c)DLL83>ATATUYAbb		&"5"5d";<(?sT^^E222I++-,!*T[[!8G yy'*<'3!666CdOOrN  rY  reasonr  r"  r  r  c
                     Uc  g U R                  US5      n
U
b[  U R                  S-   U-   nU R                  U R                  S   X5        U R	                  U R                  S   X5        [        U5      eg )Nerror r  r  )rh  r)   throw_exactly_matched_exceptionr   throw_broadly_matched_exceptionr   )rJ  rY  r  r  r"  r  r  rU  requestHeadersrequestBodymessagefeedbacks               rL  handle_errorsonetrading.handle_errors  sw     ""8W5ww}t+H001I7]001I7]))rN   )N)=__name__
__module____qualname____firstlineno__r   rH  r   rV  r   ro  r   r	   rt  dictr  r   r  r  r  r  r   r  strr  r   r   r  r   r  listr  r)  r   rF  r   rS  rW  r   rl  r   r  r|  rz  r   r   floatr
   r  r  r  r  r  r  r  r  r  r  intr  __static_attributes____classcell__)rK  s   @rL  r%   r%      s   |# || !# ;s ;$ ') *Z *X $& ,$v, ,0f
4 f
F f
P )+ b{ b. 02 CJ 13 >@
 
"24 2 26 2h 02 "33 "3f "3H 04B &GW &G7 &GP :>b Qos Qo3 QoY Qof(
 (
4 (
T 9=4^bkm ,I# ,I# ,IS ,IX[ ,Irvw{r| ,I\M Mv M M^) ) $& ,( ,:: :i iv i iV3S 3Hs H gksu C23 C2i C2y C2RW C2`c C2J 37r *s *C *> /32 5 5. ;?r c C 0 26b 9*c 9*3 9*v /3TXac sE sE3 sEc sEhlmrhs sEj 154VZce Z# ZS ZPS Zjnotju Z" 9=4^bkm 8ES 8E# 8ES 8EX[ 8Et -1tRV_a ?Ec ?E ?EC ?EB &eBSW P(# s  c TX `c  rN  r%   N))ccxt.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  rN  rL  <module>r     sh    ( 0 c  c  c  c  c  * 0 - . ' . + ) * ) + 1 4 %I; IrN  