
    ij                         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 d dlmZ d dlmZ d dlmZ d dlmZ  G d d	ej        j                  ZdS )
    N)ArrayCacheBySymbolByIdArrayCacheByTimestamp)	BalancesIntOrder	OrderBookStrStringsTickerTickersTrade)Client)List)ExchangeError)NotSupportedc            
           e Zd Z 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Z/S ))
onetradingc                     |                      t          t          |                                           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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    Y/var/www/html/crypto-bot/backend/venv/lib/python3.11/site-packages/ccxt/pro/onetrading.pyr>   zonetrading.describe   sA   j$ 7 7 @ @ B B $# $$!%#"&"
 
 9 '* !*"# 
 !*"# 
 !*"$ 
 !*"$ 
 !("# 
 !("# 
 !'"# 
 !("# 
 !)"# C% %( (Ry>E
 >E
 > > >	    returnc                   K   |                      |           d{V  | j        d         d         }d}d}|                     | j        dd          }d|d	digd
}|                     ||          }|                     |||||           d{V S )am  
        :see: 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_HISTORYr5   r   	SUBSCRIBEnametyper5   channels)authenticater8   safe_integerr9   r<   watch)r?   paramsurlmessageHashsubscribeHashbpRemainingQuota	subscriberequests           rA   watch_balancezonetrading.watch_balanceR   s       '''''''''it$),,T\;OQTUU"2 -
 
	 ""9f55ZZ['='RRRRRRRRRrB   c                 t    |                      |          | _        d}|                    | j        |           d S )NrE   )parse_balancerE   resolve)r?   clientmessagerQ   s       rA   handle_balance_snapshotz"onetrading.handle_balance_snapshotj   s:    : ))'22t|[11111rB   symbolc                    K   |                                   d{V  |                     |          }|d         }d}d|z   }ddddgd}|                     ||||g|           d{V S )	a  
        :see: 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.rG   INLINErH   price_points_moderJ   rK   )load_marketsmarket
watch_many)r?   r]   rO   rf   subscriptionHashrQ   rU   s          rA   watch_tickerzonetrading.watch_ticker   s       !!!!!!!!!V$$!*&( ,)1 
 
 __[';KfXW]^^^^^^^^^rB   Nsymbolsc                    K   |                                   d{V  |                     |          }|g }d}d}ddddgd}|                     |||||           d{V }|                     |d|          S )	a  
        :see: 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>`
        Nr_   tickersrG   ra   rb   rd   r]   )re   market_symbolsrg   filter_by_array)r?   rj   rO   rh   rQ   rU   rl   s          rA   watch_tickerszonetrading.watch_tickers   s       !!!!!!!!!%%g..?G* ,)1 
 
 W>NPWY_````````##GXw???rB   rZ   c                 N   |                      |dg           }|                     |d          }t          dt          |                    D ]}||         }|                     |d          }|                     |          }|                     |          | j        |<   |                     |          }	|	| j        |         d<   |                     |	          | j        |         d<   |	                    | j        |         d|z              |	                    | j        d           d S )	Nticker_updatestimer   
instrument	timestampdatetimer`   rl   )

safe_valuesafe_stringrangelensafe_symbolparse_ws_tickerrl   	parse8601iso8601rY   )
r?   rZ   r[   rl   ru   itickermarketIdr]   rt   s
             rA   handle_tickerzonetrading.handle_ticker   s   " //'+;R@@##GV44q#g,,'' 	E 	EAQZF''==H%%h//F#'#7#7#?#?DL x00I09DL -/3||I/F/FDL ,NN4</V1CDDDDt|Y/////rB   c                    |                      |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 |                     |d          |d|          S )Nrs   r]   rt   ru   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)rw   safe_tickerrz   safe_number)r?   r   rf   r   s       rA   r{   zonetrading.parse_ws_ticker   s    ##FL99 !
d&&x88!
!
 !
 D$$VV44	!

 4##FE22!
 4!
 !
 4!
 !
 D!
 D!
 T%%fl;;!
 D$$V\::!
 T!
 d&&v~>>!
  $**63LMM!!
" t#!
$ ++FH==)!
 !
 !
* +  	rB   sincelimitc                 t  K   |                                   d{V  d}|%|                     |          }|d         }|d|z   z  }|                     |           d{V  | j        d         d         }d}|                     | j        dd	          }	d
|	ddigd}
|                     |
|          }|                     |||||           d{V }| j        r|	                    ||          }| 
                    ||||          }t          |          }|dk    r|                     ||||           d{V S |S )a@  
        :see: 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   rF   r5   r   rG   rH   rI   r   )re   rf   rL   r8   rM   r9   r<   rN   
newUpdatesgetLimitfilter_by_symbol_since_limitry   watch_my_trades)r?   r]   r   r   rO   rQ   rf   rP   rR   rS   rT   rU   trades	numTradess                 rA   r   zonetrading.watch_my_trades   s      !!!!!!!!! [[((FH%F3<'K'''''''''it$),,T\;OQTUU"2 -
 
	 ""9f55zz#{G]GTTTTTTTT? 	3OOFE22E22665%PPKK	>>--feUFKKKKKKKKKrB   c                   K   |                                   d{V  |                     |          }|d         }d|z   }d}d}||}dd|dgd}|                     ||||g|           d{V }	|	                                S )	aA  
        :see: 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   rG   )rH   depthrd   )re   rf   rg   r   )
