
    ":h1                         d dl Zd dlmZ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 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j2                  j4                        Zy)    N)ArrayCacheBySymbolByIdArrayCacheByTimestamp)
AnyBalancesIntOrder	OrderBookStrStringsTickerTickersTrade)Client)List)ExchangeError)NotSupported)Precisec            
           e Zd Zdef fdZi fdefdZd Zi fdede	fdZ
di fdedefd	Zd
efdZd(dZdddi fdedededee   fdZdi fdededefdZd
efdZd Zd Zdddi fdedededee   fdZd
efdZd(dZd Zd
efdZ d
efdZ!d Z"d Z#dddi fdedededee$   fdZ%d
efdZ&d(dZ'd
efd Z(d
efd!Z)d
efd"Z*d
efd#Z+d
efd$Z,d
efd%Z-g i fdefd&Z.i fd'Z/ xZ0S ))
onetradingreturnc                     | j                  t        t        |          ddddddddddd
dddi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i i d      S )NTF)
wswatchBalancewatchTickerwatchTickerswatchTradeswatchTradesForSymbolswatchMyTradeswatchOrderswatchOrderBook
watchOHLCVapir   zwss://streams.onetrading.com/   MINUTES   )unitperiod         HOURS   DAYSWEEKSMONTHS)	1m5m15m30m1h4h1d1w1M)bp_remaining_quota
timeframes)hasurlsoptions	streaming
exceptions)deep_extendsuperr   describe)self	__class__s    M/var/www/html/turnos/venv/lib/python3.12/site-packages/ccxt/pro/onetrading.pyrB   zonetrading.describe   s    j$ @ B $# $$).!%#"&" 9 '* !*"#
 !*"#
 !*"$
 !*"$
 !("#
 !("#
 !'"#
 !("#
 !)"#C%(R{?E
 ? ?	    c                   K   | j                  |       d{    | j                  d   d   }d}d}| j                  | j                  dd      }d|d	digd
}| j	                  ||      }| j                  |||||       d{   S 7 o7 w)ai  

        https://developers.bitpanda.com/exchange/#account-history-channel

        watch balance and get the amount of funds available for trading or funds locked in orders
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
        Nr"   r   balanceACCOUNT_HISTORYr9   r#   	SUBSCRIBEnametyper9   channels)authenticater<   safe_integerr=   r@   watch)rC   paramsurlmessageHashsubscribeHashbpRemainingQuota	subscriberequests           rE   watch_balancezonetrading.watch_balanceT   s      '''iit$),,T\\;OQTU"2 -
	 ""9f5ZZ['='RRR 	( Ss"   BBA*BB	B	Bc                 l    | j                  |      | _        d}|j                  | j                  |       y )NrH   )parse_balancerH   resolve)rC   clientmessagerT   s       rE   handle_balance_snapshotz"onetrading.handle_balance_snapshotn   s-    : ))'2t||[1rF   symbolc                    K   | j                          d{    | j                  |      }|d   }d}d|z   }ddddgd}| j                  ||||g|       d{   S 7 H7 w)	a  

        https://developers.bitpanda.com/exchange/#market-ticker-channel

        watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
        :param str symbol: unified symbol of the market to fetch the ticker for
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
        Nr`   MARKET_TICKERticker.rJ   INLINErK   price_points_moderM   rN   )load_marketsmarket
watch_many)rC   r`   rR   ri   subscriptionHashrT   rX   s          rE   watch_tickerzonetrading.watch_ticker   s      !!!V$!*&( ,)1
 __[';KfXW]^^^ 	" _s"   A#AAA#A!A#!A#Nsymbolsc                    K   | j                          d{    | j                  |      }|g }d}d}ddddgd}| j                  |||||       d{   }| j                  |d|      S 7 V7 w)	a  

        https://developers.bitpanda.com/exchange/#market-ticker-channel

        watches price tickers, a statistical calculation with the information for all markets or those specified.
        :param str symbols: unified symbols of the markets to fetch the ticker for
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict: an array of `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
        Nrb   tickersrJ   rd   re   rg   r`   )rh   market_symbolsrj   filter_by_array)rC   rm   rR   rk   rT   rX   ro   s          rE   watch_tickerszonetrading.watch_tickers   s      !!!%%g.?G* ,)1
 W>NPWY_``##GXw??! 	" as!   A1A->A1A/A1/A1r]   c                    | j                  |dg       }| j                  |d      }t        dt        |            D ]  }||   }| j                  |d      }| j	                  |      }| j                  |      | j                  |<   | j                  |      }	|	| j                  |   d<   | j                  |	      | j                  |   d<   |j                  | j                  |   d|z           |j                  | j                  d       y )	Nticker_updatestimer   
