
    T>qj͟                         d Z ddlZddlZddlmZmZ ddlmZmZ ddlm	Z	m
Z
mZmZmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddl m!Z!m"Z"m#Z#m$Z$ dd	l%m&Z&m'Z'm(Z( dd
l)m*Z*  G d d      Z+y)z"Deserialize and dispatch messages.    N)datetimetimezone)Anycast   )ComboLegContractContractDescriptionContractDetailsDeltaNeutralContract)BarDataCommissionReportDepthMktDataDescription	Execution
FamilyCodeHistogramDataHistoricalSessionHistoricalTickHistoricalTickBidAskHistoricalTickLastNewsProviderPriceIncrementSmartComponentSoftDollarTierTagValueTickAttribBidAskTickAttribLast)OrderOrderComboLegOrderCondition
OrderState)UNSET_DOUBLEZoneInfoparseIBDatetime)Wrapperc                       e Zd ZdZdedefdZd'dZd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'y&)(Decoderz<Decode IB messages and invoke corresponding wrapper methods.wrapperserverVersionc                 $   || _         || _        t        j                  d      | _        i d| j
                  d| j                  dt        t        t        g      d| j                  dt        t        t        t        t        t        t        t        t        t        t        gd      d| j                  d	| j                  d
| j                  dt        t        t        t        g      d| j                  d| j                  dt        g      d| j                  dt        g      d| j                  d| j                  d| j                  dt        t        t        t        t        t        g      d| j                  dt        t        t        t        t        t        t        t        g      d| j                  dt        t        t        t        g      d| j                  dt        g      d| j                  dt        t        g      d| j                   i d| j"                  d| j                  d t        g      d!| j$                  d"| j&                  d#| j                  d$t        t        t        g      d%| j                  d&t        t        t        g      d'| j                  d(t        t        t        t        t        t        t        t        t        g	      d)| j                  d*t        g      d+| j                  d,t        t        t        t        t        t        t        t        t        g	      d-| j                  d.t        t        g      d/| j                  d0t        g      d1| j                  d2g       d3| j                  d4t        g      d5| j                  d6t        g      d7| j(                  d8| j                  d9t        g      d:| j                  d;t        t        g      i d<| j*                  d=| j,                  d>| j                  d?g       d@| j                  dAt        t        t        t        t        g      dB| j                  dCt        g      dD| j                  dEt        g      dF| j                  dGt        t        g      dH| j                  dIt        t        g      dJ| j                  dKt        t        g      dL| j                  dMt        t        g      dN| j                  dOt        t        g      dP| j.                  dQ| j                  dRt        g      dS| j                  dTt        t        t        t        t        t        g      dU| j                  dVt        g      dW| j0                  dX| j                  dYt        gd      i dZ| j2                  d[| j4                  d\| j6                  d]| j8                  d^| j                  d_t        t        t        t        gd      d`| j:                  da| j                  dbt        t        t        gd      dc| j                  ddt        t        t        t        t        t        gd      de| j<                  df| j                  dgt        t        t        t        t        gd      dh| j                  dit        t        gd      dj| j                  dkt        t        gd      dl| j>                  dm| j@                  dn| j                  dot        t        t        gd      dp| j                  dqt        t        t        gd      dr| jB                  | j                  dst        t        t        t        gd      | j                  dtt        t        t        t        t        t        gd      | jD                  | jF                  | jH                  | jJ                  | j                  dut        t        t        gd      | jL                  | j                  dvg d      | j                  dwt        t        gd      | j                  dxt        t        gd      | j                  dyt        t        gd      | jN                  | j                  dzt        t        gd      d{| _(        y )|Nzib_insync.Decoderr      tickSize   orderStatus)skip         updateAccountValue      updateAccountTime	   nextValidId
         updateMktDepth   updateMktDepthL2   updateNewsBulletin   managedAccounts   	receiveFA         scannerParameters      -   tickGeneric.   
tickString/   tickEFP1   currentTime2   realtimeBar3   fundamentalData4   contractDetailsEnd5   openOrderEnd6   accountDownloadEnd7   execDetailsEnd8   9   tickSnapshotEnd:   marketDataType;   =   >   positionEnd?   accountSummary@   accountSummaryEndA   verifyMessageAPIB   verifyCompletedC   displayGroupListD   displayGroupUpdatedE   verifyAndAuthMessageAPIF   verifyAndAuthCompletedG   H   positionMultiEndI   accountUpdateMultiJ   accountUpdateMultiEndK   L   $securityDefinitionOptionParameterEndM   N   O   P   Q   tickReqParamsR   S   newsArticleT   tickNewsU   V   historicalNewsW   historicalNewsEndX   headTimestampY   Z   [   rerouteMktDataReq\   rerouteMktDepthReq]   pnl	pnlSingle
orderBoundcompletedOrdersEndreplaceFAEndwshMetaDatawshEventDatauserInfo)^   _   `   a   b   c   d   e   f   g   h   i   j   k   ))r(   r)   logging	getLoggerloggerpriceSizeTickwrapintfloatstrerrorMsg	openOrderupdatePortfoliocontractDetailsexecDetailsboolhistoricalDatabondContractDetailsscannerDatatickOptionComputationdeltaNeutralValidationcommissionReportpositionpositionMulti!securityDefinitionOptionParametersoftDollarTiersfamilyCodessymbolSamplesmktDepthExchangessmartComponentsnewsProvidershistogramDatahistoricalDataUpdate
marketRulehistoricalTickshistoricalTicksBidAskhistoricalTicksLast
tickByTickcompletedOrderhistoricalSchedulehandlers)selfr(   r)   s      P/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/ib_insync/decoder.py__init__zDecoder.__init__   s	   *''(;<L
t!!L
tyyS#u-/L
 tyyeUE33U ,23  5	L
 t}}L
 t~~L
 tyy$sCc&:<L
 t##L
 tyy#cU,L
 tyyu&L
" $$#L
$   %L
& 		 3S#ue"DF'L
* 		"c3S%=?+L
0 		$sCc&:<1L
4 		!C5*5L
8 		c3Z)9L
< ##=L
> ((?L
@ 		#cU,AL
D   EL
F **GL
H 		S%02IL
L 		sCo/ML
P 		c5#uc3uEGQL
V 		u&WL
Z 		c5%ueSIK[L
` 		!C:/aL
d 		$se-eL
h 		$iL
l 		$se-mL
p 		 3%)qL
t ++uL
v 		!C5*wL
z 		 3*.{L
~ %%L
@ AL
B 		r#CL
F 		 3S#s";=GL
J 		#cU,KL
N 		"SE+OL
R 		!D#;0SL
V 		"S#J0WL
Z 		%Sz3[L
^ 		)C:7_L
b 		(4+7cL
f ""gL
h 		"SE+iL
l 		$sCc3&DFmL
p 		'#0qL
t 66uL
v 		6A  GwL
z $${L
|   }L
~ ""L
@ &&AL
B 		#uc3!7a  ACL
F $$GL
H 		S#Q  8IL
L 		S#sCc:  DML
P ""QL
R 		 3S#s";!  ESL
V 		#c4[q  :WL
Z 		#s!  5[L
^ ""_L
` ))aL
b 		#c3_1  >cL
f 		$sCoA  ?gL
j kL
l 		UE51  ;		c5%uEA  O$$**((sCoA  7$$$bq  2c
  4Sz  3c
  4((S#JQ  0UL
    c                       fd}|S )z
        Create a message handler that invokes a wrapper method
        with the in-order message fields as parameters, skipping over
        the first ``skip`` fields, and parsed according to the ``types`` list.
        c           
         t        j                  d       }|rv	 t        | d        D cg c]U  \  }}|t        u r|nE|t        u rt	        |xs d      n.|t
        u rt        |xs d      nt        t	        |xs d            W }}} ||  y y c c}}w # t        $ r" j                  j                  d d       Y y w xY w)Nr   z
Error for :)
getattrr(   zipr   r   r   r   	Exceptionr   	exception)	fieldsmethodtypfieldargs
methodNamer   r/   typess	        r   handlerzDecoder.wrap.<locals>.handler   s    T\\:t<F	F -0vde},EG
 )S%	 "%+.#:EJQ-0E\ejq)S!_-.GD G DM G ! FKK))Jzl!*DEFs#   B ABB B (CC )r   r   r   r/   r   s   ```` r   r   zDecoder.wrap   s    	F r   c                     	 t        |d         }| j                  |   } ||       y# t        $ r! | j                  j	                  d|        Y yw xY w)z6Decode fields and invoke corresponding wrapper method.r   zError handling fields: N)r   r   r   r   r   )r   r   msgIdr   s       r   	interpretzDecoder.interpret   sU    	Fq	NEmmE*GFO 	FKK!!$;F8"DE	Fs   %( 'AAc           
         t        j                  |      D ]  }t        |j                        }|t        u r!t        ||j                        }|t        u r/t        ||j                  |rt        |      n|j                         n|t        u r/t        ||j                  |rt        |      n|j                         |t        u st        ||j                  |rt        t        |            n|j                          y)z=Parse the object's properties according to its default types.N)dataclassesr   typedefaultr   r   namer   setattrr   r   )r   objr   r   vs        r   parsezDecoder.parse   s     '', 
	OEu}}%CczUZZ(AczUZZ1Q%--HUZZQqEMMJUZZc!fN
	Or   c           	          |\  }}}}}}}|rG| j                   j                  t        |      t        |      t        |      t        |xs d             y y Nr   )r(   r   r   r   )r   r   _reqIdtickTypepricesizes          r   r   zDecoder.priceSizeTick   sO    06-1eXudALL&&E
CM5<tyq9IK r   c                     |^}}}}}}d}| j                   dk\  r|^}}| j                  j                  t        |      t        |      ||       y )N    )r)   r(   errorr   )r   r   r   r   	errorCodeerrorStringadvancedOrderRejectJsons          r   r   zDecoder.errorMsg   sX    7=41eYf"$$/5,#fJI5L	Nr   c                    t               }|\  }}|_        |_        |_        |_        |_        |_        |_        |_        |_	        |_
        |_        }}}}}}	}
| j                  |       | j                  j                  |t        |      t        |      t        |      t        |      t        |      t        |	      |
       y N)r	   conIdsymbolsecTypelastTradeDateOrContractMonthstrikeright
multiplierprimaryExchangecurrencylocalSymboltradingClassr   r(   r   r   )r   r   cr   r   marketPricemarketValueaverageCostunrealizedPNLrealizedPNLaccountNames              r   r   zDecoder.updatePortfolio   s    J( "'	qGHI*HGLJMN

1$$uXk 2+k 2E-4H+	-r   c                    t               }t               x|_        }| j                  dk  r|j	                  d       |^}}|_        |_        }|_        |_        |_	        |_
        |_        |_        |_        |_        |_        }| j                  dk  r|j	                  d       |^|_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        }}tA        |      }|dkD  r<g |_!        tE        |      D ]'  }|^}}	}|xjB                  tG        ||	      gz  c_!        ) |^|_$        |_%        |_&        |_'        |_(        |_)        }| j                  dk(  r	|^|_*        }| j                  dk\  r|^|_+        |_,        |_*        }|j[                  d|v rdnd       }
t]        |
      dkD  r
|
d   |_/        t]        |
      dkD  r
|
d   |_0        |j*                  jc                         je                  d      |_        | jg                  |       | jg                  |       | jh                  jk                  tA        |      |       y )N   r      -r   zunicode-escape)6r   r	   contractr)   popr	  r
  r  r  exchanger  r  
marketNamer  r  minTickr  
orderTypesvalidExchangespriceMagnifier
underConIdlongNamer  contractMonthindustrycategorysubcategory
timeZoneIdtradingHoursliquidHoursevRuleevMultiplierr   	secIdListranger   aggGroupunderSymbolunderSecTypemarketRuleIdsrealExpirationDate	stockTypesuggestedSizeIncrementminSizesizeIncrementsplitlenr  lastTradeTimeencodedecoder   r(   r   r   r   cdr  r   r   	lastTimes	numSecIdstagvaluetimess              r   r   zDecoder.contractDetails  sQ   "*$a#JJqM  	HIHGJJMMNGJ#JJqM& %	LMMKKKNMONIO	N	q=BL9% 7&,#UV#u!5 667 	KNO!L$17.B%$ "
 )si'7TBu:>-21XA*u:>$QxBkk((*112BC

2

1$$SZ4r   c                 \   t               }t               x|_        }| j                  dk  r|j	                  d       |^}}|_        |_        |_        |_        }|_	        |_
        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        }| j                  dk  r|j	                  d       |^
|_        |_        |_        |_        |_        |_        |_        |_        |_        }}tA        |      }|dkD  r<g |_!        tE        |      D ]'  }|^}}	}|xjB                  tG        ||	      gz  c_!        ) |^|_$        |_%        }| j                  dk\  r|^|_&        |_'        |_(        }|jS                  d|v rdnd       }
tU        |
      dkD  r
|
d   |_+        tU        |
      dkD  r
|
d   |_,        tU        |
      dkD  r
|
d   |_-        | j]                  |       | j]                  |       | j^                  ja                  tA        |      |       y )Nr  r   r  r   r+   )1r   r	   r  r)   r  r	  r
  cusipcoupon	issueDateratingsbondType
couponTypeconvertiblecallableputable
descAppendr   r  r!  r  r  r"  r#  r$  nextOptionDatenextOptionTypenextOptionPartialnotesr'  r/  r0  r   r1  r2  r   r3  r6  r:  r;  r9  r<  r=  maturityr>  r,  r   r(   r   rA  s              r   r   zDecoder.bondContractDetailsR  s   "*$a#JJqM. -	HIHILJKMNKJMJJMNGJ#JJqM 	M HKIO	N	q=BL9% 7&,#UV#u!5 667 28.R%$ "
 )si'7TBu:>(BKu:>$QxBu:>!!HBM

2

1((UR8r   c                 6   t               }t               }|\  }}|_        |_        |_        |_        |_        |_        |_        |_	        |_
        |_        |_        |_        |_        }|_        |_
        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        | j;                  |       | j;                  |       t=        t>        tA        |            }|jB                  sF| jD                  jF                  jH                  }|r$|jK                  tM        tO        |                  }|jQ                  tR        jT                        |_+        | jD                  jY                  t[        |      ||       y )N)tzinfo).r	   r   orderIdr  r	  r
  r  r  r  r  r   r  r  r  execId
acctNumbersidesharesr   permIdclientIdliquidationcumQtyavgPriceorderRefr/  r0  	modelCodelastLiquidityr   r   r   r$   rY  r(   ibTimezoneTWSreplacer#   r   
astimezoner   utctimer   r   )	r   r   r  exr   r   timeStrrl  tzs	            r   r   zDecoder.execDetails  s=   J[@ !'?	JGHI*HGLJJMNIMKGIHIKNIKKIOL

1

2Hog67{{,,B||8CG+<|=//(,,/  UQ3r   c                    |^}}}}}}t        |      j                  }t        t        |            D ]  }t	         |       t         |             t         |             t         |             t         |             t         |             t         |             t         |                   }| j                  j                  t        |      |        | j                  j                  t        |      ||       y )N)dateopenhighlowclosevolumeaveragebarCount)	iter__next__r2  r   r   r   r(   r   historicalDataEnd)	r   r   r   r   startDateStr
endDateStrnumBarsgetbars	            r   r   zDecoder.historicalData  s    ?E<5,
Gf6l##s7|$ 
	9AU35\35\#%LCElSU|ceSU%C LL''E
C8
	9 	&&s5z<Lr   c                    |^}}}t        |      j                  }t        t         |       xs d       |       t	         |       xs d      t	         |       xs d      t	         |       xs d      t	         |       xs d      t	         |       xs d      t	         |       xs d            }| j
                  j                  t        |      |       y )Nr   )rx  rq  rr  ru  rs  rt  rw  rv  )ry  rz  r   r   r   r(   r   )r   r   r   r   r  r  s         r   r   zDecoder.historicalDataUpdate  s    "566l##!_suz"
#suz"cejq!#%*1%!$& 	))#e*c:r   c                     |^}}}}}t        t        |            D ]  }t               }t               x|_        }|^}|_        |_        |_        |_        |_	        |_
        |_        |_        |_        |_        |_        }}	}
}}| j!                  |       | j!                  |       | j"                  j%                  t        |      t        |      |||	|
|        | j"                  j'                  t        |             y r  )r2  r   r   r	   r  r  r	  r
  r  r  r  r   r  r  r!  r  r   r(   r   scannerDataEnd)r   r   r   r   nrB  r  rankdistance	benchmark
projectionlegsStrs               r   r   zDecoder.scannerData  s    "(1eQs1v 	:A "B&j(BK!$ "#	.

JJrNJJqMLL$$E
CIr)Z:1	:8 	##CJ/r   c                 8   |^}}}}}|\  }}}}	}
}}}| j                   j                  t        |      t        |      t        |      t        |      t        |      t        |      t        |	      t        |
      t        |      t        |      t        |             y r  )r(   r   r   r   )r   r   r   r   tickTypeInt
tickAttrib
impliedVoldeltaoptPrice
pvDividendgammavegathetaundPrices                 r   r   zDecoder.tickOptionComputation
  s    5;25+zF+1	)
E8Z4**JK(#j/*uU|U8_*uU|U4[%L%/		+r   c                     |\  }}}}}}| j                   j                  t        |      t        t        |      t	        |xs d      t	        |xs d                   y r   )r(   r   r   r   r   )r   r   r   r   r  r  r   s          r   r   zDecoder.deltaNeutralValidation  sT    +1(1eUE5++J,E
E%*1-uUZa/@B	Cr   c                     |\  }}}}}}}}| j                   j                  t        |t        |xs d      |t        |xs d      t        |xs d      t	        |xs d                   y r   )r(   r   r   r   r   )	r   r   r   r[  
commissionr  r  yield_yieldRedemptionDates	            r   r   zDecoder.commissionReport  sl    *0	(1fj(K'%%joA.k&Q'v{);',1-/	0r   c                 >   t               }|\  }}}|_        |_        |_        |_        |_        |_        |_        |_        |_	        |_
        |_        }}| j                  |       | j                  j                  ||t        |xs d      t        |xs d             y r   )r	   r  r	  r
  r  r  r  r  r   r  r  r  r   r(   r   r   )r   r   r  r   accountr   avgCosts          r   r   zDecoder.position&  s    J  	qGHI*HGLJJMN

1Qhm!,eGLq.A	Cr   c                 X   t               }|\  }}}}|_        |_        |_        |_        |_        |_        |_        |_        |_	        |_
        |_        }}}| j                  |       | j                  j                  t        |      |||t!        |xs d      t!        |xs d             y 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  re  s	            r   r   zDecoder.positionMulti=  s    J$  #	qGHI*HGLJJMN

1""JA(-a %1"5	7r   c           	          |^}}}}}}}}t        |      }|d | }	||dz   d  D 
cg c]  }
t        |
       }}
| j                  j                  t        |      |||||	|       y c c}
w )Nr   )r   r   r(   r   )r   r   r   r   r   underlyingConIdr  r  r  expirationsr   strikess               r   r   z)Decoder.securityDefinitionOptionParameterW  s{    	5(O\:FRaj-3AEF^<E5<<<66J/<W	. =s   A$c           	         |^}}}}t        |      j                  }t        t        |            D cg c]  }t	         |        |        |             ! }}| j
                  j                  t        |      |       y c c}w )N)r   valdisplayName)ry  rz  r2  r   r   r(   r   )r   r   r   r   r  r  tierss          r   r   zDecoder.softDollarTiersc  s{    %5!f6l## 3q6]$
 	 UEE#$ $ 	$$SZ7$s   $A>c                     |^}}}t        |      j                  }t        t        |            D cg c]  }t	         |        |              }}| j
                  j                  |       y c c}w )N)	accountIDfamilyCodeStr)ry  rz  r2  r   r   r(   r   )r   r   r   r  r  r   s         r   r   zDecoder.familyCodesp  sm    1v6l## 3q6]	$  %!e%$ $ 	  -$   A-c           	         |^}}}}g }t        t        |            D ]  }t               }t               x|_        }|^|_        |_        |_        |_        |_	        }}t        |j
                        |_        t        |      }|d | |_
        ||d  }| j                  dk\  r#|^|j                  _        |j                  _        }|j                  |        | j                  j!                  t        |      |       y )N   )r2  r   r
   r	   r  r  r	  r
  r  r  derivativeSecTypesr)   descriptionissuerIdappendr(   r   )	r   r   r   r   r  cdsrB  r  ms	            r   r   zDecoder.symbolSamples|  s    %5!fs1v 	A$&B&j(BK!#AGQXqy!*;QZF!''lAGAA$*2AJB!ABZF!!S(  &KK+KK(JJrN	  	""3u:s3r   c           	         |^}}}}t        |      j                  }t        t        |            D cg c](  }t	        t         |              |        |             * }}| j
                  j                  t        |      |       y c c}w )N)	bitNumberr   exchangeLetter)ry  rz  r2  r   r   r(   r   )r   r   r   r   r  r  
componentss          r   r   zDecoder.smartComponents  s    %5!f6l## 3q6]$
 	 ce*"u&$
 $ 	$$SZ<$s   -Bc                    |^}}}t        |      j                  }t        t        |            D cg c]4  }t	         |        |        |        |       t         |                   6 }}| j
                  j                  |       y c c}w )N)r   r
  listingExchserviceDataTyper3  )ry  rz  r2  r   r   r(   r   )r   r   r   r  r  descriptionss         r   r   zDecoder.mktDepthExchanges  s    1v6l## 3q6]$  $E #SU%$ $ 	&&|4$s   9Bc                     |^}}}t        |      j                  }t        t        |            D cg c]  }t	         |        |              }}| j
                  j                  |       y c c}w )N)coder   )ry  rz  r2  r   r   r(   r   )r   r   r   r  r  	providerss         r   r   zDecoder.newsProviders  sm    1v6l## 3q6]	$  UU$	 $ 	""9-$r  c           
         |^}}}}t        |      j                  }t        t        |            D cg c]+  }t	        t         |             t         |                   - }}| j                  j                  t        |      |       y c c}w )N)r   count)ry  rz  r2  r   r   r   r(   r   )r   r   r   r   r  r  	histograms          r   r   zDecoder.histogramData  s~    %5!f6l## 3q6]	$  CEl#%j"$	 $ 	""3u:y9$   0B
c           
         |^}}}}t        |      j                  }t        t        |            D cg c]+  }t	        t         |             t         |                   - }}| j                  j                  t        |      |       y c c}w )N)lowEdge	increment)ry  rz  r2  r   r   r   r(   r   )r   r   r   marketRuleIdr  r  
incrementss          r   r   zDecoder.marketRule  s    &,#<V6l## 3q6]	$  ce,($
 $ 	L 1:>$r  c                    |^}}}}t        |      j                  }g }t        t        |            D ]y  }t         |             } |        t	         |             }t	         |             }	t        j                  |t        j                        }
|j                  t        |
||	             { t        t         |                   }| j                  j                  t        |      ||       y r  )ry  rz  r2  r   r   r   fromtimestampr   rk  r  r   r   r(   r   )r   r   r   r   r  r  ticksrl  r   r   dtdones               r   r   zDecoder.historicalTicks  s    %5!f6l##s1v 	1Asu:DE#%LE<D''hll;BLLr5$/1	1 CJ$$SZ=r   c                 ~   |^}}}}t        |      j                  }g }t        t        |            D ]  }t         |             }t         |             }t	        t        |dz        t        |dz              }	t         |             }
t         |             }t         |             }t         |             }t        j                  |t        j                        }|j                  t        ||	|
|||              t        t         |                   }| j                  j                  t        |      ||       y )Nr   r+   )askPastHigh
bidPastLow)ry  rz  r2  r   r   r   r   r   r  r   rk  r  r   r(   r   )r   r   r   r   r  r  r  rl  maskattribpriceBidpriceAsksizeBidsizeAskr  r  s                   r   r   zDecoder.historicalTicksBidAsk  s   %5!f6l##s1v 	GAsu:Dsu:D% Nq>+F SU|HSU|HCElGCElG''hll;BLL$(GWFG	G CJ**3u:udCr   c                 Z   |^}}}}t        |      j                  }g }t        t        |            D ]  }t         |             }t         |             }t	        t        |dz        t        |dz              }	t         |             }
t         |             } |       } |       }t        j                  |t        j                        }|j                  t        ||	|
|||              t        t         |                   }| j                  j                  t        |      ||       y )Nr   r+   	pastLimit
unreported)ry  rz  r2  r   r   r   r   r   r  r   rk  r  r   r(   r   )r   r   r   r   r  r  r  rl  r  r  r   r   r   specialConditionsr  r  s                   r   r   zDecoder.historicalTicksLast  s    %5!f6l##s1v 	KAsu:Dsu:D#tax.q>+F #%LE<DuH #''hll;BLL"tX7HJK	K CJ((UUDAr   c           
         |^}}}}}t        |      }t        |      }t        |      }|dv rm|\  }}}}	}
t        |      }t        t        |dz        t        |dz              }| j                  j	                  |||t        |      t        |      ||	|
       y |dk(  r~|\  }}}}}t        |      }t        t        |dz        t        |dz              }| j                  j                  ||t        |      t        |      t        |      t        |      |       y |dk(  r+|\  }| j                  j                  ||t        |             y y )N)r   r+   r   r+   r  r-   )r  r  r0   )	r   r   r   r(   tickByTickAllLastr   r   tickByTickBidAsktickByTickMidPoint)r   r   r   r   r   rl  r   r   r  r   r  r  bidPriceaskPricebidSizeaskSizemidPoints                    r   r   zDecoder.tickByTick  sC   ,2)5(D6E
x=4yv=C:E4x):t9D(tax.q>+F LL**xuU|U4["35 ]9?6Hh$t9D%q> N,F LL))tU8_eHogg8 ]IHLL++E4xI r   c           A         t               }t               }t               }|^@}|_        |_        |_        |_        |_        |_        |_	        |_
        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        }|_         |_!        |_"        |_#        |_$        |_%        |_&        |_'        |_(        |_)        |_*        |_+        |_,        |_-        |_.        |_/        |_0        |_1        |_2        |_3        |_4        |_5        |_6        |_7        |_8        |_9        |_:        |_;        |_<        |_=        |_>        |_?        |_@        }|j~                  r3|^|_A        |_B        |_C        |_D        |_E        |_F        |_G        |_H        }|^|_I        |_J        |_K        |_L        |_M        |_N        |_O        }t        |j                  d            }g |_R        t        |      D ]k  }t               }|^|_        |_U        |_        |_        |_        |_)        |_*        |_+        }| j                  |       |j                  j                  |       m t        |j                  d            }g |_X        t        |      D ]N  }t               }|j                  d      |_Z        | j                  |       |j                  j                  |       P t        |j                  d            }	|	dkD  rAg |_[        t        |	      D ],  }|^}
}}|j                  j                  t        |
|             . |^|_]        |_^        }}t        |xs t              |_a        d|j                  cxk  r	t        k  r0n n-|^|_b        |_c        |_d        |_e        |_f        |_g        |_h        }|j                  d      |_i        |j                  r|j                  d      |_j        |^|_k        |_l        |_m        |_n        }}t        |      r?|^}}}}t        t        |xs d      t        |xs d      t        |xs d            |_p        |j                  d      |_q        |j                  r`t        |j                  d            }	|	dkD  rAg |_r        t        |	      D ],  }|^}
}}|j                  j                  t        |
|             . |^|_s        |_t        |_u        |_v        |_w        |_x        |_y        |_z        |_{        |_|        |_}        |_~        |_        |_        |_        |_        |_        |_        |_        }|j"                  dk(  r!|^|_        |_        |_        |_        |_        }t        |j                  d            }|dkD  rt        |      D ]  }t        |j                  d            }t        j                  |      }t        t        j                  |            dz
  } ||g|d |  }| j                  |       |j                   j                  |       ||d  } |^|_        |_        }|^|_        |_        |_K        |_        |_        |_        |_        |_        |j4                  _        |j4                  _        |j4                  _        |_        |_        |_        |_        |_        }| jF                  dk\  r|j                  d      |_        | jF                  dk\  r|j                  d      |_        | jF                  dk\  r|j                  d      |_        | jF                  dk\  r!|^|_        |_        |_        |_        |_        }| j                  |       | j                  |       | j                  |       | jX                  j[                  |j                  |||       y )Nr   	PEG BENCHr               )r   r	   r!   rZ  r  r	  r
  r  r  r  r  r   r  r  r  actiontotalQuantity	orderTypelmtPriceauxPricetifocaGroupr  	openCloseoriginrd  r`  r_  
outsideRthhiddendiscretionaryAmtgoodAfterTimefaGroupfaMethodfaPercentage	faProfilere  goodTillDaterule80ApercentOffsetsettlingFirmshortSaleSlotdesignatedLocation
exemptCodeauctionStrategystartingPricestockRefPricer  stockRangeLowerstockRangeUpperdisplaySize
blockOrdersweepToFill	allOrNoneminQtyocaType
eTradeOnlyfirmQuoteOnlynbboPriceCapparentIdtriggerMethod
volatilityvolatilityTypedeltaNeutralOrderTypedeltaNeutralAuxPricedeltaNeutralConIddeltaNeutralSettlingFirmdeltaNeutralClearingAccountdeltaNeutralClearingIntentdeltaNeutralOpenClosedeltaNeutralShortSaledeltaNeutralShortSaleSlotdeltaNeutralDesignatedLocationcontinuousUpdatereferencePriceTypetrailStopPricetrailingPercentbasisPointsbasisPointsTypecomboLegsDescripr   r  	comboLegsr2  r   ratior   r  orderComboLegsr   r   smartComboRoutingParamsr   scaleInitLevelSizescaleSubsLevelSizer   r"   scalePriceIncrementscalePriceAdjustValuescalePriceAdjustIntervalscaleProfitOffsetscaleAutoResetscaleInitPositionscaleInitFillQtyscaleRandomPercent	hedgeType
hedgeParamoptOutSmartRoutingclearingAccountclearingIntentnotHeldr   deltaNeutralContractalgoStrategy
algoParams	solicitedwhatIfstatusinitMarginBeforemaintMarginBeforeequityWithLoanBeforeinitMarginChangemaintMarginChangeequityWithLoanChangeinitMarginAftermaintMarginAfterequityWithLoanAfterr  minCommissionmaxCommissioncommissionCurrencywarningTextrandomizeSizerandomizePricereferenceContractIdisPeggedChangeAmountDecreasepeggedChangeAmountreferenceChangeAmountreferenceExchangeIdr    createClassr=  r   r   
conditionsconditionsIgnoreRthconditionsCancelOrderadjustedOrderTypetriggerPricelmtPriceOffsetadjustedStopPriceadjustedStopLimitPriceadjustedTrailingAmountadjustableTrailingUnitsoftDollarTierr   r  r  cashQtydontUseAutoPriceForHedgeisOmsContainerdiscretionaryUpToLimitPriceusePriceMgmtAlgor)   duration	postToAtsautoCancelParentminTradeQtyminCompeteSizecompeteAgainstBestOffsetmidOffsetAtWholemidOffsetAtHalfr(   r   r   r   or  str   numLegslegnumOrderLegs	numParamsrE  rF  r  
dncPresentr  r  r   numConditionscondTypecondClsr  conds                         r   r   zDecoder.openOrder2  sl   GJ\D CA	IGHI*HGLJJMNHOKJJEJIKHJJHLHOIJNKKNIONO LOOGMLMKHILONJOL#""" "	#*-,''+0 	 Mfjjm$w 	$AzC "			
!&JJsOKKs#	$ 6::a=)|$ 	)A/C

1CIJJsO##C(		) 

1&	q=(*A%9% *&,#UV))00S%(** 		   %i&?< @q$$3|3 "'*# #"$jjm;;!::a=AL 	 Iz?+1(E5%&%9EJQuz!2E%*14E&GA"  A>>FJJqM*I1}!y) .A*0'CLL'' e,..2 )	KHI # #"M!NO;;+% "%.$'%FJJqM*1=) $vzz!}-(44X>**734q8x5&!*5

4 ##D)$ "%'& #	N$$$! (I&)$AAJ$ **Q-AK$!'AA$ " *"!

1

1

2qyy!Q3r   c           8      P   t               }t               }t               }|^7}|_        |_        |_        |_        |_        |_        |_	        |_
        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_        |_         |_!        |_"        |_#        |_$        |_%        |_&        |_'        |_(        |_)        |_*        |_+        |_,        |_-        |_.        |_/        |_0        |_1        |_2        |_3        |_4        |_5        |_6        |_7        |_8        }|jn                  r|^|_9        |_:        |_;        |_<        }|^|_=        |_>        |_?        |_@        |_A        }t        |j                  d            }g |_D        t        |      D ]k  }t               }|^|_        |_G        |_        |_
        |_        |_'        |_(        |_)        }| j                  |       |j                  j                  |       m t        |j                  d            }g |_J        t        |      D ]N  }t               }|j                  d      |_L        | j                  |       |j                  j                  |       P t        |j                  d            }	|	dkD  rAg |_M        t        |	      D ],  }|^}
}}|j                  j                  t        |
|             . |^|_O        |_P        }}t        |xs t              |_S        d|j                  cxk  r	t        k  r0n n-|^|_T        |_U        |_V        |_W        |_X        |_Y        |_Z        }|j                  d      |_[        |j                  r|j                  d      |_\        |^|_]        |_^        |__        }}t        |      r?|^}}}}t        t        |xs d      t        |xs d      t        |xs d            |_a        |j                  d      |_b        |j                  r`t        |j                  d            }	|	dkD  rAg |_c        t        |	      D ],  }|^}
}}|j                  j                  t        |
|             . |^|_d        |_e        |_f        |_g        }|j                   dk(  r!|^|_h        |_i        |_j        |_k        |_l        }t        |j                  d            }|dkD  rt        |      D ]  }t        |j                  d            }t        j                  |      }t        t        j                  |            dz
  } ||g|d |  }| j                  |       |j                  j                  |       ||d  } |^|_s        |_t        }|^|_?        |_u        |_v        |_w        |_x        |_y        |_z        |_{        |_|        |_}        |_~        |_        |_        |_        |_        }| j                  dk\  r!|^|_        |_        |_        |_        |_        }| j                  |       | j                  |       | j                  |       | j                  j                  |||       y )Nr   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  rd  r_  r  r  r  r  r  r  r  r  re  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  r   r$  r   r  r%  r   r   r&  r   r'  r(  r   r"   r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r4  r5  r6  r   r7  r8  r9  r:  r<  rJ  rK  rL  rM  rN  rO  rP  r    rQ  r=  r   r   rR  rS  rT  rW  r]  r^  r_  autoCancelDatefilledQuantityrefFuturesConIdrd  shareholderimbalanceOnlyrouteMarketableToBboparentPermIdcompletedTimecompletedStatusr)   re  rf  rg  rh  ri  r(   r   rj  s                         r   r   zDecoder.completedOrder1  sG   GJ\t q8	GHI*HGLJJMNHOKJJEJIKHJHLHOIJNKKNIONO LOOGMMKHIOL#""" "#'+0 	 fjjm$w 	$AzC "			
