
    ei9;                    8   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(dS )    )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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	e         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d0Z3dddi fde$dedede	e&         fd1Z4dddi fd*ede$dedefd2Z5dddi fde$dedefd3Z6d4d5i ddfd6Z7d7e8d8ed9ed:ed;ed<efd=Z9 xZ:S )?
onetradingreturnc                 *   |                      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i dSddTddUddVddWddXddYddZdd[dd\dd]dd^dd_dd`ddaddbddcdi ddddeddfddgddhddiddjddkddlddmddnddoddpddqddrddsddtdddddddddddddudvdwdxdydzd{d|d}d~dd	dddddddgddddg dig ddgg ddddddd|                     d          |                     d          |                     d          |                     d          g|                     d          |                     d          g|                     d          |                     d          g|                     d          |                     d          g|                     d          |                     d          g|                     d          |                     d          g|                     d          |                     d          gg|                     d          |                     d          g|                     d          |                     d          g|                     d          |                     d          g|                     d          |                     d          g|                     d          |                     d          g|                     d          |                     d          g|                     d          |                     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 ddi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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+  triggerr4  r>  )r+  r;  r?  r4  r>  gUUUUUU?)r+  r;  r<  daysBackCanceledr=  r?  r4  r>  r;  i  )	sandboxrA   createOrdersru   r}   rz   r   rO   rv   )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    M/var/www/html/volatility/venv/lib/python3.11/site-packages/ccxt/onetrading.pyrG  zonetrading.describe   s   j$ 7 7 @ @ B 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( ()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 r 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 r 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 r 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 r 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 rN $)$) %$)',$"!&#(!!cr r r{E
v !!## 
 
w{E
L k?@  11 6 M{E
d  	 	 	   )      e{E
f !%"&!..x88!..w77
 "&!2!23!7!79J9J89T9T U!%!2!25!9!94;L;LX;V;V W!%!2!25!9!94;L;LX;V;V W!%!2!26!:!:D<M<Mg<V<V W!%!2!26!:!:D<M<Mh<W<W X!%!2!27!;!;T=N=Ny=Y=Y Z!%!2!27!;!;T=N=Ny=Y=Y Z& "&!2!23!7!79J9J79S9S T!%!2!25!9!94;L;LW;U;U V!%!2!25!9!94;L;LX;V;V W!%!2!26!:!:D<M<Mi<X<X Y!%!2!26!:!:D<M<Mh<W<W X!%!2!27!;!;T=N=Nx=X=X Y!%!2!27!;!;T=N=Nx=X=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 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 N 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 N 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 NJ "/.?*;"6+?';!/$2-:[N N N` 'aS So{E
V	 !W	{E
^	 7% 	 _	{E
j	 $&+(-,1,0).+06:#'#'"&#(	( ( #($)$)+027/4#()$ $, %)&+!$$*%+*/& & ',#($)*/	# # ',!$#($)*/( ( $(&+!$$*,2%+#($)*/	* 	*  #q; ;z ## 
 ## CE Ek	{E
 { { {	    c                 X    |                      |          }|                     |d          S )aI  
        fetches the current integer timestamp in milliseconds from the exchange server

        https://docs.onetrading.com/rest/public/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rI  paramsresponses      rK  
fetch_timezonetrading.fetch_time  s/     %%f--   >:::rL  c                    |                      |          }i }t          dt          |                    D ]}||         }|                     |d          }|                     |          }|                     |||                     |d          |dd|                     |                     |                     |d                              dddddddddi d          ||<   |S )	a  
        fetches all available currencies on an exchange

        https://docs.onetrading.com/rest/public/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(   rV  r)   infoactivefeerW  r   depositlimitsnetworks)publicGetCurrenciesrangelensafe_stringsafe_currency_codesafe_currency_structurerH  parse_precision)rI  rR  rS  resulticurrencyr(   rV  s           rK  fetch_currencieszonetrading.fetch_currencies  s    ++F33 q#h--(( 	 	A{H!!(F33B**2..D77((6:: !..t/C/CDDTDTU]_jDkDk/l/lmm &*488(,T : :  9 9  F4LL  rL  c                 V    |                      |          }|                     |          S )a  
        retrieves data on all markets for onetrading

        https://docs.onetrading.com/rest/public/instruments

        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict[]: an array of objects representing market data
        )publicGetInstrumentsparse_marketsrQ  s      rK  fetch_marketszonetrading.fetch_markets  s-     ,,V44 !!(+++rL  marketc                    |                      |di           }|                      |di           }|                     |d          }|                     |d          }|                     |d          }|                     |          }|                     |          }|                     |d          }	|                     |d          }