instrument	timestampdatetimerc   ro   )

safe_valuesafe_stringrangelensafe_symbolparse_ws_tickerro   	parse8601iso8601r\   )
rC   r]   r^   ro   rx   itickermarketIdr`   rw   s
             rE   handle_tickerzonetrading.handle_ticker   s    " //'+;R@##GV4q#g,' 	EAQZF''=H%%h/F#'#7#7#?DLL x0I09DLL -/3||I/FDLL ,NN4<</V1CD	E 	t||Y/rF   c                    | j                  |d      }| j                  i d| j                  ||      dd dd d| j                  |d      d| j                  |d      dd dd d	d d
d dd dd d| j                  |d      d| j                  |d      dd d| j                  |d      d| j                  |d      dd d | j                  |d      |d|      S )Nrv   r`   rw   rx   highlowbid	bidVolumeask	askVolumevwapopenclose
last_pricelastpreviousClosechangeprice_change
percentageprice_change_percentageaveragevolume)
baseVolumequoteVolumeinfo)rz   safe_tickerr}   safe_number)rC   r   ri   r   s       rE   r~   zonetrading.parse_ws_ticker   st    ##FL9 !
d&&x8!
!
 !
 D$$VV4	!

 4##FE2!
 4!
 !
 4!
 !
 D!
 D!
 T%%fl;!
 D$$V\:!
 T!
 d&&v~>!
  $**63LM!!
" t#!
$ ++FH=)!
* + 	rF   sincelimitc                 T  K   | j                          d{    d}|| j                  |      }|d   }|d|z   z  }| j                  |       d{    | j                  d   d   }d}| j	                  | j
                  dd	      }	d
|	ddigd}
| j                  |
|      }| j                  |||||       d{   }| j                  r|j                  ||      }| j                  ||||      }t        |      }|dk(  r| j                  ||||       d{   S |S 7 	7 7 i7 w)a<  

        https://developers.bitpanda.com/exchange/#account-history-channel

        get the list of trades associated with the user
        :param str symbol: unified symbol of the market to fetch trades for. Use 'any' to watch all trades
        :param int [since]: timestamp in ms of the earliest trade to fetch
        :param int [limit]: the maximum amount of trades to fetch
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=public-trades>`
        NmyTradesr`   :r"   r   rI   r9   r#   rJ   rK   rL   r   )rh   ri   rO   r<   rP   r=   r@   rQ   
newUpdatesgetLimitfilter_by_symbol_since_limitr|   watch_my_trades)rC   r`   r   r   rR   rT   ri   rS   rU   rV   rW   rX   trades	numTradess                 rE   r   zonetrading.watch_my_trades  sS     !!! [[(FH%F3<'K'''iit$),,T\\;OQTU"2 -
	 ""9f5zz#{G]GTT??OOFE2E22665%PK	>--feUFKKK7 	" 	( U LsG   D(D:D(D"A(D(:D$;AD(D&D("D($D(&D(c                    K   | j                          d{    | j                  |      }|d   }d|z   }d}d}||}dd|dgd}| j                  ||||g|       d{   }	|	j                         S 7 ^7 w)	a=  

        https://developers.bitpanda.com/exchange/#market-ticker-channel

        watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
        :param str symbol: unified symbol of the market to fetch the order book for
        :param int [limit]: the maximum amount of order book entries to return
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict: A dictionary of `order book structures <https://docs.ccxt.com/#/?id=order-book-structure>` indexed by market symbols
        Nr`   book:
ORDER_BOOKr   rJ   )rK   depthrg   )rh   ri   rj   r   )
rC   r`   r   rR   ri   rT   rk   r   rX   	orderbooks
             rE   watch_order_bookzonetrading.watch_order_book0  s      !!!V$!&'E )"
 //+w@PSYRZ\bcc	  % 	"" ds"   A9A5A	A9 A7!A97A9c                 ~   | j                  |d      }| j                  |d      }| j                  |      }| j                  |d      }| j                  |      }d|z   }| j                  | j                  |      }	|	| j                  i       }	|dk(  r'| j                  |||dd      }
|	j                  |
       nF|dk(  r&| j                  |d	g       }| j                  |	|       nt        | j                  d
