
    Tj                        d dl mZ d dlmZ d dlmZ  ed          Z ed          Z ed          Zd%dZ	d&dZ
dddd'd Zd(d#Zd$S ))    )annotations)Decimal)Anyz0.00015z0.00045z0.02valuer   returnr   c                :    t          t          |                     S )N)r   str)r   s    #src/execution/maker_taker_shadow.py_dr      s    3u::    eventr	   valuesdict[str, Any]c                    d| i|dddddS )Nr   TF)paper_tradingresearch_onlylive_order_allowedmainnet_signed_action )r   r   s     r
   _baser      s;    U  Qf  Qtdjo  KP  Q  Q  Q  Qr         )max_wait_barsmax_hold_barsstatecoinsidefeaturesize	stop_losstake_profitsource_window_idstrategy_idr   intr   c       
        ,   |                      di           }|                      di            ||v s
|| d         v rt          d|d          S t          |j                  }t          |j                  t          d          z  }|dk    r%|t          d          |t          d	          z  z
  z  n$|t          d          |t          d	          z  z   z  }||t          |          t          |          t          |          t          |          t          |j                  t          |j                  d
t          |	          t          |
          t          t          |dt          d                              ||d}|||<   t          di |ddiS )Npendingopenmaker_rejectedshadow_order_already_exists)r   reason2long1100r   funding_rate_hourly_pct0)r   r   limit_pricer   r    r!   submitted_candle_tslast_candle_ts	wait_barsr   r   r/   r"   r#   maker_pendingentry_order_type	limit_Alo)r5   )

setdefaultr   r   current_price
spread_pctr   r	   r$   	candle_tsgetattr)r   r   r   r   r   r    r!   r"   r#   r   r   r&   midhalf_spreadlimitorders                   r
   submit_shadowrA      s   y"--G	VR   w$%-//%D9VWWWW
W"
#
#CW'((73<<7KCG6>>C73<<+">>??WZ^efi^j^jmx  |C  DI  |J  |J  nJ  _J  XKE5zzD		^^;''"7#455g/00]++]++#&ww8QSZ[^S_S_'`'`#a#a," E  GDMHHEHHKHHHHr   featureslist[dict[str, Any]]c                V   |                      di           }|                      di           }g }t          |                                          D ]\  }}|                    |          }|+t	          |j                  t	          |d                   k    rIt	          |j                  |d<   t	          |d                   dz   |d<   t          |d                   }|d         dk    rt          |j                  |k    nt          |j                  |k    }	|	r|t          |d	                   z  t          z  }
i |t          |          t          |
          t	          |j                  t	          |j                  d
d||<   ||= |                    t          d#i ||         ddi           it	          |d                   t	          |d                   k    r'||= |                    t          d$i |ddd           t          |                                          D ]x\  }}|                    |          }|+t	          |j                  t	          |d                   k    rIt	          |j                  |d<   t	          |d                   dz   |d<   t          |d                   }t          |d                   t          |d                   }}|dk    rt          |j                  |k    nt          |j                  |k    }|dk    rt          |j                  |k    nt          |j                  |k    }t	          |d                   t	          |d                   k    }|s|s|sZ|rdn|rdnd}|r|n|r|nt          |j                  }t          |dk    r|j        n|j                  }t!          t"          t          |j                  t'          d          z  |          }|dk    r%|t'          d          |t'          d          z  z
  z  n$|t'          d          |t'          d          z  z   z  }t          |d	                   t          |d                   }}|dk    r||z
  |z  n||z
  |z  }t          |d                   }
||z  t(          z  }||z  t          |                    d                    z  t'          d          z  t'          t	          |d                             z  t'          d          z  }|dk    r| }||
z
  |z
  |z
  }|                    t          d%i |t          |          |t          |          t          |          t          |          t          |          dd!d"           ||= z|S )&Nr&   r'   r3   r4      r1   r   r,   r   r   )entry_pricemaker_entry_fee_usdfill_candle_tsr3   	bars_held
maker_fillr6   r7   r   maker_cancelnot_filled_before_expiry)r*   r6   rI   r    r!   r   	time_exitr+   r-   r.   rF   rG   r/   z0.25short
maker_exitmarket_taker)
exit_priceexit_reasongross_pnl_usdtaker_exit_fee_usdfunding_cost_usdnet_pnl_usdr6   exit_order_type)rJ   )rK   )rO   )r8   listitemsgetr$   r;   r   low_15mhigh_15mMAKER_FEE_RATEr	   appendr   	close_15msell_impact_1k_pctbuy_impact_1k_pctmaxMIN_EXIT_SLIPPAGE_PCTr:   r   TAKER_FEE_RATE)r   rB   r&   openedeventsr   r@   r   r?   touched	entry_feeposr   stoptargetstop_hit
target_hitrM   r*   raw_exitimpactslip_pctrQ   r   entrygrossexit_feefundingnets                                r
   advance_shadowrv   /   sp   y"--Gfb))F#%FGMMOO,, { {e,,t$$?c'"344EBR<S8T8TTT"%g&7"8"8 {!344q8k5'((27-62I2I"W_%%..rRYRbOcOcglOl 	{5= 1 11NBI Ke  KCJJWZ[dWeWey|  ~E  ~O  zP  zP  dg  ho  hy  dz  dz  IJ  K  K  KF4LMM%[[t[[{[[[\\\\{#$$E/,B(C(CCCMM%yy%y@Zmxyyyyzzz&,,..))  	c,,t$$?c'"344C@P<Q8R8RRR #G$5 6 6s;/0014K3v;#k*++RM0B-C-Cf26&..2go&&$..bIYFZFZ^bFb7;v~~R())V332goK^K^bhKh
K())S_1E-F-FF	 	
 	9 	 (Zz.Zmm{#X44:)X2gFWCXCX$&..G..gF_``,b1C.D.Dws||.SU[\\NRV\nnX75>>0I!IJJbjnuvynznz  ~F  IP  QV  IW  IW  ~W  oW  cX
Voor#m*<'='=e/3v~~e#t++EJDVZ^C^s0122	$~5$,CGG,E$F$F!G!GG'RW..X[bcfgjkvgwcxcx[y[yy  }D  EK  }L  }L  L7??hGi(*W4e  P  PC  PC
OOY_orsxoyoy  OR  S[  O\  O\  or  sz  o{  o{  IL  MP  IQ  IQ  do  AO  P  P  P  P  	Q  	Q  	Q4LLMr   N)r   r   r   r   )r   r	   r   r   r   r   )r   r   r   r	   r   r	   r   r   r   r   r    r   r!   r   r"   r	   r#   r	   r   r$   r   r$   r   r   )r   r   rB   r   r   rC   )
__future__r   decimalr   typingr   r]   rd   rc   r   r   rA   rv   r   r   r
   <module>rz      s    " " " " " "            ####    Q Q Q Q HI  `b I I I I I I80 0 0 0 0 0r   