
    T>qjP0                     V   d Z ddlmZmZ ddlmZmZmZmZ ddl	m
Z
 ddlmZmZ ddlmZmZmZ ddlmZmZmZ e G d	 d
             Z G d de      Z G d de      Z G d de      Z G d de      Ze G d d             Ze G d d             Ze G d d             Ze G d d             Z G d de      Ze G d d             Z e G d d e              Z!e G d! d"e              Z"e G d# d$e              Z#e G d% d&e              Z$e G d' d(e              Z%e G d) d*e              Z&y+),z(Order types used by Interactive Brokers.    )	dataclassfield)ClassVarList
NamedTupleSet)Event   )ContractTagValue)FillSoftDollarTierTradeLogEntry)UNSET_DOUBLEUNSET_INTEGERdataclassNonDefaultsc                   4   e Zd ZU dZdZeed<   dZeed<   dZeed<   dZ	e
ed<   dZeed	<   dZe
ed
<   eZeed<   eZeed<   dZe
ed<   dZe
ed<   dZe
ed<   dZe
ed<   dZeed<   dZe
ed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZ e
ed<   dZ!e
ed<   dZ"e
ed<   dZ#eed <   e$Z%eed!<   eZ&eed"<   dZ'eed#<   eZ(eed$<   eZ)eed%<   dZ*e
ed&<   dZ+e
ed'<   dZ,e
ed(<   dZ-e
ed)<   dZ.e
ed*<   d+Z/e
ed,<   dZ0eed-<   dZ1eed.<   d/Z2eed0<   dZ3eed1<   dZ4eed2<   dZ5eed3<   eZ6eed4<   dZ7eed5<   dZ8eed6<   eZ9eed7<   eZ:eed8<   eZ;eed9<   eZ<eed:<   eZ=eed;<   dZ>eed<<   dZ?eed=<   eZ@eed><   e$ZAeed?<   dZBe
ed@<   eZCeedA<   dZDeedB<   dZEe
edC<   dZFe
edD<   dZGe
edE<   dZHe
edF<   dZIeedG<   dZJeedH<   dZKe
edI<   dZLeedJ<   e$ZMeedK<   eZNeedL<   e$ZOeedM<   e$ZPeedN<   e$ZQeedO<   eZReedP<   eZSeedQ<   e$ZTeedR<   eZUeedS<   dZVeedT<   e$ZWeedU<   e$ZXeedV<   dZYeedW<   dZZe
edX<   dZ[e
edY<   dZ\e
edZ<   dZ]e
ed[<   dZ^e
ed\<   dZ_e
ed]<   dZ`e
ed^<   dZae
ed_<    ebec`      Zdeeef   eda<    ebec`      Zgeeef   edb<   dZhe
edc<   dZieedd<   dZjeede<   dZkeedf<   dZle
edg<    ebec`      Zmeedh   edi<    ebec`      Zneeef   edj<   dZoeedk<   dZpeedl<   dZqeedm<   dZreedn<   dZse
edo<   dZte
edp<   eZueedq<   eZveedr<   eZweeds<   eZxeedt<   dZyeedu<   eZzeedv<    ebec`      Z{eedw   edx<   dZ|eedy<   dZ}eedz<   dZ~e
ed{<    ebe`      Zeed|<   eZeed}<   dZe
ed~<   dZe
ed<   dZe
ed<   dZe
ed<   dZeed<   dZeed<   dZeed<   dZe
ed<   eZeed<   dZeed<   dZeed<   dZe
ed<   dZeed<   dZeed<   dZeed<   dZeed<   e$Zeed<   e$Zeed<   dZe
ed<   dZe
ed<   e$Zeed<   e$Zeed<   eZeed<   eZeed<   eZeed<   d ZeZd Zd Zy)Orderzn
    Order for trading contracts.

    https://interactivebrokers.github.io/tws-api/available_orders.html
    r   orderIdclientIdpermId action        totalQuantity	orderTypelmtPriceauxPricetifactiveStartTimeactiveStopTimeocaGroupocaTypeorderRefTtransmitparentIdF
blockOrdersweepToFilldisplaySizetriggerMethod
outsideRthhiddengoodAfterTimegoodTillDaterule80A	allOrNoneminQtypercentOffsetoverridePercentageConstraintstrailStopPricetrailingPercentfaGroup	faProfilefaMethodfaPercentagedesignatedLocationO	openCloseoriginshortSaleSlot
exemptCodediscretionaryAmt
eTradeOnlyfirmQuoteOnlynbboPriceCapoptOutSmartRoutingauctionStrategystartingPricestockRefPricedeltastockRangeLowerstockRangeUpperrandomizePricerandomizeSize
volatilityvolatilityTypedeltaNeutralOrderTypedeltaNeutralAuxPricedeltaNeutralConIddeltaNeutralSettlingFirmdeltaNeutralClearingAccountdeltaNeutralClearingIntentdeltaNeutralOpenClosedeltaNeutralShortSaledeltaNeutralShortSaleSlotdeltaNeutralDesignatedLocationcontinuousUpdatereferencePriceTypebasisPointsbasisPointsTypescaleInitLevelSizescaleSubsLevelSizescalePriceIncrementscalePriceAdjustValuescalePriceAdjustIntervalscaleProfitOffsetscaleAutoResetscaleInitPositionscaleInitFillQtyscaleRandomPercent
scaleTable	hedgeType
hedgeParamaccountsettlingFirmclearingAccountclearingIntentalgoStrategydefault_factory
algoParamssmartComboRoutingParamsalgoIdwhatIfnotHeld	solicited	modelCodeOrderComboLegorderComboLegsorderMiscOptionsreferenceContractIdpeggedChangeAmountisPeggedChangeAmountDecreasereferenceChangeAmountreferenceExchangeIdadjustedOrderTypetriggerPriceadjustedStopPriceadjustedStopLimitPriceadjustedTrailingAmountadjustableTrailingUnitlmtPriceOffsetOrderCondition
conditionsconditionsCancelOrderconditionsIgnoreRthextOperatorsoftDollarTiercashQtymifid2DecisionMakermifid2DecisionAlgomifid2ExecutionTradermifid2ExecutionAlgodontUseAutoPriceForHedgeisOmsContainerdiscretionaryUpToLimitPriceautoCancelDatefilledQuantityrefFuturesConIdautoCancelParentshareholderimbalanceOnlyrouteMarketableToBboparentPermIdusePriceMgmtAlgoduration	postToAtsadvancedErrorOverridemanualOrderTimeminTradeQtyminCompeteSizecompeteAgainstBestOffsetmidOffsetAtWholemidOffsetAtHalfc                 "   t        |       }| j                  t        ur|j                  dd        | j                  s|j                  d       | j                  j
                  }dj                  d |j                         D              }| d| dS )Nr   r   z, c              3   0   K   | ]  \  }}| d |  yw)=N ).0kvs      N/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/ib_insync/order.py	<genexpr>z!Order.__repr__.<locals>.<genexpr>   s#      4!Qqc1%L4s   ())r   	__class__r   popr   __qualname__joinitems)selfattrsclsNamekwargss       r   __repr__zOrder.__repr__   s    $T*>>&IIk4(""II&'..-- 4%*[[]4 4!F81%%    c                 
    | |u S Nr   )r   others     r   __eq__zOrder.__eq__   s    u}r   c                     t        |       S r   )idr   s    r   __hash__zOrder.__hash__   s    $xr   N)__name__
__module__r   __doc__r   int__annotations__r   r   r   strr   floatr   r   r   r   r   r    r!   r"   r#   r$   r%   boolr&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r<   r=   r>   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   r   listrr   r   r   rs   rt   ru   rv   rw   rx   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   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __str__r   r   r   r   r   r   r      s    GSHcFCOFCM5Is"He""He"CMOSNCHcGSHcHdHcJKKM3JFDM3L#GSItFC'M5'*/!4/(NE()OU)GSIsHcL#  IsFCOM3J!e!JM4&L%&$$OS'M5''M5'E5)OU))OU) ND M4$J$'NC'!#3#".%.s$&c&'))&((!#3#"'4'%&s&*,"C,"d"++%K%(OS(++++!--#/5/$1c1+u+ ND *s*)c)$$JIsJGSL#OSNCL#!&t!<JX<.3D.IT(^IFCFDGTItIs,1$,GND)G',T'Bd8nB   ##). $.#&5&!!s&L%&+u+$0E0$0E0"#C#(NE().t)DJ%&D"'4' %%K%*>%JNNJ!GU!!!  !#3#!!%*d* ND (--NC(NE(OS"d"KM4!&$&L#"d"!Hc!"Is"!#3#OS$K$'NC'&2e2*e*)OU)	& Gr   r   c                        e Zd ZdededefdZy)
LimitOrderr   r   r   c                 :    t        j                  | fd|||d| y )NLMT)r   r   r   r   r   __init__)r   r   r   r   r   s        r   r   zLimitOrder.__init__   s+    	F!&'(	F>D	Fr   Nr   r   r   r   r   r   r   r   r   r   r      s     Fs F5 FE Fr   r   c                       e Zd ZdedefdZy)MarketOrderr   r   c                 8    t        j                  | fd||d| y )NMKT)r   r   r   r   )r   r   r   r   s       r   r   zMarketOrder.__init__   s&    	3!&'	3+1	3r   Nr   r   r   r   r   r      s    3s 35 3r   r   c                        e Zd ZdededefdZy)	StopOrderr   r   	stopPricec                 :    t        j                  | fd|||d| y )NSTP)r   r   r   r   r   )r   r   r   r   r   s        r   r   zStopOrder.__init__   s+    	G!&')	G?E	Gr   Nr   r   r   r   r   r      s     Gs G5 GU Gr   r   c                   $    e Zd ZdedededefdZy)StopLimitOrderr   r   r   r   c           	      <    t        j                  | fd||||d| y )NzSTP LMT)r   r   r   r   r   r   )r   r   r   r   r   r   s         r   r   zStopLimitOrder.__init__   s-    	*%f'(	* #)	*r   Nr   r   r   r   r   r      s$    *s *5 *E *!*r   r   c                      e Zd ZU dZeed<   dZeed<   dZe	ed<   dZ
e	ed<   dZe	ed<   dZeed	<   dZeed
<   dZe	ed<   dZeed<   dZeed<   dZe	ed<   dZee   ed<   dZee   ed<   dZee   ed<   dZee   ed<   dZee   ed<   dZee   ed<   dZee   ed<   dZee   ed<   dZee   ed<   h dZeee      ed<   h dZeee      ed<   y)OrderStatusr   r   r   statusr   filled	remainingavgFillPricer   r&   lastFillPricer   whyHeldmktCapPricePendingSubmitPendingCancelPreSubmitted	Submitted
ApiPendingApiCancelled	CancelledFilledInactive>   r   r   r   
DoneStates>   r   r   r   r   ActiveStatesN)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      s   GSFCFEIuL%FCOHcM5HcGSK#2M8C=2#2M8C=2"0L(3-0*Ix}* ,J,"0L(3-0*Ix}*$FHSM$(Hhsm(%LJS"L(DL(3s8$ Dr   r   c                       e Zd ZU dZeed<   dZeed<   dZeed<   dZeed<   dZ	eed<   dZ
eed<   dZeed<   dZeed	<   dZeed
<   dZeed<   eZeed<   eZeed<   eZeed<   dZeed<   dZeed<   dZeed<   dZeed<   y)
OrderStater   r   initMarginBeforemaintMarginBeforeequityWithLoanBeforeinitMarginChangemaintMarginChangeequityWithLoanChangeinitMarginAftermaintMarginAfterequityWithLoanAfter
commissionminCommissionmaxCommissioncommissionCurrencywarningTextcompletedTimecompletedStatusN)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      s    FCcs "#"cs "#"OSc!!$J$'M5''M5'  KM3OSr   r   c                       e Zd ZU eZeed<   y)ry   priceN)r   r   r   r   r
  r   r   r   r   r   ry   ry     s    E5r   ry   c                       e Zd ZU dZdZeed<    ee      Z	eed<    ee
      Ze
ed<    ee      Zded<    ee      Zee   ed	<    ee      Zee   ed
<   dZeed<   d Zd Zd Zd Zd Zy)Tradea'  
    Trade keeps track of an order, its status and all its fills.

    Events:
        * ``statusEvent`` (trade: :class:`.Trade`)
        * ``modifyEvent`` (trade: :class:`.Trade`)
        * ``fillEvent`` (trade: :class:`.Trade`, fill: :class:`.Fill`)
        * ``commissionReportEvent`` (trade: :class:`.Trade`,
          fill: :class:`.Fill`, commissionReport: :class:`.CommissionReport`)
        * ``filledEvent`` (trade: :class:`.Trade`)
        * ``cancelEvent`` (trade: :class:`.Trade`)
        * ``cancelledEvent`` (trade: :class:`.Trade`)
    )statusEventmodifyEvent	fillEventcommissionReportEventfilledEventcancelEventcancelledEventeventsrp   contractorderr   orderStatusfillslogr   advancedErrorc                     t        d      | _        t        d      | _        t        d      | _        t        d      | _        t        d      | _        t        d      | _        t        d      | _        y )Nr  r  r  r  r  r  r  )r	   r  r  r  r  r  r  r  r   s    r   __post_init__zTrade.__post_init__,  s^     / /{+%*+B%C" / /#$45r   c                 N    | j                   j                  t        j                  v S )z0True if eligible for execution, false otherwise.)r  r   r   r   r   s    r   isActivezTrade.isActive5  s    &&+*B*BBBr   c                 N    | j                   j                  t        j                  v S )z8True if completely filled or cancelled, false otherwise.)r  r   r   r   r   s    r   isDonezTrade.isDone9  s    &&+*@*@@@r   c                     | j                   }| j                  j                  dk(  r)|D cg c]  }|j                  j                  dk(  s|  }}t        d |D              S c c}w )zNumber of shares filled.BAGc              3   H   K   | ]  }|j                   j                    y wr   )	executionshares)r   fs     r   r   zTrade.filled.<locals>.<genexpr>C  s     5!1;;%%5s    ")r  r  secTypesum)r   r  r&  s      r   r   zTrade.filled=  sX    

==  E) %E1););u)DQEEE5u555 Fs   A!	A!c                 P    | j                   j                  | j                         z
  S )z(Number of shares remaining to be filled.)r  r   r   r   s    r   r   zTrade.remainingE  s    zz''$++-77r   N)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    s    )FH )
 x8Hh8/E5/!&{!CKCd3E4:3$T:Cm	:M36CA68r   r  c                   ,    e Zd ZU eed<   eed<   eed<   y)BracketOrderparent
takeProfitstopLossN)r   r   r   r   r   r   r   r   r+  r+  J  s    MOr   r+  c                   (    e Zd Zed        Zd Zd Zy)r   c                 N    t         t        t        t        t        t
        d}||    S )N)r
                  )PriceConditionTimeConditionMarginConditionExecutionConditionVolumeConditionPercentChangeCondition)condTypeds     r   createClasszOrderCondition.createClassS  s)     !%' {r   c                     d| _         | S )Naconjunctionr   s    r   AndzOrderCondition.And^      r   c                     d| _         | S )NorA  r   s    r   OrzOrderCondition.Orb  rD  r   N)r   r   r   staticmethodr>  rC  rG  r   r   r   r   r   P  s       r   r   c                   p    e Zd ZU dZeed<   dZeed<   dZe	ed<   dZ
eed<   d	Zeed
<   dZeed<   d	Zeed<   y)r6  r
   r<  r@  rB  TisMorer   r
  r   conIdr   exchr*   N)r   r   r   r<  r   r   rB  r   rJ  r   r
  r   rK  rL  r*   r   r   r   r6  r6  g  sF    HcKFDE5E3ND#NM3r   r6  c                   F    e Zd ZU dZeed<   dZeed<   dZe	ed<   dZ
eed<   y	)
r7  r1  r<  r@  rB  TrJ  r   timeN)r   r   r   r<  r   r   rB  r   rJ  r   rN  r   r   r   r7  r7  r  s)    HcKFDD#Nr   r7  c                   F    e Zd ZU dZeed<   dZeed<   dZe	ed<   dZ
eed<   y	)
r8  r2  r<  r@  rB  TrJ  r   percentN)r   r   r   r<  r   r   rB  r   rJ  r   rP  r   r   r   r8  r8  z  s*    HcKFDGSr   r8  c                   T    e Zd ZU dZeed<   dZeed<   dZeed<   dZ	eed<   dZ
eed<   y	)
r9  r3  r<  r@  rB  r   r'  rL  symbolN)r   r   r   r<  r   r   rB  r   r'  rL  rR  r   r   r   r9  r9    s3    HcKGSD#NFCr   r9  c                   b    e Zd ZU dZeed<   dZeed<   dZe	ed<   dZ
eed<   dZeed	<   d
Zeed<   y)r:  r4  r<  r@  rB  TrJ  r   volumerK  r   rL  N)r   r   r   r<  r   r   rB  r   rJ  r   rT  rK  rL  r   r   r   r:  r:    s;    HcKFDFCOE3ND#Nr   r:  c                   b    e Zd ZU dZeed<   dZeed<   dZe	ed<   dZ
eed<   d	Zeed
<   dZeed<   y)r;  r5  r<  r@  rB  TrJ  r   changePercentr   rK  r   rL  N)r   r   r   r<  r   r   rB  r   rJ  r   rV  r   rK  rL  r   r   r   r;  r;    s<    HcKFDM5E3ND#Nr   r;  N)'r   dataclassesr   r   typingr   r   r   r   eventkitr	   r  r   r   objectsr   r   r   utilr   r   r   r   r   r   r   r   r   r   ry   r  r+  r   r6  r7  r8  r9  r:  r;  r   r   r   <module>r\     s   . ( 2 2  ( 8 8 C C d d dNF F3% 3G G*U * D D D8   (       68 68 68r:    , ^   N   n      n   ^  r   