z   |z         ||	d<   ||	d<   | j                  |      |	d<   |	| j                  |<   |j                  |	|       y )NrM   instrument_coderu   r   ORDER_BOOK_SNAPSHOTbidsasksORDER_BOOK_UPDATEchangesz1 watchOrderBook() did not recognize message type noncerw   rx   )rz   r}   r   ry   
orderbooks
order_bookparse_order_bookresethandle_deltasr   idr   r\   )rC   r]   r^   rM   r   r`   dateTimerw   channelr   snapshotr   s               rE   handle_order_bookzonetrading.handle_order_bookO  sB   : 0##G->?!!(+##GV4NN8,	F"OODOOV<	+I((,,WfiQWXHOOH%((oogy"=Gy'2tww)\\_ccdd&	'!*	+ $Y 7	*"+y'*rF   c                    | j                  |dd      }| j                  |d      }|dk(  r|d   }|j                  |       y |dk(  r|d   }|j                  |       y t        | j                  dz   | j                  |      z         )	Nr%      r   BUYr   SELLr   z/ watchOrderBook() received unknown change type )parse_bid_askrz   
storeArrayr   r   json)rC   r   deltabidAskrM   r   r   s          rE   handle_deltazonetrading.handle_delta  s     ##E1a0q)5=V$DOOF#V^V$DOOF#tww)ZZ]a]f]fgl]mmnnrF   c                 b    t        dt        |            D ]  }| j                  |||           y )Nr   )r{   r|   r   )rC   r   deltasr   s       rE   r   zonetrading.handle_deltas  s2     q#f+& 	4Ai3	4rF   c                 v  K   | j                          d{    d}|| j                  |      }|d   }|d|z   z  }| j                  |       d{    | j                  d   d   }| j	                  |dd      }| j                  | j                  d	d
      }	d|	d|igd}
| j                  |
|      }| j                  |||||       d{   }| j                  r|j                  ||      }| j                  ||||      }t        |      }|dk(  r| j                  ||||       d{   S |S 7 7 7 i7 w)a  

        https://developers.bitpanda.com/exchange/#account-history-channel

        watches information on multiple orders made by the user
        :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
        :param str [params.channel]: can listen to orders using ACCOUNT_HISTORY or TRADING
        :returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
        Nordersr`   r   r"   r   r   rI   r9   r#   rJ   rK   rL   r   )rh   ri   rO   r<   rz   rP   r=   r@   rQ   r   r   r   r|   watch_orders)rC   r`   r   r   rR   rT   ri   rS   rU   rV   rW   rX   r   	numOrderss                 rE   r   zonetrading.watch_orders  sb     !!![[(FH%F3<'K'''iit$((<MN,,T\\;OQTU"2 M
	 ""9f5zz#{G]GTT??OOFE2E22665%PK	>**65%HHH7 	" 	( U IsG   D9D0:D9D3A9D9D5AD9)D7*D93D95D97D9c                 N   | j                   -| j                  | j                  dd      }t        |      | _         | j	                  |      }| j                   }|j                  |       |j                  | j                   d|d   z          |j                  | j                   d       y )NordersLimit  orders:r`   r   )r   rP   r=   r   parse_trading_orderappendr\   )rC   r]   r^   r   orderr   s         rE   handle_tradingzonetrading.handle_trading  s    Z ;;%%dllM4HE07DK((1et{{Ih$?@t{{H-rF   c           
      F   | j                  |d      }| j                  |d      }| j                  ||d      }| j                  i d| j                  |d      d| j                  |d      d|d	| j                  |      d
|dd d|dd dd dd d| j	                  |d      d| j                  |dd      d| j                  |d      d| j                  |d      dd dd dd | j                  |d      | j                  | j                  |d            d d d|      S )Nru   r   _r   order_idclientOrderId	client_idr   rw   rx   lastTradeTimestampr`   rM   timeInForcepostOnlysidepricematched_price	stopPricetrigger_priceamountcostr   filled	remainingstatus)r   r   feer   )rz   r}   
safe_orderr   safe_string_lowersafe_number_2r   parse_trading_order_status)rC   r   ri   rx   r   r`   s         rE   r   zonetrading.parse_trading_order  s   j ##E62##E+<=!!(FC8  
$""5*5 
T--e[A 
 E 
 1	 

  
 !$ 
 f 
 D 
 4 
  
 D**5&9 
 T''wH 
 ))%A 
 d&&uh7 
 D 
  t! 