|
dk    }|dz   |z   }|r|d	z   |z   }i d|d
|d|d|d|r|nd d|d|d|r|nd d|rdndd| ddd|ddddd|	dk    d|d|rdnd |rdnd |r|                     d          nd d d d d |                     |                     |                     |d                              |                     |                     |                     |d                              dd d dd d dd d d|                     |d          d dd d |d!
S )"NbasequoterV  r(   statetypePERP/:symbolsettlebaseIdquoteIdsettleIdr4   r2   r3   Fr5   r6   r]  ACTIVEcontractrC  T1amount_precisionmarket_precision)r[  pricerX  min_size)r5  r[  r  cost)
rD  contractSizeexpiryexpiryDatetimestrike
optionTyperW  r`  createdr\  )	safe_dictre  rf  rH  rh  safe_number)rI  rq  	baseAsset
quoteAssetr|  r}  r(   rs  rt  ru  rv  isPerprz  s                rK  parse_marketzonetrading.parse_market  s   R NN66266	^^FGR88
!!)V44"":v66fd++&&v..''00  11//e# 	*c\E)F0
"0
f0
 D0
 U	0

 v/ee40
 f0
 w0
 63t0
 f0FF&0
 J0
 e0
 F0
 e0
 e0
 u(0
  !0
" f.dd$#0
$ !'0uuD6<FD--c222$"++D,@,@AQAQRXZlAmAm,n,noo**4+?+?@P@PQWYk@l@l+m+mnn    
   
   
  ++FJ??  $ _0
 0
 0
 0	
rL  c                 j   |                      |d          }|                     |d          }|3|                     | j        di           }|                      |dd          }|dk    r|                     |          S |dk    r|                     |          S t          | j        dz   |z   dz             )a  
        fetch the trading fees for multiple markets

        https://docs.onetrading.com/rest/public/fee-groups
        https://docs.onetrading.com/rest/trading/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!  Nr   r"  fetchPublicTradingFeesz% fetchTradingFees() does not support zB, fetchPrivateTradingFees and fetchPublicTradingFees are supported)re  omit
safe_valuer   fetch_private_trading_feesfetch_public_trading_feesr   r(   )rI  rR  r!  r   s       rK  fetch_trading_feeszonetrading.fetch_trading_feesX  s     !!&(3368,,>oodl4FKKG%%gx9RSSF...226:::///11&999tw)PPSYY  ]a   a  b  b  brL  c           	         |                                   |                     |          }|                     |di           }|                     |di           }|                     |dg           }|                     |dg           }|                     |          }|                     |          }|                     |di           }	|                     |di           }
i }t          dt          | j                            D ]e}| j        |         }|                     |          }|d         r|	n|
}||| 	                    |d          | 	                    |d          dd|d||<   f|S )	Nr      	fee_tiersr2   	maker_fee	taker_feeTr\  rz  r   r   r   r   r   )
load_marketspublicGetFeesr  	safe_listparse_fee_tiersrc  rd  symbolsrq  r  )rI  rR  rS  spotFeesfuturesFeesspotFeeTiersfuturesFeeTiers	spotTiersfuturesTiersfirstSpotTierfirstFuturesTierri  rj  rz  rq  
tierObjects                   rK  r  z$onetrading.fetch_public_trading_feeso  st   %%f--V >>(Ar22nnXq"55~~hR@@..k2FF((66	++O<<y!R88>>,2>>q#dl++,, 	 	A\!_F[[((F+1&>P@PJ  ))*kBB))*kBB"!" F6NN rL  c           	      `   |                                   |                     |          }|                     |d          }|                     |di           }|                     |di           }|                     |d          }|                     |d          }t          j        |d          }t          j        |d          }|                     |d          }|                     |d          }	t          j        |d          }t          j        |	d          }	i }
t          dt          | j	                            D ]o}| j	        |         }| 
                    |          }|d         r|n|}|d         r|n|	}|||                     |          |                     |          ddd d	|
