
    q#i !                     :   d dl Z d dlZd dlZd dlZd dlZd dl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mZ  ed      Z ed	      Zd
adadad ad ad adadadaddZd Zd ZddZd Z ddZ!d Z"d Z#ddZ$d Z%e&dk(  r ejN                   e%              yy)    N)deque)detect_signal)calc_mf_stats)
append_log)fetch_mempoolnormalize_mempoolx   )maxleniX  F        c                 b   d|  d| }	 t        j                  |d      }|j                          |j                         }g }|D ]A  }t        |d         }t        |d         }	t        |d         }
|j                  ||	|
d	       C |S # t        $ r}t        d|        g cY d }~S d }~ww xY w)
Nz/https://api.binance.us/api/v3/aggTrades?symbol=&limit=   timeoutzError fetching aggTrades: pqm)r   r   isBuyerMaker)	requestsgetraise_for_statusjson	Exceptionprintfloatboolappend)symbollimiturlrdataetradestpriceqtyis_buyer_makers              run.pyget_aggtradesr*      s    ;F875'
RCLLa(	vvx
 F afAcFmaf*
 		 M  *1#./	s   7B 	B.B)#B.)B.c                 b    d}d}| D ]  }|d   r	||d   z  }||d   z  } ||d||d||ddS )Nr   r   r   )buysell)1515 )r$   r,   r-   r%   s       r)   build_mf_from_tradesr2   5   sa    
CD ^AcFND1S6MC	 $'$'4(     c                     d}d}| D ]!  }|d   }|d   }||z  }|d   r||z  }||z  }# ||z
  dz  }t        dt        d|            }t        |      S )Nr   r   r   r   @B g      $g      $@)maxminr   )	r$   buy_volume_usdsell_volume_usdr%   r&   r'   
volume_usdcvd_rawcvds	            r)   calc_cvd_from_tradesr=   D   s    NO )#fS[
^z)Oj(N) /9<G
eSw'
(C:r3   c                 h    d}| D ]  }|d   }|d   }||z  }||k\  s||z  } |dz  }t        |      S )Nr   r   r   r5   r   )r$   threshold_usdwhale_volume_usdr%   r&   r'   r:   whales           r)   calc_whale_from_tradesrC   W   s[     +#fS[
&
*+ y(E<r3   c                     t         syt        j                         }|dz
  }d }t        d      }t         D ]  \  }}t        ||z
        }||k  s|}|} ||dk(  ry| |z
  |z  dz  }t        |      S )Nr   i,  infr         Y@)PRICE_HISTORYtimer   abs)	current_pricecurrent_timetarget_timeclosest_pricemin_time_difftsr&   	time_diffprice_change_pcts	            r)   calc_price_change_5mrR   c   s    99;L$KM%LM" "	E[()	}$%M!M	"
  2&6-G5P!""r3   c                    d|  d| }	 t        j                  |d      }|j                          |j                         }	 t	        d |d   D              }t	        d |d	   D              }t        |d   d
   d
         }t        |d	   d
   d
         }|d
