B
     9-e3   ã               @   sÜ   d 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
 G dd„ deƒZG d	d
„ d
eƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdd„ 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.
é    )Úcomm)ÚUNSET_DOUBLE)ÚObject)ÚEnum)Údecodec               @   s\   e Zd ZdZdZdZdZdZdZdd„ Z	d	d
„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚOrderConditioné   é   é   é   é   é   c             C   s   || _ d| _d S )NT)ÚcondTypeÚisConjunctionConnection)Úselfr   © 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\order_condition.pyÚ__init__   s    zOrderCondition.__init__c             C   s   | j S )N)r   )r   r   r   r   Útype   s    zOrderCondition.typec             C   s
   d| _ | S )NT)r   )r   r   r   r   ÚAnd   s    zOrderCondition.Andc             C   s
   d| _ | S )NF)r   )r   r   r   r   ÚOr#   s    zOrderCondition.Orc             C   s   t t|ƒ}|dk| _d S )NÚa)r   Ústrr   )r   ÚfieldsÚ	connectorr   r   r   r   '   s    
zOrderCondition.decodec             C   s   t  | jrdnd¡gS )Nr   Úo)r   Ú
make_fieldr   )r   r   r   r   Úmake_fields+   s    zOrderCondition.make_fieldsc             C   s   | j r
dS dS )Nz<AND>z<OR>)r   )r   r   r   r   Ú__str__.   s    zOrderCondition.__str__N)Ú__name__Ú
__module__Ú__qualname__ÚPriceÚTimeÚMarginÚ	ExecutionÚVolumeÚPercentChanger   r   r   r   r   r   r   r   r   r   r   r      s   r   c               @   s.   e Zd Zd
dd„Zdd„ Zdd„ Zdd	„ ZdS )ÚExecutionConditionNc             C   s$   t  | t j¡ || _|| _|| _d S )N)r   r   r%   ÚsecTypeÚexchangeÚsymbol)r   r)   Úexchr+   r   r   r   r   3   s    zExecutionCondition.__init__c             C   s4   t  | |¡ tt|ƒ| _tt|ƒ| _tt|ƒ| _d S )N)r   r   r   r)   r*   r+   )r   r   r   r   r   r   9   s    zExecutionCondition.decodec             C   s0   t  | ¡t | j¡t | j¡t | j¡g }|S )N)r   r   r   r   r)   r*   r+   )r   Úfldsr   r   r   r   ?   s
    

zExecutionCondition.make_fieldsc             C   s"   d| j  d | j d | j d S )Nztrade occurs for z symbol on z exchange for z security type)r+   r*   r)   )r   r   r   r   r   F   s    zExecutionCondition.__str__)NNN)r   r    r!   r   r   r   r   r   r   r   r   r(   2   s   
r(   c               @   sL   e Zd Zddd„Zedœdd„Zeddœdd	„Zd
d„ Zdd„ Zdd„ Z	dS )ÚOperatorConditionNc             C   s   t  | |¡ || _d S )N)r   r   ÚisMore)r   r   r/   r   r   r   r   L   s    zOperatorCondition.__init__)Úreturnc             C   s   t dƒ‚d S )Nzabstractmethod!)ÚNotImplementedError)r   r   r   r   ÚvalueToStringP   s    zOperatorCondition.valueToString)Útextr0   c             C   s   t dƒ‚d S )Nzabstractmethod!)r1   )r   r3   r   r   r   ÚsetValueFromStringS   s    z$OperatorCondition.setValueFromStringc             C   s0   t  | |¡ tt|ƒ| _tt|ƒ}|  |¡ d S )N)r   r   Úboolr/   r   r4   )r   r   r3   r   r   r   r   V   s    
zOperatorCondition.decodec             C   s(   t  | ¡t | j¡t |  ¡ ¡g }|S )N)r   r   r   r   r/   r2   )r   r-   r   r   r   r   \   s    
zOperatorCondition.make_fieldsc             C   s   | j r
dnd}d||  ¡ f S )Nz>= z<= z %s %s)r/   r2   )r   Úsbr   r   r   r   b   s    zOperatorCondition.__str__)NN)
r   r    r!   r   r   r2   r4   r   r   r   r   r   r   r   r.   K   s   
r.   c               @   sL   e Zd Zddd„Zdd„ Zdd„ Zedœd	d
„Zeddœdd„Zdd„ Z	dS )ÚMarginConditionNc             C   s   t  | tj|¡ || _d S )N)r.   r   r   r$   Úpercent)r   r/   r8   r   r   r   r   h   s    zMarginCondition.__init__c             C   s   t  | |¡ d S )N)r.   r   )r   r   r   r   r   r   l   s    zMarginCondition.decodec             C   s   t  | ¡}|S )N)r.   r   )r   r-   r   r   r   r   o   s    
zMarginCondition.make_fields)r0   c             C   s
   t | jƒS )N)r   r8   )r   r   r   r   r2   s   s    zMarginCondition.valueToString)r3   r0   c             C   s   t |ƒ| _d S )N)Úfloatr8   )r   r3   r   r   r   r4   v   s    z"MarginCondition.setValueFromStringc             C   s   dt  | ¡ S )Nzthe margin cushion percent %s )r.   r   )r   r   r   r   r   y   s    zMarginCondition.__str__)NN)