|<   p|
S )
Nactive_fee_tiersr   r  r  r  r   r2   Tr  )r  privateGetAccountFeesr  r  re  r#   
string_divrc  rd  r  rq  rH  )rI  rR  rS  activeFeeTierr  r  spotMakerFeespotTakerFeefuturesMakerFeefuturesTakerFeeri  rj  rz  rq  makerFeetakerFees                   rK  r  z%onetrading.fetch_private_trading_fees  s   --f55@ x1CDD>>-B77nn]Ar::''+>>''+>>),>>),>>**;DD**;DD!,_eDD!,_eDDq#dl++,, 	 	A\!_F[[((F(.vL||_H(.vL||_H  **844**844"! F6NN rL  Nc                    g }g }t          dt          |                    D ]}||         }|                     |d          }|                     |d          }|                     |d          }	t	          j        |	d          }	t	          j        |d          }|                    ||                     |	          g           |                    ||                     |          g           ||dS )Nr   volumer  r  r   )r   r   )rc  rd  r  re  r#   r  appendrH  )
rI  feeTiersrq  	takerFees	makerFeesrj  tierr  r   r   s
             rK  r  zonetrading.parse_fee_tiers  s    		q#h--(( 	A 	AAA;D%%dH55F$$T;77E$$T;77E&ue44E&ue44Efd&7&7&>&>?@@@fd&7&7&>&>?@@@@
 
 	
rL  tickerc                    |                      |                     |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|          S )Nr   instrument_code_
last_priceprice_change_percentageprice_changebase_volumequote_volumerz  	timestampdatetimehighlowbidbest_bid	bidVolumeaskbest_ask	askVolumevwapopencloselastpreviousClosechanger   average)
baseVolumequoteVolumer\  )	parse8601re  safe_symbolsafe_tickeriso8601)rI  r  rq  r  marketIdrz  r  r   r  r  r  s              rK  parse_tickerzonetrading.parse_ticker  s   * NN4#3#3FF#C#CDD	##F,=>>!!(FC8855%%f.GHH
!!&.99%%fm<<
&&v~>> !
f!
!
 Y//!
 D$$VV44	!

 4##FE22!
 4##FJ77!
 !
 4##FJ77!
 !
 D!
 D!
 T!
 D!
 T!
 f!
  *!!
" t#!
$ %&)!
 !
 !
* +  	rL  rz  c                     |                                   |                     |          }d|d         i}|                     |                     ||                    }|                     ||          S )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/rest/public/market-ticker-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  rq  #publicGetMarketTickerInstrumentCodeextendr  )rI  rz  rR  rq  requestrS  s         rK  fetch_tickerzonetrading.fetch_ticker9  ss     	V$$vd|
 ;;DKKQW<X<XYY&   6222rL  r  c                 @   |                                   |                     |          }|                     |          }i }t          dt	          |                    D ]*}|                     ||                   }|d         }|||<   +|                     |d|          S )a  
        fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market

        https://docs.onetrading.com/rest/public/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   rz  )r  market_symbolspublicGetMarketTickerrc  rd  r  filter_by_array_tickers)rI  r  rR  rS  ri  rj  r  rz  s           rK  fetch_tickerszonetrading.fetch_tickers]  s     	%%g..--f55* q#h--(( 	$ 	$A&&x{33FH%F#F6NN++FHgFFFrL  r;  c           	      \   |                                   |                     |          }d|d         i}|||d<   |                     |                     ||                    }|                     |                     |d                    }|                     ||d         |ddd	d
          S )a-  
        fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data

        https://docs.onetrading.com/rest/public/orderbook

        :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(   Ndepthr   rz  bidsasksr  r[  )r  rq   publicGetOrderBookInstrumentCoder  r  re  parse_order_book)rI  rz  r;  rR  rq  r  rS  r  s           rK  fetch_order_bookzonetrading.fetch_order_book  s     	V$$vd|
 $GG88Wf9U9UVVp NN4#3#3Hf#E#EFF	$$Xvh/?FTZ\cemnnnrL  c           	         |                      |d          }|                     |d          }|                     |d          }dddddd	}|                     ||          }||z   }|                     |          }	|	d
