
    E#iM                       S SK Jr  S SKJr  S SKrS SKrS SKrS SKJrJ	r	J
r
JrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJ r J!r!J"r"  S SK#J$r$  S SK%J&r&  S SK%J'r'  S SK%J(r(  S S	K%J)r)  S S
K%J*r*  S SK%J+r+  S SK%J,r,  S SK%J-r-  S SK%J.r.  S SK%J/r/  S SK%J0r0  S SK%J1r1  S SK%J2r2  S SK3J4r4  S SK5J6r6   " S S\\5      r7g)    )Exchange)ImplicitAPIN)AnyBalances
CurrenciesCurrencyDepositAddressIntLeverage
MarginModeMarginModificationMarketNumOrder	OrderBookOrderRequest	OrderSide	OrderTypePositionStrStringsTickerTickersFundingRateFundingRatesTradeTradingFeeInterfaceTransactionTransferEntry)List)ExchangeError)AuthenticationError)PermissionDenied)AccountSuspended)ArgumentsRequired)
BadRequest)	BadSymbol)InsufficientFunds)InvalidOrder)OrderNotFound)NotSupported)OperationFailed)DDoSProtection)	TICK_SIZE)Precisec                   J	  ^  \ rS rSrS\4U 4S jjr0 4S\4S jjr0 4S\4S jjr	S\
\   4S jrS rS rS	\S\4S
 jr0 4S\
\   4S jjrSSS0 4S\S\S\S\S\
\   4
S jjrSS	\S\4S jjrSS0 4S\S\S\S\
\   4S jjrSS\S	\S\4S jjrS0 4S\S\S\4S jjr0 4S\S\4S jjrS0 4S\S\4S jjrSS	\S\4S jjr SSS0 4S\!S\S\4S jjr"SS	\4S jjr#0 4S\4S jjr$SS	\4S jjr%0 4S\S\&4S  jjr'S0 4S\S\(4S! jjr)0 4S\S\&4S" jjr*S0 4S\S\(4S# jjr+SS$\S	\S\&4S% jjr,0 4S\-4S& jjr.S\-4S' jr/SS0 4S\S\S\S\
\0   4S( jjr1S0 4S\S\
\0   4S) jjr20 4S\4S* jjr3SS+\S	\4S, jjr40 4S\S-\5S.\64S/ jjr70 4S\S.\64S0 jjr80 4S\S.\64S1 jjr9S0 4S\S2\:S-\5S3\6S4\;4
S5 jjr<S0 4S\S2\:S-\5S3\6S4\;4
S6 jjr=0 4S7\
\>   4S8 jjr?S9 r@S2\!4S: jrASS;\S	\S\B4S< jjrCS=\!4S> jrDS0 4S?\S\!4S@ jjrES0 4S\!4SA jjrFS0 4SB\
\   S\!4SC jjrG0 4SD\4SE jjrHS0 4S?\S\!4SF jjrISSS0 4S\!S\S\S\
\B   4SG jjrJSSS0 4S\!S\S\S\
\B   4SH jjrKSSS0 4S\!S\S\S\
\B   4SI jjrLSSS0 4S\!S\S\4SJ jjrMSSS0 4S\!S\S\4SK jjrN0 4SL\S3\6SM\SN\S\O4
SO jjrPSSS0 4SL\!S\S\S\
\O   4SP jjrQSSQ\SR\RS\O4SS jjrSS=\!S\4ST jrT0 4SL\S\
\U   4SU jjrV0 4SL\S\U4SV jjrWSSR\RS\U4SW jjrXSSS0 4SL\!S\S\S\
\Y   4SX jjrZSSS0 4SL\!S\S\S\
\Y   4SY jjr[SSZ\SR\RS\Y4S[ jjr\S=\4S\ jr]S0 4S]\S\!4S^ jjr^0 4S\S3\6S\_4S_ jjr`0 4S\S3\6S\_4S` jjra0 4S\S3\6S\_4Sa jjrbSSb\S	\S\_4Sc jjrc0 4S\S\d4Sd jjreSSe\S	\S\d4Sf jjrfS0 4Se\gS\!4Sg jjrhSSS0 4S\!S\S\4Sh jjriSSR\R4Si jjrjS0 4Sj\4Sk jjrkS0 4SL\S3\6Sl\Sm\!S\Y4
Sn jjrlSo rmSSS0 4S\!S\S\4Sp jjrnSS	\4Sq jjroS0 4S\S-\5S\B4Sr jjrp0 4S\
\0   4Ss jjrqS0 4S\!4St jjrrS0 4Su\sS\!4Sv jjrtSS0 4S?\S\S2\:S-\5S3\;S4\;S\B4Sw jjru0 4S\S\v4Sx jjrwSS]\S\v4Sy jjrx0 4S\S\y4Sz jjrzSS{\S	\S\y4S| jjr{S} r|S~S0 SS4S jr}S r~S\s4U 4S jjrS\gS\S\S\S\S\4S jrSrU =r$ )bingx   returnc                 	  > U R                  [        [        U ]  5       0 SS_SS_SS/_SS_S	S
_SS_SS_S0 SS _SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S S_0 S!S_S"S_S#S_S$S_S%S_S&S_S'S_S(S_S)S_S*S_S+S_S,S_S-S_S.S_S/S_S0S_S1S_E0 S2S_S3S_S4S_S5S_S6S_S7S_S8S_S9S_S:S_S;S_S<S_S=S_S>S_S?S@_SAS_SBS_SCS_E0 SDS_SES_SFS_SGS_SHS_SIS_SJS_SKS_SLS_SMS_SNS_SOS_SPS_SQS_SRS_SSS_STS_E0 SUS_SVS_SWS_SXS_SYS_SZS_S[S_S\S_S]S_S^S_S_S_S`S_SaS_SbS_ScS_SdS_SeS_ESSSSSSSSSSSf.
E_SgSh_SiSjSkSkSkSkSkSkSkSkSkSkSkSl.SSm0SnSoSpSq._SrSSsU R	                  St5      U R	                  St5      Su.SvU R	                  Sw5      U R	                  Sx5      Su.Sy._SzSSS{._S|S
S}SsS~S0000SsSSSSSSSSS.0SSSSSSSSSS.	SSSSSSSSSS.	S.S.SSsSSS.00S}SSSSS.SS0S.0S.SsSSSSSS.0SSSSSSSSSSSS.SSSSSSSSSSS.
S.S.SsSSSSSSSSSSSS.0SSSSSSSSSSSSSSSS.SSSSSSSSS.SSSS.S.S.SsSS00SsSS00S.S.S
SsSSSSSSS.0SSSSSSSSSSS.
SSSSSSS.SSS.S.S.0S
S}SsSSSS.000S
S}SSSSSSSS.SSSSS.S.00S
S}SSSS.SSSSSS.S.00S}SSSSS.SS0S.0S
S}SS0SSS.S.00S.SS}SS0SS0SS0S.00S
S}SS0SSSS.S.00S}SSSSS.SS0S.0S
SSS00SsSS00S.0S.S
S}SsSSSSSSSSS.000S._SSSSSSSSSSSSSSSS._S[
        _S0 S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _[        [        [        [        [        [        [        [        [        [        [         [        [        S.E0 S._SSSSSSS._SSSSSSSS.SSSSSS.SSSSSSSS.SSSSSS.S.SSSSSSS.SSSSSSS.SS.SSSSS.SSSSSSSS.SS0SSSSSS.SSSSS.SS SSSS.SSGS GSSSSGS.SSS S GSSSSGS.GSGS0GS.	GSSS S GS.S GS	.GSS}S0S S SGS
.SSSGS.S SS GS.GS.GSGS0GSGS0GS.GSS GS.GSGS0GSGS0GS.GS.GS.E5      $ (  Nidr1   nameBingX	countriesUS	rateLimitd   versionv1	certifiedTprohasCORSspotmarginFswapfutureoption	addMarginborrowCrossMarginborrowIsolatedMarginborrowMargincancelAllOrderscancelAllOrdersAftercancelOrdercancelOrderscloseAllPositionsclosePositioncreateMarketBuyOrderWithCostcreateMarketOrderWithCostcreateMarketSellOrderWithCostcreateOrdercreateOrders$createOrderWithTakeProfitAndStopLosscreateReduceOnlyOrdercreateStopLossOrdercreateStopOrdercreateTakeProfitOrdercreateTrailingAmountOrdercreateTrailingPercentOrdercreateTriggerOrder	editOrderfetchAllGreeksfetchBalancefetchBorrowInterestfetchBorrowRatefetchBorrowRateHistoriesfetchBorrowRateHistoryfetchBorrowRatesfetchBorrowRatesPerSymbolfetchCanceledOrdersfetchClosedOrdersfetchCrossBorrowRatefetchCrossBorrowRatesfetchCurrenciesfetchDepositAddressfetchDepositAddressesfetchDepositAddressesByNetworkfetchDepositsfetchDepositWithdrawFeeemulatedfetchDepositWithdrawFeesfetchFundingRatefetchFundingRateHistoryfetchFundingRatesfetchGreeksfetchIsolatedBorrowRatefetchIsolatedBorrowRatesfetchLeveragefetchLiquidationsfetchMarginAdjustmentHistoryfetchMarginModefetchMarketsfetchMarkOHLCVfetchMarkPricefetchMarkPricesfetchMyLiquidationsfetchMyTrades
fetchOHLCVfetchOpenInterestfetchOpenOrdersfetchOptionfetchOptionChain
fetchOrderfetchOrderBookfetchOrdersfetchPositionfetchPositionHistoryfetchPositionModefetchPositionsfetchPositionsHistoryfetchTickerfetchTickers	fetchTimefetchTradesfetchTradingFeefetchTransfersfetchVolatilityHistory)
fetchWithdrawalsreduceMarginrepayCrossMarginrepayIsolatedMarginsandboxsetLeverage	setMarginsetMarginModesetPositionModetransferhostnamez	bingx.comurlszwhttps://github-production-user-asset-6210df.s3.amazonaws.com/1294454/253675376-6983b72e-4999-4549-b177-33b374c195e3.jpgz#https://open-api.{hostname}/openApi)fundrB   rD   contractwalletsuser
subAccountaccountcopyTradingcswapapiz'https://open-api-vst.{hostname}/openApizhttps://bingx.com/z!https://bingx-api.github.io/docs/zhttps://bingx.com/invite/OHETOM)logor   testwwwdocreferralfeesgetz0.001)feeSidemakertakerquotez0.0002z0.0005)	tierBasedrB   rD   requiredCredentials)apiKeysecretr   privateaccount/balance   )server/timezcommon/symbolszmarket/tradesmarket/depthmarket/klinezticker/24hrticker/pricezticker/bookTicker      )	ztrade/querytrade/openOrdersztrade/historyOrdersztrade/myTradesuser/commissionRater   zoco/orderListzoco/openOrderListzoco/historyOrderList)	trade/orderztrade/canceltrade/batchOrdersztrade/order/cancelReplaceztrade/cancelOrdersztrade/cancelOpenOrderstrade/cancelAllAfterz	oco/orderz
oco/cancel)r   post)publicr   r   )r   r   )zget/asset/transferasset/transfercapital/deposit/hisreccapital/withdraw/historyzpost/asset/transfer)r=   v2v3)r   zmarket/historicalTradeszmarket/markPriceKlinesztrade/multiAssetsRulestradingRules)positionSide/dualtrade/batchCancelReplaceztrade/fullOrdermaintMarginRatioztrade/positionHistoryzpositionMargin/historyztwap/openOrdersztwap/historyOrdersztwap/orderDetailtrade/assetModezuser/marginAssets)
ztrade/cancelReplacer   r   ztrade/closePositionztrade/getVstz
twap/orderztwap/cancelOrderr   ztrade/reverseztrade/autoAddMargin)r   zquote/contractszquote/pricezquote/depthzquote/tradeszquote/premiumIndexzquote/fundingRatequote/klineszquote/openInterestzquote/tickerquote/bookTicker)user/balanceuser/positionszuser/incomer   ztrade/openOrderr   trade/marginTypetrade/leveragetrade/forceOrdersztrade/allOrderstrade/allFillOrdersztrade/fillHistoryzuser/income/exportr   r   )r   r   trade/closeAllPositionsr   r   r   trade/positionMarginztrade/order/test)r   r   trade/allOpenOrders)r   r   deleter   r   )zmarket/contractszmarket/premiumIndexzmarket/openInterestzmarket/klinesr   zmarket/ticker)
r   r   r   r   ztrade/orderDetailztrade/orderHistoryr   r   r   r   )r   r   r   r   r   r   )r   ztrade/cancelOrder)allPosition	allOrdersbalance)zcapital/config/getallzcapital/deposit/addresszcapital/innerTransfer/recordsz"capital/subAccount/deposit/addresszcapital/deposit/subHisrecz(capital/subAccount/innerTransfer/recordszcapital/deposit/riskRecords)zcapital/withdraw/applyzcapital/innerTransfer/applyz%capital/subAccountInnerTransfer/applyz capital/deposit/createSubAddress
   )listassetsallAccountBalance)createzapiKey/createzapiKey/editz
apiKey/delupdateStatus)uidzapiKey/queryaccount/apiPermissionsr   z!innerTransfer/authorizeSubAccountz subAccount/asset/transferHistory)z%subAccount/transferAsset/supportCoinszsubAccount/transferAsset)r=   r   authuserDataStream)r   putr   zswap/trace/currentTrack)zswap/trace/closeTrackOrderzswap/trace/setTPSLzspot/trader/sellOrder)r   zasset/transferRecordr   r   r   r   ztransfer/supportCoins)r   r   )r   asset)zaccount/inviteAccountListzreward/commissionDataListzaccount/inviteRelationCheckzasset/depositDetailListzreward/third/commissionDataListzasset/partnerDatazcommissionDataList/referralCodezaccount/superiorCheck)r   rB   rD   r   r   r   r   r   r   r   r   agent
timeframes1m3m5m15m30m1h2h4h6h12h1d3d1w1M)r   r   r   r   r   r   r   r   r   r   r   r   r   r   precisionMode
exceptions400401403404429418500504100001100412100202100204100400100410100421100440100500)1005038000180012800148001680017100414100419100437101204110425zInsufficient assetszillegal transferType)exactbroadcommonCurrenciesSnowmanOmniCatz$NAP	TRUMPMAGATRUMP)SNOWOMNINAPr$  TRUMPSOLr   
stdFutures	USDTMPerp	coinMPerp)fundingrB   rE   rD   linearinverser,  r-  r.  )r   rB   r)  r*  r+  i  CCXTETHERC20BTCLTC)r0  USDTUSDCr2  r3  ARBPOLYGON	ZKSYNCERAzAVAX-CHEDERA)ARBITRUMMATICZKSYNCAVAXCHBAR)defaultTypeaccountsByTypeaccountsById
recvWindowbrokerdefaultNetworksnetworks)lastmarkindex)triggerPriceTypeprice)IOCFOKPOGTD)
marginModetriggerPricerI  triggerDirectionstopLossPricetakeProfitPriceattachedStopLossTakeProfittimeInForcehedgedtrailingleveragemarketBuyRequiresPricemarketBuyByCostselfTradePreventionicebergmaxi   r2   )rO  limitdaysBack	untilDayssymbolRequired)rO  triggerrW  ra  )rO  r^  rb  rW  ra    i N     )rO  r^  r_  r`  rb  rW  ra  )rO  r^  r_  daysBackCanceledr`  rb  rW  ra  r^    )	r   rT   rU   r   r   r   r   rh   r   defaultForLinear)r^  r_  r`  )extendsr   r   )rI  rT  rW  )r^  r`  )rh  rk   rT   r   r   rh   rh  defaultForInverse)r-  r.  )rh  r   defaultForFuture)rg  ri  rB   rD   rj  rE   )optionsfeatures)deep_extendsuperr1   describeparse_numberr.   r&   r"   r#   r-   r!   r(   r,   r'   r*   r$   r)   )self	__class__s    R/home/james-whalen/.local/lib/python3.13/site-packages/ccxt/async_support/bingx.pyro  bingx.describe    s   eT ; = c@
'c@
Gc@
 $c@
 	c@

 tc@
 c@
 4c@
  ``` %` 	`
 %` %` T` $U` '` ` "4` '` t` ` $T`   !`" /#`$ ,T%`& 0'`( t)`* +`, 7-`. (/`0 &t1`2 "43`4 (5`6 ,T7`8 -d9`: %d;`< T=`> !%?`@ A`B &uC`D "5E`F +EG`H )%I`J #EK`L ,UM`N &tO`P $TQ`R 'S`T (U`V "4W`X &tY`Z ([`\ 1$]`^  _`` *:a`b +Dc`d #De`f *4g`h $Ti`j uk`l *5m`n +Eo`p  q`r $Us`t /u`v "4w`x y`z !${`| !$}`~ "4`@ &tA`B  C`D dE`F $TG`H "4I`J uK`L #EM`N dO`P !$Q`R tS`T  U`V 'W`X $TY`Z !$[`\ (]`^ t_`` a`b Tc`d te`f "4g`h !$i`j )%k`l %) $$)',#!!%#' `c@