r?   r]   r   rO   rf   rQ   rh   r   rU   	orderbooks
             rA   watch_order_bookzonetrading.watch_order_book&  s       !!!!!!!!!V$$!&'E )" 
 
 //+w@PSYRZ\bcccccccc	   rB   c                    |                      |d          }|                      |d          }|                     |          }|                      |d          }|                     |          }d|z   }|                     | j        |          }	|	|                     i           }	|dk    r/|                     |||dd          }
|	                    |
           nN|dk    r.|                     |d	g           }|                     |	|           nt          | j
        d
z   |z             ||	d<   ||	d<   |                     |          |	d<   |	| j        |<   |                    |	|           d S )NrJ   instrument_coderr   r   ORDER_BOOK_SNAPSHOTbidsasksORDER_BOOK_UPDATEchangesz1 watchOrderBook() did not recognize message type noncert   ru   )rw   rz   r|   rv   
orderbooks
order_bookparse_order_bookresethandle_deltasr   idr}   rY   )r?   rZ   r[   rJ   r   r]   dateTimert   channelr   snapshotr   s               rA   handle_order_bookzonetrading.handle_order_bookC  s   : 00##G->??!!(++##GV44NN8,,	F"OODOV<<	++I(((,,WfiQWXXHOOH%%%%(((oogy"==Gy'2222tw)\\_ccddd&	'!*	+ $Y 7 7	*"+y'*****rB   c                 J   |                      |dd          }|                     |d          }|dk    r|d         }|                    |           d S |dk    r|d         }|                    |           d S t          | j        dz   |                     |          z             )	Nr!      r   BUYr   SELLr   z/ watchOrderBook() received unknown change type )parse_bid_askrw   
storeArrayr   r   json)r?   r   deltabidAskrJ   r   r   s          rA   handle_deltazonetrading.handle_deltaw  s     ##E1a00q))5==V$DOOF#####V^^V$DOOF#####tw)ZZ]a]f]fgl]m]mmnnnrB   c                 ~    t          dt          |                    D ]}|                     |||                    d S )Nr   )rx   ry   r   )r?   r   deltasr~   s       rA   r   zonetrading.handle_deltas  sJ     q#f++&& 	4 	4Ai3333	4 	4rB   c                   K   |                                   d{V  d}|%|                     |          }|d         }|d|z   z  }|                     |           d{V  | j        d         d         }|                     |dd          }|                     | j        d	d
          }	d|	d|igd}
|                     |
|          }|                     |||||           d{V }| j	        r|
                    ||          }|                     ||||          }t          |          }|dk    r|                     ||||           d{V S |S )a  
        :see: 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   rF   r5   r   rG   rH   rI   r   )re   rf   rL   r8   rw   rM   r9   r<   rN   r   r   r   ry   watch_orders)r?   r]   r   r   rO   rQ   rf   rP   rR   rS   rT   rU   r   	numOrderss                 rA   r   zonetrading.watch_orders  s      !!!!!!!!![[((FH%F3<'K'''''''''it$((<MNN,,T\;OQTUU"2 M
 
	 ""9f55zz#{G]GTTTTTTTT? 	3OOFE22E22665%PPKK	>>**65%HHHHHHHHHrB   c                 T   | j         0|                     | j        dd          }t          |          | _         |                     |          }| j         }|                    |           |                    | j         d|d         z              |                    | j         d           d S )NordersLimit  orders:r]   r   )r   rM   r9   r   parse_trading_orderappendrY   )r?   rZ   r[   r   orderr   s         rA   handle_tradingzonetrading.handle_trading  s    Z ;%%dlM4HHE077DK((11et{Ih$?@@@t{H-----rB   c           
         |                      |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 d d|          S )Nrr   r   _r   order_idclientOrderId	client_idr   rt   ru   lastTradeTimestampr]   rJ   timeInForcepostOnlysidepricematched_price	stopPricetrigger_priceamountcostr   filled	remainingstatus)r   r   feer   )rw   rz   
safe_orderr|   safe_string_lowersafe_number_2r   parse_trading_order_status)r?   r   rf   ru   r   r]   s         rA   r   zonetrading.parse_trading_order  s   j ##E622##E+<==!!(FC88  
$""5*55 
T--e[AA 
 E 
 11	 

  
 !$ 
 f 
 D 
 4 
  
 D**5&99 
 T''wHH 
 ))%AA 
 d&&uh77 
 D 
  t! 