z  }
|                     |                     |d                    }|
|                     ||
z            z  }|                      | j        di           }|                     |dd          }||                     |d          |                     |d          |                     |d          |                     |d          |                     ||          gS )NgranularityunitperiodmhdwM)MINUTESHOURSDAYSWEEKSMONTHS  r   rv   r  total_amountr  r  r  r  )r  re  parse_timeframer  parse_to_intr   r  )rI  ohlcvrq  r  r  r  unitslowercaseUnit	timeframedurationInSecondsdurationr  alignedTimestampr   volumeFields                  rK  parse_ohlcvzonetrading.parse_ohlcv  st    ooe];;V44!!+x88
 
 ((55]*	 00;;$t+NN4#3#3E6#B#BCC	#d&7&7	H8L&M&MM//$,bAA&&w.IIUF++UF++UE**UG,,UK00
 	
rL  r   r  sincec                    |                                   |                     |          }|                     | j        |          }|                    d          \  }}	|                     |          }
|
dz  }|d}|d         ||	d}|K|                                 }|                     |          |d<   |                     |||z  z
            |d<   nG|                     |          |d<   |                     |                     |||z                      |d<   | 	                    | 
                    ||                    }|                     |d	          }|                     |||||          S )
a  
        fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market

        https://docs.onetrading.com/rest/public/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
        rx  r  Ni  r(   )r  r  r  tofromcandlesticks)r  rq  re  r   splitr  millisecondsr  sum#publicGetCandlesticksInstrumentCoder  r  parse_ohlcvs)rI  rz  r  r  r;  rR  rq  
periodUnitr  r  r	  r
  r  nowrS  r  s                   rK  fetch_ohlcvzonetrading.fetch_ohlcv  sv    	V$$%%doyAA
!'',, 00;;$t+=E%d| 
 
 =##%%C LL--GDM"ll31A+ABBGFOO"ll511GFO LL%9I)J)JKKGDM;;DKKQW<X<XYY x88  	5%HHHrL  tradec                    |                      |di           }|                      |d|          }|                     |d          }|)|                     |                     |d                    }|                     |dd          }|                     |d          }|                     |d          }|                     |d	          }|                     |d
          }	|                     |	|d          }
|                     |d          }d }d }|]|                     |d          }|                     |          }|                     |d          }|||d}|                     |d          }|                     | 	                    |dd          |                     |d          || 
                    |          |
d |||||||d|          S )Nr^  r  trade_timestampr   side
taker_sider  r[  r  r  r  
fee_amountfee_currencyfee_percentage)r  rk  ratefee_typetrade_idsequenceorder_id)r(   orderr  r  rz  rv  r  r  r[  r  takerOrMakerr^  r\  )r  rP  r  re  safe_string_lower_2r  rf  safe_string_lower
safe_tradesafe_string_2r  )rI  r  rq  feeInfor  r  priceStringamountString
costStringr  rz  feeCostStringr)  r^  feeCurrencyIdfeeCurrencyCodefeeRateStrings                    rK  parse_tradezonetrading.parse_trade0  s   N //%33w66%%e->??	t'7'7v'F'FGGI''v|DD&&ug66''x88%%eX66
##E+<==!!(FC88((,??$ ,,WnEEM"55mDDO ,,W6FGGM%+% C
  11':FFL$$UJ
CC%%eZ88"Y// "( 
  
   	rL  c                    |                      |dg           }d|i}t          dt          |                    D ]}||         }|                     |d          }|                     |          }|                                 }|                     |d          |d<   |                     |d          |d<   |||<   |                     |          S )	Nbalancesr\  r   currency_code	availablefreelockedused)r  rc  rd  re  rf  accountsafe_balance)	rI  rS  r8  ri  rj  balance