R Sc@
T  RAAA EDA"GD#HB@ E ,:=)Uc@
@ !$!..w7!..w7  '!..x8!..x8Ac@
Z "$[c@
b !! 11$$ "/023120101/00156	$# 014578237834125689
$ 010156=>67:;89-../
%$%N !!0101$# "6723:;<=	$ !6q%
$_<@ "01;<:;:;01$# 67<=34459::;3467453456$ 8956<=7801./45341278%$%P "/034/0/001675601670145$#" 1223/04534/0452356347856677845$$ 0156;<8945238945	% 015678'9!$!2j " .$# " .$$ufP !457878120112$	# 34567845566745782301$ 012378;<4589% 8956'+$%'R !!/0-.+,$$
 !9:;<ABFG=>LM?@$ ;<?@IJDE	%$, !(**+56$ +-12/0./02%$( "'(01:;56	$ !DQ%
$ %$F(" NO@A)"	(
!: ! 0!% !1!$ !1!'
$  ! 91$ ?@679;%		$   "2389:;<=	$ !6q%
$  &$.)"( !&$;Q("'< !!=>=>?@;<CD56CD9:	$$}
ncc@
@ Ac@
` Yac@
b :. + :	
 > + = = 1 1 / j j o i  m!" o#$ ,'.'**..(/*+<,6=@ C"cc@
h !!$#!ic@
x  &%"*')*# &""*!)!*! '  ##  $ !&&)%$5!H  $&+(,$($(%)-
 -2)-+/ )-(,)-1
 &*7 $(#'"&#(	( #'$($)27+//4#(? $D q% ',!$$&%'*.& ',#($)*.	# ',!%#($)*/( ',!%$)%&#($)*.$ ',!%$(,0%&#($)*.	*  #[P%d  2!%$(%)&
 $(&  2!4( -16:$)$ "&$%%&&
 $(!$%)*!. "#5 "#6 	  2#'% "#5 "#5 	{E{c@
 c c	    c                    #    U R                  U5      I Sh  vN nU R                  US5      nU R                  US5      $  N(7f)a;  
fetches the current integer timestamp in milliseconds from the bingx server

https://bingx-api.github.io/docs/#/swapV2/base-info.html#Get%20Server%20Time

:param dict [params]: extra parameters specific to the exchange API endpoint
:returns int: the current integer timestamp in milliseconds from the bingx server
Ndata
serverTime)swapV2PublicGetServerTime	safe_dictsafe_integer)rq  paramsresponserw  s       rs  
fetch_timebingx.fetch_time  sE      77?? ~~h/  |44 @   AA )Ac                 @  #    U R                  S5      (       d  0 $ U R                  U R                  SS5      nU(       a  0 $ U R                  U5      I Sh  vN nU R	                  US/ 5      n0 n[        S[        U5      5       GH  nXF   nU R                  US5      nU R                  U5      n	U R                  US5      n
U R	                  US5      n0 n[        S[        U5      5       H  nX   nU R                  US	5      nU R                  U5      nU R                  US
5      U R                  US5      S.U R                  US5      SS.S.nU R                  U R                  U R                  US5      5      5      nUUUU R                  US5      SU R                  US5      U R                  US5      UUS.	UU'   M     X;  a  UU	USU
SSSUSSSS.XY'   GMW  XY   nU R                  US0 5      n[        UR                  5       5      n[        S[        U5      5       H  nUU   nUU;  d  M  UU   UU'   M     UXY   S'   GM     [        UR                  5       5      n[        S[        U5      5       H  nUU   n	XY   nU R!                  U5      XY'   M!     U$  GNF7f)z
fetches all available currencies on an exchange

https://bingx-api.github.io/docs/#/common/account-api.html#All%20Coins

:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: an associative dictionary of currencies
FsandboxModeNrw  r   coinr6   networkListnetworkwithdrawMinwithdrawMaxminr]  
depositMin)withdrawdepositwithdrawPrecisionwithdrawFeedepositEnablewithdrawEnable)	infor5   r  feeactiver  r  	precisionlimitscrypto)r  coder5   r  r6   r  r  r  rE  r  r  typerE  )check_required_credentials	safe_boolrk  &walletsV1PrivateGetCapitalConfigGetall	safe_listrangelensafe_stringsafe_currency_codenetwork_id_to_codesafe_numberrp  parse_precisionrz  r   keyssafe_currency_structure)rq  r|  	isSandboxr}  rw  resultientry
currencyIdr  r6   r  rE  j
rawNetworkr  networkCoder  r  existingexistingNetworksnewNetworkCodesnewNetworkCodecodescurrencys                            rs  fetch_currenciesbingx.fetch_currencies  s     ..u55INN4<<F	IDDVLLN ~~h3q#d)$AGE))%8J**:6D##E62D..>KH1c+./(^
**:yA"55g>  $//
MJ#//
MJ!
  $//
LI# 	  !--d.B.B4CSCST^`sCt.uv	&!*++JF"#~~j/J $z;K L!*$
)% 04 N! $!% "# $ ("$  "<#'>>(J#K "&x}}"7q#o"67A%4Q%7N*.>>;CN;S(8 8 ,<Z(q %r V[[]#q#e*%A8D|H77AFL & O Ms   AJJGJ0A,Jc                    #    U R                  U5      I S h  vN nU R                  US5      nU R                  US/ 5      nU R                  U5      $  N:7f)Nrw  symbols)spotV1PublicGetCommonSymbolsrz  r  parse_markets)rq  r|  r}  rw  marketss        rs  fetch_spot_marketsbingx.fetch_spot_markets  sS     ::6BB8 ~~h/..y"5!!'**= Cs   AA;Ac                    #    U R                  U5      I S h  vN nU R                  US/ 5      nU R                  U5      $  N(7fNrw  )swapV2PublicGetQuoteContractsr  r  rq  r|  r}  r  s       rs  fetch_swap_marketsbingx.fetch_swap_markets  sE     ;;FCC@ ..626!!'**C Dr  c                    #    U R                  U5      I S h  vN nU R                  US/ 5      nU R                  U5      $  N(7fr  )cswapV1PublicGetMarketContractsr  r  r  s       rs  fetch_inverse_swap_markets bingx.fetch_inverse_swap_markets  sC     ==fEE& ..626!!'**) Fr  marketc                    U R                  US5      nUR                  S5      nUS   nUS   nU R                  U5      nU R                  U5      nU R                  US5      nSn	Sn
U R                  US5      nUb  UnSn	Sn
U R                  U5      nU R                  US	5      nUc0  U R	                  U R                  U R                  US
5      5      5      nU R                  US5      nUc0  U R	                  U R                  U R                  US5      5      5      nUb  SOSnUS:H  nUS:H  nUS-   U-   nUb  USU-   -  nU R                  U R                  U0 5      nU(       a  U R	                  S5      OS nSnU R                  US5      S:X  a  U R                  US5      S:X  a  SnOFU R                  US5      (       a/  U R                  US5      (       a  U R                  US5      S:X  a  SnU(       a  S OU	nU(       a  S OU
nS nU(       d  U R                  USS5      nU R                  US5      nUS:X  a  S nU R                  0 SU_SU_SU_SU_SU_SU_S U_S!U_S"U_SU_S#S_SU_S$S_S%S_S&U_S'U_S(U_UU R                  US)5      U R                  US*5      U R                  US+5      US S S S UUS,.S S S-.US S-.US S-.U R                  U/ S.Q5      U R                  US/5      S-.S0.UUS1.E5      $ )2Nsymbol-r   r   r  FTminTickSizetickSizepricePrecisionstepSizequantityPrecisionrD   rB   /:1apiStateOpentrueapiStateCloseapiStateSellapiStateBuystatusminQtytradeMinQuantity
timeOnliner5   baser   settlebaseIdquoteIdsettleIdr  rC   rE   rF   r  r   r-  r   r   r   )amountrJ  r  )minNotionaltradeMinUSDTminTradeValuemaxNotional)rX  r  rJ  cost)r.  r   r   r   contractSizeexpiryexpiryDatetimestrike
optionTyper  r  createdr  )r  splitr  r  rp  r  rz  r   r  safe_number_2r{  safe_market_structuresafe_number_n)rq  r  r5   symbolPartsr  r  r  r   r  checkIsInversecheckIsLinearr  r  r  r  r  rB   rD   r  r   r  isActive	isInverseisLinear	minAmountr  s                             rs  parse_marketbingx.parse_market  s   fh/hhsmQa.&&v.''0##FJ7&&v}="H!N!M((2))&*=!!..t/C/CDDTDTU[]mDn/opN ,,VZ@$ $ 1 1$2F2FtGWGWX^`sGt2u v ,v6v~v~e#cFl"F~~diir226t((-TV^4>TEUEUV\^mEnrxExH^^FN33v}8]8]cgcscstz  }E  dF  JM  dMH!D	 4}	**68=OPI&&v|<
?J)) 3+
"3+
f3+
 D3+
 U	3+

 f3+
 f3+
 w3+
 3+
 D3+
 D3+
 e3+
 D3+
 e3+
 e3+
 h3+
  !3+
" h#3+
$ !%%dG4%%dG4''i8("+'  
 %
 '
  --f6fg++FMB$ "e3+
 3 3	ru  c                   #    U R                  U5      /nU R                  U R                  SS5      nU(       d@  UR                  U R	                  U5      5        UR                  U R                  U5      5        [        R                  " U6 I Sh  vN nU R                  US/ 5      nU R                  US/ 5      nU R                  US/ 5      nU R                  XV5      nU R                  Xx5      $  N_7f)a  
retrieves data on all markets for bingx

https://bingx-api.github.io/docs/#/spot/market-api.html#Query%20Symbols
https://bingx-api.github.io/docs/#/swapV2/market-api.html#Contract%20Information
https://bingx-api.github.io/docs/#/en-us/cswap/market-api.html#Contract%20Information

:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict[]: an array of objects representing market data
r  FNr   r   r   )
r  r  rk  appendr  r  asynciogatherr  array_concat)	rq  r|  requestsr  promiseslinearSwapMarketsinverseSwapMarketsspotMarketsswapMarketss	            rs  fetch_marketsbingx.fetch_marketsP  s      ++F34NN4<<F	OOD;;FCDOOD33F;< 22 NN8Q;!^^Ha<nnXq"5''(9N  :: 3s   BC1C/A C1r   Nr  	timeframesincer^  c           	        #    U R                  5       I Sh  vN   SnU R                  USSS5      u  peU(       a  U R                  SXXBUS5      I Sh  vN $ U R                  U5      nSUS   0nU R	                  U R
                  X"5      US'   Ub  [        US	-
  S
5      US'   Ub  XHS'   U R                  USS5      n	U	b  U R                  US/5      nXS'   Sn
US   (       a)  U R                  U R                  X5      5      I Sh  vN n
OUS   (       a)  U R                  U R                  X5      5      I Sh  vN n
O{U R	                  US5      nU R                  US5      nUS:X  a)  U R                  U R                  X5      5      I Sh  vN n
O(U R                  U R                  X5      5      I Sh  vN n
U R                  U
S/ 5      n[        U[         5      (       d  U/nU R#                  XX#U5      $  GN GN N N Nu NN7f)a  
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market

https://bingx-api.github.io/docs/#/swapV2/market-api.html#K-Line%20Data
https://bingx-api.github.io/docs/#/spot/market-api.html#Candlestick%20chart%20data
https://bingx-api.github.io/docs/#/swapV2/market-api.html#%20K-Line%20Data
https://bingx-api.github.io/docs/#/en-us/swapV2/market-api.html#Mark%20Price%20Kline/Candlestick%20Data
https://bingx-api.github.io/docs/#/en-us/cswap/market-api.html#Get%20K-line%20Data

: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
:param int [params.until]: timestamp in ms of the latest candle to fetch
:param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
:returns int[][]: A list of candles ordered, open, high, low, close, volume
NFr   paginaterf  r  r5   intervalr   r   	startTimer^  untilendTimerB   r.  rJ  rG  rw  )load_marketshandle_option_and_params"fetch_paginated_call_deterministicr  r  r   r]  safe_integer_2omitspotV1PublicGetMarketKlineextendcswapV1PublicGetMarketKlines$swapV1PublicGetMarketMarkPriceKlinesswapV3PublicGetQuoteKlines
safe_value
isinstancer   parse_ohlcvs)rq  r  r  r  r^  r|  r
  r  requestr  r}  rJ  ohlcvss                rs  fetch_ohlcvbingx.fetch_ohlcvg  s     & !!!88z[`a@@v^cpvx|}}}V$fTl
 #..t	U
#&uqy!#4GK $G##FGY?YYvy1F!&I&>!<<T[[=YZZHi !%!B!B4;;wC_!``((9673F?%)%N%Nt{{[bOk%llH%)%D%DT[[QXEa%bbHH 626&$''XF  5IIK 	" ~  [ a
  mbsl   HG8;HG;B3HG>2H9H :AHH(H5H6AH;H>H HHHc           	         [        U[        5      (       ah  U R                  US5      U R                  US5      U R                  US5      U R                  US5      U R                  US5      U R                  US5      /$ U R	                  USS5      U R                  US	5      U R                  US
5      U R                  US5      U R                  US5      U R                  US5      /$ )Nr   r   r         r   time	closeTimeopenhighlowclosevolume)r  r   r{  r  r  )rq  ohlcvr  s      rs  parse_ohlcvbingx.parse_ohlcv  s    D eT""!!%+  *  *  *  *  *  v{;UF+UF+UE*UG,UH-
 	
ru  c                   #    U R                  5       I Sh  vN   U R                  U5      nSUS   0nUb  [        US5      US'   SnSnU R                  SXT5      u  pUS:X  a)  U R	                  U R                  Xd5      5      I Sh  vN nO(U R                  U R                  Xd5      5      I Sh  vN nU R                  US/ 5      n	U R                  XX#5      $  N NT N-7f)	ae  
get the list of most recent trades for a particular symbol

https://bingx-api.github.io/docs/#/spot/market-api.html#Query%20transaction%20records
https://bingx-api.github.io/docs/#/swapV2/market-api.html#The%20latest%20Trade%20of%20a%20Trading%20Pair

:param str symbol: unified symbol of the market to fetch trades for
: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>`
Nr  r5   r;   r^  r   rB   rw  )	r  r  r  handle_market_type_and_paramsspotV1PublicGetMarketTradesr  swapV2PublicGetQuoteTradesr  parse_trades)
rq  r  r  r^  r|  r  r  r}  
marketTypetradess
             rs  fetch_tradesbingx.fetch_trades  s      !!!V$fTl
 "5#GG
!??v^
!==dkk'>Z[[H!<<T[[=YZZHD &"5  >>a 	" \Zs4   CCA/CC(C/C0*CCCtradec                    U R                  U/ SQ5      nU R                  US5      nUb  U R                  U5      nUS:X  a  S nU R                  US5      nU R                  U/ SQ5      nU R	                  U5      nU R                  US5      nU R                  USS5      n	U R                  U/ S	Q5      n
S nU
c  Ub  U
(       d  U(       a  S
OSnU R                  USS5      nUc  U
c  Ub  U
(       d  U(       a  SOSnSnU R                  US5      nUb  U(       a  SOSnU R                  US5      nUb  U(       a  S
OSnU R                  U/ SQ5      nUbN  US   (       aD  SU;   a>  U R                  US   S5      nU R                  US5      n[        R                  " UU5      nU R                  U R                  USS/5      UUU R                  U5      U R                  XS5      U R                  USS5      U R                  US5      U R                  U5      UU R                  U/ SQ5      UUU R!                  [        R"                  " U R                  USS5      5      5      US .S!.U5      $ )"N)r#  filledTmT	tradeTimer8  r   quoteQty)r  NcommissionAssetmsr  )
buyerMakerisBuyerMakerr   r   r   sideSsellbuyisBuyerisMaker)qtyr  qrD   r)  r  r  r5   tr  orderIdr  o)rJ  p
tradePrice
commissionn)r  r  )r5   r  	timestampdatetimer  orderr  rB  takerOrMakerrJ  r  r  r  )safe_integer_nr  	parse8601safe_string_nr  r  safe_string_2safe_bool_nsafe_string_lower_2r/   
string_mul
safe_tradeiso8601safe_symbolsafe_string_lowerparse_order_siderp  
string_abs)rq  r6  r  r#  
datetimeIdr  r  currencyCoder>  marketIdrA  takeOrMakerrB  rF  rG  r  r  r)  s                     rs  parse_tradebingx.parse_trade4  sp   X ""5*PQ%%eZ8
!>>*-D19Dz2''/ST
..z:NN5#&%%eS(;''/VW$!-&2a'gK''vs;<(am".!v%%..	2#5D..	2%,''K##E+ABF6NE8I++F6N<NOL%%eX6F''=F$$UT3K8T*&&x=''y#>**5#6))$/'''/KL))'*<*<T=O=OPUWceh=i*jk( 
" # 	ru  c           	      |  #    U R                  5       I Sh  vN   U R                  U5      nSUS   0nUb  X%S'   SnSnU R                  SXC5      u  psUS:X  a)  U R                  U R	                  XS5      5      I Sh  vN nO[US   (       a)  U R                  U R	                  XS5      5      I Sh  vN nO(U R                  U R	                  XS5      5      I Sh  vN nU R                  US0 5      nU R                  US	5      n	U R                  US
S5      n
U R                  XS   U
SSSS5      nXS'   U$  GN N N Nb7f)a  
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data

https://bingx-api.github.io/docs/#/spot/market-api.html#Query%20depth%20information
https://bingx-api.github.io/docs/#/swapV2/market-api.html#Get%20Market%20Depth
https://bingx-api.github.io/docs/#/en-us/cswap/market-api.html#Query%20Depth%20Data

