B
     9-e¡  ã               @   sò  d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 dZ
dZdZejjZd	Zed
d d ƒZejZdZeZeZeZeZeddddƒZeZedddddƒZeZeddddƒZe Z!e Z"eZ#eZ$eZ%eZ&eZ'e(Z)eZ*eZ+eZ,eZ-eZ.eZ/G dd„ de	ƒZ0G dd„ de	ƒZ1G dd„ de	ƒZ2G d d!„ d!e	ƒZ3G d"d#„ d#e	ƒZ4G d$d%„ d%e	ƒZ5G d&d'„ d'e	ƒZ6G d(d)„ d)e	ƒZ7G d*d+„ d+e	ƒZ8G d,d-„ d-e	ƒZ9G d.d/„ d/e	ƒZ:G d0d1„ d1e	ƒZ;G d2d3„ d3e	ƒZ<G d4d5„ d5e	ƒZ=G d6d7„ d7e	ƒZ>G d8d9„ d9e	ƒZ?dS ):zÊ
Copyright (C) 2019 Interactive Brokers LLC. All rights reserved. This code is subject to the terms
 and conditions of the IB API Non-Commercial License or the IB API Commercial License, as applicable.
é    N)ÚDecimal)ÚEnum)ÚObjectéÿÿÿÿiÿÿÿ iÿÿÿl   ÿÿÿÿ é   é   é   ÚInfinityzN/AZGROUPSZPROFILESÚALIASESZREALTIMEZFROZENZDELAYEDZDELAYED_FROZENÚNoneZAddedZRemoveZ	RoudedOutc               @   s   e Zd Zdd„ Zdd„ ZdS )ÚBarDatac             C   s4   d| _ d| _d| _d| _d| _t| _t| _d| _d S )NÚ g        r   )	ÚdateÚopenÚhighÚlowÚcloseÚUNSET_DECIMALÚvolumeÚwapÚbarCount)Úself© r   ú®G:\My Drive\STUDY\EPAT\09 TBP - Trading & Back-testing Platforms\TBP04 - Backtesting & Live Trading\IB IBridgePy API\02 Python 3.7 IBridgePy_Win_Anaconda37_64\ibapi\common.pyÚ__init__8   s    zBarData.__init__c             C   s`   d| j tj | j¡tj | j¡tj | j¡tj | j¡tj | j	¡tj | j
¡tj | j¡f S )NzSDate: %s, Open: %s, High: %s, Low: %s, Close: %s, Volume: %s, WAP: %s, BarCount: %s)r   ÚibapiÚutilsÚfloatMaxStringr   r   r   r   ÚdecimalMaxStringr   r   ÚintMaxStringr   )r   r   r   r   Ú__str__B   s    $zBarData.__str__N)Ú__name__Ú
__module__Ú__qualname__r   r    r   r   r   r   r   7   s   
r   c            	   @   s0   e Zd Zddddddeedf	dd„Zdd„ ZdS )	ÚRealTimeBarr   r   g        c
       
      C   s:   || _ || _|| _|| _|| _|| _|| _|| _|	| _d S )N)	ÚtimeÚendTimeÚopen_r   r   r   r   r   Úcount)
r   r%   r&   r'   r   r   r   r   r   r(   r   r   r   r   I   s    zRealTimeBar.__init__c             C   sh   dt j | j¡t j | j¡t j | j¡t j | j¡t j | j¡t j 	| j
¡t j 	| j¡t j | j¡f S )NzPTime: %s, Open: %s, High: %s, Low: %s, Close: %s, Volume: %s, WAP: %s, Count: %s)r   r   r   r%   r   r   r   r   r   r   r   r   r(   )r   r   r   r   r    T   s    $$zRealTimeBar.__str__N)r!   r"   r#   r   r   r    r   r   r   r   r$   H   s   r$   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚHistogramDatac             C   s   d| _ t| _d S )Ng        )Úpricer   Úsize)r   r   r   r   r   \   s    zHistogramData.__init__c             C   s    dt j | j¡t j | j¡f S )NzPrice: %s, Size: %s)r   r   r   r*   r   r+   )r   r   r   r   r    `   s    zHistogramData.__str__N)r!   r"   r#   r   r    r   r   r   r   r)   [   s   r)   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚNewsProviderc             C   s   d| _ d| _d S )Nr   )ÚcodeÚname)r   r   r   r   r   e   s    zNewsProvider.__init__c             C   s   d| j | jf S )NzCode: %s, Name: %s)r-   r.   )r   r   r   r   r    i   s    zNewsProvider.__str__N)r!   r"   r#   r   r    r   r   r   r   r,   d   s   r,   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚDepthMktDataDescriptionc             C   s"   d| _ d| _d| _d| _t| _d S )Nr   )ÚexchangeÚsecTypeÚlistingExchÚserviceDataTypeÚUNSET_INTEGERÚaggGroup)r   r   r   r   r   n   s
    z DepthMktDataDescription.__init__c             C   s8   | j tkr| j }nd}d| j| j| j| jtj |¡f S )Nr   zSExchange: %s, SecType: %s, ListingExchange: %s, ServiceDataType: %s, AggGroup: %s, )	r5   r4   r0   r1   r2   r3   r   r   r   )r   r5   r   r   r   r    u   s
    