currencyIdrV  r>  s	            rK  parse_balancezonetrading.parse_balance  s    ??8Z<<)q#h--(( 	# 	#AqkG))'?CCJ**:66DllnnG"..wDDGFO"..wAAGFO"F4LL  (((rL  c                 ~    |                                   |                     |          }|                     |          S )a[  
        query for balance and get the amount of funds available for trading or funds locked in orders

        https://docs.onetrading.com/rest/trading/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  privateGetAccountBalancesrB  rQ  s      rK  fetch_balancezonetrading.fetch_balance  s?     	11&99" !!(+++rL  statusc                 J    ddddddddddd
}|                      |||          S )Nr  closedcanceledrejectedfailed	triggered)
FILLEDFILLED_FULLYFILLED_CLOSEDFILLED_REJECTEDOPENREJECTEDCLOSEDFAILEDSTOP_TRIGGEREDDONEre  )rI  rF  statusess      rK  parse_order_statuszonetrading.parse_order_status  sF    $')" )
 
 &&999rL  r(  c                 J   |                      |d|          }|                     |d          }|                     |d          }|                     |                     |d                    }|                     |                     |d                    }|                     |          }|                     |d          }	|                     |	|d          }
|                     |d          }|                     |d	          }|                     |d
          }|                     |d          }|                     |d          }|                     |                     |d                    }|                      |d          }|                      |dg           }|                     i d|d|d|d|d|                     |          dd d|