: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  r5   r^  r   rB   r.  rw  lastUpdateIdr9  tsbidsasksr   r   nonce)r  r  r.  spotV1PublicGetMarketDepthr  cswapV1PublicGetMarketDepthswapV2PublicGetQuoteDepthrz  r{  r  parse_order_book)rq  r  r^  r|  r  r  r}  r2  	orderbookrm  rQ  r  s               rs  fetch_order_bookbingx.fetch_order_book  sJ     !!!V$fTl
 $G
!??@PRXa
!<<T[[=YZZHi !%!A!A$++gB^!__!%!?!?G@\!]]V NN8VR8	!!)^<''	3=	&&y2BIvW]_`bcdwA 	" [ `]sG   D<D3A$D<;D6<2D<.D8/(D<D:AD<6D<8D<:D<c                 v  #    U R                  5       I Sh  vN   U R                  U5      nSUS   0nSnUS   (       a)  U R                  U R                  XB5      5      I Sh  vN nO(U R	                  U R                  XB5      5      I Sh  vN nU R                  US5      nU R                  Xc5      $  N NR N+7f)a  
fetch the current funding rate

https://bingx-api.github.io/docs/#/swapV2/market-api.html#Current%20Funding%20Rate
https://bingx-api.github.io/docs/#/en-us/cswap/market-api.html#Price%20&%20Current%20Funding%20Rate

:param str symbol: unified market symbol
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a `funding rate structure <https://docs.ccxt.com/#/?id=funding-rate-structure>`
Nr  r5   r.  rw  )r  r  "cswapV1PublicGetMarketPremiumIndexr   swapV2PublicGetQuotePremiumIndexrz  parse_funding_raterq  r  r|  r  r  r}  rw  s          rs  fetch_funding_ratebingx.fetch_funding_rateC  s      !!!V$fTl
 )!DDT[[QXEabbH!BB4;;wC_``H" ~~h/&&t447 	" c`s4   B9B3AB9"B5#(B9B7(B95B97B9r  c                    #    U R                  5       I Sh  vN   U R                  USS5      nU R                  U R                  U5      5      I Sh  vN nU R	                  US/ 5      nU R                  XA5      $  Nc N*7f)ax  
fetch the current funding rate for multiple symbols

https://bingx-api.github.io/docs/#/swapV2/market-api.html#Current%20Funding%20Rate

:param str[] [symbols]: list of unified market symbols
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict[]: a list of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rate-structure>`
NrD   Trw  )r  market_symbolsrw  r  r  parse_funding_rates)rq  r  r|  r}  rw  s        rs  fetch_funding_ratesbingx.fetch_funding_ratesk  st      !!!%%gvt<>>t{{6?RSS~~h3''66	 	"Ss!   A>A::A>A<)A><A>c                 \   U R                  US5      nU R                  US5      n0 SU_SU R                  X2SS5      _SU R                  US5      _SU R                  US5      _SS _S	S _S
S _SS _SU R                  US5      _SS _SS _SS _SU_SU R	                  U5      _SS _SS _SS _SS 0E$ )Nr  nextFundingTimer  r  rD   	markPrice
indexPriceinterestRateestimatedSettlePricerQ  rR  fundingRatelastFundingRatefundingTimestampfundingDatetimenextFundingRatenextFundingTimestampnextFundingDatetimepreviousFundingRatepreviousFundingTimestamppreviousFundingDatetimer  )r  r{  r^  r  r]  )rq  r   r  rd  r  s        rs  rx  bingx.parse_funding_rate{  sJ    ##Hh7#00;LM
H
d&&xfE
 ))(K@
 $**8\B	

 D
 #D
 
 
 4++H6GH
 
 t
 t
 #$8
 "4<<0D#E
 "4
  '!
" &t#
$ %
 	
ru  c                 2  #    Uc  [        U R                  S-   5      eU R                  5       I Sh  vN   SnU R                  USS5      u  pTU(       a  U R	                  SXUSU5      I Sh  vN $ U R                  U5      nSUS   0nUb  X'S	'   Ub  X7S
'   U R                  USS	5      nUb  U R                  US/5      nXS	'   U R                  U R                  Xt5      5      I Sh  vN n	U R                  U	S/ 5      n
U R                  XX#5      $  N N N-7f)a  
fetches historical funding rate prices

https://bingx-api.github.io/docs/#/swapV2/market-api.html#Funding%20Rate%20History

:param str symbol: unified symbol of the market to fetch the funding rate history for
:param int [since]: timestamp in ms of the earliest funding rate to fetch
:param int [limit]: the maximum amount of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rate-history-structure>` to fetch
:param dict [params]: extra parameters specific to the exchange API endpoint
:param int [params.until]: timestamp in ms of the latest funding rate to fetch
:param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
:returns dict[]: a list of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rate-history-structure>`
Nz5 fetchFundingRateHistory() requires a symbol argumentFrt   r
  8hr  r5   r  r^  r  rw  )r%   r5   r  r  r  r  r  r  swapV2PublicGetQuoteFundingRater  r  parse_funding_rate_histories)rq  r  r  r^  r|  r
  r  r  r  r}  rw  s              rs  fetch_funding_rate_history bingx.fetch_funding_rate_history  s:     >#DGG.e$eff!!!88AZ\fg@@AZ\bkprvx~V$fTl
 #(K $G##FG[AYYvy1F#(K ==dkk'>Z[[ ~~h300uLLC 	" @ \s4   /DD:D,D-A:D'D(*DDDc                     U R                  US5      nUU R                  U R                  US5      USS5      U R                  US5      UU R	                  U5      S.$ )NfundingTimer  r  rD   r  )r  r  r  rQ  rR  )r{  r^  r  r  r]  )rq  r   r  rQ  s       rs  parse_funding_rate_history bingx.parse_funding_rate_history  se     %%h>	&&t'7'7('KVUXZ`a++HmD"Y/
 	
ru  c                   #    U R                  5       I Sh  vN   U R                  U5      nSUS   0nSnUS   (       a)  U R                  U R                  XB5      5      I Sh  vN nO(U R	                  U R                  XB5      5      I Sh  vN n0 nUS   (       a'  U R                  US/ 5      nU R                  US0 5      nOU R                  US0 5      nU R                  Xc5      $  N N N_7f)a  
retrieves the open interest of a trading pair

https://bingx-api.github.io/docs/#/swapV2/market-api.html#Get%20Swap%20Open%20Positions
https://bingx-api.github.io/docs/#/en-us/cswap/market-api.html#Get%20Swap%20Open%20Positions

:param str symbol: unified CCXT market symbol
:param dict [params]: exchange specific parameters
:returns dict} an open interest structure{@link https://docs.ccxt.com/#/?id=open-interest-structure:
Nr  r5   r.  rw  r   )r  r  "cswapV1PublicGetMarketOpenInterestr   swapV2PublicGetQuoteOpenInterestr  rz  parse_open_interest)rq  r  r|  r  r  r}  r  rw  s           rs  fetch_open_interestbingx.fetch_open_interest  s      !!!V$fTl
 )!DDT[[QXEabbH!BB4;;wC_``H: )>>(FB7D^^D!R0F^^Hfb9F''77Y 	" c`s5   C-C'AC-"C)#(C-C+AC-)C-+C-c                     U R                  USS5      nU R                  US5      nU R                  XBSS5      nU R                  US5      nU R	                  US S S UUU R                  U5      US.U5      $ )Nr#  rQ  r  r  rD   openInterest)r  
baseVolumequoteVolumeopenInterestAmountopenInterestValuerQ  rR  r  )r  r  r^  r  safe_open_interestr]  )rq  interestr  rQ  r5   r  r  s          rs  r  bingx.parse_open_interest  s    $ ''&+F	h1!!"c6:''.A&&"&!-"Y/	(
 	 		ru  c                 V  #    U R                  5       I Sh  vN   U R                  U5      nSUS   0nSnUS   (       a)  U R                  U R                  XB5      5      I Sh  vN nO[US   (       a)  U R	                  U R                  XB5      5      I Sh  vN nO(U R                  U R                  XB5      5      I Sh  vN nU R                  US5      nUb$  U R                  US0 5      nU R                  Xs5      $ U R                  US0 5      nU R                  X5      $  GN
 N N Nh7f)ao  
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market

https://bingx-api.github.io/docs/#/en-us/swapV2/market-api.html#Get%20Ticker
https://bingx-api.github.io/docs/#/en-us/spot/market-api.html#24-hour%20price%20changes
https://bingx-api.github.io/docs/#/en-us/cswap/market-api.html#Query%2024-Hour%20Price%20Change

: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  r5   rB   r.  rw  r   )	r  r  spotV1PublicGetTicker24hrr  cswapV1PublicGetMarketTickerswapV2PublicGetQuoteTickerr  rz  parse_ticker)	rq  r  r|  r  r  r}  rw  firstdataDicts	            rs  fetch_tickerbingx.fetch_ticker:  s     !!!V$fTl
 &>!;;DKK<XYYHi !%!B!B4;;wC_!``!%!@!@WA]!^^: ~~h/NN4B/E$$U33>>(FB7  22] 	" Z a^sG   D)D AD)"D##2D)D%(D)>D'?A"D)#D)%D)'D)c                   #    U R                  5       I Sh  vN   SnUb7  U R                  U5      nU R                  US5      nUb  U R                  U5      nSnU R	                  SX25      u  pRSnU R                  SX25      u  pbSnUS:X  a  U R                  U5      I Sh  vN nO9US:X  a  U R                  U5      I Sh  vN nOU R                  U5      I Sh  vN nU R                  US5      nU R                  X5      $  N Nc NE N-7f)a  
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market

https://bingx-api.github.io/docs/#/en-us/swapV2/market-api.html#Get%20Ticker
https://bingx-api.github.io/docs/#/en-us/spot/market-api.html#24-hour%20price%20changes
https://bingx-api.github.io/docs/#/en-us/cswap/market-api.html#Query%2024-Hour%20Price%20Change

:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
Nr   r   rB   r.  rw  )r  r}  r  r  r.  handle_sub_type_and_paramsr  r  r  r  parse_tickers)	rq  r  r|  r  firstSymbolr  subTyper}  tickerss	            rs  fetch_tickersbingx.fetch_tickersv  s     !!!))'2G**7A6K&[199.&Y99.&Y6>!;;FCCH)#!%!B!B6!JJ!%!@!@!HH< ..62!!'33c 	" D KHsF   D	DBD	D D	?D D	D(D	D	D	D	c                   #    U R                  5       I Sh  vN   U R                  U5      nSnU R                  SX2S5      u  pBSUS   0nSnUS:X  a)  U R                  U R	                  XR5      5      I Sh  vN nO(U R                  U R	                  XR5      5      I Sh  vN n[        US   [        5      (       a&  U R                  U R                  US   S0 5      U5      $ U R                  US   U5      $  N N N[7f)	a  
fetches mark prices for the market

https://bingx-api.github.io/docs/#/en-us/swapV2/market-api.html#Mark%20Price%20and%20Funding%20Rate

: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 dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
Nr   r-  r  r5   r.  rw  r   )
r  r  r  rv  r  rw  r  r   r  rz  )rq  r  r|  r  r  r  r}  s          rs  fetch_mark_pricebingx.fetch_mark_price  s     !!!V$99:JF\defTl
 i!DDT[[QXEabbH$ "BB4;;wC_``H hv&--$$T^^HV4Da%LfUU  &!16::W 	" c$ as5   C<C6AC<5C86(C<C:AC<8C<:C<c                   #    U R                  5       I Sh  vN   SnUb7  U R                  U5      nU R                  US5      nUb  U R                  U5      nSnU R	                  SX2S5      u  pRSnUS:X  a  U R                  U5      I Sh  vN nOU R                  U5      I Sh  vN nU R                  US5      nU R                  Xq5      $  N NC N+7f)a  
fetches mark prices for multiple markets

https://bingx-api.github.io/docs/#/en-us/swapV2/market-api.html#Mark%20Price%20and%20Funding%20Rate

:param str[] [symbols]: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
Nr   r   r-  r.  rw  )	r  r}  r  r  r  rv  rw  r  r  )rq  r  r|  r  r  r  r}  r  s           rs  fetch_mark_pricesbingx.fetch_mark_prices  s      !!!))'2G**7A6K&[199:KV]efi!DDVLLH!BB6JJH< ..62!!'33Y 	" MJs4   CCA3C
CC$C%(CCCtickerc           
         U R                  US5      nU R                  US5      nUc  SOSnU R                  X2S U5      nUS   nU R                  US5      nU R                  US5      nU R                  US5      n	U R                  US5      n
U R                  US	5      nU R                  US
5      nU R                  US5      nUb  UR                  SS5      nU R                  US5      nU R                  US5      nUS:X  a  S nU R	                  U5      nU R                  US5      nU R                  US5      nU R                  US5      nU R                  US5      nU R                  0 SU_SU_SU_SU_SU	_SU_SU_SU_SU_SS _SU_SU
_S S _S!S _S"U_S#U_S$S _UUU R                  US%5      U R                  US&5      US'.EU5      $ )(Nr  lastQtyrB   rD   	openPrice	highPricelowPrice	lastPricer  r)  priceChangePercent% priceChanger$  r   bidPricebidQtyaskPriceaskQtyrQ  rR  r&  r'  bid	bidVolumeask	askVolumevwapr%  r(  rF  previousClosechange
percentageaverager  r  )r  r  r  r  r  )r  safe_marketreplacer{  r]  safe_ticker)rq  r  r  rd  r  r  r  r%  r&  r'  r(  r  r  r  r  rj  rR  r  r  r  r  s                        rs  r  bingx.parse_ticker$  s   d ##FH5""695 "/v!!(D$?!44vz2  5&&v}=%%fh7
%%f.BC
!#++C4J!!&-8v{37B<<#vz2$$VX6	vz2$$VX6	 !
f!
!
 !
 D	!

 3!
 3!
 !
 3!
 !
 D!
 D!
 U!
 D!
 T!
 f!
  *!!
" t#!
$ %&))&+>**6<@-!
. / 	ru  c                 @  #    U R                  5       I Sh  vN   SnSnU R                  USSS5      u  p1SnU R                  SSU5      u  pAU R                  SSU5      u  pVU(       a  U R	                  U5      I Sh  vN nOUS:X  d  US:X  a  U R                  U5      I Sh  vN nOYUS:X  a  U R                  U5      I Sh  vN nO9US:X  a  U R                  U5      I Sh  vN nOU R                  U5      I Sh  vN nU R                  U5      $  N N Ns NU N7 N7f)	a  
query for balance and get the amount of funds available for trading or funds locked in orders

https://bingx-api.github.io/docs/#/spot/trade-api.html#Query%20Assets
https://bingx-api.github.io/docs/#/en-us/swapV2/account-api.html#Query%20account%20data
https://bingx-api.github.io/docs/#/standard/contract-interface.html#Query%20standard%20contract%20balance
https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#Query%20Account%20Assets