" d# 
$ ))%=55d6F6Fuh6WX+ 
, - 	rF   c                 <    dddddddd}| j                  |||      S )Ncanceledrejectedclosed)	CANCELLED
SELF_TRADEFILLED_FULLYINSUFFICIENT_FUNDSINSUFFICIENT_LIQUIDITYTIME_TO_MARKET_EXCEEDEDLAST_PRICE_UNKNOWNrz   rC   r   statusess      rE   r   z%onetrading.parse_trading_order_statusl  s5    #$$",&0'1",
 &&99rF   c                    | j                   -| j                  | j                  dd      }t        |      | _         | j                  -| j                  | j                  dd      }t        |      | _        | j                  |dg       }t        |      }|dk(  ry | j                   }t        dt        |            D ]  }| j                  ||         }| j                  |dd      }	|j                  |       |j                  | j                   d|	z          | j                  ||   d	g       }
t        dt        |
            D ]c  }| j                  |
|         }| j                  |d|	      }	| j                  j                  |       |j                  | j                  d
|	z          e  |j                  | j                   d       |j                  | j                  d       y )Nr   r   tradesLimitr   r   r`    r   r   	myTrades:r   )r   rP   r=   r   r   ry   r|   r{   parse_orderrz   r   r\   parse_trade)rC   r]   r^   r   	rawOrdersrawOrdersLengthr   r   r   r`   	rawTradesiitrades                rE   handle_orderszonetrading.handle_ordersx  s   p ;;%%dllM4HE07DK== %%dllM4HE259DMOOGXr:	i.aq#i.) 
	DA$$Yq\2E%%eXr:FMM% NN4;;	F(:;	!hCIAs9~. D((27))%6B$$U+t}}kF.BC	D
	D 	t{{H-t}}j1rF   c                    | j                   -| j                  | j                  dd      }t        |      | _         | j                  -| j                  | j                  dd      }t        |      | _        d }| j                   }| j                  |di       }| j                  |d      }|dk(  s
|dk(  s|dk(  r| j                  |d	      }| j                  |d
d      }	| j                  | j                   d|d      }
| j                  |
di       }|d   }| j                  |d      }| j                  |      }|dk(  rt        j                  |d      rd}|||| j                  |	      |	d}|j                  |       n5| j                  |      }| j                  |dd      }|j                  |       |j                  | j                   d|z          |j                  | j                   d       g d}t!        dt#        |            D ]+  }| j                  |||         }|| j%                  |       - |j                  | j&                  d       |dk(  r}| j)                  |      }| j                  |dd      }| j                  }|j                  |       |j                  | j                  d|z          |j                  | j                  d       y y )Nr   r   r   updaterM   ORDER_REJECTEDORDER_CLOSEDSTOP_ORDER_TRIGGEREDr   ru   rw   r   Fr   r`   filled_amount0r   )r   r`   r   rw   rx   r   r   r   )lockedunlockedspentspent_on_feescrediteddeductedrH   TRADE_SETTLEDr   r   )r   rP   r=   r   r   ry   rz   safe_string_2rq   parse_ws_order_statusr   	string_eqr   r   r  r\   r{   r|   update_balancerH   r  )rC   r]   r^   r   r`   r   r
  
updateTypeorderIdrx   previousOrderArraypreviousOrderr   r   orderObjectparsedbalanceKeysr   
newBalancer   s                       rE   handle_account_updatez onetrading.handle_account_update  s   | ;;%%dllM4HE07DK== %%dllM4HE259DM(B7%%ff5
))Z>-IZ[qMq&&vz:G))&&+FH!%!5!5dkk4RW!X OO,>2FM"8,F%%fo>F//
;F^+0A0A&#0N#  !^^H5$!K MM+&%%f-F%%fh;FMM&!t{{I$67t{{H-^q#k*+ 	0AQ@J%##J/	0 	t||Y/(%%f-F%%fh;F}}HOOF#NN4==+*>?NN4==*5 )rF   c                 4    dddd}| j                  |||      S )Nr   r   	triggered)r  r  r  r   r   s      rE   r  z onetrading.parse_ws_order_status  s)    ($$/

 &&99rF   c                    | j                  |d      }| j                  |      }| j                         }| j                  |d      |d<   | j                  |d      |d<   || j                  |<   | j	                  | j                        | _        y )Ncurrency_codenew_availablefree