d| 	                    |          d|d|d|d|d| 
                    |d          d	|dd dd d|d ||d|          S )Nr(  r'  	client_idr   rF  r  r  r  r[  filled_amountr  rv  time_in_forceis_post_onlytradesr(   clientOrderIdr\  r  r  lastTradeTimestamprz  r2  postOnlyr,  trigger_pricer  r  filled)	remainingrF  r_  )r  re  r  rY  r  r+  parse_time_in_force
safe_orderr  parse_order_typer  )rI  r(  rq  rawOrderr(   r`  r  	rawStatusrF  r  rz  r  r[  rd  r  rv  r2  rb  	rawTradess                      rK  parse_orderzonetrading.parse_order  s   F ??5'599h
33((;??NN4#3#3Hf#E#EFF	++D,<,<Xx,P,PQQ	((33##H.?@@!!(FC88  733!!(H55!!(O<<%%h77%%h77..t/?/?//Z/Z[[??8^<<OOE8R88	  
" 
] 
 E 
 	 

 Y// 
 !$ 
 f 
 D))$// 
 ; 
  
 D 
 U 
 D,,XGG 
 f 
 D 
  t! 
" f# 
$ + 
  
  
, -  	rL  rv  c                 8    ddi}|                      |||          S )Nbookedr;  rW  )rI  rv  typess      rK  rh  zonetrading.parse_order_type#  s(    g
 tT222rL  r2  c                 >    ddddd}|                      |||          S )NGTCGTTr'  r(  )GOOD_TILL_CANCELLEDGOOD_TILL_TIMEIMMEDIATE_OR_CANCELLEDFILL_OR_KILLrW  )rI  r2  timeInForcess      rK  rf  zonetrading.parse_time_in_force)  s4    #(#&+!	
 
 k;GGGrL  r  r[  r  c                    |                                   |                     |          }|                                }|d         ||                                |                     ||          d}	d}
|dk    s|dk    rd}
|                     |g d          }|T|d	k    rt          | j        d
z             |                     ||          |	d<   d|	d<   |                     |g d          }n#|dk    rt          | j        dz   |z   dz             |
r|                     ||          |	d<   | 
                    |dd          }|||	d<   |                     |ddg          }| 
                    |ddd          }|                     |d          }||	d<   |                     |                     |	|                    }|                     ||          S )a   
        create a trade order

        https://docs.onetrading.com/rest/trading/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  rv  r  r[  FLIMITSTOPT)r,  rc  	stopPriceNMARKETz? createOrder() cannot place stop market orders, only stop limitrc  rv  z1 createOrder() requires a triggerPrice param for z ordersr  r`  r[  r2  r]  rs  )r  rq  upperamount_to_precisionsafe_number_nr   r(   price_to_precisionr  r   r-  privatePostAccountOrdersr  rl  )rI  rz  rv  r  r[  r  rR  rq  uppercaseTyper  priceIsRequiredr,  r`  r2  rS  s                  rK  create_orderzonetrading.create_order2  s
    	V$$

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

        https://docs.onetrading.com/rest/trading/cancel-order-order-id
        https://docs.onetrading.com/rest/trading/cancel-order-client-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>`
        r`  r[  !privateDeleteAccountOrdersOrderIdN(privateDeleteAccountOrdersClientClientIdr'  )r  r-  r  r  r  r  rl  )rI  r(   rz  rR  r`  r!  r  rS  s           rK  cancel_orderzonetrading.cancel_orderw  s     	**6?KPP6O[#ABB4$?F#0GK  "$GJ888==dkk'SY>Z>Z[[HHDDT[[QXZ`EaEabbH )))rL  c                     |                                   i }| |                     |          }|d         |d<   |                     |                     ||                    }|                     d|i          gS )a  
        cancel all open orders

        https://docs.onetrading.com/rest/trading/cancel-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  r\  )r  rq  privateDeleteAccountOrdersr  rg  )rI  rz  rR  r  rq  rS  s         rK  cancel_all_orderszonetrading.cancel_all_orders  s~     	[[((F)/G%&224;;w3O3OPP  23344rL  idsc                     |                                   dd                    |          i}|                     |                     ||                    }|                     d|i          }|gS )a  
        cancel multiple orders

        https://docs.onetrading.com/rest/trading/cancel-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  rg  )rI  r  rz  rR  r  rS  r(  s          rK  cancel_orderszonetrading.cancel_orders  sn     	388C==
 224;;w3O3OPP  233wrL  c                     |                                   d|i}|                     |                     ||                    }|                     |          S )a  
        fetches information on an order made by the user

        https://docs.onetrading.com/rest/trading/get-order-order-id

        :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>`
        r'  )r  privateGetAccountOrdersOrderIdr  rl  )rI  r(   rz  rR  r  rS  s         rK  fetch_orderzonetrading.fetch_order  s\     	
 66t{{7F7S7STTT )))rL  c                    |                                   i }d}| |                     |          }|d         |d<   |G|                     |d          }|t          | j        dz             |                     |          |d<   |||d<   |                     |                     ||                    }|                     |dg           }	| 	                    |	|||          S )	a  
        fetch all unfilled currently open orders

        https://docs.onetrading.com/rest/trading/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  rq  re  r   r(   r  privateGetAccountOrdersr  r  parse_orders)
rI  rz  r  r;  rR  r  rq  r  rS  orderHistorys
             rK  fetch_open_orderszonetrading.fetch_open_orders  s    		
 [[((F)/G%&!!&$//Bz'  3h  )h  i  i  i"ll511GFO',GO$//GV0L0LMM` ~~hDD  vueDDDrL  c           	      b    ddi}|                      ||||                     ||                    S )a0  
        fetches information on multiple closed orders made by the user

        https://docs.onetrading.com/rest/trading/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  )rI  rz  r  r;  rR  r  s         rK  fetch_closed_orderszonetrading.fetch_closed_ordersv  s;     *4
 %%feUDKKQW<X<XYYYrL  c                 "   |                                   d|i}|||d<   |                     |                     ||                    }|                     |dg           }d}	||                     |          }	|                     ||	||          S )a  
        fetch all the trades made from a single order

        https://docs.onetrading.com/rest/trading/get-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>`
        r'  Nr  trade_history)r  $privateGetAccountOrdersOrderIdTradesr  r  rq  parse_trades)