:param dict [params]: extra parameters specific to the exchange API endpoint
:param boolean [params.standard]: whether to fetch standard contract balances
:param str [params.type]: the type of balance to fetch(spot, swap, funding) default is `spot`
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
Nr`   standardFr,  r   rB   r.  )
r  r  r  r.  contractV1PrivateGetBalancefundV1PrivateGetAccountBalancespotV1PrivateGetAccountBalancecswapV1PrivateGetUserBalanceswapV3PrivateGetUserBalanceparse_balance)rq  r|  r}  r  r  r2  marketTypeQuerys          rs  fetch_balancebingx.fetch_balance  s3     !!!88Q[]bc99.$PVW&*&H&HY]_e&f#
!==oNNH& I%:+?!@@QQH 6!!@@QQH$ )#!%!B!B?!SS* "&!A!A/!RR( !!(++O 	" O( R R& T* Ssj   DDA%D<D=%D"D#DDD"D#D<D=DDDDDDc                    SU0nU R                  US5      nU R                  US5      nUS LnU R                  US0 5      nU R                  USS/ 5      nU(       a  [        S[	        U5      5       H  nX8   n	U R                  U	S5      n
U
c    OU R                  U
5      nU R                  5       nU R                  U	SS5      US	'   U R                  U	S
5      US'   U R                  U	S5      US'   XU'   M     O[        S[	        U5      5       Hh  nXx   n	U R                  U	S5      n
U R                  U
5      nU R                  5       nU R                  U	S	5      US	'   U R                  U	S5      US'   XU'   Mj     U R                  U5      $ )Nr  rw  r   balancesr   r   availableMarginavailableBalancefree
usedMarginusedmaxWithdrawAmounttotallocked)
r  rz  safe_list_2r  r  r  r  r   rX  safe_balance)rq  r}  r  contractBalancesfirstContractBalances
isContractspotDataspotBalancesr  r   r  r  r   s                rs  r  bingx.parse_balance  s   ^ )>>(F; $/? C*$6
>>(FB7''*hK1c"234*-!--gw?
%..z:,,."&"4"4W>OQc"d"&"2"27L"I#'#3#3G=P#Q &t 5 1c,/0&/!--gw?
..z:,,."&"2"27F"C"&"2"27H"E&t 1   ((ru  c                   #    U R                  5       I Sh  vN   U R                  U5      nSUS   0nUb  X6S'   Ub  X&S'   U R                  SXd5      u  pdSnUS   (       a)  U R                  U R	                  Xd5      5      I Sh  vN nO[        U R                  S-   5      eU R                  US	0 5      nU R                  US
/ 5      n	U R                  U	5      n
U R                  XX#5      $  N Nh7f)a  
fetches historical positions

https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Query%20Position%20History

:param str symbol: unified contract symbol
:param int [since]: the earliest time in ms to fetch positions for
:param int [limit]: the maximum amount of records to fetch
:param dict [params]: extra parameters specific to the exchange api endpoint
:param int [params.until]: the latest time in ms to fetch positions for
:returns dict[]: a list of `position structures <https://docs.ccxt.com/#/?id=position-structure>`
Nr  r5   pageSizestartTsendTsr-  zC fetchPositionHistory() is not supported for inverse swap positionsrw  positionHistory)r  r  handle_until_option$swapV1PrivateGetTradePositionHistoryr  r+   r5   rz  r  parse_positionsfilter_by_symbol_since_limit)rq  r  r  r^  r|  r  r  r}  rw  records	positionss              rs  fetch_position_historybingx.fetch_position_historyk	  s      !!!V$fTl
 "'J!&I227GL(!FFt{{SZGcddHtww)nnoo: ~~h3..'8"=((1	00EQQ] 	" es#   C/C+A-C/C-A'C/-C/c                 @  #    U R                  5       I Sh  vN   U R                  U5      nSnU R                  USSS5      u  p2SnU(       a  U R                  U5      I Sh  vN nOSnUb7  U R                  U5      nU R	                  US5      nUb  U R                  U5      nSnU R                  SXR5      u  prUS:X  a  U R                  U5      I Sh  vN nOU R                  U5      I Sh  vN nU R                  US/ 5      nU R                  X5      $  N N NF N.7f)aP  
fetch all open positions

https://bingx-api.github.io/docs/#/en-us/swapV2/account-api.html#Query%20position%20data
https://bingx-api.github.io/docs/#/en-us/standard/contract-interface.html#position
https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#Query%20warehouse

:param str[]|None symbols: list of unified market symbols
:param dict [params]: extra parameters specific to the exchange API endpoint
:param boolean [params.standard]: whether to fetch standard contract positions
:returns dict[]: a list of `position structures <https://docs.ccxt.com/#/?id=position-structure>`
Nr   r  Fr   r.  rw  )r  r}  r  contractV1PrivateGetAllPositionr  r  r  cswapV1PrivateGetUserPositionsswapV2PrivateGetUserPositionsr  r  )	rq  r  r|  r  r}  r  r  r  r  s	            rs  fetch_positionsbingx.fetch_positions	  s/     !!!%%g.88AQS]_de!AA&IIHF"--g6"..w:*![[5FG"==>NPV_OG)#!%!D!DV!LL8 "&!C!CF!KK@ NN8VR8	##I77] 	" J M8 LsG   DDA
D!D"A1DDD-D.)DDDDc                   #    U R                  5       I Sh  vN   U R                  U5      nUS   (       d  [        U R                  S-   5      eSUS   0nSnUS   (       a)  U R	                  U R                  XB5      5      I Sh  vN nO(U R                  U R                  XB5      5      I Sh  vN nU R                  US/ 5      nU R                  US0 5      nU R                  Xs5      $  N Nf N?7f)	a  
fetch data on a single open contract trade position

https://bingx-api.github.io/docs/#/en-us/swapV2/account-api.html#Query%20position%20data
https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#Query%20warehouse

:param str symbol: unified market symbol of the market the position is held in
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a `position structure <https://docs.ccxt.com/#/?id=position-structure>`
NrD   z+ fetchPosition() supports swap markets onlyr  r5   r.  rw  r   )
r  r  r&   r5   r
  r  r  r  rz  parse_position)rq  r  r|  r  r  r}  rw  r  s           rs  fetch_positionbingx.fetch_position
  s      !!!V$f~TWW'TTUUfTl
 )!@@WA]^^H8 "??G@\]]H@ ~~h3tQ+""511O 	" _8 ^s4   C/C)A-C/C+(C/-C-.<C/+C/-C/positionc                    U R                  USS5      nUR                  SS5      nU R                  US5      nS nUb  U(       a  SOSnU R                  US5      nU R	                  0 SU_S	U R                  US
5      _SU R                  X2SS5      _SU R                  US5      _SU_SS _SU R                  USS5      _SU R                  US5      _SU R                  US5      _SS _SU R                  US5      _SS _SU R                  US5      _SS _SU R                  US5      _SS _SU_U R                  U5      U R                  US 5      S S S U R                  US!5      S U R                  US"5      S S S S#.E5      $ )$Nr  r  r  r  isolatedcrossopenTimer  r5   
positionIdrD   notionalpositionValuerO  liquidationPrice
entryPriceavgPriceunrealizedPnlunrealizedProfitrealizedPnlrealisedProfitr  	contractspositionAmtr  r  r  rB  positionSiderV  rQ  
updateTimeinitialMarginrX  )rR  lastUpdateTimestampmaintenanceMarginmaintenanceMarginPercentage
collateralr%  initialMarginPercentagerX  marginRatiorR  rS  )
r  r  r  r{  safe_positionr^  r  r  r_  r]  )rq  r  r  rd  r  rO  rQ  s          rs  r  bingx.parse_positionY
  s   f ##Hh;##C->>(J7
'/WJ%%h
;	!! #
H#
$""8\:#
 d&&xfE#
 ((?C	#

 *#
 #
 $,,Xz<P#
 T--h8JK#
 4++H6FG#
 $#
 ))(MB#
 D#
 ))(K@#
 #
 D**8^D#
  d!#
" ##
$ Y/#'#4#4X|#L!%+/!--hH'+((:>!#9#
  	ru  rB  r  c                 P   #    X4S'   U R                  USX#SU5      I Sh  vN $  N7f)a  
create a market order by providing the symbol, side and cost
:param str symbol: unified symbol of the market to create an order in
:param str side: 'buy' or 'sell'
:param float cost: how much you want to trade in units of the quote currency
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
quoteOrderQtyr  Ncreate_order)rq  r  rB  r  r|  s        rs  create_market_order_with_cost#bingx.create_market_order_with_cost
  s.      #'&&vxT6RRRRs   &$&c                 R   #    X#S'   U R                  USSUSU5      I Sh  vN $  N7f)an  
create a market buy order by providing the symbol and cost
:param str symbol: unified symbol of the market to create an order in
:param float cost: how much you want to trade in units of the quote currency
: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  rE  Nr0  rq  r  r  r|  s       rs  !create_market_buy_order_with_cost'bingx.create_market_buy_order_with_cost
  s0      #'&&vxdFSSSS   '%'c                 R   #    X#S'   U R                  USSUSU5      I Sh  vN $  N7f)ao  
create a market sell order by providing the symbol and cost
:param str symbol: unified symbol of the market to create an order in
:param float cost: how much you want to trade in units of the quote currency
: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  rD  Nr0  r5  s       rs  "create_market_sell_order_with_cost(bingx.create_market_sell_order_with_cost
  s0      #'&&vxtVTTTTr8  r  r  rJ  c           
      @   U R                  U5      nSnSn	U R                  SXv5      u  pUR                  5       nUS   UUR                  5       S.n