" d# 
$ ))%==55d6F6Fuh6W6WXX+ 
  
  
, -  	rB   c                 D    dddddddd}|                      |||          S )Ncanceledrejectedclosed)	CANCELLED
SELF_TRADEFILLED_FULLYINSUFFICIENT_FUNDSINSUFFICIENT_LIQUIDITYTIME_TO_MARKET_EXCEEDEDLAST_PRICE_UNKNOWNrw   r?   r   statusess      rA   r   z%onetrading.parse_trading_order_status^  s=    #$$",&0'1",
 
 &&999rB   c                    | j         0|                     | j        dd          }t          |          | _         | j        0|                     | j        dd          }t          |          | _        |                     |dg           }t          |          }|dk    rd S | j         }t          dt          |                    D ]}|                     ||                   }| 	                    |dd          }	|
                    |           |                    | j         d|	z              |                     ||         d	g           }
t          dt          |
                    D ]l}|                     |
|                   }| 	                    |d|	          }	| j        
                    |           |                    | j        d
|	z              m|                    | j         d           |                    | j        d           d S )Nr   r   tradesLimitr   r   r]    r   r   	myTrades:r   )r   rM   r9   r   r   rv   ry   rx   parse_orderrw   r   rY   parse_trade)r?   rZ   r[   r   	rawOrdersrawOrdersLengthr   r~   r   r]   	rawTradesiitrades                rA   handle_orderszonetrading.handle_ordersj  s   p ;%%dlM4HHE077DK= %%dlM4HHE2599DMOOGXr::	i..aFq#i..)) 
	D 
	DA$$Yq\22E%%eXr::FMM%   NN4;	F(:;;;	!hCCIAs9~~.. D D((277))%6BB$$U+++t}kF.BCCCC	D
 	t{H---t}j11111rB   c                    | j         0|                     | j        dd          }t          |          | _         | j        0|                     | j        dd          }t          |          | _        d }| j         }|                     |di           }|                     |d          }|dk    s|dk    s|dk    r|                     |d	          }|                     |d
d          }	|                     | j         d|d          }
|                     |
di           }|d         }| 	                    |d          }| 
                    |          }|dk    r|dk    rd}||||                     |	          |	d}|                    |           nA|                     |          }|                     |dd          }|                    |           |                    | j         d|z              |                    | j         d           g d}t          dt!          |                    D ]5}|                     |||                   }||                     |           6|                    | j        d           |dk    r|                     |          }|                     |dd          }| j                            |           |                    | j        d|z              |                    | j        d           d S d S )Nr   r   r   updaterJ   ORDER_REJECTEDORDER_CLOSEDSTOP_ORDER_TRIGGEREDr   rr   rt   r   Fr   r]   filled_amountr   )r   r]   r   rt   ru   r   r   r   )lockedunlockedspentspent_on_feescrediteddeductedrE   TRADE_SETTLEDr   r   )r   rM   r9   r   r   rv   rw   safe_string_2rn   r   parse_ws_order_statusr|   r   r   rY   rx   ry   update_balancerE   r   )r?   rZ   r[   r   r]   r   r  
updateTypeorderIdru   previousOrderArraypreviousOrderr   r   orderObjectparsedbalanceKeysr~   
newBalances                      rA   handle_account_updatez onetrading.handle_account_update  s   | ;%%dlM4HHE077DK= %%dlM4HHE2599DM(B77%%ff55
)))Z>-I-IZ[qMqMq&&vz::G))&&+FFH!%!5!5dk4RW!X!X OO,>2FFM"8,F%%fo>>F//
;;F^++!#  !^^H55$ K MM+&&&&%%f--F%%fh;;FMM&!!!t{I$6777t{H---^^^q#k**++ 	0 	0AQ@@J%##J///t|Y///((%%f--F%%fh;;FM  (((NN4=+*>???NN4=*55555 )(rB   c                 <    dddd}|                      |||          S )Nr   r   	triggered)r  r	  r
  r   r   s      rA   r  z onetrading.parse_ws_order_status  s1    ($$/
 

 &&999rB   c                 :   |                      |d          }|                     |          }|                                 }|                      |d          |d<   |                      |d          |d<   || j        |<   |                     | j                  | _        d S )Ncurrency_codenew_availablefree