new_lockedused)rz   safe_currency_codeaccountrH   safe_balance)rC   rH   
currencyIdcoder-  s        rE   r  zonetrading.update_balance  s     %%g?
&&z2,,.**7OD**7LA$T((6rF   r0   c                   K   | j                          d{    | j                  |      }|d   }|d   }| j                  d   d   }| j                  | j                  di       }	| j                  |	|      }
|
t        | j                  dz         d|z   d	z   |z   }d
}| j                  | j                  |      }d}i }|Z| j                  |j                  |      }|:| j                  ||i       }| j                  ||d      }|sd}d|j                  |<   ni }| j                  ||      }|i ||<   d||   |<   g }t        |j                               }t        dt        |            D ]f  }t        |||      j                               }t        dt        |            D ]-  }| j                  |	|      }||   |d}|j                  |       / h |d
|dgd}| j                  ||| j!                  ||      ||       d{   }| j"                  r|j%                  ||      }| j'                  |||dd      S 7 '7 :w)a  

        https://developers.bitpanda.com/exchange/#candlesticks-channel

        watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
        :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
        Nr`   r   r"   r   r:   zO self interval is not supported, please provide one of the supported timeframesohlcv..CANDLESTICKSrJ   FUPDATE_SUBSCRIPTIONTr   )r   time_granularity)rK   
propertiesrg   )rh   ri   r<   ry   r=   r   r   clientssubscriptions	safe_boollistkeysr{   r|   r   rQ   r@   r   r   filter_by_since_limit)rC   r`   	timeframer   r   rR   ri   r   rS   r:   timeframeIdrT   rk   r]   rM   subscriptionohlcvMarketmarketSubscribedsubscriptionMarketIdr7  	marketIdsr   marketIdtimeframesr  marketTimeframeIdpropertyrX   ohlcvs                               rE   watch_ohlcvzonetrading.watch_ohlcv  s     !!!V$!$<iit$__T\\<D
ooj)<tww)zz{{'#-	9)s3??6+?+?AQRL'"oolHbI#'>>+y%#P '0D=AF(()9:!#|XF'%'L",0Xy)
**,-	q#i.) 	,A!%l9Q<&@&E&E&G!HAs#567 ,$(OOJ	$J!'0|(9" !!(+,	,  +",
 jjk43C3CGV3TVfhtuu??NN651E))%q$GGg 	"` vs"   IH=G.II 8I Ic           	      $   | j                  |d      }| j                  |      }| j                  |d      }| j                  |d      }| j                  | j                  di       }| j	                  ||      }d|z   dz   |z   }	| j                  |      | j                  |d      | j                  |d      | j                  |d	      | j                  |d
      | j                  |d      g}
| j                  | j                  |i       | j                  |<   | j                  | j                  |   |      }|(| j                  | j                  dd      }t        |      }|j                  |
       || j                  |   |<   |j                  ||	       y )Nr   ru   granularityr:   r2  r3  r   r   r   r   r   
