Ë
    óU+jb	  ã                   óF   — d Z ddlmZmZ ddlmZmZmZmZ  G d„ de«      Z	y)z#Abstract base class for all brokersé    )ÚABCÚabstractmethod)ÚDictÚListÚAnyÚOptionalc                   óR  — e Zd ZdZdedefd„Zdedefd„Zede	fd„«       Z
eded	ed
ededededee   fd„«       Zeded
ededededee   fd„«       Zedee   fd„«       Zedee   fd„«       Zedededefd„«       Zededede	de	fd„«       Zedefd„«       Zd
ededee   fd„Zy)Ú
BaseBrokerz2Abstract base class for all broker implementationsÚcredentialsÚclient_codec                 óh   — || _         || _        | j                  |«      | _        d| _        d| _        y )NF)r   r   Ú_get_client_idÚ	client_idÚis_logged_inÚdynamic_profit_enabled)Úselfr   r   s      ú5/var/www/html/moneyHeistClient/brokers/base_broker.pyÚ__init__zBaseBroker.__init__	   s4   € Ø&ˆÔØ&ˆÔØ×,Ñ,¨[Ó9ˆŒØ!ˆÔØ&+ˆÕ#ó    Úreturnc                 ó`   — |j                  d«      xs |j                  d| j                  «      S )z"Extract client ID from credentialsÚuser_idÚapi_key)Úgetr   )r   r   s     r   r   zBaseBroker._get_client_id   s'   € à�‰˜yÓ)ÒY¨[¯_©_¸YÈ×HXÑHXÓ-YÐYr   c                  ó   — y)zLogin to broker platformN© ©r   s    r   ÚloginzBaseBroker.login   ó   € ð 	r   ÚsymbolÚactionÚquantityÚexchangeÚexpiryÚremarksc                  ó   — y)zPlace a regular orderNr   )r   r    r!   r"   r#   r$   r%   s          r   Úplace_orderzBaseBroker.place_order   ó   € ð 	r   Útrading_symbolÚtransaction_typec                  ó   — y)zPlace profit booking orderNr   )r   r)   r"   r#   r*   r%   s         r   Úplace_profit_orderzBaseBroker.place_profit_order   r(   r   c                  ó   — y)zGet current positionsNr   r   s    r   Úget_positionszBaseBroker.get_positions%   r   r   c                  ó   — y)zGet order bookNr   r   s    r   Ú
get_orderszBaseBroker.get_orders*   r   r   c                  ó   — y)zGet current market priceNr   )r   r#   r)   s      r   Ú	get_quotezBaseBroker.get_quote/   r   r   Úmax_profit_targetÚmax_loss_limitr   c                  ó   — y)z(Close all open positions based on limitsNr   )r   r3   r4   r   s       r   Úclose_all_positionszBaseBroker.close_all_positions4   r(   r   c                  ó   — y)zGet total realized profit/lossNr   r   s    r   Úget_realized_pnlzBaseBroker.get_realized_pnl:   r   r   Úmax_qtyc                 óx   — g }||kD  r|j                  |«       ||z  }||kD  rŒ|dkD  r|j                  |«       |S )z%Split large order into smaller chunksr   )Úappend)r   r"   r9   Úchunkss       r   Úsplit_order_quantityzBaseBroker.split_order_quantity?   sI   € àˆØ˜Ò Ø�M‰M˜'Ô"Ø˜ÑˆHð ˜Ó ð �aŠ<Ø�M‰M˜(Ô#Øˆr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ústrr   r   r   Úboolr   Úintr   r'   r,   r   r.   r0   r2   r6   Úfloatr8   r=   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)
rA   Úabcr   r   Útypingr   r   r   r   r
   r   r   r   ú<module>rH      s   ðÙ )ç #ß ,Ó ,ôA�õ Ar   