zDepthMktDataDescription.__str__N)r!   r"   r#   r   r    r   r   r   r   r/   m   s   r/   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚSmartComponentc             C   s   d| _ d| _d| _d S )Nr   r   )Ú	bitNumberr0   ÚexchangeLetter)r   r   r   r   r      s    zSmartComponent.__init__c             C   s   d| j | j| jf S )Nz/BitNumber: %d, Exchange: %s, ExchangeLetter: %s)r7   r0   r8   )r   r   r   r   r    „   s    zSmartComponent.__str__N)r!   r"   r#   r   r    r   r   r   r   r6   ~   s   r6   c               @   s   e Zd Zdd„ Zdd„ ZdS )Ú
TickAttribc             C   s   d| _ d| _d| _d S )NF)ÚcanAutoExecuteÚ	pastLimitÚpreOpen)r   r   r   r   r   ‰   s    zTickAttrib.__init__c             C   s   d| j | j| jf S )Nz.CanAutoExecute: %d, PastLimit: %d, PreOpen: %d)r:   r;   r<   )r   r   r   r   r    Ž   s    zTickAttrib.__str__N)r!   r"   r#   r   r    r   r   r   r   r9   ˆ   s   r9   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚTickAttribBidAskc             C   s   d| _ d| _d S )NF)Ú
bidPastLowÚaskPastHigh)r   r   r   r   r   “   s    zTickAttribBidAsk.__init__c             C   s   d| j | jf S )NzBidPastLow: %d, AskPastHigh: %d)r>   r?   )r   r   r   r   r    —   s    zTickAttribBidAsk.__str__N)r!   r"   r#   r   r    r   r   r   r   r=   ’   s   r=   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚTickAttribLastc             C   s   d| _ d| _d S )NF)r;   Ú
unreported)r   r   r   r   r   œ   s    zTickAttribLast.__init__c             C   s   d| j | jf S )NzPastLimit: %d, Unreported: %d)r;   rA   )r   r   r   r   r        s    zTickAttribLast.__str__N)r!   r"   r#   r   r    r   r   r   r   r@   ›   s   r@   c               @   s   e Zd Zdd„ Zdd„ ZdS )Ú
FamilyCodec             C   s   d| _ d| _d S )Nr   )Ú	accountIDÚfamilyCodeStr)r   r   r   r   r   ¥   s    zFamilyCode.__init__c             C   s   d| j | jf S )Nz AccountId: %s, FamilyCodeStr: %s)rC   rD   )r   r   r   r   r    ©   s    zFamilyCode.__str__N)r!   r"   r#   r   r    r   r   r   r   rB   ¤   s   rB   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚPriceIncrementc             C   s   d| _ d| _d S )Ng        )ÚlowEdgeÚ	increment)r   r   r   r   r   ®   s    zPriceIncrement.__init__c             C   s    dt j | j¡t j | j¡f S )NzLowEdge: %s, Increment: %s)r   r   r   rF   rG   )r   r   r   r   r    ²   s    zPriceIncrement.__str__N)r!   r"   r#   r   r    r   r   r   r   rE   ­   s   rE   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚHistoricalTickc             C   s   d| _ d| _t| _d S )Nr   g        )r%   r*   r   r+   )r   r   r   r   r   ·   s    zHistoricalTick.__init__c             C   s,   dt j | j¡t j | j¡t j | j¡f S )NzTime: %s, Price: %s, Size: %s)r   r   r   r%   r   r*   r   r+   )r   r   r   r   r    ¼   s    zHistoricalTick.__str__N)r!   r"   r#   r   r    r   r   r   r   rH   ¶   s   rH   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚHistoricalTickBidAskc             C   s*   d| _ tƒ | _d| _d| _t| _t| _d S )Nr   g        )r%   r=   ÚtickAttribBidAskÚpriceBidÚpriceAskr   ÚsizeBidÚsizeAsk)r   r   r   r   r   Á   s    zHistoricalTickBidAsk.__init__c          	   C   sH   dt j | j¡| jt j | j¡t j | j¡t j | j	¡t j | j
¡f S )NzSTime: %s, TickAttriBidAsk: %s, PriceBid: %s, PriceAsk: %s, SizeBid: %s, SizeAsk: %s)r   r   r   r%   rJ   r   rK   rL   r   rM   rN   )r   r   r   r   r    É   s    zHistoricalTickBidAsk.__str__N)r!   r"   r#   r   r    r   r   r   r   rI   À   s   rI   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚHistoricalTickLastc             C   s*   d| _ tƒ | _d| _t| _d| _d| _d S )Nr   g        r   )r%   r@   ÚtickAttribLastr*   r   r+   r0   ÚspecialConditions)r   r   r   r   r   Ð   s    zHistoricalTickLast.__init__c             C   s8   dt j | j¡| jt j | j¡t j | j¡| j	| j
f S )NzVTime: %s, TickAttribLast: %s, Price: %s, Size: %s, Exchange: %s, SpecialConditions: %s)r   r   r   r%   rP   r   r*   r   r+   r0   rQ   )r   r   r   r   r    Ø   s    zHistoricalTickLast.__str__N)r!   r"   r#   r   r    r   r   r   r   rO   Ï   s   rO   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚHistoricalSessionc             C   s   d| _ d| _d| _d S )Nr   )ÚstartDateTimeÚendDateTimeÚrefDate)r   r   r   r   r   Ý   s    zHistoricalSession.__init__c             C   s   d| j | j| jf S )Nz Start: %s, End: %s, Ref Date: %s)rS   rT   rU   )r   r   r   r   r    â   s    zHistoricalSession.__str__N)r!   r"   r#   r   r    r   r   r   r   rR   Ü   s   rR   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚWshEventDatac             C   s4   t | _d| _d| _d| _d| _d| _d| _t | _d S )Nr   F)	r4   ÚconIdÚfilterÚfillWatchlistÚfillPortfolioÚfillCompetitorsÚ	startDateÚendDateÚ
totalLimit)r   r   r   r   r   æ   s    zWshEventData.__init__c             C   s$   dt j | j¡| j| j| j| jf S )NzaWshEventData. ConId: %s, Filter: %s, Fill Watchlist: %d, Fill Portfolio: %d, Fill Competitors: %d)r   r   r   rW   rX   rY   rZ   r[   )r   r   r   r   r    ð   s    zWshEventData.__str__N)r!   r"   r#   r   r    r   r   r   r   rV   å   s   
rV   )@Ú__doc__Úsysr   ÚmathÚdecimalr   Zibapi.enum_implemr   Zibapi.object_implemr   ÚNO_VALID_IDÚMAX_MSG_LENr4   Ú
float_infoÚmaxÚUNSET_DOUBLEZ
UNSET_LONGr   ÚinfZDOUBLE_INFINITYZINFINITY_STRÚintÚTickerIdÚOrderIdÚlistÚTagValueListÚ
FaDataTypeZFaDataTypeEnumZMarketDataTypeZMarketDataTypeEnumZLiquiditiesZLiquiditiesEnumÚsetÚSetOfStringÚ
SetOfFloatZListOfOrderÚListOfFamilyCodeÚListOfContractDescriptionÚListOfDepthExchangesÚListOfNewsProvidersÚdictÚSmartComponentMapZHistogramDataListÚListOfPriceIncrementsÚListOfHistoricalTickÚListOfHistoricalTickBidAskÚListOfHistoricalTickLastÚListOfHistoricalSessionsr   r$   r)   r,   r/   r6   r9   r=   r@   rB   rE   rH   rI   rO   rR   rV   r   r   r   r   Ú<module>   sj   		

				
	