kD  r||z  nd}	|d
kD  r||z  nd}
|	|
fS #  Y yxY w#  d}	d}
Y |	|
fS xY w)Nz+https://api.binance.us/api/v3/depth?symbol=r   r   r   )      ?rT   c              3   8   K   | ]  }t        |d            yw   Nr?   .0xs     r)   	<genexpr>z get_orderbook.<locals>.<genexpr>~        3151;3   bidsc              3   8   K   | ]  }t        |d            ywrV   r?   rX   s     r)   r[   z get_orderbook.<locals>.<genexpr>   r\   r]   asksr   rT   )r   r   r   r   sumr   )r   r   r    r!   obr^   r`   best_bidbest_askdepth_ratio
best_ratios              r)   get_orderbookrg   u   s    7xwug
NCLLa(	VVX	36
3336
33FAq)*FAq)*%)AXdTk3,4qLX(c
 
""

""s   7B0 A*B7 0B47Cc                 n   	 t               dk  ryt               }t        t        |            }t               }||z  ||z  	t         	fdt        |      D              }t        fdt        |      D              }|dk(  ry||z  }t        j                  |	dz  dz   z        }t        |      S )N   r   c              3   :   K   | ]  }|z
  |   z
  z    y w)Nr1   )rY   ipricesx_meany_means     r)   r[   z!compute_smooth.<locals>.<genexpr>   s#     JAQZF1I$67Js   c              3   .   K   | ]  }|z
  d z    yw)r   Nr1   )rY   rk   rm   s     r)   r[   z!compute_smooth.<locals>.<genexpr>   s     :Aq6za':s   r   g-C6?g:0yE>)lenra   rangemathtanhr   )
rl   nx_sumy_sum	numeratordenominatorr   smoothrm   rn   s
   `       @@r)   compute_smoothrz      s    
6{QFAaMEKEQYFQYFJqJJI:q::KaKAYYqFVOd234F=r3   c                     t         dk(  ry t        t         z  dz  } t        t         z  }t        d       t        d       t        d       t        dt                 t        dt         dt                t        d	| d
d       t        dt        dd       t        d|dd       t        dt
        dd       t        dt        dd       t        d       y )Nr   d   =
============================================================zTRADING SUMMARY<============================================================zTotal Trades: zWins: z | Losses: z
Win Rate: z.1f%zTotal PnL: +.2fz	Avg PnL: z+.3fzBest Trade: zWorst Trade: =============================================================
)TOTAL_TRADESWINS	TOTAL_PNLr   LOSSES
BEST_TRADEWORST_TRADE)win_rateavg_pnls     r)   print_trade_summaryr      s    ql"S(H,&G	/	
	(O	N<.
)*	F4&F8
,-	JxnA
&'	K	$'q
)*	Igd^1
%&	LD)
+,	M+d+1
-.	/r3   c                   K   t        j                          }t        |      }|st        d       y |d   d   }t        j	                  |       t
        j	                  t        j                          |f       t        t        t                    }t        |      \  }}t        |      }t        |      }	|	j                  dd      }
|
}|
}|
}t        |      }t        |d      }t        |      }	 t        |        d {   }t!        |      }t"        rt$        |t$        z
  t$        z  d	z  }nd
}t"        r"t&        rt        j                          t&        z
  }nd
}i d|d|d|
d|d|d|d|d|d|d|d|d|dt"        dt$        d|d|}t)        |      }|j                  d      }d}i }|dk(  r5t"        sda|at        j                          ad}d|d}t        d |d!       n|d"k(  rt"        r|t$        z
  t$        z  d#z  }d}d$||t        j                          t&        z
  d%}t*        d&z  at,        |z  at/        t0        |      at3        t4        |      a|d'kD  r
t6        d&z  an	t8        d&z  at        d(|d!d)|d*d+       t;                dad ad a||d,<   ||d-<   t=        ||t        j                          d.       t        d/t?        |d0      |t?        |
d1      t?        |d0      t?        |d0      t?        |d1      |d2       t        d3t        j                          |z
  d4d5       y 7 5#  g d}Y 1xY ww)6Nz	No tradesr   	buy_ratiog      ?P  )r@   )r   r   r   rF   r   r&   ry   r<   rB   re   best_level_ratioratio_1mratio_5m	ratio_15mprice_change_pct_5monchainhas_position	buy_priceposition_agepnl_pctactionFBUYT	OPEN_LONG)	exec_side
exec_pricez
OPEN LONG at $z,.2fSELLr|   
CLOSE_LONG)r   r   pnl_pct_exechold_time_secrW   r   z
CLOSED at $z | PnL: r   r   executed	exec_info)statedecisionrO   z>>>r      )r&   r   r   r<   rB   price_change_5mr   zCycle time: z.4fs) rH   r*   r   PRICE_WINDOWr   rG   rz   listrg   r2   r   r   r=   rC   rR   r   r   HAS_POSITION	BUY_PRICEENTRY_TSr   r   r   r6   r   r7   r   r   r   r   r   round)sessionr   t0r$   r&   ry   re   r   mf_rawmfr   r   r   r   r<   rB   r   memr   pnl_pct_liver   r   r   r   r   r   r   s                              r)   	run_cycler      s     
B6"Fk2JsOE$))+u-.D./F$1&$9!K!!&)F	v	B{C(IHHI
v
&C"6@E*51O!'**#C( 	-	)Y6>yy{X-& 	Y 	s	
 	 	{ 	, 	H 	H 	Y 	 	7 	 	Y 	  	<!E& U#H\\(#FHILIyy{HH&1GI$U4L12	6	y(I5;GH)# '!%x!7	I AL IZ1Jk73K{	!M%Xgd^1EF! LIH#HZ%H[HDIIKHI	%ua9a(S!}ua !4  
Lr)#.a
01k +s1   C+M .L4 <L1=L4 H%M 1L4 4L=:M c                  N  K   t        d       t        d       t        d       t        d       t        d       t        j                         4 d {   } 	 t        | d       d {    t	        j
                  d       d {    27 77 $7 	# 1 d {  7  sw Y   y xY ww)Nr}   zBOT STARTED - NO NUMPY VERSIONr~   z(Wait 5-10 minutes for full functionalityr   BTCUSDTrW   )r   aiohttpClientSessionr   asynciosleep)r   s    r)   mainr   $  s     	-	
*+	&M	
45	-$$& # #'GY///--""" #/"# # #sZ   AB%B
B%B'B(BBB
B%BBB"BB"B%__main__)r   i  )r   )r   2   )r   )(rH   r   rr   r   r   r   collectionsr   enginer   
indicatorsr   loggerr   mempoolr   r   r   rG   r   r   r   r   r   r   r   r   r   r*   r2   r=   rC   rR   rg   rz   r   r   r   __name__runr1   r3   r)   <module>r      s             $  4 C S!		
	
.&	#$#*"&s2l
# zGKK r3   