new_lockedused)rw   safe_currency_codeaccountrE   safe_balance)r?   rE   
currencyIdcoder(  s        rA   r  zonetrading.update_balance  s     %%g??
&&z22,,..**7ODD**7LAA$T((66rB   r,   c                   K   |                                   d{V  |                     |          }|d         }|d         }| j        d         d         }|                     | j        di           }	|                     |	|          }
|
t          | j        dz             d|z   d	z   |z   }d
}|                     | j        |          }d}i }|\|                     |j        |          }|=|                     ||i           }| 	                    ||d          }|sd}d|j        |<   ni }|                     ||          }|i ||<   d||         |<   g }t          |                                          }t          dt          |                    D ]}t          |||                                                            }t          dt          |                    D ]8}|                     |	|          }||         |d}|                    |           9|d
|dgd}|                     |||                     ||          ||           d{V }| j        r|                    ||          }|                     |||dd          S )a  
        :see: 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   r6   zO self interval is not supported, please provide one of the supported timeframesohlcv..CANDLESTICKSrG   FUPDATE_SUBSCRIPTIONTr   )r   time_granularity)rH   
propertiesrd   )re   rf   r8   rv   r9   r   r   clientssubscriptions	safe_boollistkeysrx   ry   r   rN   r<   r   r   filter_by_since_limit)r?   r]   	timeframer   r   rO   rf   r   rP   r6   timeframeIdrQ   rh   rZ   rJ   subscriptionohlcvMarketmarketSubscribedsubscriptionMarketIdr2  	marketIdsr~   marketIdtimeframesr  marketTimeframeIdpropertyrU   ohlcvs                               rA   watch_ohlcvzonetrading.watch_ohlcv  s      !!!!!!!!!V$$!$<it$__T\<DD
ooj)<<tw)zz{{{'#-	9)s33??6+?AQRRL'"oolHbII#'>>+y%#P#P ' B0D=AF()9:!#|XFF'%'L",0Xy)
**,,--	q#i..)) 	, 	,A!%l9Q<&@&E&E&G&G!H!HAs#56677 , ,$(OOJ	$J$J!'0|(9  !!(++++,  +", 
 
 jjk43C3CGV3T3TVfhtuuuuuuuu? 	2NN6511E))%q$GGGrB   c           	         |                      |d          }|                     |          }|                      |d          }|                     |d          }|                     | j        di           }|                     ||          }d|z   dz   |z   }	|                     |          |                     |d          |                     |d          |                     |d	          |                     |d
          |                     |d          g}
|                     | j        |i           | j        |<   |                     | j        |         |          }|+|                     | j        dd          }t          |          }|
                    |
           || j        |         |<   |                    ||	           d S )Nr   rr   granularityr6   r-  r.  r   r   r   r   r   
OHLCVLimitr   )rw   rz   rv   r9   find_timeframer|   r   ohlcvsrM   r   r   rY   )r?   rZ   r[   r   r]   r   r:  r6   r9  r   r  storedr   s                rA   handle_ohlcvzonetrading.handle_ohlcv#  s   F ##G->??!!(++##GV44oog}==__T\<DD
''Z@@	V#c)I5NN8$$Wf--Wf--We,,Wg..Wh//
 #oodk62FFFV!4i@@>%%dlL$GGE*511Ff)/FI&vw'''''rB   c                    |p| j         }t          |                                          }t          dt	          |                    D ]>}||         }||         d         |d         k    r||         d         |d         k    r|c S ?d S )Nr   r"   r#   )r6   r6  r7  rx   ry   )r?   r9  r6   r7  r~   keys         rA   rH  zonetrading.find_timeframe^  s    24?
JOO%%&&q#d))$$ 	 	Aq'C#v&)F*;;;
3PX@Y]fgo]p@p@p