rI  r(   rz  r  r;  rR  r  rS  tradeHistoryrq  s
             rK  fetch_order_tradeszonetrading.fetch_order_trades  s     	

 ',GO$<<T[[RX=Y=YZZ> x"EE[[((F  vueDDDrL  c                    |                                   i }d}| |                     |          }|d         |d<   |G|                     |d          }|t          | j        dz             |                     |          |d<   |||d<   |                     |                     ||                    }|                     |dg           }	| 	                    |	|||          S )	a  
        fetch all trades made by the user

        https://docs.onetrading.com/rest/trading/get-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  rq  re  r   r(   r  privateGetAccountTradesr  r  r  )
rI  rz  r  r;  rR  r  rq  r  rS  r  s
             rK  fetch_my_tradeszonetrading.fetch_my_trades  s    	
 [[((F)/G%&!!&$//Bz'  3f  )f  g  g  g"ll511GFO',GO$//GV0L0LMM> ~~hDD  vueDDDrL  r   GETc                    | j         d         |         dz   | j        z   dz   |                     ||          z   }|                     ||                     |                    }|dk    r|r|d|                     |          z   z  }ne|dk    r_|                                  dd| j        z   d}|d	k    r|                     |          }d|d
<   n|r|d|                     |          z   z  }||||dS )Nr   rx  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)	rI  pathr   r!  rR  r  r  r  querys	            rK  signzonetrading.sign  s   is#c)DL83>ATATUY[aAbAbb		&$"5"5d";";<<(?? 3sT^^E2222I++---,!*T[!8 G yy''*<'' 73!6!666CfdwOOOrL  rV  reasonr  r!  r  r  c
                     |d S |                      |d          }
|
`| j        dz   |z   }|                     | j        d         |
|           |                     | j        d         |
|           t          |          d S )Nerror r  r  )re  r(   throw_exactly_matched_exceptionr   throw_broadly_matched_exceptionr   )rI  rV  r  r  r!  r  r  rS  requestHeadersrequestBodymessagefeedbacks               rK  handle_errorszonetrading.handle_errors  s    4 ""8W55w}t+H001I7T\]]]001I7T\]]])))trL  )N);__name__
__module____qualname__r   rG  r   rT  r   rl  r   r	   rp  dictr  r   r  r  r  r  r   r  strr  r   r   r  r   r  listr  r  r   r6  r   rB  rE  r   rY  r   rl  rh  rf  r   r   floatr
   r  r  r  r  r  r  r  r  r  r  intr  __classcell__)rJ  s   @rK  r%   r%      s|       |# | | | | | || !# ; ;s ; ; ; ;$ ') * *Z * * * *X $& , ,$v, , , , ,0f
4 f
F f
 f
 f
 f
P )+ b b{ b b b b. 02 C C C CJ 13 > > > >@
 
 
 
 
 
"2 24 2 26 2 2 2 2h 02 "3 "33 "3f "3 "3 "3 "3H 04B &G &GW &G7 &G &G &G &GP :>b Qo Qos Qo3 QoY Qo Qo Qo Qof(
 (
 (
4 (
 (
 (
 (
T 9=4^bkm ,I ,I# ,I# ,IS ,IX[ ,Irvw{r| ,I ,I ,I ,I\M M Mv M M M M M^) ) ) ) ) $& , ,( , , , ,:: : : : :i i iv i i i i iV3S 3 3 3 3Hs H H H H gksu C2 C23 C2i C2y C2RW C2`c C2 C2 C2 C2J 37r * *s *C * * * *@ /32 5 5 5 5 5 5. ;?r  c C    0 26b 9* 9*c 9*3 9* 9* 9* 9*v /3TXac sE sE sE3 sEc sEhlmrhs sE sE sE sEj 154VZce Z Z# ZS ZPS Zjnotju Z Z Z Z" 9=4^bkm 8E 8ES 8E# 8ES 8EX[ 8E 8E 8E 8Et -1tRV_a ?E ?Ec ?E ?EC ?E ?E ?E ?EB &eBSW P P P P(# s  c TX `c        rL  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%    rL  rK  <module>r     sQ   ( ' ' ' ' ' 0 0 0 0 0 0 c  c  c  c  c  c  c  c  c  c  c  c  c  c  c  c  c  c  c  c  c  c  c  c  c  c  c  c  c  c  c  c  c  c  c  c       * * * * * * 0 0 0 0 0 0 - - - - - - . . . . . . ' ' ' ' ' ' . . . . . . + + + + + + ) ) ) ) ) ) * * * * * * ) ) ) ) ) ) + + + + + + 1 1 1 1 1 1 4 4 4 4 4 4 % % % % % %J J J J J; J J J J JrL  