
    T>qj                         d Z ddlZddlZddlZddlZddlZddlZddlmZ ddl	m
Z
mZmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZmZmZmZmZ  G d d      Zy)z9Socket client for communicating with Interactive Brokers.    N)deque)DequeListOptional)Event   )
Connection)Contract)Decoder)ConnectionStatsWshEventData)UNSET_DOUBLEUNSET_INTEGERdataclassAsTuplegetLooprunc            
          e Zd ZdZdZdZdZdZdZ e	d      \  Z
ZZd Zd	 Zd
efdZd Zd Zd
efdZd
efdZd
efdZd Zd
ee   fdZdefdZ	 dvdedededee   fdZdvdZ d Z!dddZ"defd Z#d! Z$d" Z%d# Z&d$ Z'd% Z(d& Z)dwd'Z*d( Z+d) Z,d* Z-d+ Z.d, Z/d- Z0d. Z1d/ Z2d0 Z3d1 Z4d2 Z5d3 Z6d4 Z7d5 Z8d6 Z9d7 Z:d8 Z;d9 Z<d: Z=d; Z>d< Z?d= Z@d> ZAd? ZBd@ ZCdA ZDdB ZEdC ZFdD ZGdE ZHdF ZIdG ZJdH ZKdI ZLdJ ZMdK ZNdL ZOdM ZPdN ZQdO ZRdP ZSdQ ZTdR ZUdS ZVdT ZWdU ZXdV ZYdW ZZdX Z[dY Z\dZ Z]d[ Z^d\ Z_d] Z`d^ Zad_ Zbd` Zcda Zddb Zedc Zfdd Zgde Zhdf Zidg Zjdh Zkdi Zldj Zmdk Zndl Zodm Zpdn Zqdo Zrdp ZsdqetfdrZuds Zvdt Zwyu)xClienta  
    Replacement for ``ibapi.client.EClient`` that uses asyncio.

    The client is fully asynchronous and has its own
    event-driven networking code that replaces the
    networking code of the standard EClient.
    It also replaces the infinite loop of ``EClient.run()``
    with the asyncio event loop. It can be used as a drop-in
    replacement for the standard EClient as provided by IBAPI.

    Compared to the standard EClient this client has the following
    additional features:

    * ``client.connect()`` will block until the client is ready to
      serve requests; It is not necessary to wait for ``nextValidId``
      to start requests as the client has already done that.
      The reqId is directly available with :py:meth:`.getReqId()`.

    * ``client.connectAsync()`` is a coroutine for connecting asynchronously.

    * When blocking, ``client.connect()`` can be made to time out with
      the timeout parameter (default 2 seconds).

    * Optional ``wrapper.priceSizeTick(reqId, tickType, price, size)`` that
      combines price and size instead of the two wrapper methods
      priceTick and sizeTick.

    * Automatic request throttling.

    * Optional ``wrapper.tcpDataArrived()`` method;
      If the wrapper has this method it is invoked directly after
      a network packet has arrived.
      A possible use is to timestamp all data in the packet with
      the exact same time.

    * Optional ``wrapper.tcpDataProcessed()`` method;
      If the wrapper has this method it is invoked after the
      network packet's data has been handled.
      A possible use is to write or evaluate the newly arrived data in
      one batch instead of item by item.

    Parameters:
      MaxRequests (int):
        Throttle the number of requests to ``MaxRequests`` per
        ``RequestsInterval`` seconds. Set to 0 to disable throttling.
      RequestsInterval (float):
        Time interval (in seconds) for request throttling.
      MinClientVersion (int):
        Client protocol version.
      MaxClientVersion (int):
        Client protocol version.

    Events:
      * ``apiStart`` ()
      * ``apiEnd`` ()
      * ``apiError`` (errorMsg: str)
      * ``throttleStart`` ()
      * ``throttleEnd`` ()
    )apiStartapiEndapiErrorthrottleStartthrottleEnd-   r            c                    || _         t        |d      | _        t        d      | _        t        d      | _        t        d      | _        t        d      | _        t        d      | _        t        j                  d      | _        t               | _        | j                  xj                  | j                  z  c_        | j                  xj                   | j"                  z  c_        t%        |dd       | _        t%        |d	d       | _        t%        |d
d       | _        d| _        d| _        d| _        d| _        d| _        | j7                          y )Nr   r   r   r   r   r   zib_insync.clientpriceSizeTicktcpDataArrivedtcpDataProcessed     )wrapperr   decoderr   r   r   r   r   r   logging	getLogger_loggerr	   connhasData_onSocketHasDatadisconnected_onSocketDisconnectedgetattr_priceSizeTick_tcpDataArrived_tcpDataProcessedhostportclientIdoptCapabconnectOptionsreset)selfr%   s     O/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/ib_insync/client.py__init__zClient.__init__\   s
   w*j)Hoj)"?3 /(();<L			T222		$"<"<< &gE&w0@$G!(2Dd!K		!