US:H  nU	S:H  nUS:H  nU(       a  U(       a  [        U R                  S-   5      eU R                  US	5      nU R                  US
5      nU R                  USS5      nUSLnUSLnUSLnU(       a  SOSnU R                  UUS5      nUb  UU
U'   U R                  US5      nU R                  UUS:H  U5      u  pU(       d  US:X  a  SU
S'   OUS:X  a  SU
S'   OUS:X  a  SU
S'   U(       Ga  U R                  USS5      nU R                  US5      nUb%  U R                  U R                  UU5      5      U
S'   OwU(       aM  UbJ  [        R                  " U R                  U5      U R                  U5      5      nU R                  U5      U
S'   O#U R                  U R                  X5      5      U
S'   U(       d#  U R                  U R!                  X5      5      U
S'   Uba  U(       a+  U R                  U
S5      c  [#        U R                  S-   5      eU R!                  UU5      U
S'   US:X  a  SU
S'   GOkUS:X  a  SU
S'   GO^Uc  UbB  Ub  UOUnUS:X  a  SU
S'   OUS:X  a  SU
S'   U R                  U R!                  UU5      5      U
S'   GOU(       ae  U
S   U
S    US!:X  a  S"OS#U R                  U R!                  UU5      5      U R                  U R                  X5      5      S$.nU R%                  UU5      $ US%:X  a  S%U
S'   U R                  US&5      nU R                  US'S(5      nU R                  US)S*5      nUSLnUSLnU=(       d    Un U R'                  US+5      n!U R'                  US,5      n"U!SLn#U"SLn$US:X  d  US:X  d  US-:X  d  US.:X  a*  U (       d#  U R                  U R!                  X5      5      U
S'   U R)                  US/S05      n%U(       aK  U R                  U R!                  UU5      5      U
S'   U(       d  US:X  a  SU
S'   GOUS:X  d  US:X  a  SU
S'   GOU(       d  U(       a  S1n%U(       aH  U R                  U R!                  X5      5      U
S'   U(       d  US2:X  a  S2U
S'   OUS:X  d  US-:X  a  S-U
S'   OU(       aG  U R                  U R!                  X5      5      U
S'   U(       d  US3:X  a  S3U
S'   OlUS:X  d  US.:X  a  S.U
S'   OZU (       aS  UU
S'   U(       a  U R                  U5      U
S'   O2U(       a+  [        R*                  " US45      n&U R                  U&5      U
S('   U#(       d  U$(       Ga  U R                  U5      n'U#(       a  U R                  U!SSU!5      n(U R                  U!S5S65      n)U R                  U!SS25      n*U R                  U R!                  UU(5      5      U)U*S7.n+U R                  U!S5      n,U,b$  U R                  U R!                  UU,5      5      U+S'   U R                  U!SU'5      n-U R                  U R                  UU-5      5      U+S'   U R-                  U+5      U
S+'   U$(       a  U R                  U"SSU"5      n.U R                  U"S5S65      n/U R                  U"SS35      n0U R                  U R!                  UU.5      5      U/U0S7.n1U R                  U"S5      n,U,b$  U R                  U R!                  UU,5      5      U1S'   U R                  U"SU'5      n2U R                  U R                  UU25      5      U1S'   U R-                  U15      U
S,'   Sn3U R)                  US8S05      n4U4(       a/  U R                  US/5      nU%(       a  US!:X  a  S#OS"n3OUS!:X  a  S"OS#n3OS9n3U3U
S:'   Un5US;   (       d   U R                  U R                  X5      5      n5U5U
S'   U R                  U/ S<Q5      nU R%                  X5      $ )=aB  
@ignore
       helper function to build request
       :param str symbol: unified symbol of the market to create an order in
       :param str type: 'market' or 'limit'
       :param str side: 'buy' or 'sell'
       :param float amount: how much you want to trade in units of the 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
       :returns dict: request to be sent to the exchange
       NrT   r5   )r  r  rB  MARKETrB   TWAPz6 createOrder() twap order supports swap contracts onlyrR  rS  	stopPricerP  newClientOrderIdclientOrderIDclientOrderIdrU  PostOnlyrK  GTCr  r/  quantityrJ  zl createOrder() requires the cost parameter(or the amount + price) for placing spot market-buy trigger ordersLIMITTRIGGER_LIMITr  TRIGGER_MARKETTAKE_STOP_LIMITTAKE_STOP_MARKETr  rB  rE  LONGSHORT)r  rB  r#  rP  totalAmountrL  trailingAmounttrailingPercent	priceRatetrailingTypeTRAILING_STOP_MARKETstopLoss
takeProfitSTOPTAKE_PROFIT
reduceOnlyFTSTOP_MARKETTAKE_PROFIT_MARKET100workingType
MARK_PRICE)r?  r[  r  rV  BOTHr#  r.  )
rV  rP  rR  rS  rN  rO  rQ  rT  rS  rB  )r  r.  upperr'   r5   r  rX  safe_string_upperhandle_post_onlyr  parse_to_numericcost_to_precisionr/   r[  number_to_stringamount_to_precisionprice_to_precisionr%   r  r  r  
string_divjson)6rq  r  r  rB  r  rJ  r|  r  postOnlyr2  r  isMarketOrderisSpotisTwapOrderrR  rS  rP  isTriggerOrderisStopLossPriceOrderisTakeProfitPriceOrderexchangeClientOrderIdrB  rU  r  calculatedCoststopTakePricetwapRequestrN  rO  rQ  isTrailingAmountOrderisTrailingPercentOrder
isTrailingrS  rT  
isStopLossisTakeProfitrW  requestTrailingPercentstringifiedAmountslTriggerPriceslWorkingTypeslType	slRequestslPrice
slQuantitytkTriggerPricetkWorkingTypetpType	tpRequest
tkQuantityr#  rV  	amountReqs6                                                         rs  create_order_requestbingx.create_order_request
  s    V$
!??v^
zz|TlJJL

 (v%fn6DGG&^^__((A**63DE))&+~N%T1,D8!0!<6< 2/**63H/Z$-:G)*,,V]C00z@Y[abz1%/GM"E!%*GM"E!%*GM"%%ffoFDYYvv.F+/+@+@AWAWX^`dAe+f( e&7%,%7%78M8Mf8UW[WlWlmrWs%tN/3/D/D^/TGO,*.*?*?@X@XY_@h*iGJ' #'#8#89P9PQW9_#` ' T%5%5g%O%W+DGG  7e  -e  f  f'+'>'>v|'T$7?&5GFOX%&6GFO+1L2?2KRa7?&7GFOX%&8GFO'+'<'<T=T=TU[]j=k'l$%h/#FO/3u}F7$($9$9$:Q:QRXZf:g$h#'#8#89Q9QRX9a#b%$ {{;77e#).&!--f6FGN"009JKXO++FNDZ[L$2$$>!%4D%@".H2HJvz:H>J!-J%T1Ldo&=46>W[_lWl  xB#'#8#89P9PQW9_#` eDJ'+'<'<T=T=TU[]i=j'k$ T-=%=&6GFOgo4?+B&5GFO%)?!
'+/+@+@AXAXY_Ao+pGK($)>*7'/tv~*0++/+@+@AXAXY_Aq+rGK($1E)E*>'/t}/D*7".('+'<'<^'LGG$+-4-?-?QV-W*+/+@+@AW+XGK(\$($9$9&$A!%)%7%7.R]_g%hN$($4$4X}l$[M!--hNF%)%:%:4;R;RSY[i;j%k'4 &'I
 #..xAG*-1-B-B4CZCZ[acjCk-l	'*!%!1!1(JHY!ZJ,0,A,A$BZBZ[acmBn,oIj)*.))I*>GJ'%)%7%7
NT_ak%lN$($4$4ZP\$]M!--j&BVWF%)%:%:4;R;RSY[i;j%k'4 &'I
 #..z7CG*-1-B-B4CZCZ[acjCk-l	'*!%!1!1*jJ[!\J,0,A,A$BZBZ[acmBn,oIj),0IIi,@GL)L^^FHe<F6<8/3u}76L.2em6'L%&2GN#I)$ 11$2J2J62Z[	"+GJ6  $B  C{{7++ru  c                 D  #    U R                  5       I Sh  vN   U R                  U5      nU R                  USS5      nU R                  US5      nU R	                  XX4XV5      n	Sn
US   (       a  U(       a  U R                  U	5      I Sh  vN n
OwUS   (       a  U R                  U	5      I Sh  vN n
OSUS:X  a  U R                  U	5      I Sh  vN n
O3U R                  U	5      I Sh  vN n
OU R                  U	5      I Sh  vN n
[        U
[        5      (       a"  U R                  U
5      n
U R                  U
5      n
U R                  U
S0 5      n0 nUS   (       a!  US   (       a  U
nOU R                  USU5      nOUnU R                  X5      $  GN| GN
 N N N N7f)	a	  
create a trade order

https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Trade%20order
https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Create%20an%20Order
https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#Trade%20order
https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Place%20TWAP%20Order

:param str symbol: unified symbol of the market to create an order in
:param str type: 'market' or 'limit'
:param str side: 'buy' or 'sell'
:param float amount: how much you want to trade in units of the 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 str [params.clientOrderId]: a unique id for the order
:param bool [params.postOnly]: True to place a post only order
:param str [params.timeInForce]: spot supports 'PO', 'GTC' and 'IOC', swap supports 'PO', 'GTC', 'IOC' and 'FOK'
:param bool [params.reduceOnly]: *swap only* True or False whether the order is reduce only
:param float [params.triggerPrice]: triggerPrice at which the attached take profit / stop loss order will be triggered
:param float [params.stopLossPrice]: stop loss trigger price
:param float [params.takeProfitPrice]: take profit trigger price
:param float [params.cost]: the quote quantity that can be used alternative for the amount
:param float [params.trailingAmount]: *swap only* the quote amount to trail away from the current market price
:param float [params.trailingPercent]: *swap only* the percent to trail away from the current market price
:param dict [params.takeProfit]: *takeProfit object in params* containing the triggerPrice at which the attached take profit order will be triggered
:param float [params.takeProfit.triggerPrice]: take profit trigger price
:param dict [params.stopLoss]: *stopLoss object in params* containing the triggerPrice at which the attached stop loss order will be triggered
:param float [params.stopLoss.triggerPrice]: stop loss trigger price
:param boolean [params.test]: *swap only* whether to use the test endpoint or not, default is False
:param str [params.positionSide]: *contracts only* "BOTH" for one way mode, "LONG" for buy side of hedged mode, "SHORT" for sell side of hedged mode
:param boolean [params.hedged]: *swap only* whether the order is in hedged mode or one way mode
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
Nr   FrD   r.  twaprw  rS  )r  r  r  r  r  swapV2PrivatePostTradeOrderTestcswapV1PrivatePostTradeOrderswapV1PrivatePostTwapOrderswapV2PrivatePostTradeOrderspotV1PrivatePostTradeOrderr  strfix_stringified_json_members
parse_jsonrz  parse_order)rq  r  r  rB  r  rJ  r|  r  r   r  r}  rw  r  s                rs  r1  bingx.create_order  sv    D !!!V$~~ffe466*++F$V&>!%!E!Eg!NN	"!%!B!B7!KK!%!@!@!II!%!A!A'!JJ!==gFFHB h$$ 88BHx0H~~h3&>i !gt<F//A 	" OKIJFsk   F FA4F F#F /F0F FF )F*F FBF F F F F F ordersc           	      f  #    U R                  5       I Sh  vN   / n/ n[        S[        U5      5       H  nX   nU R                  US5      nU R                  US5      nUR	                  U5        U R                  US5      n	U R                  US5      n
U R                  US5      nU R                  US0 5      nU R                  XxXX5      nUR	                  U5        M     U R                  USS	S
S
5      n[        U5      nU R                  US   5      n0 nSnUS   (       aL  US:  a  [        U R                  S-   5      eU R                  U5      US'   U R                  U5      I Sh  vN nOLU R                  USS	5      nU(       a  S
US'   U R                  U5      US'   U R                  U5      I Sh  vN n[!        U["        5      (       a"  U R%                  U5      nU R'                  U5      nU R                  US0 5      nU R)                  US/ 5      nU R+                  UU5      $  GN N Nx7f)a  
create a list of trade orders

https://bingx-api.github.io/docs/#/spot/trade-api.html#Batch%20Placing%20Orders
https://bingx-api.github.io/docs/#/swapV2/trade-api.html#Bulk%20order

:param Array orders: list of orders to create, each object should contain the parameters required by createOrder, namely symbol, type, side, amount, price and params
:param dict [params]: extra parameters specific to the exchange API endpoint
:param boolean [params.sync]: *spot only* if True, multiple orders are ordered serially and all orders do not require the same symbol/side/type
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
Nr   r  r  rB  r  rJ  r|  FTrD   r   zJ createOrders() can not create more than 5 orders at once for swap marketsbatchOrderssyncrw  r  )r  r  r  r  r  r  rz  r  r}  r  r)   r5   rg  !swapV2PrivatePostTradeBatchOrdersr  !spotV1PrivatePostTradeBatchOrdersr  r  r  r  r  parse_orders)rq  r  r|  ordersRequests	marketIdsr  rawOrderrd  r  rB  r  rJ  orderParamsorderRequestr  symbolsLengthr  r  r}  r  rw  r  s                         rs  create_ordersbingx.create_orders4  s!     !!!	q#f+&AyH''(;H##Hf5DX&##Hf5D%%h9F$$Xw7E..8R@K44XTSXfL!!,/ ' %%iudDIGWQZ(&>q "477-y#yzz%)YY~%>GM"!CCGLLH>>&&%8D"&"ii7GFO!CCGLLH\ h$$ 88BHx0H~~h3h3  00g 	". M Ms6   H1H*EH1)H-*AH16H/7A4H1-H1/H1c                 8    SSSSSSS.nU R                  X!U5      $ )NrE  rD  )BUYSELLrL  rK  r  r  r  )rq  rB  sidess      rs  r`  bingx.parse_order_side  s0    
 T22ru  c                 8    SSSSSSS.nU R                  X!U5      $ )Nr  r^  )trigger_markettrigger_limit
stop_limitstop_markettake_profit_marketstopr  )rq  r  typess      rs  parse_order_typebingx.parse_order_type  s0    &$!#"*
 T22ru  rS  c                 D   UnU R                  USS5      nUb  UnU R                  USS5      nUc  SOSnU R                  USS5      nUc  U R                  US S U5      nU R                  US	S
5      nU R	                  U/ SQ5      n	U R                  USS5      n
U R                  U/ SQ5      nU R                  USS5      nU R                  U/ SQ5      nUc!  US   (       a  US:X  a  US   nOUS   nOUS   nU R                  US5      nS nUb'  US:w  a!  U R                  U R                  US5      5      nUbl  [        U[        R                  5      (       dM  US:w  aG  [        U[        5      (       a  U R                  U5      nU R                  U R                  US5      5      nU R                  US5      nS nUb'  US:w  a!  U R                  U R                  US5      5      nUbl  [        U[        R                  5      (       dM  US:w  aG  [        U[        5      (       a  U R                  U5      nU R                  U R                  US5      5      nU R                  USS5      nU R                  U R                  USS5      5      nUnUb8  UR!                  S5      S:  a  Uc  UnS nUR!                  S5      S:  a  Uc  UnS nU R#                  0 SU_S U R                  U/ S!Q5      _S"U R                  U/ S#Q5      _SU R%                  XrS$U5      _S%U	_S&U R'                  U	5      _S'U
_S(U R)                  US5      _SU R+                  U5      _S)U R                  US)5      _S*S _S	U R-                  U5      _S+U R                  US+S,5      _S-U_S.U_S/U_S0U R                  US1S25      _U R                  US35      U R                  U/ S4Q5      U R                  US5S65      S U R/                  U5      U[0        R2                  " U5      S7.S U R5                  US8S95      S:.EU5      $ );NnewOrderResponseorderOpenResponser#  psrB   rD   r  r?  rB  rC  )r#  transactTimeEcreatedTimer$  r9  )r  XorderStatusfeeAssetr<  )r  rO  rP  rE  r  r   rS  r  r?  rT  r  rL  	StopPricer  taker  r5   )rK  r  mainOrderIdrB  )rA  rB  origClientOrderIdcr  rQ  rR  lastTradeTimestampr&  rU  rh  rJ  rM  rP  rR  rS  r  r  apcummulativeQuoteQty)origQtyrI  rE  rM  executedQtyz)r  r  rW  ro)r  r  filled	remainingr  r  r3  rW  )safe_dict_2rX  r  rZ  rU  r  safe_string_upper_nrW  r  	omit_zeror  r  numbersRealr  r  find
safe_orderr^  r]  r{  r  r`  parse_order_statusr/   ra  safe_bool_2)rq  rS  r  r  newOrderr#  r2  rd  rB  rQ  r  statusIdfeeCurrencyCodefeeCostrS  rR  rT  rS  rawTyper?  rP  s                        rs  r  bingx.parse_order  s   v ##E+=?RSE))%F , 4V6
%%eXs;>%%hdJGF''vs;''/[\	!00cJ++E3QR,,UJD$$U,FG#f~5=&,VnO&,WoO"(/??5*5 x2~ NN4+;+;Hj+QRM Jx,N,NV^bdVd(C((??84 NN4+;+;Hk+RSM__UL9
!zR'7"nnT-=-=j,-WXO"jW\\.R.RZdhjZj*c**!__Z8
"nnT-=-=j+-VWO**5&#>NN4#5#5e[+#VW	  V$r)0E )#V$r)0G"+#  
D 
$$$U,KL 
 T//7st 
 d&&xjI	 

  
 Y/ 
 !"4 
 "4#4#4UL#I 
 D))'2 
 4++E=A 
  
 D))$/ 
 T''w< 
 L 
 ] 
  ! 
" t))%TB# 
$ $$U,AB((0[\((sC--h7+**73 **5,E9 
: ; 	ru  r  c           	      <    SSSSSSSSS.nU R                  X!U5      $ )Nr%  closedcanceled)NEWPENDINGPARTIALLY_FILLEDRUNNINGFILLEDCANCELED	CANCELLEDFAILEDr  rq  r  statusess      rs  r  bingx.parse_order_status  s6     &"# 	
 &99ru  r5   c                   #    U R                  5       I Sh  vN   U R                  USS5      nU R                  US5      nSnSnU(       a.  SU0nU R                  U R	                  Xs5      5      I Sh  vN nGOUc  [        U R                  S-   5      eU R                  U5      nSUS   0nU R                  USS	5      n	U R                  US/5      nU	b  XS	'   OXS
'   Sn
SnU R                  SXc5      u  pU R                  SXc5      u  pU
S:X  a)  U R                  U R	                  X5      5      I Sh  vN nOWUS:X  a)  U R                  U R	                  X5      5      I Sh  vN nO(U R                  U R	                  X5      5      I Sh  vN nU R                  US0 5      nU R                  USU5      nU R                  X5      $  GN GNX N Nl NE7f)a  
cancels an open order

https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Cancel%20Order
https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Cancel%20Order
https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#Cancel%20an%20Order
https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Cancel%20TWAP%20Order

:param str id: order id
:param str symbol: unified symbol of the market the order was made in
:param dict [params]: extra parameters specific to the exchange API endpoint
:param str [params.clientOrderId]: a unique id for the order
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
Nr  Fr  z) cancelOrder() requires a symbol argumentr  r5   rB  rA  rK  rM   rB   r.  rw  rS  )r  r  r   swapV1PrivatePostTwapCancelOrderr  r%   r5   r  rX  r.  r  spotV1PrivatePostTradeCancel$cswapV1PrivateDeleteTradeCancelOrderswapV2PrivateDeleteTradeOrderrz  r  )rq  r5   r  r|  rk  r}  r  rr  r  rB  r  r  rw  rS  s                 rs  cancel_orderbingx.cancel_order%  s     !!!nnVVU;66*r!K "BB4;;{CcddH4 ~'2](]^^[[(F&,G !..vXMYYv'89F(+8(%'	"DG==mV\LD"==mV\OGv~!%!B!B4;;wC_!``i'%)%N%Nt{{[bOk%llH%)%G%GT[Hd%eeHF ~~h3tWd3..} 	" eV a  mesY   GGAG2G
3C G3G4.G"G#(GG<G
GGGGc                   #    Uc  [        U R                  S-   5      eU R                  5       I Sh  vN   U R                  U5      nSUS   0nSnUS   (       a)  U R	                  U R                  XB5      5      I Sh  vN nO~US   (       a\  US   (       a)  U R                  U R                  XB5      5      I Sh  vN nOAU R                  U R                  XB5      5      I Sh  vN nO[        U R                  S-   5      eU R                  US	0 5      nU R                  US
S/ 5      nU R                  U5      $  GN N N N\7f)a<  
cancel all open orders

https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Cancel%20orders%20by%20symbol
https://bingx-api.github.io/docs/#/swapV2/trade-api.html#Cancel%20All%20Orders
https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#Cancel%20all%20orders

: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>`
Nz- cancelAllOrders() requires a symbol argumentr  r5   rB   rD   r.  z= cancelAllOrders is only supported for spot and swap markets.rw  successr  )r%   r5   r  r  &spotV1PrivatePostTradeCancelOpenOrdersr  &cswapV1PrivateDeleteTradeAllOpenOrders%swapV2PrivateDeleteTradeAllOpenOrdersr&   rz  r  r  )rq  r  r|  r  r  r}  rw  r  s           rs  cancel_all_ordersbingx.cancel_all_orders  s3     >#DGG.]$]^^!!!V$fTl
 &>!HHU\IeffH. F^i !%!L!LT[[Y`Mi!jjr "&!K!KDKKX_Lh!ii> TWW'ffgg~~h3!!$	8R@  ((w 	" g2 kr jsG   /ED9AE=D<><E:D>;(E#E $AE<E>E Eidsc                 6  #    Uc  [        U R                  S-   5      eU R                  5       I Sh  vN   U R                  U5      nSUS   0nU R	                  US5      nU R                  US5      nUnUSLnU(       a  Un/ n	[        S[        U5      5       H#  n
Xz   n[        U5      nU	R                  U5        M%     SnUS   (       aG  U(       a  SOS	nS
R                  U	5      X^'   U R                  U R                  XS5      5      I Sh  vN nOHU(       a  U R                  U	5      US'   OXS'   U R                  U R                  XS5      5      I Sh  vN nU R                  US0 5      nU R!                  USS/ 5      nU R#                  U5      $  GNa N NA7f)a  
cancel multiple orders

https://bingx-api.github.io/docs/#/swapV2/trade-api.html#Cancel%20a%20Batch%20of%20Orders
https://bingx-api.github.io/docs/#/spot/trade-api.html#Cancel%20a%20Batch%20of%20Orders

: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
:param str[] [params.clientOrderIds]: client order ids
:returns dict: an list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
Nz* cancelOrders() requires a symbol argumentr  r5   clientOrderIdsr   rB   clientOrderIDsorderIds,clientOrderIDListorderIdListrw  r  r  )r%   r5   r  r  r  r  r  r  r  r  join"spotV1PrivatePostTradeCancelOrdersr  rg  #swapV2PrivateDeleteTradeBatchOrdersrz  r  r  )rq  r  r  r|  r  r  r  
idsToParseareClientOrderIds	parsedIdsr  r5   stringIdr}  
spotReqKeyrw  r  s                    rs  cancel_ordersbingx.cancel_orders_  s     >#DGG.Z$Z[[!!!V$fTl
 1AB6#34
+47'J	q#j/*AB2wHX& + &>->)JJ"%((9"5G!DDT[[QXEabbH8 !/3yy/C+,)2&!EEdkkRYFbccH< ~~h3""4HbA  ))i 	"( c@ ds5   /FFCFFAFF=FFFtimeoutc                   #    U R                  5       I Sh  vN   US:  nU(       a  SOSU(       a  U R                  US-  5      OSS.nSnSnU R                  SSU5      u  pbUS:X  a*  U R                  U R	                  XB5      5      I Sh  vN nU$ US	:X  a*  U R                  U R	                  XB5      5      I Sh  vN nU$ [        U R                  S
-   U-   S-   5      e N NV N(7f)a  
dead man's switch, cancel all orders after the given timeout

https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Cancel%20all%20orders%20in%20countdown
https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Cancel%20all%20orders%20in%20countdown

:param number timeout: time in milliseconds, 0 represents cancel the timer
:param dict [params]: extra parameters specific to the exchange API endpoint
:param str [params.type]: spot or swap market
:returns dict: the api result
Nr   ACTIVATECLOSErc  )r  timeOutrL   rB   rD   z- cancelAllOrdersAfter() is not supported for  markets)r  parse_to_intr.  $spotV1PrivatePostTradeCancelAllAfterr  $swapV2PrivatePostTradeCancelAllAfterr+   r5   )rq  r	  r|  r  r  r}  r  s          rs  cancel_all_orders_afterbingx.cancel_all_orders_after  s      !!!aK#+J'?G))'D.9a
 99:PRVX^_6>!FFt{{SZGcddH   V^!FFt{{SZGcddH  tww)XX[__bllmm 	" eds4   C&C A4C&C"/C&;C$<%C&"C&$C&c                 F  #    U R                  5       I Sh  vN   U R                  USS5      nU R                  US5      nSnSnU(       a-  SU0nU R                  U R	                  Xs5      5      I Sh  vN nOUc  [        U R                  S-   5      eU R                  U5      nUS   US.nSn	Sn
U R                  SXc5      u  pU R                  SXc5      u  pU	S	:X  a)  U R                  U R	                  X5      5      I Sh  vN nOWU
S
:X  a)  U R                  U R	                  X5      5      I Sh  vN nO(U R                  U R	                  X5      5      I Sh  vN nU R                  US0 5      nU R                  USU5      nU R                  X5      $  GN GN& N Nl NE7f)a  
fetches information on an order made by the user

https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Query%20Order%20details
https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Query%20Order%20details
https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#Query%20Order
https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#TWAP%20Order%20Details

:param str id: the order id
:param str symbol: unified symbol of the market the order was made in
:param dict [params]: extra parameters specific to the exchange API endpoint
:param boolean [params.twap]: if fetching twap order
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
Nr  Fr  z( fetchOrder() requires a symbol argumentr5   )r  rK  r   rB   r.  rw  rS  )r  r  r  swapV1PrivateGetTwapOrderDetailr  r%   r5   r  r.  r  spotV1PrivateGetTradeQuery!cswapV1PrivateGetTradeOrderDetailswapV2PrivateGetTradeOrderrz  r  )rq  r5   r  r|  rk  r}  r  rr  r  r  r  rw  rS  s                rs  fetch_orderbingx.fetch_order  s     !!!nnVVU;66*r!K "AA$++kBbccH6 ~'2\(\]][[(F ,G DG==lF[LD"==lF[OGv~!%!@!@WA]!^^0 i'%)%K%KDKKX_Lh%iiHj &*%D%DT[[QXEa%bbH6 ~~h3tWd3..w 	" dN _2  jj  csY   F!FAF!2F3BF!F.F!0F1(F!F<F!F!F!F!F!c                   #    U R                  5       I Sh  vN   0 nSnUb  U R                  U5      nUS   US'   SnU R                  SXd5      u  ptUS:w  a  [        U R                  S-   5      eUb  X5S'   Ub  X%S'   U R                  S	XT5      u  pTU R                  U R                  XT5      5      I Sh  vN nU R                  US
0 5      n	U R                  U	S/ 5      n
U R                  XX#5      $  N N>7f)a#  
fetches information on multiple orders made by the user

https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#All%20Orders
https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Query%20Order%20history(returns less fields than above)

: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 int [params.until]: the latest time in ms to fetch entries for
:param int [params.orderId]: Only return subsequent orders, and return the latest order by default
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
Nr5   r  r   rD   z1 fetchOrders() is only supported for swap marketsr^  r  r  rw  r  )r  r  r.  r+   r5   r   swapV1PrivateGetTradeFullOrderr  rz  r  r  )rq  r  r  r^  r|  r  r  r  r}  rw  r  s              rs  fetch_ordersbingx.fetch_orders  s     !!![[(F &tGH99-X6>tww)\\]]$G#(K 229gN<<T[[=YZZj ~~h3h3  >>M 	" [s"   C5C1BC54C35=C53C5c                   #    U R                  5       I Sh  vN   Sn0 nUb  U R                  U5      nUS   US'   SnSnSn	U R                  SXT5      u  ptU R                  SXT5      u  pUS:X  a)  U R	                  U R                  Xd5      5      I Sh  vN n	OU R                  USS5      n
U R                  US5      nU
(       a)  U R                  U R                  Xd5      5      I Sh  vN n	OWUS:X  a)  U R                  U R                  Xd5      5      I Sh  vN n	O(U R                  U R                  Xd5      5      I Sh  vN n	U R                  U	S	0 5      nU R                  US
S/ 5      nU R                  XX#5      $  GNg N N Nm NF7f)aC  
fetch all unfilled currently open orders

https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Current%20Open%20Orders
https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Current%20All%20Open%20Orders
https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#Query%20all%20current%20pending%20orders
https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Query%20TWAP%20Entrusted%20Order

: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 order structures to retrieve
:param dict [params]: extra parameters specific to the exchange API endpoint
:param boolean [params.twap]: if fetching twap open orders
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
Nr5   r  r   rB   r  Fr.  rw  r  r   )r  r  r.  r  spotV1PrivateGetTradeOpenOrdersr  r  r  swapV1PrivateGetTwapOpenOrders cswapV1PrivateGetTradeOpenOrdersswapV2PrivateGetTradeOpenOrdersrz  r  r  )rq  r  r  r^  r|  r  r  r  r  r}  rk  rw  r  s                rs  fetch_open_ordersbingx.fetch_open_orders  s{      !!![[(F &tGH99:KV\99:KV\6>!AA$++gB^__H..?KYYvv.F!%!D!DT[[QXEa!bbI%!%!F!Ft{{SZGc!dd!%!E!EdkkRYFb!ccX ~~h3!!$&"=  >>G 	" `
 cdcsY   FE=A;FF AF'F(.FF(F?F >F FFFFc                    #    U R                  5       I Sh  vN   U R                  XX45      I Sh  vN nU R                  USS5      $  N1 N7f)a  
fetches information on multiple closed orders made by the user

https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Query%20Order%20history
https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Query%20Order%20history
https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#User's%20History%20Orders
https://bingx-api.github.io/docs/#/standard/contract-interface.html#Historical%20order

:param str symbol: unified market symbol of the closed orders
:param int [since]: timestamp in ms of the earliest order
:param int [limit]: the max number of closed orders to return
:param dict [params]: extra parameters specific to the exchange API endpoint
:param int [params.until]: the latest time in ms to fetch orders for
:param boolean [params.standard]: whether to fetch standard contract orders
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
Nr  r  r   fetch_canceled_and_closed_orders	filter_byrq  r  r  r^  r|  r  s         rs  fetch_closed_ordersbingx.fetch_closed_orders  sI     " !!!<<VEZZ~~fh99 	"Z   AAAA
A
Ac                    #    U R                  5       I Sh  vN   U R                  XX45      I Sh  vN nU R                  USS5      $  N1 N7f)a  
fetches information on multiple canceled orders made by the user

https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Query%20Order%20history
https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Query%20Order%20history
https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#User's%20History%20Orders
https://bingx-api.github.io/docs/#/standard/contract-interface.html#Historical%20order

:param str symbol: unified market symbol of the canceled orders
:param int [since]: timestamp in ms of the earliest order
:param int [limit]: the max number of canceled orders to return
:param dict [params]: extra parameters specific to the exchange API endpoint
:param int [params.until]: the latest time in ms to fetch orders for
:param boolean [params.standard]: whether to fetch standard contract orders
:returns dict: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
Nr  r  r'  r*  s         rs  fetch_canceled_ordersbingx.fetch_canceled_orders  sI     " !!!<<VEZZ~~fh
;; 	"Zr-  c                 \  #    U R                  5       I Sh  vN   Sn0 nUb  U R                  U5      nUS   US'   SnSnSn	Sn
U R                  SXT5      u  ptU R                  SXT5      u  pU R	                  USSS5      u  pU	(       a*  U R                  U R                  Xd5      5      I Sh  vN n
GO2US:X  a0  Ub  X6S'   U R                  U R                  Xd5      5      I Sh  vN n
OU R                  US	S5      nU R                  US	5      nU(       ay  S
US'   Uc  SOUUS'   Uc  S
OUUS'   U R                  USU R                  5       5      nU R                  US5      nXS'   U R                  U R                  Xd5      5      I Sh  vN n
OWUS:X  a)  U R                  U R                  Xd5      5      I Sh  vN n
O(U R                  U R                  Xd5      5      I Sh  vN n
U R                  U
S0 5      nU R!                  USS/ 5      nU R#                  XX#5      $  GN GNu GNA N Nq NJ7f)aC  
fetches information on multiple closed orders made by the user

https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Query%20Order%20history
https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Query%20Order%20history
https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#User's%20History%20Orders
https://bingx-api.github.io/docs/#/standard/contract-interface.html#Historical%20order
https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Query%20TWAP%20Historical%20Orders

: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 int [params.until]: the latest time in ms to fetch orders for
:param boolean [params.standard]: whether to fetch standard contract orders
:param boolean [params.twap]: if fetching twap orders
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
Nr5   r  rh   r  FrB   r  r  r   	pageIndexr;   r  r  r  r.  rw  r  r   )r  r  r.  r  r  contractV1PrivateGetAllOrdersr  "spotV1PrivateGetTradeHistoryOrdersr  r  r{  milliseconds!swapV1PrivateGetTwapHistoryOrders"cswapV1PrivateGetTradeOrderHistoryswapV2PrivateGetTradeAllOrdersrz  r  r  )rq  r  r  r^  r|  r  r  r  r  r  r}  rk  r  rw  r  s                  rs  r(  &bingx.fetch_canceled_and_closed_orders  s=    & !!![[(F &tGH99:Mv^99:Mv^88ATV`bgh!??G@\]]HV^ &+
#!DDT[[QXEabbH4 ..?KYYvv.F'($.3mc%
#-2]q$))&'4;L;L;NO673%*	"!%!G!GT[Hd!ee< I%!%!H!HU\Ie!ffn "&!D!DT[[QXEa!bb: ~~h3!!$&"=  >>U 	" ^ cF f> gn csk   H,HBH,+H ,6H,"H##B$H,H&.H,6H(7(H,H* >H, H,#H,&H,(H,*H,r  fromAccount	toAccountc           
        #    U R                  5       I Sh  vN   U R                  U5      nU R                  U R                  S0 5      nSnU R	                  SSU5      u  pU R                  XsU5      n	U R                  XtU5      n
U	S:X  a  US:X  a  Sn	OSn	U
S:X  a  US:X  a  Sn
OSn
U	U
US   U R                  X5      S	.nU R                  U R                  X5      5      I Sh  vN nUU R                  US
5      SSUUUUSS.	$  N N"7f)aA  
transfer currency internally between wallets on the same account

https://bingx-api.github.io/docs/#/en-us/common/account-api.html#Asset%20Transfer%20New

:param str code: unified currency code
:param float amount: amount to transfer
:param str fromAccount: account to transfer from(spot, swap, futures, or funding)
:param str toAccount: account to transfer to(spot, swap(linear or inverse), future, or funding)
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a `transfer structure <https://docs.ccxt.com/#/?id=transfer-structure>`
Nr@  r   rD   r.  r+  r*  r5   )r:  r;  r   r  
transferId	r  r5   rQ  rR  r  r  r:  r;  r  )	r  r  rz  rk  r  r  currency_to_precisionapiAssetV1PrivatePostTransferr  )rq  r  r  r:  r;  r|  r  r@  r  fromIdtoIdr  r}  s                rs  r   bingx.transfer  s/     !!!==&6FK99*dFS!!.{K9EV)#$$6>)#""!d^00>	
 ;;DKK<XYY ""8\:&"

 
	
= 	". Zs"   DDCD"D#!DDc                   #    U R                  5       I Sh  vN   0 nSnUb  U R                  U5      nU R                  U R                  S0 5      nU R	                  US5      nU R	                  US5      n	U R	                  XxU5      n
U R	                  XyU	5      nU
b  Uc  [        U R                  S-   5      eUb  XS'   U	b  XS'   U R                  USS/5      nSnSnU R                  USS	S5      u  pU(       a  U R                  SSX#XL5      I Sh  vN $ Ub  X%S
'   Ub  X5S'   U R                  SXT5      u  pTU R                  U R                  XT5      5      I Sh  vN nU R                  US/ 5      nU R                  XX#5      $  GNn Nv N.7f)aX  
fetch a history of internal transfers made on an account

https://bingx-api.github.io/docs/#/en-us/common/account-api.html#Asset%20transfer%20records%20new

:param str [code]: unified currency code of the currency transferred
:param int [since]: the earliest time in ms to fetch transfers for
:param int [limit]: the maximum number of transfers structures to retrieve(default 10, max 100)
:param dict [params]: extra parameters specific to the exchange API endpoint
:param str params.fromAccount:(mandatory) transfer from(spot, swap(linear or inverse), future, or funding)
:param str params.toAccount:(mandatory) transfer to(spot, swap(linear or inverse), future, or funding)
:param boolean [params.paginate]: whether to paginate the results(default False)
:returns dict[]: a list of `transfer structures <https://docs.ccxt.com/#/?id=transfer-structure>`
Nr@  r:  r;  z0 fromAccount & toAccount parameters are requiredr;   Fr   r
  r  r  r  rows)r  r  rz  rk  r  r!   r5   r  r  fetch_paginated_call_dynamicr   "apiV3PrivateGetAssetTransferRecordr  r  parse_transfers)rq  r  r  r^  r|  r  r  r@  r:  r;  rA  rB  maxLimitr
  r}  rE  s                   rs  fetch_transfersbingx.fetch_transfers  s     !!!}}T*H6FK&&v}=$$V[9	!!.{K9E>T\*\ \]]"%+M" #'K 6M;#?@88AQS]_de::;KTSXagrrr#(K "'J229gN@@WA]^^" ~~h3##DEAA[ 	"* s _s5   FFC9FFA	FF	*FF	Fr   r  c                    U R                  US5      nU R                  US5      nU R                  US5      nU R                  XR5      nU R                  US5      nU R                  U R                  S0 5      nU R                  US5      n	U R                  US5      n
U R                  XU	5      nU R                  XU
5      nUUUU R                  U5      UU R                  US5      UUU R                  U5      S	.	$ )
Nr=  rQ  r   r  rA  r:  r;  r  r>  )r  r{  r  rz  rk  r]  r  parse_transfer_status)rq  r   r  tranIdrQ  r  rc  r  rA  rA  rB  r:  r;  s                rs  parse_transferbingx.parse_transfer  s    !!(L9%%h<	%%h8
..zD!!(H5~~dllNBG!!(M:+6&&|VD$$\>	"Y/$&&x:&"008

 
	
ru  c                 .    SS0nU R                  X!U5      $ )N	CONFIRMEDokr  r  s      rs  rM  bingx.parse_transfer_status  s#    
 &99ru  c                   #    U R                  5       I Sh  vN   U R                  U5      nU R                  U R                  S5      nU R                  U R                  SU5      nUS   SSUS.nU R                  U R                  Xb5      5      I Sh  vN nU R                  U R                  US5      S5      nU R                  XS   /S	5      n	U R                  U	S
5      $  N NP7f)a  
fetch the deposit addresses for a currency associated with self account

https://bingx-api.github.io/docs/#/en-us/common/wallet-api.html#Query%20Main%20Account%20Deposit%20Address

:param str code: unified currency code
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a dictionary `address structures <https://docs.ccxt.com/#/?id=address-structure>`, indexed by the network
NrB  r5   r   rc  )r  offsetr^  rB  rw  r  Fr  )r  r  r{  rk  parse_params(walletsV1PrivateGetCapitalDepositAddressr  r  rz  parse_deposit_addressesindex_by)
rq  r  r|  r  defaultRecvWindowrB  r  r}  rw  parseds
             rs  "fetch_deposit_addresses_by_network(bingx.fetch_deposit_addresses_by_network  s      !!!==& --dllLI&&t'8'8,HYZ
TN$	
 FFt{{SZGcdd& ~~dnnXv>G--df5E4FN}}VY//? 	" es#   C%C!A;C%C#AC%#C%c                   #    U R                  US5      nU R                  US/5      nU R                  X5      I Sh  vN nUb  U R                  XC5      $ U R                  U R                  S5      nU R                  XQ5      nUb  U R                  XF5      $ [        UR                  5       5      nU R                  US5      nU R                  XH5      $  N7f)a  
fetch the deposit address for a currency associated with self account

https://bingx-api.github.io/docs/#/en-us/common/wallet-api.html#Query%20Main%20Account%20Deposit%20Address

:param str code: unified currency code
:param dict [params]: extra parameters specific to the exchange API endpoint
:param str [params.network]: The chain of currency. This only apply for multi-chain currency, and there is no need for single chain currency
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
r  NrD  r   )r  r  r]  rz  rk  r   r  )	rq  r  r|  r  addressStructuresrk  defaultNetworkForCurrencyr  keys	            rs  fetch_deposit_addressbingx.fetch_deposit_addressJ  s      ""6956I;/"&"I"I$"WW>>"3==nnT\\3DEG(,(8(8(G%(4~~&7SS-2245&&tQ/~~&7== Xs   :CCBCc                    U R                  US5      nU R                  US5      nU R                  XB5      nUS   nU R                  US5      nU R                  US5      nU R                  Xu5      nU R                  U5        UUUUUS.$ )Ntagr  r  addressWithPrefixr  )r  r  r  addressrf  )r  safe_currencyr  check_address)	rq  depositAddressr  rf  r  r  rh  
networkdIdr  s	            rs  parse_deposit_addressbingx.parse_deposit_addressd  s     ~u5%%nf=
%%j;"">3FG%%ni@
--j?7#""
 	
ru  c                   #    U R                  5       I Sh  vN   0 nSnUb  U R                  U5      nUS   US'   Ub  X%S'   Ub  X5S'   U R                  U R                  XT5      5      I Sh  vN nU R	                  XvX#5      $  Nl N7f)a  
fetch all deposits made to an account

https://bingx-api.github.io/docs/#/spot/account-api.html#Deposit%20History(supporting%20network)

:param str [code]: unified currency code
:param int [since]: the earliest time in ms to fetch deposits for
:param int [limit]: the maximum number of deposits structures to retrieve
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
Nr5   r  r  r^  )r  r  $spotV3PrivateGetCapitalDepositHisrecr  parse_transactionsrq  r  r  r^  r|  r  r  r}  s           rs  fetch_depositsbingx.fetch_deposits~  s      !!!
}}T*H&tnGFO#(K $GBB4;;wC_``$ &&x5HH; 	" a"   BBAB,B-BBc                   #    U R                  5       I Sh  vN   0 nSnUb  U R                  U5      nUS   US'   Ub  X%S'   Ub  X5S'   U R                  U R                  XT5      5      I Sh  vN nU R	                  XvX#5      $  Nl N7f)a  
fetch all withdrawals made from an account

https://bingx-api.github.io/docs/#/spot/account-api.html#Withdraw%20History%20(supporting%20network)

:param str [code]: unified currency code
:param int [since]: the earliest time in ms to fetch withdrawals for
:param int [limit]: the maximum number of withdrawals structures to retrieve
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
Nr5   r  r  r^  )r  r  &spotV3PrivateGetCapitalWithdrawHistoryr  rq  rr  s           rs  fetch_withdrawalsbingx.fetch_withdrawals  s      !!!
}}T*H&tnGFO#(K $GDDT[[QXEabb( &&x5HH? 	" cru  transactionc                    U R                  US5      nUc  S OU R                  US5      nU R                  USU5      nU R                  US5      nU R                  US5      nU R                  USS5      nU R                  U5      n	Uc#  U R                  US5      n	U R	                  U	5      nU R                  US5      n
U R                  US	5      nU R                  X5      nUb/  X:w  a*  UR                  U
5      S
:  a  U
b  UR                  U
S5      nU R                  US5      nUS:X  a  SOSn0 SU_SU_SU R                  US5      _SU_SU_SU R                  U
5      _SU R                  US5      _SU R                  U R                  US5      5      _SU_SU	_SU_SS _SU_SU_SU_SS _SS _U R                  US5      UU R                  US5      S S.S S .E$ )!Nrw  r5   rh  
addressTag
insertTimerQ  	applyTimer  r  r   r  transferType0r  
withdrawalr  txidtxIdr  r  r  r  rR  addressFrom	addressTorf  tagFromtagToupdatedtransactionFee)r  r  rate)commentr  internal)r  r  r  r]  rV  r  r  r  r  r  parse_transaction_status)rq  rz  r  rw  dataIdr5   rh  rf  rQ  rR  r  r  r  r  r  s                  rs  parse_transactionbingx.parse_transaction  sx   ` {F3,T-=-=dD-Ik48"";	:{L9''\;O	<<	*''[AHx0I"";	:%%k6:
&&z<4?		'8Ja8O"||GR0"";?$^y,
K
"
 D$$[&9
 D	

 
 t..w7
 d&&{H=
 d33D4D4D[RZ4[\
 
 
 w
 4
 
 3
 s
  T!
" t#
$ ''V< ((6FG
 1
 	
ru  c                 H    SSSSSSSSSSSSSSS.nU R                  X!U5      $ )NpendingrS  rejected)r  r  1020304050607023456r  r  s      rs  r  bingx.parse_transaction_status3  sH    
  &99ru  rO  c                 @  #    Uc  [        U R                  S-   5      eU R                  5       I Sh  vN   U R                  U5      nUS   S:w  a  [	        U R                  S-   5      eUR                  5       nUS:X  a  SnUS:w  a  US:w  a  [        U R                  S	-   5      eUS
   US.nSnU R                  SXC5      u  pcUS:X  a(  U R                  U R                  XS5      5      I Sh  vN $ U R                  U R                  XS5      5      I Sh  vN $  N N. N7f)a  
set margin mode to 'cross' or 'isolated'

https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Change%20Margin%20Type
https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#Set%20Margin%20Type

:param str marginMode: 'cross' or 'isolated'
:param str symbol: unified market symbol
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: response from the exchange
Nz+ setMarginMode() requires a symbol argumentr  rD   z- setMarginMode() supports swap contracts onlyCROSSCROSSEDISOLATEDz@ setMarginMode() marginMode argument should be isolated or crossr5   )r  
marginTyper   r.  )r%   r5   r  r  r'   r^  r&   r  !cswapV1PrivatePostTradeMarginTyper   swapV2PrivatePostTradeMarginType)rq  rO  r  r|  r  r  r  s          rs  set_margin_modebingx.set_margin_modeF  s     >#DGG.[$[\\!!!V$&>V#DGG&UUVV%%'
 "J#
i(?TWW'iijjTl$
 99/6Zi??G@\]]]>>t{{7?[\\\% 	"  ^\s4   /DDB9D+D,'DDDDDc                 h   #    SS0nU R                  XU R                  XC5      5      I S h  vN $  N7f)Nr  r   
set_marginr  rq  r  r  r|  r  s        rs  
add_marginbingx.add_marginh  3     A
 __VT[[5QRRRR   )202c                 h   #    SS0nU R                  XU R                  XC5      5      I S h  vN $  N7f)Nr  r   r  r  s        rs  reduce_marginbingx.reduce_marginn  r  r  c                   #    U R                  US5      nUc  [        U R                  S-   5      eU R                  USS/5      (       d  [        U R                  S-   5      eU R	                  5       I Sh  vN   U R                  U5      nUS   U R                  US   U5      US.nU R                  U R                  Xc5      5      I Sh  vN nU R                  Xu5      $  Nj N7f)	a  
Either adds or reduces margin in an isolated position in order to set the margin to a specific value

https://bingx-api.github.io/docs/#/swapV2/trade-api.html#Adjust%20isolated%20margin

:param str symbol: unified market symbol of the market to set margin in
:param float amount: the amount to set the margin to
:param dict [params]: parameters specific to the bingx api endpoint
:returns dict: A `margin structure <https://docs.ccxt.com/#/?id=add-margin-structure>`
r  NzV setMargin() requires a type parameter either 1(increase margin) or 2(decrease margin)r   r   r5   r  )r  r  r  )
r{  r%   r5   in_arrayr  r  rd  $swapV2PrivatePostTradePositionMarginr  parse_margin_modification)rq  r  r  r|  r  r  r  r}  s           rs  r  bingx.set_margint  s        0<#DGG  /G  %G  H  H}}TAq6**#DGG  /G  %G  H  H!!!V$Tl..vh/?H

 BB4;;wC_`` --h??! 	" as%   A2C#4C5AC#	C!
C#!C#rw  c                     U R                  US5      nUU R                  US5      US:X  a  SOSSU R                  US5      U R                  US5      U R                  US	5      S S S S
.
$ )Nr  r  r  addreducer  r  rC   r  )
r  r  r  rO  r  r  r  r  rQ  rR  )r  r  )rq  rw  r  r  s       rs  r  bingx.parse_margin_modification  sz     f-&&vx8"ckE$&&tX6%%dH5$$VX6
 	
ru  c                 x  #    U R                  5       I Sh  vN   U R                  U5      nSUS   0nSnUS   (       a)  U R                  U R                  XB5      5      I Sh  vN nO(U R	                  U R                  XB5      5      I Sh  vN nU R                  US0 5      nU R                  Xc5      $  N NS N,7f)a  
fetch the set leverage for a market

https://bingx-api.github.io/docs/#/swapV2/trade-api.html#Query%20Leverage
https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#Query%20Leverage

:param str symbol: unified market symbol
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a `leverage structure <https://docs.ccxt.com/#/?id=leverage-structure>`
Nr  r5   r.  rw  )r  r  cswapV1PrivateGetTradeLeverager  swapV2PrivateGetTradeLeveragerz  parse_leveragery  s          rs  fetch_leveragebingx.fetch_leverage  s      !!!V$fTl
 )!@@WA]^^H$ "??G@\]]H& ~~h3""400[ 	" _$ ^s4   B:B4AB:"B6#(B:B8)B:6B:8B:rX  c                     U R                  US5      nUU R                  X25      S U R                  US5      U R                  US5      S.$ )Nr  longLeverageshortLeverage)r  r  rO  r  r  )r  r^  r{  )rq  rX  r  rd  s       rs  r  bingx.parse_leverage  sT    : ##Hh7&&x8 --hG!..xI
 	
ru  c                   #    Uc  [        U R                  S-   5      eU R                  US5      nU R                  SUS/ SQ5        U R	                  5       I Sh  vN   U R                  U5      nUS   UUS.nUS   (       a(  U R                  U R                  Xc5      5      I Sh  vN $ U R                  U R                  Xc5      5      I Sh  vN $  Nx N. N7f)	a  
set the level of leverage for a market

https://bingx-api.github.io/docs/#/swapV2/trade-api.html#Switch%20Leverage
https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#Modify%20Leverage

:param float leverage: the rate of leverage
:param str symbol: unified market symbol
:param dict [params]: extra parameters specific to the exchange API endpoint
:param str [params.side]: hedged: ['long' or 'short']. one way: ['both']
:returns dict: response from the exchange
Nz) setLeverage() requires a symbol argumentrB  r   )rK  rL  r]  r5   )r  rB  rX  r.  )	r%   r5   r_  check_required_argumentr  r  cswapV1PrivatePostTradeLeverager  swapV2PrivatePostTradeLeverage)rq  rX  r  r|  rB  r  r  s          rs  set_leveragebingx.set_leverage  s      >#DGG.Y$YZZ%%ff5$$]D&B[\!!!V$Tl 

 )==dkk'>Z[[[$ <<T[[=YZZZ5 	" \$ [s7   ACCAC%C&'CCCCCc                   #    Uc  [        U R                  S-   5      eU R                  5       I Sh  vN   U R                  U5      n0 nSnSnSn	U R	                  SXT5      u  pU	S:X  aj  U R                  US5      n
U
c  [        U R                  S-   5      eU R                  U R                  Xd5      5      I Sh  vN nU R                  US/ 5      nGO`US   US	'   U R                  5       nUb  US
   (       a  SOSnX&U'   OUS   (       a  US-
  US'   U R                  US5      nU R                  US5      nUb  US
   (       a  SOSnXU'   OUS   (       a  XS'   US
   (       aV  Ub  X6S'   U R                  U R                  Xd5      5      I Sh  vN nU R                  US0 5      nU R                  US/ 5      nOxU R                  USS5      nU R                  US5      nUUS'   U R                  U R                  Xd5      5      I Sh  vN nU R                  US0 5      nU R                  US/ 5      nU R!                  XuX#U5      $  GN GN N NE7f)a*  
fetch all trades made by the user

https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Query%20transaction%20details
https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Query%20historical%20transaction%20orders
https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Query%20historical%20transaction%20details
https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#Query%20Order%20Trade%20Detail

: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
:param int [params.until]: timestamp in ms for the ending date filter, default is None
:param str params['trandingUnit']: COIN(directly represent assets such and ETH) or CONT(represents the number of contract sheets)
:param str params['orderId']: the order id required for inverse swap
:returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
Nz+ fetchMyTrades() requires a symbol argumentr   r.  rK  zE fetchMyTrades() requires an orderId argument for inverse swap tradesrw  r5   r  rB   r  r  rD   l    H4 r  r  r  r^  fillstradingUnitCONTfill_orders)r%   r5   r  r  r  r  #cswapV1PrivateGetTradeAllFillOrdersr  r  r5  r{  r  spotV1PrivateGetTradeMyTradesrz  r_  "swapV2PrivateGetTradeAllFillOrdersr1  )rq  r  r  r^  r|  r  r  r  r}  r  rK  nowstartTimeReqr  
endTimeReqrw  r  s                    rs  fetch_my_tradesbingx.fetch_my_tradesJ  s_    $ >#DGG.[$[\\!!!V$99/6Zi&&vy9G'2y(yzz!EEdkkRYFbccHNN8VR8E8 !'tGH##%C .4Vn{)(-%%(+C%C	"%%fg6EYYvw/F *0.Yg
&+
##& f~$',G$!%!C!CDKKPWD`!aa~~h;tWb94 #44V]FS6=9)4&!%!H!HU\Ie!ff~~h;t]B?*   fEE_ 	" d\ b> gsH   /IIBI9I	:CIIA8II	>I	IIIc                 b   U R                  US0 5      n[        UR                  5       5      n[        U5      nUS S S.S S S.0 S.nUS:w  ad  [	        SU5       HT  nXG   nX8   n	S S S.U R                  U	S5      SS.S.US   U'   US:X  d  M4  U R                  U	S	5      US
   S'   SUS
   S'   MV     U$ )NrE  )r  r  )r  r  r  rE  r   r  F)r  r  r   r  r  r  )rz  r   r  r  r  r  )
rq  r  r  rE  networkCodesnetworksLengthr  r  r  r  s
             rs  parse_deposit_withdraw_fee bingx.parse_deposit_withdraw_fee  s     >>#z26HMMO,\*"
 " 
 Q1n-*o"/'+4@(,(8(8%(HX] ^3z";/ "Q&040@0@-0XF:&u-7<F:&|4 . ru  r  c                 R  #    U R                  5       I Sh  vN   U R                  U5      I Sh  vN n0 n[        UR                  5       5      n[	        S[        U5      5       H9  nXV   nUb  U R                  Xq5      (       d  M"  X7   nU R                  U5      XG'   M;     U$  N Nu7f)aT  
fetch deposit and withdraw fees

https://bingx-api.github.io/docs/#/common/account-api.html#All%20Coins'%20Information

:param str[]|None codes: list of unified currency codes
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a list of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>`
Nr   )r  r  r   r  r  r  r  r  )	rq  r  r|  r}  depositWithdrawFeesresponseCodesr  r  r  s	            rs  fetch_deposit_withdraw_fees!bingx.fetch_deposit_withdraw_fees  s      !!!..v66$&X]]_-q#m,-A #D4==#=#= ,0,K,KE,R#)	 .
 #" 	"6s&   B'B#B'B%AB'B'%B'rh  rf  c                 f  #    U R                  XE5      u  pEU R                  U5        U R                  5       I Sh  vN   U R                  U5      nSnSnU R	                  USSSU5      u  pSSSSSS	.n	U R                  XU5      nUS
   UU R                  X5      US.n
U R                  US5      nUb  U R                  U5      U
S'   Ub  XJS'   U R                  USS/5      nU R                  U R                  X5      5      I Sh  vN nU R                  US5      nU R                  U5      $  N N)7f)a  
make a withdrawal

https://bingx-api.github.io/docs/#/en-us/spot/wallet-api.html#Withdraw

:param str code: unified currency code
:param float amount: the amount to withdraw
:param str address: the address to withdraw to
:param str [tag]:
:param dict [params]: extra parameters specific to the exchange API endpoint
:param int [params.walletType]: 1 fund(funding) account, 2 standard account, 3 perpetual account, 15 spot account
:returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
N   r  r  
walletTyper   r   r!  )r,  r   r  	perpetualrB   r5   )r  rh  r  r  r  r|  rw  )handle_withdraw_tag_and_paramsrj  r  r  handle_option_and_params_2r{  r?  r_  network_code_to_idr  (walletsV1PrivatePostCapitalWithdrawApplyr  r  r  )rq  r  r  rh  rf  r|  r  defaultWalletTyper  walletTypesr  r  r}  rw  s                 rs  r  bingx.withdraw  sZ     99#F7#!!!==&
!<<VZQWYegxy

 &&{@QR
TN00>$	
 ((;!%!8!8!AGI?$'L!6L)#<=FFt{{SZGcddx0 %%d++E 	"2 es"   8D1D-C
D1D/(D1/D1c                 X   [        UR                  5       5      nU R                  U5      n[        S[	        U5      5       Hf  nX4   nX   n[        U[         5      (       d  M"  Sn[        S[	        U5      5       H   nXh   n	US:  a  US-  nU[        U	5      -  nM"     US-  nXqU'   Mh     U$ )Nr   [r  ]r   r  sortr  r  r  r  )
rq  r|  rawKeysr  r  rb  valuearrStrr  arrayElements
             rs  rW  bingx.parse_params8  s    v{{}%yy!q#d)$A'CKE%&&q#e*-A#(8L1u#c,//F	 .
 #$s % ru  c                 H  #    U R                  5       I Sh  vN   SS0nU R                  SXT5      u  pTSnUb  U R                  U5      nUS   US'   Ub  X%S'   Ub  X5S'   SnU R                  S	Xd5      u  ptSnSn	US
:X  a<  U R	                  U R                  XT5      5      I Sh  vN nU R                  US/ 5      n	ONU R                  U R                  XT5      5      I Sh  vN nU R                  US0 5      n
U R                  U
S/ 5      n	U R                  XX#5      $  GN N{ NA7f)a  
retrieves the users liquidated positions

https://bingx-api.github.io/docs/#/swapV2/trade-api.html#User's%20Force%20Orders
https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#Query%20force%20orders

:param str [symbol]: unified CCXT market symbol
:param int [since]: the earliest time in ms to fetch liquidations for
:param int [limit]: the maximum number of liquidation structures to retrieve
:param dict [params]: exchange specific parameters for the bingx api endpoint
:param int [params.until]: timestamp in ms of the latest liquidation
:returns dict: an array of `liquidation structures <https://docs.ccxt.com/#/?id=liquidation-structure>`
NautoCloseTypeLIQUIDATIONr  r5   r  r  r^  r   r.  rw  r  )
r  r   r  r  !cswapV1PrivateGetTradeForceOrdersr  r   swapV2PrivateGetTradeForceOrdersrz  parse_liquidations)rq  r  r  r^  r|  r  r  r  r}  liquidationsrw  s              rs  fetch_my_liquidationsbingx.fetch_my_liquidationsJ  sC     !!!]
 229gN[[(F &tGH#(K $G99:OQW`i!CCDKKPWD`aaH8  >>(FB?L!BB4;;wC_``H< >>(FB7D>>$"=L&&|UJJa 	"$ b< as4   D"DBD""D#;D"D =D"D" D"c                    U R                  US5      nU R                  US5      nU R                  US5      nU R                  US5      nU R                  US5      n[        R                  " XV5      n[        R                  " X5      n	U R	                  UU R                  X25      U R                  U5      U R                  U5      U R                  U5      U R                  U5      U R                  U	5      UU R                  U5      S.	5      $ )Nr  r#  r  r  r  )	r  r  r!  r  rJ  	baseValue
quoteValuerQ  rR  )r  r{  r/   r[  safe_liquidationr^  rp  r]  )
rq  liquidationr  rd  rQ  contractsStringcontractSizeStringpriceStringbaseValueStringquoteValueStrings
             rs  parse_liquidationbingx.parse_liquidation  s    , ##K:%%k6:	**;F!--fnE&&{J?!,,_Q"--oK$$&&x8**?; --.@A&&{3**?;++,<="Y/
&
 
 
	ru  c                   #    U R                  5       I Sh  vN   U R                  U5      nU R                  US5      n0 nSnUb)  U R                  U R	                  Xc5      5      I Sh  vN nOcUS   US'   US   (       a)  U R                  U R	                  Xc5      5      I Sh  vN nO(U R                  U R	                  Xc5      5      I Sh  vN nU R                  US5      nU R                  X5      $  N N NT N-7f)a.  
closes open positions for a market

https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#One-Click%20Close%20All%20Positions
https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#Close%20all%20positions%20in%20bulk

:param str symbol: Unified CCXT market symbol
:param str [side]: not used by bingx
:param dict [params]: extra parameters specific to the bingx api endpoint
:param str|None [params.positionId]: the id of the position you would like to close
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
Nr  r5   r  r.  rw  )	r  r  r  #swapV1PrivatePostTradeClosePositionr  (cswapV1PrivatePostTradeCloseAllPositions'swapV2PrivatePostTradeCloseAllPositionsrz  r  )	rq  r  rB  r|  r  r  r  r}  rw  s	            rs  close_positionbingx.close_position  s      !!!V$%%fl;
!!EEdkkRYFbccH$ !'tGHi !%!N!Nt{{[bOk!ll "&!M!MdkkZaNj!kk ~~h/--k 	" d( m lsF   C<C4AC<(C6):C<#C8$(C<C:(C<6C<8C<:C<c                   #    U R                  5       I Sh  vN   U R                  U R                  S5      nU R                  U R                  SU5      nSnU R	                  SSU5      u  pASnU R                  SSU5      u  pQUS:X  a  [        U R                  S-   U-   S-   5      eSU0nSnUS:X  a)  U R                  U R                  Xa5      5      I Sh  vN nO(U R                  U R                  Xa5      5      I Sh  vN nU R                  US0 5      nU R                  US	/ 5      n	/ n
[        S
[        U	5      5       H)  nU R                  SX   05      nU
R!                  U5        M+     U
$  GNY N Nu7f)a  
closes open positions for a market

https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#One-Click%20Close%20All%20Positions
https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#Close%20all%20positions%20in%20bulk

:param dict [params]: extra parameters specific to the bingx api endpoint
:param str [params.recvWindow]: request valid time window value
:returns dict[]: `a list of position structures <https://docs.ccxt.com/#/?id=position-structure>`
NrB  rO   rC   z% closePositions() cannot be used for r  r.  rw  r  r   r  )r  r{  rk  rW  r.  r  r&   r5   r  r  r  rz  r  r  r  r  r  )rq  r|  r[  rB  r2  r  r  r}  rw  r  r  r  r  s                rs  close_all_positionsbingx.close_all_positions  s     !!! --dllLI&&t'8'8,HYZ

!??@SUY[ab
99:MtU[\!TWW'NNQ[[^hhii*
 i!JJ4;;W^KghhH "II$++V]JfggH ~~h3..y"5	q#g,'A**L'*+EFHX& ( _ 	" i hs5   E6E/B>E6E2(E6>E4?A1E62E64E6c                    #    U R                  U5      I Sh  vN nU R                  US0 5      nU R                  US5      nUUS:H  S.$  N17f)a  
fetchs the position mode, hedged or one way, hedged for binance is set identically for all linear markets or all inverse markets

https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Get%20Position%20Mode

:param str symbol: unified symbol of the market to fetch the order book for
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: an object detailing whether the market is in hedged or one-way mode
Nrw  dualSidePositionr  )r  rV  ) swapV1PrivateGetPositionSideDualrz  r  )rq  r  r|  r}  rw  r  s         rs  fetch_position_modebingx.fetch_position_modeS  s]      >>vFF ~~h3++D2DE'61
 	
 Gs   AA	2ArV  c                    #    SnU(       a  SnOSnSU0nU R                  U R                  XS5      5      I Sh  vN $  N7f)ag  
set hedged to True or False for a market

https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Set%20Position%20Mode

:param bool hedged: set to True to use dualSidePosition
:param str symbol: not used by bingx setPositionMode()
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: response from the exchange
Nr  falser  )!swapV1PrivatePostPositionSideDualr  )rq  rV  r  r|  r  r  s         rs  set_position_modebingx.set_position_modeo  sK       %& 0
 ;;DKK<XYYYYs   6?=?c                   #    U R                  5       I Sh  vN   U R                  U5      nU R                  X#XEXg5      n	XS'   SU	S'   Sn
US   (       a)  U R                  U R	                  X5      5      I Sh  vN n
O(U R                  U R	                  X5      5      I Sh  vN n
U R                  U
S5      nU R                  X5      $  N NR N+7f)a  
       cancels an order and places a new order

       https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Cancel%20order%20and%20place%20a%20new%20order  # spot
       https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Cancel%20an%20order%20and%20then%20Place%20a%20new%20order  # swap

       :param str id: order id
       :param str symbol: unified symbol of the market to create an order in
       :param str type: 'market' or 'limit'
       :param str side: 'buy' or 'sell'
       :param float amount: how much of the currency you want to trade in units of the 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 str [params.triggerPrice]: Trigger price used for TAKE_STOP_LIMIT, TAKE_STOP_MARKET, TRIGGER_LIMIT, TRIGGER_MARKET order types.
       :param dict [params.takeProfit]: *takeProfit object in params* containing the triggerPrice at which the attached take profit order will be triggered
       :param float [params.takeProfit.triggerPrice]: take profit trigger price
       :param dict [params.stopLoss]: *stopLoss object in params* containing the triggerPrice at which the attached stop loss order will be triggered
       :param float [params.stopLoss.triggerPrice]: stop loss trigger price

EXCHANGE SPECIFIC PARAMETERS
       :param str [params.cancelClientOrderID]: the user-defined id of the order to be canceled, 1-40 characters, different orders cannot use the same clientOrderID, only supports a query range of 2 hours
       :param str [params.cancelRestrictions]: cancel orders with specified status, NEW: New order, PENDING: Pending order, PARTIALLY_FILLED: Partially filled
       :param str [params.cancelReplaceMode]: STOP_ON_FAILURE - if the cancel order fails, it will not continue to place a new order, ALLOW_FAILURE - regardless of whether the cancel order succeeds or fails, it will continue to place a new order
       :param float [params.quoteOrderQty]: order amount
       :param str [params.newClientOrderId]: custom order id consisting of letters, numbers, and _, 1-40 characters, different orders cannot use the same newClientOrderId.
       :param str [params.positionSide]: *contract only* position direction, required for single position, for both long and short positions only LONG or SHORT can be chosen, defaults to LONG if empty
       :param str [params.reduceOnly]: *contract only* True or False, default=false for single position mode. self parameter is not accepted for both long and short positions mode
       :param float [params.priceRate]: *contract only* for type TRAILING_STOP_Market or TRAILING_TP_SL, Max = 1
       :param str [params.workingType]: *contract only* StopPrice trigger price types, MARK_PRICE(default), CONTRACT_PRICE, or INDEX_PRICE
       :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
       NcancelOrderIdSTOP_ON_FAILUREcancelReplaceModerD   rw  )r  r  r  #swapV1PrivatePostTradeCancelReplacer  (spotV1PrivatePostTradeOrderCancelReplacerz  r  )rq  r5   r  r  rB  r  rJ  r|  r  r  r}  rw  s               rs  
edit_orderbingx.edit_order  s     @ !!!V$++F$V#% '8#$&>!EEdkkRYFbccHp "JJ4;;W^KghhHL ~~h/--M 	" dp is4   CCA C7C
8(C C!(C
CCc                   #    U R                  5       I Sh  vN   U R                  U5      nSUS   0nSnSnU R                  SX25      u  pRUS:X  a)  U R                  U R	                  XB5      5      I Sh  vN nO(U R                  U R	                  XB5      5      I Sh  vN nU R                  US0 5      nU R                  Xs5      $  N NS N,7f)a  
fetches the margin mode of the trading pair

https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Query%20Margin%20Type
https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#Query%20Margin%20Type

:param str symbol: unified symbol of the market to fetch the margin mode for
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a `margin mode structure <https://docs.ccxt.com/#/?id=margin-mode-structure>`
Nr  r5   r|   r.  rw  )r  r  r   cswapV1PrivateGetTradeMarginTyper  swapV2PrivateGetTradeMarginTyperz  parse_margin_mode)rq  r  r|  r  r  r  r}  rw  s           rs  fetch_margin_modebingx.fetch_margin_mode  s      !!!V$fTl
 99:KV\i!BB4;;wC_``H "AA$++gB^__H ~~h3%%d33C 	" a `s4   CCAC4C5(CC
)CC
Cc                     U R                  US5      nU R                  US5      nUS:X  a  SOUnUU R                  X2SS5      US.$ )Nr  r  crossedr  r  rD   )r  r  rO  )r  r_  r^  )rq  rO  r  rd  r  s        rs  r-  bingx.parse_margin_modeB  sV    ##J9++JE
!+y!8Wz
&&xfE$
 	
ru  c                   #    U R                  5       I Sh  vN   U R                  U5      nSUS   0nSn0 nU R                  US0 5      nUS   (       a+  U R                  U R	                  XB5      5      I Sh  vN nUnORUS   (       a  U R                  U5      I Sh  vN nUnO,U R                  U5      I Sh  vN nU R                  US0 5      nU R                  Xc5      $  N Nl NH N.7f)a  
fetch the trading fees for a market

https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Query%20Trading%20Commission%20Rate
https://bingx-api.github.io/docs/#/en-us/swapV2/account-api.html#Query%20Trading%20Commission%20Rate
https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#Query%20Trade%20Commission%20Rate

:param str symbol: unified market symbol
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a `fee structure <https://docs.ccxt.com/#/?id=fee-structure>`
Nr  r5   rw  rB   r.  rO  )r  r  rz  "spotV1PrivateGetUserCommissionRater  #cswapV1PrivateGetUserCommissionRate"swapV2PrivateGetUserCommissionRateparse_trading_fee)rq  r  r|  r  r  r}  rO  rw  s           rs  fetch_trading_feebingx.fetch_trading_feeL  s      !!!V$fTl
 
~~h3&>!DDT[[QXEabbH Ji !%!I!I&!QQ "
!%!H!H!PP "^^D,C
%%j99i 	" c R QsF   C*C"A C*7C$8%C*C&C*9C(:)C*$C*&C*(C*r  c                 h    Ub  US   OS nUUU R                  US5      U R                  US5      SSS.$ )Nr  makerCommissionRatetakerCommissionRateF)r  r  r   r   r  r   )r  )rq  r  r  r  s       rs  r7  bingx.parse_trading_fee  sM     '-&8!t%%c+@A%%c+@A
 	
ru  c                 <   [        UR                  5       5      nU R                  U5      nS nS n[        S[	        U5      5       H  nX6   nX   n[        U[         5      (       a  S n	[        S[	        U5      5       Hq  n
X   n[        U[        5      nU(       a/  U
S:  a  U	S[        U5      -   S-   -  n	M:  S[        U5      -   S-   n	MM  U
S:  a  U	S[        U5      -   -  n	Mf  [        U5      n	Ms     SU	-   S-   nUnUS:X  a
  US-   U-   nM  USU-   S-   U-   -  nM     U$ )	Nr   z,""r  r  r  =&r  )rq  r|  r  r  adjustedValuer  r  rb  r  r  r  r  isStrings                rs  custom_encodebingx.custom_encode  s+   v{{}%yy!q#d)$A'CKE%&&q#e*-A#(8L *< =Hq5"i#l2C&Cc&IIF%(3|+<%<s%BFq5"cC,=&==F%(%6F . !$fs 2%AvsU*#)c/E11/ %0 ru  r   GETc                    US   nUS   nUS   n	U R                  U R                  SS5      n
U
(       a$  US:w  a  [        U R                  S-   U-   S-   5      eU R	                  U R
                  S	   U   5      nU R                  X5      nUS
:H  nUS:H  nU(       d  U(       a  U(       a  SnOSnUS   nUS   n	US:w  a  US:X  a  US:X  a  US-  nOUSU-   -  nUSU-   S-   U-   -  nU R                  X@R                  U5      5      nU R                  5       US'   U R                  U5      nU	S:X  a   U(       a  USU R                  U5      -   -  nGO-U	S:X  Ga&  U R                  5         US:H  =(       d    US:H  =(       a    US:H  nS nS nU(       a  U R                  U5      nO#U R                  U5      nU R                  US5      nU R!                  U R#                  U5      U R#                  U R$                  5      [&        R(                  5      nU R*                  U R-                  U R                  SS5      S.nU(       a  SUS'   UUS '   U R/                  U5      nO#U R                  US5      nUSU-   S!-   S"-   U-   -  nXXeS#.$ )$Nr   r   r   r  FrD   z) does not have a testnet/sandbox URL for z
 endpointsr   r   r   zaccount/transferz	api/assetr!  r   rB   r   z/apir  rQ  r   ?r   r   POSTTrC  r/  )zX-BX-APIKEYzX-SOURCE-KEYzapplication/jsonzContent-Type	signaturerA  z
signature=)urlmethodbodyheaders)r  rk  r+   r5   implode_hostnamer   implode_paramsr  extract_paramsrm  keysort	urlencoder  rD  rW  	rawencodehmacencoder   hashlibsha256r   r  rg  )rq  pathsectionrL  r|  rN  rM  r  r<   accessr  rK  versionIsTransferversionIsAssetisJsonContentTypeparsedParamsencodeRequestrJ  querys                      rs  sign
bingx.sign  s   qz!*NN4<<F	$&.tww)TTW[[^jjkk##DIIe$4T$:;""40$
2!W, )"ajGQZF++v~'T/vsTz!sW}s"T))6#6#6t#<="jjl{f%XsT^^F333y ++-#'<#7"XTEW=W!p_eio_oL M  $ 2 26 :#008 $|T B		$++m"<dkk$++>VX_XfXfgI#{{ $ 0 0x PG !*<'&/{#yy(|T:sU{S(<7)CCdOOru  c                 "    U R                  5       $ N)r5  )rq  s    rs  rm  bingx.nonce  s      ""ru  enablec                 H   > [         [        U ]  U5        XR                  S'   g )Nr  )rn  r1   set_sandbox_moderk  )rq  rg  rr  s     rs  ri  bingx.set_sandbox_mode  s    eT+F3&,]#ru  httpCodereasonrK  rL  rN  rM  c
                    Uc  g U R                  US5      n
U R                  US5      nU R                  US5      nUc	  U
b  U
S:w  a  Ub  UnU R                  S-   U-   nU R                  U R                  S   X5        U R                  U R                  S   X5        U R	                  U R                  S   X5        [        U5      eg )Nr  msgtransferErrorMsgr   r  r  )r  r5   throw_exactly_matched_exceptionr  throw_broadly_matched_exceptionr!   )rq  rk  rl  rK  rL  rN  rM  r}  requestHeadersrequestBodyr  messagero  feedbacks                 rs  handle_errorsbingx.handle_errors  s     &1""8U3++H6HI(d.>43;+*ww}t+H001I7]001I4Z001I7]))ru   re  )__name__
__module____qualname____firstlineno__r   ro  r
   r~  r   r  r    r   r  r  r  dictr  r  r  r   r  r+  r   r4  rf  r   rs  r   rz  r   r   r  rx  r   r  r  r  r  r   r  r   r  r  r  r  r   r  r  r   r  r  r  r  r   floatr2  r6  r:  r   r   r  r1  r   r  r`  r  r   r  r  r  r  r  r  r  r  r$  r+  r/  r(  r   r   rJ  r   rO  rM  r	   r]  rc  rm  r   rs  rx  r  r  r  r   r  r  r  r  r   r  r  intr  r  r  r  r  rW  r  r  r  r  r  boolr   r(  r   r.  r-  r   r8  r7  rD  rb  rm  ri  rw  __static_attributes____classcell__)rr  s   @rs  r1   r1      s
   d# dL ') 5S 5, -/ u: un+$v, +B"+H+._4 _F _B *, ;V ;. ?CQUdhqs XJ XJ XJ3 XJ^a XJx|  ~B  yC XJt2
 2
4 2
h <@d[] =? =?S =? =?bfglbm =?~^ ^v ^ ^@ @DB mS m mS\ m^ <> &5s &5+ &5P <@ 7 7| 7 
6 
[ 
B >BPTcgpr 1Ms 1M# 1M]` 1Mf
6 
" =? 78 78rF B 68 :3 :3F :3x 6:" =47 =4 =4~ :< 5;S 5; 5;n :>b 64w 64W 64pb4 b b6 bH *, u, u,nj) j)X FJX\eg ;R3 ;Rs ;RRU ;Rlpqylz ;Rz 8<B [8W [84PX> [8z 8: R23 R2hwt wV wr eg 
S# 
SY 
SV[ 
S XZ 	Tc 	T 	T Y[ 	Us 	U% 	U os{} z,3 z,i z,y z,Z_ z,hk z,x mqy{ B0 B0I B0Y B0X] B0fi B0H FH _1$|*< _1B	3	3S 	3k kv k kZ: : 9=R m/S m/# m/^ 59 I)c I)V AER c*tCy c*# c*J BD &S &P 8<B j/C j/ j/X 04$UYbd U? U?C U?s U?imnsit U?n 59tZ^gi s?c s? s?TW s?nrsxny s?j 7;\`ik : :3 :VY :ptuzp{ :* 9=4^bkm <# <S <X[ <* DHVZimvx }?S }?PS }?cf }?~ ac 5
3 5
 5
C 5
TW 5
gt 5
n 154VZce <B# <BS <BPS <Bjno|j} <B|
t 
x 
= 
.:C :C : JL )0S )0PTUcPd )0V =? > >> >4
h 
R` 
4 04$UYbd )I )IC )Is )Iimnyiz )IV 37TX\eg +IC +Is +IRU +Ilpq|l} +IZ[
T [
X [
Q\ [
z:s :& DHPR  ]  ]S  ]D CE Ss SE SI[ S FH S# Su SL^ S CE  @s  @E  @I[  @D
d 
F 
N` 
. 8: 813 81h 81t$
t $
V $
x $
L ?C2 +[3 +[ +[z 37TX\eg CFC CFs CFRU CFJ @ BFb #w #* QU]_ 2,3 2, 2, 2,# 2,do 2,h$ 9=4^bkm ^K# ^KS ^KX[ ^K@'V 'R CGr B.3 B.i B.V[ B.H 02 :d8n :x 7;2 
 
8 CGr Zd ZC Z: fjx|  FH F.3 F. F.9 F.I F._b F.ru F.  MR F.P ;= ,4c ,4 ,4\
D 
* 
 ;= @:c @:AT @:D
T 
6 
EX 
"@ "*%DW[ 4Pl#-t -c 3 S # X\ dg  ru  r1   )8 ccxt.async_support.base.exchanger   ccxt.abstract.bingxr   r  rW  r  ccxt.base.typesr   r   r   r   r	   r
   r   r   r   r   r   r   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,   r-   ccxt.base.decimal_to_precisionr.   ccxt.base.preciser/   r1   ry  ru  rs  <module>r     s    6 +    ~  ~  ~  ~  ~  ~  ~  ~  * 0 - - . ' & . ) * ) , + 4 %tcHk tcru  