ó
    óU+jb	  ã                   óF   • S r SSKJrJr  SSKJrJrJrJr   " S S\5      r	g)z#Abstract base class for all brokersé    )ÚABCÚabstractmethod)ÚDictÚListÚAnyÚOptionalc                   óp  • \ rS rSrSrS\S\4S jrS\S\4S jr\	S\
4S j5       r\	S	\S
\S\S\S\S\S\\   4S j5       r\	S\S\S\S\S\S\\   4S j5       r\	S\\   4S j5       r\	S\\   4S j5       r\	S\S\S\4S j5       r\	S\S\S\
S\
4S j5       r\	S\4S j5       rS\S\S\\   4S jrSrg)Ú
BaseBrokeré   z2Abstract base class for all broker implementationsÚcredentialsÚclient_codec                 ód   • Xl         X l        U R                  U5      U l        SU l        SU l        g )NF)r   r   Ú_get_client_idÚ	client_idÚis_logged_inÚdynamic_profit_enabled)Úselfr   r   s      Ú0c:\Trade\moneyHeistClient\brokers\base_broker.pyÚ__init__ÚBaseBroker.__init__	   s0   € Ø&ÔØ&ÔØ×,Ñ,¨[Ó9ˆŒØ!ˆÔØ&+ˆÕ#ó    Úreturnc                 ój   • UR                  S5      =(       d    UR                  SU R                  5      $ )z"Extract client ID from credentialsÚuser_idÚapi_key)Úgetr   )r   r   s     r   r   ÚBaseBroker._get_client_id   s'   € à�‰˜yÓ)×Y¨[¯_©_¸YÈ×HXÑHXÓ-YÐYr   c                 ó   • g)zLogin to broker platformN© ©r   s    r   ÚloginÚBaseBroker.login   ó   € ð 	r   ÚsymbolÚactionÚquantityÚexchangeÚexpiryÚremarksc                 ó   • g)zPlace a regular orderNr   )r   r$   r%   r&   r'   r(   r)   s          r   Úplace_orderÚBaseBroker.place_order   ó   € ð 	r   Útrading_symbolÚtransaction_typec                 ó   • g)zPlace profit booking orderNr   )r   r.   r&   r'   r/   r)   s         r   Úplace_profit_orderÚBaseBroker.place_profit_order   r-   r   c                 ó   • g)zGet current positionsNr   r    s    r   Úget_positionsÚBaseBroker.get_positions%   r#   r   c                 ó   • g)zGet order bookNr   r    s    r   Ú
get_ordersÚBaseBroker.get_orders*   r#   r   c                 ó   • g)zGet current market priceNr   )r   r'   r.   s      r   Ú	get_quoteÚBaseBroker.get_quote/   r#   r   Úmax_profit_targetÚmax_loss_limitr   c                 ó   • g)z(Close all open positions based on limitsNr   )r   r<   r=   r   s       r   Úclose_all_positionsÚBaseBroker.close_all_positions4   r-   r   c                 ó   • g)zGet total realized profit/lossNr   r    s    r   Úget_realized_pnlÚBaseBroker.get_realized_pnl:   r#   r   Úmax_qtyc                 óz   • / nX:”  a  UR                  U5        X-  nX:”  a  M  US:”  a  UR                  U5        U$ )z%Split large order into smaller chunksr   )Úappend)r   r&   rD   Úchunkss       r   Úsplit_order_quantityÚBaseBroker.split_order_quantity?   sC   € àˆØÓ Ø�M‰M˜'Ô"ØÑˆHð Õ ð �a‹<Ø�M‰M˜(Ô#Øˆr   )r   r   r   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ústrr   r   r   Úboolr!   Úintr   r+   r1   r   r4   r7   r:   r?   ÚfloatrB   rH   Ú__static_attributes__r   r   r   r
   r
      s¬  † Ù<ð, Dð ,°sô ,ðZ¨$ð Z°3ô Zð ð�tó ó ðð ð #ð ¨sð ¸cð ÈSð ØðØ),ðØ19¸#±óó ðð
 ð°ð Àð Èsð Ø,/ðØ:=ðØBJÈ3Á-óó ðð
 ð˜t D™zó ó ðð ð˜D ™Jó ó ðð ð #ð °sð ¸tó ó ðð ð°Sð È#ð Ø37ðØ<@óó ðð
 ð %ó ó ðð¨Sð ¸3ð À4ÈÁ9÷ r   r
   N)
rN   Úabcr   r   Útypingr   r   r   r   r
   r   r   r   Ú<module>rV      s   ðÙ )ç #ß ,Ó ,ôA�õ Ar   