OHLCVLimitr   )rz   r}   ry   r=   find_timeframer   r   ohlcvsrP   r   r   r\   )rC   r]   r^   r   r`   r   r?  r:   r>  r   r   storedr   s                rE   handle_ohlcvzonetrading.handle_ohlcv4  sw   F ##G->?!!(+##GV4oog}=__T\\<D
''Z@	V#c)I5NN8$Wf-Wf-We,Wg.Wh/
 #oodkk62FFV!4i@>%%dllL$GE*51Ff)/FI&vw'rF   c                     |xs | j                   }t        |j                               }t        dt	        |            D ](  }||   }||   d   |d   k(  s||   d   |d   k(  s&|c S  y )Nr   r&   r'   )r:   r;  r<  r{   r|   )rC   r>  r:   r<  r   keys         rE   rM  zonetrading.find_timeframeo  s|    24??
JOO%&q#d)$ 	Aq'C#v&)F*;;
3PX@Y]fgo]p@p
	 rF   c                     |S N rC   r]   r^   s      rE   handle_subscriptionszonetrading.handle_subscriptionsx  s	     rF   c                     |S rT  rU  rV  s      rE   handle_heartbeatzonetrading.handle_heartbeat  s	     rF   c                 V    t        | j                  dz   | j                  |      z         )N )r   r   r   rV  s      rE   handle_error_messagezonetrading.handle_error_message  s%     DGGcMDIIg,>>??rF   c           	         | j                  |d      }|| j                  ||       y | j                  |d      }i d| j                  d| j                  d| j                  d| j                  d| j                  d| j
                  d	| j                  d
| j                  d| j                  d| j                  d| j                  d| j                  d| j                  d| j                  d| j                  d| j                  d| j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  d}| j                  ||      }|
 |||       y y )NerrorrM   r   r   ACTIVE_ORDERS_SNAPSHOTINACTIVE_ORDERS_SNAPSHOTACCOUNT_UPDATEBALANCES_SNAPSHOTSUBSCRIPTIONSSUBSCRIPTION_UPDATED
PRICE_TICKPRICE_TICK_HISTORY	HEARTBEATMARKET_TICKER_UPDATESPRICE_POINT_UPDATESCANDLESTICK_SNAPSHOTCANDLESTICKAUTHENTICATEDFILL)DONEBOOKEDUPDATETRACKED	TRIGGEREDSTOP_TRACKEDSTOP_TRIGGERED)ry   r\  r   r  r#  r_   rW  r   rY  handle_price_point_updatesrP  handle_authentication_messager   )rC   r]   r^   r^  rM   handlershandlers          rE   handle_messagezonetrading.handle_message  s   1%%fg6w/
!7!7
!4#9#9
 %d&8&8
 '(:(:	

 d88
  !=!=
 T66
 #D$=$=
 $,,
 !$";";
 ..
 $T%7%7
 "4#B#B
 #D$5$5
 4,,
  T??!
" D''#
$ ''))))**,, //"111
4 //(D1FG$ rF   c                     |S rT  rU  rV  s      rE   ru  z%onetrading.handle_price_point_updates  s	    & rF   c                 d    | j                  |j                  d      }||j                  d       |S )NauthenticatedT)ry   futuresr\   )rC   r]   r^   futures       rE   rv  z(onetrading.handle_authentication_message  s/     ANN4 rF   c                   K   g }t        |      }|dk(  r$t        | j                  j                               }n| j	                  |      }| j
                  d   d   }| j                  | j                  |      }	d}
i }|	g| j                  |	j                  |      }|Gt        dt        |            D ].  }||   }| j                  ||d      }|rd}
d |	j                  |<   0 ni }t        dt        |            D ]  }||   }d||<    |
|d<   t        |j                               |d	   d   d
<   | j                  ||| j                  ||      ||       d {   S 7 w)Nr   r"   r   rJ   Fr5  TrM   rN   instrument_codes)r|   r;  markets_by_idr<  
market_idsr<   ry   r8  r9  r{   r:  rQ   r@   )rC   rT   rX   rk   rm   rR   rD  
numSymbolsrS   r]   rM   r@  r   r   rB  s                  rE   rj   zonetrading.watch_many  su    	\
?T//4467I0Iiit$s3??6+?+?AQRL'q#i.1 FA(|H'+~~lHe'T$+4AE,,-=>F  "q#i.) 	*A |H%)L"	* 59,:K:K:M5N
A12ZZ[$2B2B7F2SUegstttts   CEB	EEEc                 P  K   | j                   d   d   }| j                  |      }d}|j                  d      }| j                  |j                  |      }|C| j                          d| j                  d}| j                  ||| j                  ||      |       | d {   S 7 w)Nr"   r   r|  AUTHENTICATE)rM   	api_token)	r<   r]   r~  ry   r9  check_required_credentialsapiKeyrQ   extend)rC   rR   rS   r]   rT   r~  r|  rX   s           rE   rO   zonetrading.authenticate  s     iit$S!%/(<(<kJ ++-&![[G JJsKWf)E{S||s   BB&B$ B&rT  )1__name__
__module____qualname__r   rB   r   rY   r_   strr   rl   r   r   rr   r   r   r~   r
   r   r   r   r   r	   r   r   r   r   r   r   r   r   r   r  r#  r  r  r;  rI  rP  rM  rW  rY  r\  ry  ru  rv  rj   rO   __classcell__)rD   s   @rE   r   r      s    @# @D *, S S42B 68 _ _F _4 6:" @7 @ @80F 0<"H 37TX\eg 'C 's 'RU 'lpqvlw 'R @DB !S ! !S\ !>2+ 2+ho4 04$UYbd ( (C (s (imnsit (T4.V 4.ln`
:O2F O2bN6F N6`:7" 8<$]ajl @H @HC @HWZ @Hquvzq{ @HD9(6 9(v6 	v 		@6 	@"%V "%H *F  []eg uPW u: )+ rF   r   )ccxt.async_supportccxt ccxt.async_support.base.ws.cacher   r   ccxt.base.typesr   r   r   r   r	   r
   r   r   r   r   !ccxt.async_support.base.ws.clientr   typingr   ccxt.base.errorsr   r   ccxt.base.preciser   async_supportr   rU  rF   rE   <module>r     s?     Z f f f 4  * ) %|##.. |rF   