r   r    r!   r   r   r   r   r2   r4   r   r   r   r   r   r7   g   s   
r7   c               @   s.   e Zd Zd
dd„Zdd„ Zdd„ Zdd	„ ZdS )ÚContractConditionNc             C   s   t  | ||¡ || _|| _d S )N)r.   r   ÚconIdr*   )r   r   r;   r,   r/   r   r   r   r      s    zContractCondition.__init__c             C   s(   t  | |¡ tt|ƒ| _tt|ƒ| _d S )N)r.   r   Úintr;   r   r*   )r   r   r   r   r   r   „   s    zContractCondition.decodec             C   s&   t  | ¡t | j¡t | j¡g }|S )N)r.   r   r   r   r;   r*   )r   r-   r   r   r   r   ‰   s    
zContractCondition.make_fieldsc             C   s   d| j | jt | ¡f S )Nz%s on %s is %s )r;   r*   r.   r   )r   r   r   r   r      s    
zContractCondition.__str__)NNNN)r   r    r!   r   r   r   r   r   r   r   r   r:   ~   s   
r:   c               @   sL   e Zd Zddd„Zdd„ Zdd„ Zedœd	d
„Zeddœdd„Zdd„ Z	dS )ÚTimeConditionNc             C   s   t  | tj|¡ || _d S )N)r.   r   r   r#   Útime)r   r/   r>   r   r   r   r   •   s    zTimeCondition.__init__c             C   s   t  | |¡ d S )N)r.   r   )r   r   r   r   r   r   ™   s    zTimeCondition.decodec             C   s   t  | ¡}|S )N)r.   r   )r   r-   r   r   r   r   œ   s    
zTimeCondition.make_fields)r0   c             C   s   | j S )N)r>   )r   r   r   r   r2       s    zTimeCondition.valueToString)r3   r0   c             C   s
   || _ d S )N)r>   )r   r3   r   r   r   r4   £   s    z TimeCondition.setValueFromStringc             C   s   dt  | ¡ S )Nztime is %s )r.   r   )r   r   r   r   r   ¦   s    zTimeCondition.__str__)NN)
r   r    r!   r   r   r   r   r2   r4   r   r   r   r   r   r=   ”   s   
r=   c            
   @   sd   e Zd Zeddddddddd	ƒ	Zddd„Zdd„ Zdd„ Zedœdd„Z	ed