r$   c                    t         j                  | _        d| _        d| _        d| _        d| _        d| _        g | _        t        j                         | _
        d| _        d| _        d| _        t               | _        t               | _        y )NFr   r$   )r   DISCONNECTED	connState	_apiReady_serverVersion_data	_hasReqId	_reqIdSeq	_accountstime
_startTime_numBytesRecv_numMsgRecv_isThrottlingr   _msgQ_timeQr9   s    r:   r8   zClient.resetv   sq    ,,
))+"!&
$)Gr$   returnc                     | j                   S N)r@   rL   s    r:   serverVersionzClient.serverVersion   s    """r$   c                 8    t               }|j                          y rO   )r   run_forever)r9   loops     r:   r   z
Client.run   s    yr$   c                 <    | j                   t        j                  k(  S rO   )r>   r   	CONNECTEDrL   s    r:   isConnectedzClient.isConnected   s    ~~!1!111r$   c                     | j                   S )z%Is the API connection up and running?)r?   rL   s    r:   isReadyzClient.isReady   s    ~~r$   c                 "   | j                         st        d      t        | j                  t	        j                         | j                  z
  | j
                  | j                  j                  | j                  | j                  j                        S )z$Get statistics about the connection.Not connected)
rX   ConnectionErrorr   rF   rE   rG   r*   numBytesSentrH   
numMsgSentrL   s    r:   connectionStatszClient.connectionStats   sf    ||~!/22OOIIK$//)		 6 6dii22	4 	4r$   c                 ~    | j                         st        d      | j                  }| xj                  dz  c_        |S )zGet new request ID.rZ   r   )rX   r[   rC   )r9   newIds     r:   getReqIdzClient.getReqId   s2    ||~!/22!r$   c                 :    t        | j                  |      | _        y)z2Update the next reqId to be at least ``minReqId``.N)maxrC   )r9   minReqIds     r:   updateReqIdzClient.updateReqId   s    T^^X6r$   c                 P    | j                         st        d      | j                  S )z8Get the list of account names that are under management.rZ   )rX   r[   rD   rL   s    r:   getAccountszClient.getAccounts   s     ||~!/22~~r$   r7   c                 .    |j                         | _        y)z
        Set additional connect options.

        Args:
            connectOptions: Use "+PACEAPI" to use request-pacing built
                into TWS/gateway 974+ (obsolete).
        N)encoder7   )r9   r7   s     r:   setConnectOptionszClient.setConnectOptions   s     -335r$   r3   r4   r5   timeoutc                 >    t        | j                  ||||             y)a  
        Connect to a running TWS or IB gateway application.

        Args:
            host: Host name or IP address.
            port: Port number.
            clientId: ID number to use for this client; must be unique per
                connection.
            timeout: If establishing the connection takes longer than
                ``timeout`` seconds then the ``asyncio.TimeoutError`` exception
                is raised. Set to 0 to disable timeout.
        N)r   connectAsync)r9   r3   r4   r5   rk   s        r:   connectzClient.connect   s     	DdD(G<=r$   c           	        K   	 | j                   j                  d| d| d| d       || _        t        |      | _        t        |      | _        t        j                  | _        |xs d }t        j                  | j                  j                  ||      |       d {    | j                   j                  d       d| j                  d| j                  | j                  | j                   rd| j                   z   nd	fz        z   }| j                  j#                  |       t        j                  | j$                  |       d {    | j                   j                  d
       y 7 7 "# t&        $ r|}| j)                          d|}| j                   j+                  |       | j,                  j/                  |       t1        |t2              r| j                   j+                  d        d }~ww xY ww)NzConnecting to :z with clientId z...	Connecteds   API s	   v%d..%d%s    r$   zAPI connection readyzAPI connection failed: z%Make sure API port on TWS/IBG is open)r)   infor3   intr4   r5   r   
CONNECTINGr>   asynciowait_forr*   rm   _prefixMinClientVersionMaxClientVersionr7   sendMsgr   BaseException
disconnecterrorr   emit
isinstanceConnectionRefusedError)r9   r3   r4   r5   rk   msges          r:   rm   zClient.connectAsync   s    	LL av_XJcJLDID	DIMDM#..DNoG""499#9#9$#EwOOOLLk*T\\,%%t'<'<.2.A.At***s:L +L M MC IIc"""4==':::LL45 P ; 	OO+A51CLLs#MMs#!34""#JK	sO   G2BE* E&B&E* E(E* %G2&E* (E* *	G/3A7G**G//G2c                     | j                   j                  d       t        j                  | _        | j
                  j                          | j                          y)zDisconnect from IB connection.DisconnectingN)r)   rs   r   r=   r>   r*   r}   r8   rL   s    r:   r}   zClient.disconnect   s:    /*,,		

r$   T)	makeEmptyc                   | j                         st        d      t        j                         }|rdt        t
        fnd}|D ]p  }t        |      }||v rd}n8|t        u r|}n,t        t        u rt        |      }n|t        u r!|t        j                  k(  rdn
t        |      }n|t        u r|rdnd}n|t        u rdj                  d |D              }nt        |t               r|}d	j                  d
 |j"                  |j$                  |j&                  |j(                  |j*                  |j,                  |j.                  |j0                  |j2                  |j4                  |j6                  |j8                  fD              }nt        |      }|j;                  |       |j;                  d	       s | j=                  |j?                                y)zASerialize and send the given fields using the IB socket protocol.rZ   NrO   r"   Infinite10c              3   T   K   | ]   }|j                    d |j                   d " yw)=;N)tagvalue).0vs     r:   	<genexpr>zClient.send.<locals>.<genexpr>   s%     AaquugQqwwiq1As   &( c              3   2   K   | ]  }t        |        y wrO   )str)r   fs     r:   r   zClient.send.<locals>.<genexpr>  s      4c!f 4s   ) rV   r[   ioStringIOr   r   typer   rt   floatmathinfboollistjoinr   r
   conIdsymbolsecTypelastTradeDateOrContractMonthstrikeright
multiplierexchangeprimaryExchangecurrencylocalSymboltradingClasswriter{   getvalue)	r9   r   fieldsr   emptyfieldtypscs	            r:   sendzClient.send   sn   !!/22kkm7@}l3g 	Eu+C~J"'488"3JU CcGGA5AAE8,II 4GGQXXqyy22AHHGGQ\\1::%%qzzMM1>>/3 4 4 JIIaLIIdO5	6 	S\\^$r$   r   c                    t               }|j                         }| j                  }| j                  }|r=||d   z
  | j                  kD  r(|j                          |r||d   z
  | j                  kD  r(|r|j                  |       |rt        |      | j                  k  s| j                  s|j                         }| j                  j                  | j                  |j                                      |j                  |       | j                  j                  t        j                         r/| j                  j#                  d|d d j%                  dd             |r&t        |      | j                  k  r| j                  s|rv| j&                  s<d| _        | j(                  j+                          | j                  j#                  d       |j-                  |d   | j                  z   | j                  d        y | j&                  r=d| _        | j.                  j+                          | j                  j#                  d	       y y )
Nr   z>>> %sr#   r   ,TzStarted to throttle requestsFzStopped to throttle requests)r   rE   rK   rJ   RequestsIntervalpopleftappendlenMaxRequestsr*   r{   rx   ri   r)   isEnabledForr'   DEBUGdebugreplacerI   r   r   call_atr   )r9   r   rS   ttimesmsgss         r:   r{   zClient.sendMsg  s   yIIKzzE!Ht'<'<<MMO E!Ht'<'<<KKE
T%5%55T=M=M,,.CIIdll3::<89LLO||((7""8S"X-=-=dC-HI E
T%5%55T=M=M %%%)"""'')""#ABLLa4000d$ !!%*"  %%'""#AB "r$   c                 F    t        j                  dt        |            |z   S )N>I)structpackr   )r9   r   s     r:   rx   zClient._prefix,  s    {{4S*S00r$   c                 x   | j                   j                  t        j                        }| j                  r| j	                          | xj
                  |z  c_        | xj                  t        |      z  c_        	 t        | j
                        dk  rndt        j                  d| j
                  d d       d   z   }t        | j
                        |k  rnB| j
                  d| j                  d      }| j
                  |d  | _        |j                  d      }|j                          | xj                  dz  c_        |r+| j                   j                  d	d
j                  |             | j                   st        |      dk(  r|\  }}t#        |      | _        | j                   | j$                  k  r| j'                  d       y | j                   | j(                  _        t,        j.                  | _        | j3                          | j4                  j7                          | j                   j9                  d| j                           n| j:                  st#        |d         }|dk(  r(|\  }	}	}
| j=                  t#        |
             d| _        n2|dk(  r-|\  }	}	}|j                  d
      D cg c]  }|s|	 c}| _         | j>                  r-| j@                  r!d| _        | jB                  jE                          | j(                  jG                  |       | jH                  r| jI                          y y c c}w )NT   r   r   backslashreplace)errorsr   r   z<<< %sr      z"TWS/gateway version must be >= 972zLogged on to server version 	      )%r)   r   r'   r   r1   rA   rG   r   r   unpackdecodesplitpoprH   r   r   r@   rt   ry   r.   r&   rP   r   rU   r>   startApir%   
connectAckrs   r?   re   rB   rD   r   r   	interpretr2   )r9   datar   msgEndr   r   version	_connTimemsgId_validIdacctsas                r:   r,   zClient._onSocketHasData0  s   ))'--8  "

d
c$i'4::!#tTZZ^<Q??F4::'**Qv&--5G-HCFG,DJYYt_FJJL!""8SXXf-=>&&3v;!+;%+"&)'l#&&)>)>>..<>-1-@-@*!'!1!1'')!!243F3F2GHJ ~~  q	NEz(.1g((W6)-"&,1e5:[[5E)K!)K~~$..)-**, &&v.a d !!""$ " *Ls   /L77L7c                    | j                         }| j                         s| j                  j                  d       n|sd}|s|d| j                   dz  }|r6| j                  j                  |       | j                  j                  |       | j                  j                          |r| j                  j                          | j                          |r| j                  j                          y y )NzDisconnected.zPeer closed connection.z
 clientId z already in use?)rX   rV   r)   rs   r5   r~   r   r   r%   setEventsDoneconnectionClosedr8   r   )r9   r   wasReadys      r:   r.   zClient._onSocketDisconnectedm  s    <<>!LLo.+CDMM?2BCCLLs#MMs#""$LL))+

KK r$   c                    dd||g}|j                   dk(  rW|j                  xs g }|t        |      gz  }|D ]3  }	||	j                  |	j                  |	j
                  |	j                  gz  }5 |j                  }
|
r(|d|
j                  |
j                  |
j                  gz  }n|dgz  }|||||gz  } | j                  |  y )Nr      BAGTF)r   	comboLegsr   r   ratioactionr   deltaNeutralContractdeltapricer   )r9   reqIdcontractgenericTickListsnapshotregulatorySnapshotmktDataOptionsr   legslegdncs              r:   
reqMktDatazClient.reqMktData  s     R)u$%%+Ds4yk!F K399ciiS\\JJK ++tSYY		399==FugFX'9>K 	K		6r$   c                 *    | j                  dd|       y )Nr   r   r9   r   s     r:   cancelMktDatazClient.cancelMktData  s    		!Qr$   c                    | j                         }d|||j                  |j                  |j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                   |j"                  |j$                  |j&                  |j(                  |j*                  g}|j,                  dk(  r|j.                  xs g }|t1        |      gz  }|D ]_  }||j2                  |j4                  |j                  |j6                  |j                  |j8                  |j:                  |j<                  gz  }a |j>                  xs g }|t1        |      gz  }|D ]  }||j@                  gz  } |jB                  xs g }|t1        |      gz  }|D ]  }	||	jD                  |	jF                  gz  } |g d|jH                  |jJ                  |jL                  |jN                  |jP                  |jR                  |jT                  |jV                  |j8                  |j:                  |j<                  |jX                  |jZ                  |j\                  |j^                  |j`                  |jb                  |jd                  |jf                  |jh                  |jj                  |jl                  |jn                  |jp                  |jr                  |jt                  |jv                  |jx                  |jz                  |j|                  |j~                  z  }|j|                  r]||j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  gz  }||j                  |j                  |j                  |j                  |j                  |j                  |j                  gz  }d|j                  cxk  r	t        k  rUn nR||j                  |j                  |j                  |j                  |j                  |j                  |j                  gz  }||j                  |j                  |j                  |j                  gz  }|j                  r||j                  gz  }||j                  |j                  |j                  |j                  gz  }|j                  }
|
r(|d|
j2                  |
jp                  |
j@                  gz  }n|dgz  }||j                  gz  }|j                  rA|j                  xs g }|t1        |      gz  }|D ]  }	||	jD                  |	jF                  gz  } ||j                  |j                  |j                  |j                  |j                  |j                  gz  }|j
                  dk(  r<||j                  |j                  |j                  |j                  |j                  gz  }|t1        |j                        gz  }|j                  r:|j                  D ]  }|t        |      z  } ||j                  |j                  gz  }||j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  j                  |j                  j                  |j                  |j                  |j                  |j                   |j                  |j                  |j                  |j                  |j
                  gz  }|dk\  r||j                  gz  }|d	k\  r||j                  gz  }|d
k\  r||j                  gz  }|dk\  r||j                  gz  }|dk\  r||j                  gz  }|dk\  r|j6                  dk(  r||j                  gz  }|j
                  dk(  r[||j                  |j                  gz  }|j                  t        j                  k(  rJ||j                   |j"                  gz  }n,|j
                  dk(  r||j                   |j"                  gz  } | j$                  |  y )Nr   r   r"   r   TFz	PEG BENCH                  IBKRATSzPEG BESTzPEG MID)rP   	secIdTypesecIdr   totalQuantity	orderTypelmtPriceauxPricetifocaGroupaccount	openCloseoriginorderReftransmitparentId
blockOrdersweepToFilldisplaySizetriggerMethod
outsideRthhiddenr   r   r   r   r   r   shortSaleSlotdesignatedLocation
exemptCodeorderComboLegsr   smartComboRoutingParamsr   r   discretionaryAmtgoodAfterTimegoodTillDatefaGroupfaMethodfaPercentage	faProfile	modelCodeocaTyperule80AsettlingFirm	allOrNoneminQtypercentOffset
eTradeOnlyfirmQuoteOnlynbboPriceCapauctionStrategystartingPricestockRefPricer   stockRangeLowerstockRangeUpperoverridePercentageConstraints
volatilityvolatilityTypedeltaNeutralOrderTypedeltaNeutralAuxPricedeltaNeutralConIddeltaNeutralSettlingFirmdeltaNeutralClearingAccountdeltaNeutralClearingIntentdeltaNeutralOpenClosedeltaNeutralShortSaledeltaNeutralShortSaleSlotdeltaNeutralDesignatedLocationcontinuousUpdatereferencePriceTypetrailStopPricetrailingPercentscaleInitLevelSizescaleSubsLevelSizescalePriceIncrementr   scalePriceAdjustValuescalePriceAdjustIntervalscaleProfitOffsetscaleAutoResetscaleInitPositionscaleInitFillQtyscaleRandomPercent
scaleTableactiveStartTimeactiveStopTime	hedgeType
hedgeParamoptOutSmartRoutingclearingAccountclearingIntentnotHeldr   algoStrategy
algoParamsalgoIdwhatIforderMiscOptions	solicitedrandomizeSizerandomizePricereferenceContractIdisPeggedChangeAmountDecreasepeggedChangeAmountreferenceChangeAmountreferenceExchangeId
conditionsr   conditionsIgnoreRthconditionsCancelOrderadjustedOrderTypetriggerPricelmtPriceOffsetadjustedStopPriceadjustedStopLimitPriceadjustedTrailingAmountadjustableTrailingUnitextOperatorsoftDollarTiernamevalcashQtymifid2DecisionMakermifid2DecisionAlgomifid2ExecutionTradermifid2ExecutionAlgodontUseAutoPriceForHedgeisOmsContainerdiscretionaryUpToLimitPriceusePriceMgmtAlgoduration	postToAtsautoCancelParentadvancedErrorOverridemanualOrderTimeminTradeQtyminCompeteSizecompeteAgainstBestOffsetr   r   midOffsetAtWholemidOffsetAtHalfr   )r9   orderIdr   orderr   r   r   r   paramsparamr   conds               r:   
placeOrderzClient.placeOrder  s   $$&wNNLLOONNNNIINNMMOOLLNNNNNNLL/2 u$%%+Ds4yk!F 	$IIIIJJLLMM%%**NN$ $	$ ''-2Ds4yk!F &399+%& 228bFs6{m#F 3599ekk223 	  ( ("" (  ( 	 (
 MM ( NN (  ( OO ( OO (  ( $$ (  ( MM ( MM (  (  OO! (" LL# ($ % (& ' (( ) (* + (, !!- (. / (0 1 (2 KK3 (4 !!5 (6 !!7 (8 //9 (: ; (<   = (> ''? (@ &&A (  	(D &&''..1100++++//446 6F 	""$$  !!$$$$%%' 	' ))8L8++..''$$''&&((* *F 	!!  OO	 	 ??u''((F$$!!  MM	 	 ++tSYY		399==FugF5%%&&%%+Fs6{m#F 3599ekk223 	LLLL""OO  " 	" ??k)))22((++))+ +F 	3u''())(( 1*4001))++- -F 	##  ##((((((  %%  $$MM%%$$''%%**  --""'$ 	$* c>u~~&&Fc>u''Fc>u--..Fc>u2233Fc>u,,--Fc>  I-5,,--*,((224 4 11TXX=u55u7L7LMMFI-51153H3HII		6r$   c                 ^    dd|g}| j                         dk\  r||gz  } | j                  |  y )Nr   r   r   )rP   r   )r9   r  manualCancelOrderTimer   s       r:   cancelOrderzClient.cancelOrdern  s:    Q3&,--F		6r$   c                 (    | j                  dd       y )N   r   r   rL   s    r:   reqOpenOrderszClient.reqOpenOrderst  s    		!Qr$   c                 ,    | j                  dd||       y )N   r   r   )r9   	subscribeacctCodes      r:   reqAccountUpdateszClient.reqAccountUpdatesw  s    		!Q	8,r$   c                     | j                  dd||j                  |j                  |j                  |j                  |j
                  |j                  |j                  
       y )N   r   )r   r5   r  rE   r   r   r   side)r9   r   
execFilters      r:   reqExecutionszClient.reqExecutionsz  sP    		q%OOOO	r$   c                 *    | j                  dd|       y )N   r   r   )r9   numIdss     r:   reqIdszClient.reqIds  s    		!Qr$   c                     dd|||j                   |j                  |j                  g}| j                         dk\  r||j                  gz  } | j
                  |  y )Nr   r  r   )includeExpiredr  r  rP   issuerIdr   )r9   r   r   r   s       r:   reqContractDetailszClient.reqContractDetails  s`    q%##NN 3&x(())F		6r$   c                 8   | j                  dd||j                  |j                  |j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |||       y )N
   r  )r   r   r   r   r   r   r   r   r   r   r   r   r   )r9   r   r   numRowsisSmartDepthmktDepthOptionss         r:   reqMktDepthzClient.reqMktDepth  s    		5NNOO11OONN$$  !!!	r$   c                 ,    | j                  dd||       y )Nr   r   r   )r9   r   r  s      r:   cancelMktDepthzClient.cancelMktDepth      		"a-r$   c                 *    | j                  dd|       y )N   r   r   )r9   allMsgss     r:   reqNewsBulletinszClient.reqNewsBulletins      		"a!r$   c                 (    | j                  dd       y )N   r   r   rL   s    r:   cancelNewsBulletinszClient.cancelNewsBulletins      		"ar$   c                 *    | j                  dd|       y )N   r   r   )r9   logLevels     r:   setServerLogLevelzClient.setServerLogLevel  s    		"a"r$   c                 *    | j                  dd|       y )Nr   r   r   )r9   	bAutoBinds     r:   reqAutoOpenOrderszClient.reqAutoOpenOrders  s    		"a#r$   c                 (    | j                  dd       y )N   r   r   rL   s    r:   reqAllOpenOrderszClient.reqAllOpenOrders  r  r$   c                 (    | j                  dd       y )N   r   r   rL   s    r:   reqManagedAcctszClient.reqManagedAccts  r  r$   c                 *    | j                  dd|       y )N   r   r   )r9   faDatas     r:   	requestFAzClient.requestFA  s    		"a r$   c                 .    | j                  dd|||       y )N   r   r   )r9   r   r  cxmls       r:   	replaceFAzClient.replaceFA  s    		"au-r$   c           
      (   d|||j                   ||||||g
}|j                  dk(  rW|j                  xs g }|t        |      gz  }|D ]3  }||j                  |j
                  |j                  |j                  gz  }5 ||	|
gz  } | j                  |  y )N   r   )	r  r   r   r   r   r   r   r   r   )r9   r   r   endDateTimedurationStrbarSizeSetting
whatToShowuseRTH
formatDatekeepUpToDatechartOptionsr   r   r   s                 r:   reqHistoricalDatazClient.reqHistoricalData  s     x!8!8f
$
 u$%%+Ds4yk!F K399ciiS\\JJK 	<..		6r$   c                 $   | j                  dd||j                  |j                  |j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  |j                  ||||       y )N   r   )r   r   r   r   r   r   r   r   r   r   r   r   )r9   r   r   exerciseActionexerciseQuantityr
  overrides          r:   exerciseOptionszClient.exerciseOptions  s}     			5NNOO11OONN  !!,gx	Ar$   c                    |}| j                  d||j                  |j                  |j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                   |j"                  |j$                  |j&                  |j(                  |j*                  ||       y )N   )r   numberOfRows
instrumentlocationCodescanCode
abovePrice
belowPriceaboveVolumemarketCapAbovemarketCapBelowmoodyRatingAbovemoodyRatingBelowspRatingAbovespRatingBelowmaturityDateAbovematurityDateBelowcouponRateAbovecouponRateBelowexcludeConvertibleaverageOptionVolumeAbovescannerSettingPairsstockTypeFilter)r9   r   subscriptionscannerSubscriptionOptions scannerSubscriptionFilterOptionssubs         r:   reqScannerSubscriptionzClient.reqScannerSubscription  s     		NNLLNNNNOO    !!!!""((##,&1	(r$   c                 *    | j                  dd|       y )N   r   r   r   s     r:   cancelScannerSubscriptionz Client.cancelScannerSubscription      		"ar$   c                 (    | j                  dd       y )N   r   r   rL   s    r:   reqScannerParameterszClient.reqScannerParameters  r  r$   c                 *    | j                  dd|       y )N   r   r   r   s     r:   cancelHistoricalDatazClient.cancelHistoricalData	  r  r$   c                 (    | j                  dd       y )N1   r   r   rL   s    r:   reqCurrentTimezClient.reqCurrentTime  r  r$   c           
      4    | j                  dd||||||       y )N2   r   r   )r9   r   r   barSizer  r  realTimeBarsOptionss          r:   reqRealTimeBarszClient.reqRealTimeBars  s#     			5(GZ'	)r$   c                 *    | j                  dd|       y )N3   r   r   r   s     r:   cancelRealTimeBarszClient.cancelRealTimeBars  r  r$   c                     |xs g }| j                  dd||j                  |j                  |j                  |j                  |j
                  |j                  |j                  |t        |      |       y )N4   r   )	r   r   r   r   r   r   r   r   r   )r9   r   r   
reportTypefundamentalDataOptionsoptionss         r:   reqFundamentalDatazClient.reqFundamentalData  se    (.B		5NNOO$$  Gg		/r$   c                 *    | j                  dd|       y )N5   r   r   r   s     r:   cancelFundamentalDatazClient.cancelFundamentalData'  r  r$   c                 F    | j                  dd||||t        |      |       y )N6   r   r   r   )r9   r   r   optionPrice
underPriceimplVolOptionss         r:   calculateImpliedVolatilityz!Client.calculateImpliedVolatility*  s%    		5(K	1r$   c                 F    | j                  dd||||t        |      |       y )N7   r   r  )r9   r   r   r2  r  optPrcOptionss         r:   calculateOptionPricezClient.calculateOptionPrice0  s%    		5(J
	/r$   c                 *    | j                  dd|       y )N8   r   r   r   s     r:    cancelCalculateImpliedVolatilityz'Client.cancelCalculateImpliedVolatility6  r  r$   c                 *    | j                  dd|       y )N9   r   r   r   s     r:   cancelCalculateOptionPricez!Client.cancelCalculateOptionPrice9  r  r$   c                 (    | j                  dd       y )N:   r   r   rL   s    r:   reqGlobalCancelzClient.reqGlobalCancel<  r  r$   c                 *    | j                  dd|       y )N;   r   r   )r9   marketDataTypes     r:   reqMarketDataTypezClient.reqMarketDataType?  s    		"a(r$   c                 (    | j                  dd       y )N=   r   r   rL   s    r:   reqPositionszClient.reqPositionsB  r  r$   c                 .    | j                  dd|||       y )N>   r   r   )r9   r   	groupNametagss       r:   reqAccountSummaryzClient.reqAccountSummaryE  s    		"a	40r$   c                 *    | j                  dd|       y )N?   r   r   r   s     r:   cancelAccountSummaryzClient.cancelAccountSummaryH  r  r$   c                 (    | j                  dd       y )N@   r   r   rL   s    r:   cancelPositionszClient.cancelPositionsK  r  r$   c                 ,    | j                  dd||       y )NA   r   r   )r9   apiName
apiVersions      r:   verifyRequestzClient.verifyRequestN  s    		"a*-r$   c                 *    | j                  dd|       y )NB   r   r   )r9   apiDatas     r:   verifyMessagezClient.verifyMessageQ  r  r$   c                 *    | j                  dd|       y )NC   r   r   r   s     r:   queryDisplayGroupszClient.queryDisplayGroupsT  r  r$   c                 ,    | j                  dd||       y )ND   r   r   )r9   r   groupIds      r:   subscribeToGroupEventszClient.subscribeToGroupEventsW  s    		"a(r$   c                 ,    | j                  dd||       y )NE   r   r   )r9   r   contractInfos      r:   updateDisplayGroupzClient.updateDisplayGroupZ  r  r$   c                 *    | j                  dd|       y )NF   r   r   r   s     r:   unsubscribeFromGroupEventsz!Client.unsubscribeFromGroupEvents]  r  r$   c                 T    | j                  dd| j                  | j                         y )NG   r   )r   r5   r6   rL   s    r:   r   zClient.startApi`  s    		"a6r$   c                 .    | j                  dd|||       y )NH   r   r   )r9   r;  r<  opaqueIsvKeys       r:   verifyAndAuthRequestzClient.verifyAndAuthRequestc  s    		"a*l;r$   c                 ,    | j                  dd||       y )NI   r   r   )r9   r@  xyzResponses      r:   verifyAndAuthMessagezClient.verifyAndAuthMessagef  s    		"a+.r$   c                 .    | j                  dd|||       y )NJ   r   r   r9   r   r
  r"  s       r:   reqPositionsMultizClient.reqPositionsMultii  s    		"a3r$   c                 *    | j                  dd|       y )NK   r   r   r   s     r:   cancelPositionsMultizClient.cancelPositionsMultil  r  r$   c                 0    | j                  dd||||       y )NL   r   r   )r9   r   r
  r"  ledgerAndNLVs        r:   reqAccountUpdatesMultizClient.reqAccountUpdatesMultio  s    		"aLAr$   c                 *    | j                  dd|       y )NM   r   r   r   s     r:   cancelAccountUpdatesMultiz Client.cancelAccountUpdatesMultir  r  r$   c                 0    | j                  d|||||       y )NN   r   )r9   r   underlyingSymbolfutFopExchangeunderlyingSecTypeunderlyingConIds         r:   reqSecDefOptParamszClient.reqSecDefOptParamsu  s     			'	0r$   c                 (    | j                  d|       y )NO   r   r   s     r:   reqSoftDollarTierszClient.reqSoftDollarTiers|      		"er$   c                 &    | j                  d       y )NP   r   rL   s    r:   reqFamilyCodeszClient.reqFamilyCodes      		"r$   c                 *    | j                  d||       y )NQ   r   )r9   r   patterns      r:   reqMatchingSymbolszClient.reqMatchingSymbols  s    		"eW%r$   c                 &    | j                  d       y )NR   r   rL   s    r:   reqMktDepthExchangeszClient.reqMktDepthExchanges  rv  r$   c                 *    | j                  d||       y )NS   r   )r9   r   bboExchanges      r:   reqSmartComponentszClient.reqSmartComponents  s    		"e[)r$   c                 .    | j                  d||||       y )NT   r   )r9   r   providerCode	articleIdnewsArticleOptionss        r:   reqNewsArticlezClient.reqNewsArticle  s    		"e\96HIr$   c                 &    | j                  d       y )NU   r   rL   s    r:   reqNewsProviderszClient.reqNewsProviders  rv  r$   c           
      4    | j                  d|||||||       y )NV   r   )r9   r   r   providerCodesstartDateTimer  totalResultshistoricalNewsOptionss           r:   reqHistoricalNewszClient.reqHistoricalNews  s#     			um]K/	1r$   c           	      F    | j                  d|||j                  |||       y )NW   r   r  )r9   r   r   r  r  r  s         r:   reqHeadTimeStampzClient.reqHeadTimeStamp  s$    		x!8!8J
	,r$   c                 D    | j                  d|||j                  ||       y )NX   r  )r9   tickerIdr   r  
timePeriods        r:   reqHistogramDatazClient.reqHistogramData  s"    		(H$;$;J	 r$   c                 (    | j                  d|       y )NY   r   )r9   r  s     r:   cancelHistogramDatazClient.cancelHistogramData  s    		"hr$   c                 (    | j                  d|       y )NZ   r   r   s     r:   cancelHeadTimeStampzClient.cancelHeadTimeStamp  rr  r$   c                 (    | j                  d|       y )N[   r   )r9   marketRuleIds     r:   reqMarketRulezClient.reqMarketRule  s    		"l#r$   c                 ,    | j                  d|||       y )N\   r   r\  s       r:   reqPnLzClient.reqPnL  s    		"eWi0r$   c                 (    | j                  d|       y )N]   r   r   s     r:   	cancelPnLzClient.cancelPnL  rr  r$   c                 .    | j                  d||||       y )N^   r   )r9   r   r
  r"  conids        r:   reqPnLSinglezClient.reqPnLSingle  s    		"eWi7r$   c                 (    | j                  d|       y )N_   r   r   s     r:   cancelPnLSinglezClient.cancelPnLSingle  rr  r$   c
                 N    | j                  d|||j                  |||||||	       y )N`   r  )
r9   r   r   r  r  numberOfTicksr  useRth
ignoreSizemiscOptionss
             r:   reqHistoricalTickszClient.reqHistoricalTicks  s/     			x!8!8;zJ	-r$   c                 0    | j                  d|||||       y )Na   r   )r9   r   r   tickTyper  r  s         r:   reqTickByTickDatazClient.reqTickByTickData  s    		"eXx
Kr$   c                 (    | j                  d|       y )Nb   r   r   s     r:   cancelTickByTickDatazClient.cancelTickByTickData  rr  r$   c                 (    | j                  d|       y )Nc   r   )r9   apiOnlys     r:   reqCompletedOrderszClient.reqCompletedOrders  s    		"gr$   c                 (    | j                  d|       y )Nd   r   r   s     r:   reqWshMetaDatazClient.reqWshMetaData      		#ur$   c                 (    | j                  d|       y )Ne   r   r   s     r:   cancelWshMetaDatazClient.cancelWshMetaData  r  r$   r   c                 @   d||j                   g}| j                         dk\  r1||j                  |j                  |j                  |j
                  gz  }| j                         dk\  r&||j                  |j                  |j                  gz  } | j                  |ddi y )Nf         r   F)
r   rP   filterfillWatchlistfillPortfoliofillCompetitors	startDateendDate
totalLimitr   )r9   r   r   r   s       r:   reqWshEventDatazClient.reqWshEventData  s    udjj)3&""""$$	& &F
 3&! !F 			6+U+r$   c                 (    | j                  d|       y )Ng   r   r   s     r:   cancelWshEventDatazClient.cancelWshEventData  r  r$   c                 (    | j                  d|       y )Nh   r   r   s     r:   reqUserInfozClient.reqUserInfo  r  r$   N)g       @)r"   )x__name__
__module____qualname____doc__eventsr   r   ry   rz   ranger=   ru   rU   r;   r8   rt   rP   r   rV   r   rX   r   r^   ra   re   r   r   rg   rj   r   r   rn   rm   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  r  r  r  r  r  r  r  r  r	  r  r  r  r  r   r#  r&  r*  r-  r2  r5  r8  r=  rA  rD  rH  rL  rO  r   rU  rY  r]  r`  rd  rg  rn  rq  ru  rz  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:   r   r      s   :x PFK,1!H)\:y4,#s #2 4 4# 7T#Y 6 6 (+>>#&>25>e_>"4 '+ "%HC3 C:1;%z**Rh-	 	(."#$!."A$(<  ) / 1/  )1 ." ). 7</4 B 0&*J1, 
 $18-L,< ,r$   r   )r  rv   r   r'   r   r   rE   collectionsr   typingr   r   r   eventkitr   
connectionr	   r   r
   r&   r   objectsr   r   utilr   r   r   r   r   r   r  r$   r:   <module>r     sD    ?  	      ( (  "   2 M MO Or$   