B
     9-eu                 @   s@   d dl Z d dlmZ dd Zdd Zdd Zd	d
 Zdd ZdS )    N)	OrderTypec       	      C   s   t | tr2| r.t| } t | tr2t| } ni } dddddg}|}|dg }|ddd	d
g }d}| dddkrx|}n| dddkr|}n|}x,|D ]$}| |d}|r|t|d 7 }qW |dd d S )z
    IBCpp.Contract() cannot use __str__ to print so that make a print-function
    :param contract: IBCpp.Contract()
    :return: String
    secTypeprimaryExchangeexchangesymbolcurrencyexpirystrikeright
multiplierlocalSymbol{N)STKCASH)FUTBOND,})
isinstancestrjsonloadsget)	contractbaseZstkCashfutotheransiteratorparat 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\models\utils.pyprint_IBCpp_contract   s*    




r$   c             C   s  t | trt| } | dd}| dd}| dd}| dd}| dd}d| dd|||||f }|tjkrzn|tjkr|d	t| d
  7 }n|tjkr|dt| d  7 }n|tj	kr| d dk r|dt| d  7 }| d dk r|dt| d  7 }|dt| d  7 }nr|tj
kr| d dk rL|dt| d  7 }| d dk rn|dt| d  7 }| d dk r|dt| d  7 }|d7 }|S )z
    IBCpp.Order() cannot use __str__ to print so that make a print-function
    :param order: IBCpp.Order()
    :return: String
    actionNtotalQuantity	orderTypetiforderRefz?{account=%s action=%s orderType=%s amount=%s tif=%s orderRef=%saccountz limitPrice=lmtPricez stopPrice=auxPriceg3t<{z trailingAmount=trailingPercentz trailingPercent=z trailingStopPrice=trailStopPricer   )r   r   r   r   r   r   MKTLMTSTPTRAIL_LIMITTRAIL)orderr%   amountr'   r(   r)   r   r"   r"   r#   print_IBCpp_order(   s:    




r6   c             C   sD   t | tr| rt| } ni } d| dd | dd | dd f S )Nz({status=%s commission=%s warningText=%s}statusZ
commissionZwarningText)r   r   r   r   r   )Z
orderStater"   r"   r#   print_IBCpp_orderStateN   s
    
r8   c             C   sl   t | trt| } d| dd | dd | dd | dd | dd | dd | dd | d	d f S )
NzU{orderId=%s clientId=%s time=%s acctNumber=%s exchange=%s side=%s shares=%s price=%s}orderIdclientIdtimeZ
acctNumberr   sideZsharesprice)r   r   r   r   r   )	executionr"   r"   r#   print_IBCpp_executionX   s
    

2r?   c          	   C   sn   d}xFdD ]>}y$t | |r0|d|t| |f 7 }W q
 tk
rF   Y q
X q
W | jrf|dt| jf 7 }|d S )Nr   )&
marketNameminTickpriceMagnifier
orderTypesvalidExchanges
underConIdlongNamecontractMonthindustrycategorysubcategory
timeZoneIdtradingHoursliquidHoursevRuleevMultipliermdSizeMultiplieraggGroup	secIdListunderSymbolunderSecTypemarketRuleIdsrealExpirationDatecusipratings
descAppendbondType
couponTypecallableputablecouponconvertiblematurity	issueDatenextOptionDatenextOptionTypenextOptionPartialnotesz%s=%s zcontract=%sr   )hasattrgetattr	TypeErrorsummaryr$   )contractDetailsr   itemr"   r"   r#   print_IBCpp_contractDetails`   s    


rl   )r   IBridgePy.constantsr   r$   r6   r8   r?   rl   r"   r"   r"   r#   <module>   s   "&