dœdd„Z
dd„ Zd
S )ÚPriceConditionÚDefaultZDoubleBidAskÚLastZ
DoubleLastZBidAskzN/A1zN/A2Z
LastBidAskZMidPointNc             C   s$   t  | tj|||¡ || _|| _d S )N)r:   r   r   r"   ÚpriceÚtriggerMethod)r   rC   r;   r,   r/   rB   r   r   r   r   ¶   s    zPriceCondition.__init__c             C   s   t  | |¡ tt|ƒ| _d S )N)r:   r   r<   rC   )r   r   r   r   r   r   ½   s    zPriceCondition.decodec             C   s   t  | ¡t | j¡g }|S )N)r:   r   r   r   rC   )r   r-   r   r   r   r   Á   s    zPriceCondition.make_fields)r0   c             C   s
   t | jƒS )N)r   rB   )r   r   r   r   r2   Æ   s    zPriceCondition.valueToString)r3   r0   c             C   s   t |ƒ| _d S )N)r9   rB   )r   r3   r   r   r   r4   É   s    z!PriceCondition.setValueFromStringc             C   s   dt j | j¡t | ¡f S )Nz%s price of %s )r?   ÚTriggerMethodEnumÚto_strrC   r:   r   )r   r   r   r   r   Ì   s    zPriceCondition.__str__)NNNNN)r   r    r!   r   rD   r   r   r   r   r2   r4   r   r   r   r   r   r?   ª   s"    
r?   c               @   sT   e Zd Zdddefdd„Zdd„ Zdd„ Zedœd	d
„Zeddœdd„Z	dd„ Z
dS )ÚPercentChangeConditionNc             C   s   t  | tj|||¡ || _d S )N)r:   r   r   r'   ÚchangePercent)r   r;   r,   r/   rG   r   r   r   r   Ó   s    zPercentChangeCondition.__init__c             C   s   t  | |¡ d S )N)r:   r   )r   r   r   r   r   r   Ù   s    zPercentChangeCondition.decodec             C   s   t  | ¡}|S )N)r:   r   )r   r-   r   r   r   r   Ü   s    
z"PercentChangeCondition.make_fields)r0   c             C   s
   t | jƒS )N)r   rG   )r   r   r   r   r2   à   s    z$PercentChangeCondition.valueToString)r3   r0   c             C   s   t |ƒ| _d S )N)r9   rG   )r   r3   r   r   r   r4   ã   s    z)PercentChangeCondition.setValueFromStringc             C   s   dt  | ¡ S )Nzpercent change of %s )r:   r   )r   r   r   r   r   æ   s    zPercentChangeCondition.__str__)r   r    r!   r   r   r   r   r   r2   r4   r   r   r   r   r   rF   Ò   s   rF   c               @   sL   e Zd Zddd„Zdd„ Zdd„ Zedœd	d
„Zeddœdd„Zdd„ Z	dS )ÚVolumeConditionNc             C   s   t  | tj|||¡ || _d S )N)r:   r   r   r&   Úvolume)r   r;   r,   r/   rI   r   r   r   r   ì   s    zVolumeCondition.__init__c             C   s   t  | |¡ d S )N)r:   r   )r   r   r   r   r   r   ñ   s    zVolumeCondition.decodec             C   s   t  | ¡}|S )N)r:   r   )r   r-   r   r   r   r   ô   s    
zVolumeCondition.make_fields)r0   c             C   s
   t | jƒS )N)r   rI   )r   r   r   r   r2   ø   s    zVolumeCondition.valueToString)r3   r0   c             C   s   t |ƒ| _d S )N)r<   rI   )r   r3   r   r   r   r4   û   s    z"VolumeCondition.setValueFromStringc             C   s   dt  | ¡ S )Nzvolume of %s )r:   r   )r   r   r   r   r   þ   s    zVolumeCondition.__str__)NNNN)
r   r    r!   r   r   r   r   r2   r4   r   r   r   r   r   rH   ë   s   
rH   c             C   sr   d }t j| krtƒ }nXt j| kr(tƒ }nFt j| kr:tƒ }n4t j| krLtƒ }n"t j	| kr^t
ƒ }nt j| krntƒ }|S )N)r   r%   r(   r$   r7   r'   rF   r"   r?   r#   r=   r&   rH   )r   Úcondr   r   r   ÚCreate  s    





rK   N)Ú__doc__Úibapir   Úibapi.commonr   Úibapi.object_implemr   Úibapi.enum_implemr   Úibapi.utilsr   r   r(   r.   r7   r:   r=   r?   rF   rH   rK   r   r   r   r   Ú<module>   s   "(