trB   c                     |S N r?   rZ   r[   s      rA   handle_subscriptionszonetrading.handle_subscriptionsg  s	     rB   c                     |S rO  rP  rQ  s      rA   handle_heartbeatzonetrading.handle_heartbeatu  s	     rB   c                 \    t          | j        dz   |                     |          z             )N )r   r   r   rQ  s      rA   handle_error_messagezonetrading.handle_error_message  s)     DGcMDIIg,>,>>???rB   c           	      L   |                      |d          }||                     ||           d S |                      |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}|                      ||          }| |||           d S d S )NerrorrJ   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)rv   rW  r   r  r  r\   rR  r   rT  handle_price_point_updatesrK  handle_authentication_messager   )r?   rZ   r[   rY  rJ   handlershandlers          rA   handle_messagezonetrading.handle_message  s   11%%fg666Fw//
!7
!4#9
 %d&8
 '(:	

 d8
  !=
 T6
 #D$=
 $,
 !$";
 .
 $T%7
 "4#B
 #D$5
 4,
  T?!
" D'#
$ '))*, /"11
 
 
4 //(D11GFG$$$$$ rB   c                     |S rO  rP  rQ  s      rA   rp  z%onetrading.handle_price_point_updates  s	    & rB   c                 j    |                      |j        d          }||                    d           |S )NauthenticatedT)rv   futuresrY   )r?   rZ   r[   futures       rA   rq  z(onetrading.handle_authentication_message  s6     AANN4   rB   c                   K   g }t          |          }|dk    r't          | j                                                  }n|                     |          }| j        d         d         }|                     | j        |          }	d}
i }|	m|                     |	j        |          }|Nt          dt          |                    D ]/}||         }| 
                    ||d          }|sd}
d |	j        |<   0ni }t          dt          |                    D ]}||         }d||<   |
|d<   t          |                                          |d	         d         d
<   |                     |||                     ||          ||           d {V S )Nr   r   r   rG   Fr0  TrJ   rK   instrument_codes)ry   r6  markets_by_idr7  
market_idsr8   rv   r3  r4  rx   r5  rN   r<   )r?   rQ   rU   rh   rj   rO   r?  
numSymbolsrP   rZ   rJ   r;  r~   r   r=  s                  rA   rg   zonetrading.watch_many  s     	\\
??T/446677II00Iit$s33??6+?AQRRL'q#i..11 F FA(|H'+~~lHe'T'T$+ F4AE,-=>F  "q#i..)) 	* 	*A |H%)L""59,:K:K:M:M5N5N
A12ZZ[$2B2B7F2S2SUegstttttttttrB   c                 b  K   | j         d         d         }|                     |          }d}|                    d          }|                     |j        |          }|J|                                  d| j        d}|                     |||                     ||          |           | d {V S )Nr   r   rw  AUTHENTICATE)rJ   	api_token)	r8   rZ   ry  rv   r4  check_required_credentialsapiKeyrN   extend)r?   rO   rP   rZ   rQ   ry  rw  rU   s           rA   rL   zonetrading.authenticate  s      it$S!!%//(<kJJ ++---&![ G JJsKWf)E)E{SSS||||||rB   rO  )0__name__
__module____qualname__r>   r   rV   r\   strr   ri   r
   r   ro   r   r   r{   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r6  rD  rK  rH  rR  rT  rW  rt  rp  rq  rg   rL   __classcell__)r@   s   @rA   r   r      s0       ? ? ? ? ?B *, S S S S S S02 2 2B 68 _ _ _F _ _ _ _0 6:" @ @7 @ @ @ @ @40F 0 0 0 0<" " " "H 37TX\eg % %C %s %RU %lpqvlw % % % %N @DB ! !S ! !S\ ! ! ! !:2+ 2+ 2+ 2+ 2+ho o o4 4 4 04$UYbd & & &C &s &imnsit & & & &P4.V 4. 4. 4. 4.ln n n n`
: 
: 
:O2F O2 O2 O2 O2bM6F M6 M6 M6 M6^: : :7 7 7" 8<$]ajl >H >H >HC >HWZ >Hquvzq{ >H >H >H >H@9(6 9( 9( 9( 9(v   6    	v 	 	 	 		@6 	@ 	@ 	@ 	@"%V "% "% "% "%H    *F     []eg u uPW u u u u: )+        rB   r   )ccxt.async_supportccxt ccxt.async_support.base.ws.cacher   r   ccxt.base.typesr   r   r   r   r	   r
   r   r   r   !ccxt.async_support.base.ws.clientr   typingr   ccxt.base.errorsr   r   async_supportr   rP  rB   rA   <module>r     s        Z Z Z Z Z Z Z Z a a a a a a a a a a a a a a a a a a a a a a 4 4 4 4 4 4       * * * * * * ) ) ) ) ) )l l l l l#. l l l l lrB   