!&JJsOKKs#	$ 6::a=)|$ 	)A/C

1CIJJsO##C(		) 

1&	q=(*A%9% *&,#UV))00S%(** 		   %i&?< @q$$3|3 "'*# #"$jjm;;!::a=AL 	Iz?+1(E5%&%9EJQuz!2E%*14E&GA"  A>>FJJqM*I1}!y) .A*0'CLL'' e,.. 	KIO;;+% "%.$'%FJJqM*1=) $vzz!}-(44X>**734q8x5&!*5

4 ##D)$ "%'$ !	I&MO"N$ " *"!

1

1

2##Aq"-r   c           	         |^}}}}}}}t        |      j                  }t        t        |            D cg c]  }t	         |        |        |             ! }	}| j
                  j                  t        |      ||||	       y c c}w )N)startDateTimeendDateTimerefDate)ry  rz  r2  r   r   r(   r   )
r   r   r   r   r  r  timeZoner  r  sessionss
             r   r   zDecoder.historicalSchedule	  s     %	F6l## 3u:&( &%SUCEC ( ( 	''J{Hh	H(s   $BN)r+   )(__name__
__module____qualname____doc__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'      s    FP
 P
 P
d.FOKN-:L5\E9N,4\M$; 0B	+C0C.74
.8
.4,=5
.
:
?>"D.B.JB}4~V.pHr   r'   ),r  r   r   r   r   typingr   r   r  r   r	   r
   r   r   objectsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   orderr   r   r    r!   utilr"   r#   r$   r(   r%   r'   r   r   r   <module>r     s\    (   '  @ @ @ @ @
 D C 9 9 AH AHr   