+
    »¦õjïX  ã                   ó|  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	H	t	H
t
 ^ RIHtHtHt ^ RIHtHt Rt]! R4      t]! R4      t]! R4      t^Kt]! R4      t]! R	4      t]! R
4      t]! R4      t]! R4      tRt^ tRt]! R4      t ]! R4      t!Rt"]! R4      t#]PH                  ! R4      t%]PH                  ! R4      t&]PH                  ! R4      t'RRut(t)]R 9   d   ]R!9   g   Q h ! R R4      t*R t+R t, ! R R4      t-R t.]/R8X  d    ]P`                  ! ].! 4       4       R# R#   ]1 d    ]2! R4        R# i ; i)"uE  
ZEC Renko Line Bot â€” PAPER TRADING ONLY.
No API keys, no real orders, public market data only.

THE STRATEGY IN ONE PARAGRAPH
  Chart 2 (1hr, 0.1% boxes, from closed candles) prints a brick; the START of the
  newest brick is the LINE. Chart 1 (live trades, 0.1% boxes) must TOUCH the line
  from the line's side to switch trading ON, and trading stays on while chart 1
  still touches it. Chart 3 (live trades, 0.001% boxes) does every entry and exit:
  a brick that touches the line closes the old trade and opens one in its colour.
  When chart 1 leaves the line the last trade is HELD (final direction), and it
  closes when price returns to touch the newest line. That close books the cycle â€”
  every trade since the last booking, fees included â€” and a profit sends 60% out.

THE THREE THINGS THAT DECIDE THE RESULT
  1. Fills.  FILL="line" assumes the flip happens exactly on the line (best case).
             FILL="market" fills at the last trade price + 1 tick (realistic).
  2. Fees.   One market order = FEE x position = 0.05% x (cash x 75 x 0.95).
             On $1 that is $0.0356, so a round trip is $0.0713 â€” about one full
             0.1% brick (7.5%). Neutral flips on the line are what eat a cycle.
  3. Holding. Money only comes from runs of several bricks between lines.

RUN:  pip install python-binance
      python zec_renko_bot.py
ALERTS: terminal + bell always. Phone push needs either NTFY_TOPIC (ntfy.sh, no
      account and no bot â€” just pick a private topic name) or TELEGRAM_BOT_TOKEN +
      TELEGRAM_CHAT_ID. Set them in the environment, never in this file.
N)ÚdatetimeÚtimezone)ÚDecimalÚ
ROUND_DOWNÚROUND_HALF_UP)ÚAsyncClientÚBinanceSocketManagerÚZECUSDTú0.001z0.00001Ú1Ú60z0.0005z0.95z0.005ÚlineÚtouch3z0.000085Fz0.000012ÚTELEGRAM_BOT_TOKENÚTELEGRAM_CHAT_IDÚ
NTFY_TOPICz
state.jsonz
events.csvc                   ó0   a € ] tR t^Nt o RtR tR tRtV tR# )ÚRenkozOPercentage Renko. feed(price) -> [(open, close, dir), ...] one brick at a time.c                ó<   € Wn         R ;V n        V n        ^ V n        R # ©N)ÚpctÚopenÚcloseÚdir)Úselfr   s   &&ÚkC:\Users\user\.config\freebuff-desktop\local-projects\9daf19eb-6e6c-4684-80c4-a3e7d18712fa\zec_renko_bot.pyÚ__init__ÚRenko.__init__Q   s   € ØŒØ!%Ð%ˆŒ	�D”JØˆŽó    c                ó\  € V P                   f   V;V n        V n         . # . p V P                  V P                   V P                  V P                  3w  r4rVV^ 8¼  d&   WWF,          ,           8¼  d   WDWF,          ,           ^3pM†V^ 8:  d&   WWF,          ,
          8:  d   WDWF,          ,
          R3pMZV^8X  d&   WW6,          ,
          8:  d   W3W6,          ,
          R3pM.VR8X  d&   WW6,          ,           8¼  d   W3W6,          ,           ^3pMV# Vw  V n        V n         V n        VP	                  V4       EK  )Néÿÿÿÿ)r   r   r   r   Úappend)r   ÚpriceÚoutÚoÚcÚdÚkÚnews   &&      r   ÚfeedÚ
Renko.feedV   só   € Ø�:‰:ÒØ%*Ð*ˆDŒI˜œ
ØˆIØˆØØŸ™ D§J¡J°·±¸$¿(¹(ÐB‰JˆA�!Ø�AŒv˜% q¥u¥9Ô,Ø˜a�e�) QÐ'‘Ø�a”˜E¨­¥YÔ.Ø˜a�e�) RÐ(‘Ø�a”˜E¨­¥YÔ.Ø˜a�e�) RÐ(‘Ø�b”˜U¨!­%¥iÔ/Ø˜a�e�) QÐ'‘à�
Ø.1Ñ+ˆDŒI�t”z 4¤8Ø�J‰J�s�Or   )r   r   r   r   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r)   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r   N   s   ø‡ € ÙYò÷
ð r   r   c                  óh   € \         P                  ! \        P                  4      P	                  R 4      # )z%Y-%m-%d %H:%M:%S)r   Únowr   ÚutcÚstrftime© r   r   r5   r5   k   s!   € Ü�<Š<œŸ™Ó%×.Ñ.Ð/BÓCÐCr   c                óL   € V'       d   V R RW,          ^d,          R R2# V R R2# )uL   '+0.0712 USD (+7.12%)' â€” USD first, percent of the capital it was made on.z+.4fú USD (z+.2fú%)ú USDr8   )ÚxÚbases   &&r   Úmoneyr?   o   s/   € ç7;ˆa�ˆX�V˜A�H s�N¨4Ð0°Ð3ÐPÀAÀdÀ8È4ÀÐPr   c                   ó¾   a € ] tR t^tt o RR ltR tR tRR ltR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tRtV tR# )ÚBotNc           	     ó4  € Wn         \        \        4      V n        \        \        4      V n        \        \        4      V n        \        R 4      V n	        \        R4      V n
        \        R4      V n        R;V n        V n        RV n        RV n        RV n        RV n        RV n        RV n        \)        \        ^ 4      \        ^ 4      \        ^ 4      \        ^ 4      ^ RR7      V n        \,        \        ^ 4      RuV n        V n        V n        V P5                  4        R# )z0.01r
   Ú5NF©ÚpnlÚfeesÚfundingÚspreadÚnr>   )Úclientr   Ú
BOX_HOURLYÚr1hÚBOX_GATEÚr1Ú	BOX_TRADEÚr3ÚDÚtickÚqty_stepÚmin_notionalr   ÚsideÚlast1ÚgateÚposÚ
last_priceÚhourÚtrailÚdictÚcycleÚ
START_CASHÚcapitalÚsavingsÚdeadÚload)r   rJ   s   &&r   r   ÚBot.__init__u   sÎ   € ØŒÜœÓ$ˆŒÜœ“/ˆŒÜœ	Ó"ˆŒÜ�f“IˆŒ	Ü˜'›
ˆŒÜ˜c›FˆÔØ $Ð$ˆŒ	�D”IØˆŒ
ØˆŒ	ØˆŒØˆŒØˆŒ	ØˆŒ
Üœa ›d¬¨1«´q¸³tÄAÀaÃDÈAÐTXÔYˆŒ
Ü0:¼A¸a»DÀ%Ð-ˆŒ�d”l D¤IØ�	‰	Žr   c                ó   € \         P                  P                  \        4      '       dU   \        P
                  ! \        \        4      4      p\        VR ,          4      \        VR,          4      uV n        V n	        R# R# )r_   r`   N)
ÚosÚpathÚexistsÚ
STATE_FILEÚjsonrb   r   rQ   r_   r`   )r   Úss   & r   rb   ÚBot.load‰   sM   € Ü�7‰7�>‰>œ*×%Ò%Ü—	’	œ$œzÓ*Ó+ˆAÜ)*¨1¨Y­<«¼!¸A¸i½L»/Ð&ˆDŒL˜$ž,ñ &r   c                ó¤   € \         P                  ! R \        V P                  4      R\        V P                  4      /\        \        R4      4       R# )r_   r`   ÚwN)ri   ÚdumpÚstrr_   r`   r   rh   )r   s   &r   ÚsaveÚBot.saveŽ   s5   € Ü�	Š	�9œc $§,¡,Ó/°¼CÀÇÁÓ<MÐNÜ”z 3Ó'ö	)r   c                ój  € \        \        4        R VR R V 2V'       d   RV 2MR,           RV P                  R RV P                  R 2,           4       V'       d   \        RR RV 24       \        P
                  P                  \        4      '       * p\        \        R	RR
7      ;_uu_ 4       p\        P                  ! V4      pV'       d   VP                  . RO4       VP                  \        4       WW4V P                  R V P                  R .4       RRR4       R#   + '       g   i     R# ; i)ú | z<16z | PnL Ú ú | cash ú.4fz saved Ú19z	   fees: Úa)Únewlineú.6fN)ÚtimeÚeventÚdetailrE   rF   r_   r`   )Úprintr5   r_   r`   re   rf   rg   ÚLOG_FILEr   ÚcsvÚwriterÚwriterow)r   r|   r}   rE   rF   r(   Úfrm   s   &&&&&   r   ÚlogÚBot.log’   sö   € Ü”“��s˜5 ˜+ S¨¨Ð1ß$'�7˜3˜%‘¨Rõ1à˜4Ÿ<™<¨Ð,¨G°D·L±LÀÐ3EÐFõGô 	H÷ Ü�R˜�G˜9 T FÐ+Ô,Ü—'‘'—.‘.¤Ó*Ô*ˆÜ”(˜C¨×,Õ,°Ü—
’
˜1“ˆAßØ—
‘
Ò[Ô\Ø�J‰Jœ›˜u¨cØŸ<™<¨Ð,°$·,±,¸sÐ1CðFô G÷	 -×,×,Ò,ús   Â/A(D!Ä!D2	c                óV  € \          R V RV 2p\        RV 24       \        '       d3   \        P                  ! V P
                  W3RR7      P                  4        \        '       dC   \        '       d5   \        P                  ! V P                  V3RR7      P                  4        R# R# R# )Ú z: z>>> ALERT T)ÚtargetÚargsÚdaemonN)
ÚSYMBOLr~   r   Ú	threadingÚThreadÚ_ntfyÚstartÚTELEGRAM_TOKENÚTELEGRAM_CHATÚ	_telegram)r   ÚtitleÚmsgÚtexts   &&& r   ÚalertÚ	Bot.alert    s~   € Ü�˜˜5˜'  C 5Ð)ˆÜ�˜T˜FÐ#Ô$ß‹:Ü×Ò D§J¡J°e°\È$ÔO×UÑUÔWß‹>Ÿm›mÜ×Ò D§N¡N¸$¸ÈÔN×TÑTÖVñ ,‰>r   c           	     ó  €  \         P                  P                  R \         2VP	                  4       RR\
         RV 2RR/R7      p\         P                  P                  V^
R7       R	#   \         d   p\        RT4        R	p?R	# R	p?ii ; i)
zhttps://ntfy.sh/ÚPOSTÚTitler‡   ÚTagsÚchart_with_upwards_trend)ÚdataÚmethodÚheaders©Útimeoutzntfy failed:N)	ÚurllibÚrequestÚRequestr   Úencoder‹   ÚurlopenÚ	Exceptionr~   )r   r“   r”   ÚreqÚes   &&&  r   rŽ   Ú	Bot._ntfy¨   sƒ   € ð	%Ü—.‘.×(Ñ(Ø"¤: ,Ð/°c·j±j³lÈ6Ø ¤V H¨A¨e¨WÐ"5°vÐ?YÐZð )ó \ˆCô �N‰N×"Ñ" 3°Ð"Ö3øÜô 	%Ü�. !×$Ò$ûð	%ús   ‚A&A* Á*BÁ5BÂBc                ó  €  \         P                  P                  R \        RV/4      P	                  4       p\         P
                  P                  R\         R2V^
R7       R#   \         d   p\        RT4        Rp?R# Rp?ii ; i)Úchat_idr•   zhttps://api.telegram.org/botz/sendMessager    ztelegram failed:N)
r¢   ÚparseÚ	urlencoder‘   r¥   r£   r¦   r�   r§   r~   )r   r•   r�   r©   s   &&  r   r’   ÚBot._telegram±   su   € ð	)Ü—<‘<×)Ñ)¨9´mÀVÈTÐ*RÓS×ZÑZÓ\ˆDÜ�N‰N×"Ñ"Ø.¬~Ð.>¸lÐKÈTÐ[]ð #ö _øäô 	)ÜÐ$ a×(Ò(ûð	)ús   ‚AA# Á#BÁ.B Â Bc                ó   € R # r   r8   )r   Únetr>   Úmoves   &&&&r   Úon_closeÚBot.on_closeº   ó   € Ùr   c                ó   € R # r   r8   )r   ÚtotalrF   rI   r>   s   &&&&&r   Úon_bookÚBot.on_book½   rµ   r   c              ƒ  óÆ  "  € V P                   P                  4       G R j  x€L
 p\        R VR,           4       R 4      pVf   \        \         R24      hVR,           Fx  pVR,          R8X  d   \        VR,          4      V n        K*  VR,          R8X  d   \        VR	,          4      V n        KQ  VR,          R
8X  g   Ka  \        VR,          4      V n        Kz  	  V P                   P                  \        RRR7      G R j  x€L
 p\        \        P                  ! \        P                  4      P                  4       R,          4      pV F>  pV^,          V8  g   K  V P                   P#                  \        V^,          4      4       K@  	  V P                   P$                  '       dG   V P'                  V P                   P(                  4      V P                   P$                  uV n        V n        \        VR#,          ^,          4      pV P/                  RRV P                   RV P                   RV P                   RV RV\0        ,          R RV\2        ,          R RV\2        ,          V P                  ,          R R24       T P/                  RR\4         RV P6                   RV P*                   RV P,                  ^8X  d   R MR! R"\9        \:        4       2
4       R #  EL» ELß5i)$Nc              3   óL   "  € T F  qR ,          \         8X  g   K  Vx € K  	  R# 5i)ÚsymbolN)r‹   )Ú.0rj   s   & r   Ú	<genexpr>ÚBot.seed.<locals>.<genexpr>Ã   s   é € ÐH™˜!°Hµ+ÄÑ2G—A’A›ùs   ‚$š
$Úsymbolsz# not found on Binance USD-M futuresÚfiltersÚ
filterTypeÚPRICE_FILTERÚtickSizeÚLOT_SIZEÚstepSizeÚMIN_NOTIONALÚnotionalÚ1héè  ©r¼   ÚintervalÚlimitÚSETUPztick z | step z | min z USDT | ZEC ~z | 0.1% box z.3fz | 0.001% box rv   ú = z.1fz ticksÚSTARTzpaper | fill=ru   z USDT | line z side ÚupÚdownz | tele r    )rJ   Úfutures_exchange_infoÚnextÚ
SystemExitr‹   rQ   rR   rS   rT   Úfutures_klinesÚintr   r5   r   r6   Ú	timestamprL   r)   r   Úto_tickr   r   rU   r„   rK   rO   ÚFILLr_   Úboolr�   )r   ÚinfoÚsymrƒ   ÚklÚmsr'   Úpxs   &       r   ÚseedÚBot.seedÁ   sI  é € Ø—[‘[×6Ñ6Ó8×8ˆÜÑH˜t IžÓHÈ$ÓOˆØŠ;Ü¤˜xÐ'JÐKÓLÐLØ�Y—�ˆAØ�� .Ô0Ü˜a 
�mÓ,�–	Ø�<• JÔ.Ü ! ! J¥-Ó 0�–Ø�<• NÖ2Ü$% a¨
¥mÓ$4�Ö!ñ  ð —;‘;×-Ñ-´VÀdÐRVÐ-ÓW×WˆÜ”—’œhŸl™lÓ+×5Ñ5Ó7¸$Õ>Ó?ˆÛˆAØ��t�bŽyØ—‘—‘œa  !¥›gÖ&ñ ð �8‰8�<�<ˆ<Ø#'§<¡<°·±·±Ó#>ÀÇÁÇÁÐ ˆDŒI�t”yÜˆr�"�v�a�y‹\ˆØ�‰�˜E $§)¡) ¨H°T·]±]°OÀ7È4×K\ÑK\ÐJ]ð ^"Ø"$  \°"´zµ/À#Ð1Fð G(Ø(*¬Y­°sÐ';¸3¸rÄI½~ÐPT×PYÑPYÕ?YÐZ]Ð>^Ð^dðfô 	gð 	�‰�˜M¬$¨¨x¸¿¹°~ð F"Ø"&§)¡) ¨F¸4¿9¹9È¼>±4ÈvÐ2VÐV^Ô_cÔdrÓ_sÐ^tðvö 	wò- 9ò Xùs8   ‚K! K¡BK!Â?A K!Ã?KÄ AK!ÅA
K!Æ&D6K!ËK!c                ó„   € WP                   ,          P                  \        R 4      \        R7      V P                   ,          # )r   ©Úrounding)rR   ÚquantizerQ   r   )r   r=   s   &&r   rÙ   ÚBot.to_tickÛ   s+   € Ø—I‘I•×'Ñ'¬¨#«¼Ð'ÓGÈ$Ï)É)ÕSÐSr   c                óš  € W!V,          ,           pV P                   \        ,          \        \        \        4      4      ,          V,          V P
                  ,          P                  \        R 7      V P
                  ,          pWe,          pWpP                  8  d.   V P                  RRVR RV P                   R24       RV n
        R# V\        ,          p\        '       d   \        ^ 4      MV\        ,          ^,          p	V ;P                   W‰,           ,          un         V P                  R;;,          V	,          uu&   V P                  R	;;,          V	,          uu&   V P                  R
,          f!   V P                   V,           V P                  R
&   V P                  R
,          p
\        WWhV
WA) RVR7	      V n        V^8X  d   RMRpV P                  RV 2RV RV RVR RV P"                   2RVR RWŠ,          ^d,          R R2R7       V P%                  V R2RV RVR RVR RWŠ,          ^d,          R R2	4       V P'                  4        R# )rä   ÚSTOPz	notional ú.2fz < minimum z USDTTNrE   rH   r>   F)	r   ÚentryÚqtyÚfeer>   ÚarmedrU   ÚcarriedÚrawÚLONGÚSHORTzOPEN z@ rs   z ZEC | z USD | line zentry rv   r:   ú% of capital))rF   z openedz USD notional | fee r;   )r_   Ú
MARGIN_USErQ   ro   ÚLEVERAGErS   Úto_integral_valuer   rT   r„   ra   Ú	TAKER_FEEÚMAKERÚSPREADr]   r\   rX   r   r–   rp   )r   r&   rð   ÚslipÚon_linerà   rì   rÈ   rí   Úcrossr>   Únames   &&&&&       r   r   ÚBot.openß   sü  € Ø�t•8�^ˆØ�|‰|œjÕ(¬1¬S´«]Ó+;Õ;¸bÕ@À4Ç=Á=ÕPß"Ñ"¬JÐ"Ó7¸$¿-¹-õHˆà•8ˆØ×'Ñ'Ô'Ø�H‰H�V˜y¨°#¨°kÀ$×BSÑBSÐATÐTYÐZÔ[ØˆDŒIÙØœÕ"ˆß›”�!” 8¬fÕ#4°qÕ#8ˆØ�Š˜�Õ#�Ø�
‰
�5×˜UÕ"ÓØ�
‰
�8× Õ%ÓØ�:‰:�fÕÒ%Ø!%§¡°Õ!3ˆD�J‰J�vÑØ�z‰z˜&Õ!ˆÜ˜A¨SÀØ%¨B¸À3ôHˆŒà˜aœ‰v WˆØ�‰�5˜˜� 2 b T¨¨S¨E°¸À#¸ÀlÐSW×S\ÑS\ÐR]Ð!^Ø˜s 3˜i v¨c­j¸3Õ.>¸sÐ-CÀ=ÐQð 	ô 	Sà�
‰
�d�V˜7Ð# r¨"¨¨S°¸#°ð ?,Ø,/°¨9°F¸3½:ÈÕ;KÈCÐ:PÐPRð&Tô 	Uà�	‰	Žr   c                óf  € V P                   pWR ,          V,          ,
          pVR ,          WTR,          ,
          ,          VR,          ,          pWTR,          ,          \        ,          p\        '       d   \        ^ 4      M WTR,          ,          \        ,          ^,          pWdR,          ,
          V,
          V,
          p	V ;P
                  Wg,
          V,
          ,          un        V P                  R;;,          V,          uu&   V P                  R;;,          V	,          uu&   V P                  R;;,          VR,          V,           ,          uu&   V P                  R;;,          ^,          uu&   VR ,          WR,          ,
          ,          p
\        V
4      V P                  ^,          8:  d   R	M
V
^ 8”  d   R
MRpVR ,          ^8X  d   RMRpVR,          pRV n         V P                  VRV RVR,           RV RV 2\        W�4      RVR,          R RVR RVR,          V,           R RVR,          V,           V,          ^d,          R R2	R7       V P                  V R\        W�4       2V RVR,           RV RVR,          V,           R R24       V P                  W�V
4       V P                  4        R# )r   rë   rì   rí   rH   rE   rF   rI   rð   z3rd chart neutralz3rd chart winz3rd chart lossrñ   rò   r>   NzCLOSE r‡   z -> rs   zopen rv   z	 + close rÏ   r:   rê   ró   ©rE   rF   u    Â· PnL z | fees r<   )rX   r÷   rø   rQ   rù   r_   r]   ÚabsrR   r„   r?   r–   r³   rp   )r   rð   rú   ÚreasonÚprà   ÚgrossÚfee_cÚcross_cr±   r²   Úlabelrý   r>   s   &&&&          r   r   Ú	Bot.closeù   s6  € Ø�H‰HˆØ�U•8˜d•?Õ"ˆØ�%•˜B 7¥�OÕ,¨q°­xÕ7ˆØ�u•X•¤	Õ)ˆß›%”!�A”$ R¨E­(¥]´VÕ%;¸aÕ%?ˆØ˜•hÕ Õ&¨Õ0ˆØ�Š˜�¨Õ/Õ/�Ø�
‰
�8× Õ'ÓØ�
‰
�5×˜SÕ ÓØ�
‰
�6×˜a �h¨Õ.Õ.ÓØ�
‰
�3�˜1Õ‹Ø��x˜3 5¥�>Õ*ˆÜ(+¨D«	°T·Y±YÀµ]Ô(BÑ$Ø)-°¬‘oÐ7Gð 	à˜5� Qœ‰v¨GˆØ��yˆØˆŒØ�‰�˜&   a¨¨'­
 |°4¸°t¸3¸v¸hÐGÜ˜3Ó%Ø˜a �h s˜^¨9°U¸3°K¸sØ˜5� EÕ)¨#Ð.¨f°a¸µhÀÕ6FÈ$Õ5NÐQTÕ5TÐUXÐ4YÐYfðhð 	ô 	ið 	�
‰
�e�W˜H¤U¨3Ó%5Ð$6Ð7Ø�V˜1˜Q˜w�Z˜L¨¨R¨D°¸!¸E½(ÀUÕ:JÈCÐ8PÐPTÐUô	Wà�‰�c Ô&Ø�	‰	Žr   c                óÔ  € \        V P                  ;'       d    V P                  R ,          4      pV'       d   V P                  MV P                  pV'       d   \        R8X  d   \        ^ 4      MV P                  pV P                  '       d   T P                  YEV'       d   RMR4       V'       d   V P                  R4       V P                  '       g   V P                  WWR4       R# R# )rï   r   ztouched the linezprinted back without touchingúheld trade closed at the lineN)rÛ   rX   r   rY   rÚ   rQ   rR   r   Úbookra   r   )r   r&   Útouchedrï   rð   rú   s   &&&   r   ÚflipÚBot.flip  s’   € Ü�t—x‘x×7Ð7 D§H¡H¨YÕ$7Ó8ˆß"ˆd�iŠi¨¯©ˆß¤D¨F¤NŒq�Œt¸¿¹ˆØ�8�8ˆ8Ø�J‰J�s¿Ñ"4ÐEdÔeßØ�I‰IÐ5Ô6Ø�y�yˆyØ�I‰I�a˜dÖ,ñ r   c                ó@  € V P                   pVR ,          VR,          VR,          VR,          ;'       g    V P                  3w  r4rVV^ 8”  Eda   V\        ,          ^d,          pV P                  \        \        \        \        4      4      ,          ,          pV P                  V,
          V8  d'   \        \        ^ 4      V P                  V,
          4      pV ;P                  V,          un        V ;P                  V,          un	        V P                  RV RV RW7,
          R RVR R	2\        W64      VR R
VP                  R\        ^ 4      4      R RWBP                  R\        ^ 4      4      ,           R RV R2R7       V P                  R\        W64       2RVR R\         RVR R	24       M”V P                  RV\        W64      VR R
VP                  R\        ^ 4      4      R RWBP                  R\        ^ 4      4      ,           R RV R2R7       T P                  RV^ 8X  d   RMR R\        W64       2RVR R	24       V P                  W4WV4       \        \        ^ 4      \        ^ 4      \        ^ 4      \        ^ 4      ^ RR7      V n         V P!                  4        R# )rE   rF   rI   r>   z2nd chart profitrs   z trades | keep rv   z | MOVE TO WALLET r<   z fees + rG   z funding = z
 USD over z tradesr   zCYCLE PROFIT zmove r:   z%) to your wallet | fees z2nd chart loss/flatzCYCLE ÚFLATÚLOSSr‡   znothing to send out | fees NrD   )r]   r_   ÚSAVINGS_PCTrT   rô   rQ   ro   rõ   Úmaxr`   r„   r?   Úgetr–   r¸   r\   rp   )	r   r  r%   r·   rF   rI   r>   r#   Úfloors	   &&       r   r  ÚBot.book  sf  € Ø�J‰JˆØ  �x¨¨6­°A°cµF¸A¸f½I×<UÐ<UÈÏÉÐUÑˆ�QØ�1�9Øœ+Õ%¨Õ+ˆCà×%Ñ%¬´a¼¼H»Ó6FÕ)FÕGˆEØ�|‰|˜cÕ! EÔ)Üœ!˜A›$ §¡¨uÕ 4Ó5�Ø�LŠL˜CÕ�LØ�LŠL˜CÕ�LØ�H‰HÐ'Ø�x˜s 1 # _°Uµ[ÀÐ4Eð F'Ø'*¨3 i¨tð5ä˜uÓ+Ø! #˜J h¨q¯u©u°YÄÀ!ÃÓ/EÀcÐ.JÈ+Ø!§E¡E¨)´Q°q³TÓ$:Õ:¸3Ð?¸zÈ!ÈÈGðUð	 ô Vð �J‰J˜¤u¨UÓ'9Ð&:Ð;Ø˜s 3˜i v¬k¨]Ð:SÐTXÐY\ÐS]Ð]aÐbõdð �H‰HÐ*¨FÜ˜uÓ+Ø! #˜J h¨q¯u©u°YÄÀ!ÃÓ/EÀcÐ.JÈ+Ø!§E¡E¨)´Q°q³TÓ$:Õ:¸3Ð?¸zÈ!ÈÈGðUð ô Vð �J‰J˜¨%°1¬*¡¸&ÐAÀÄ5ÈÓCUÐBVÐWØ4°T¸#°J¸dÐCôEà�‰�U !Ô*Üœa ›d¬¨1«´q¸³tÄAÀaÃDÈAÐTXÔYˆŒ
Ø�	‰	Žr   c                óx  € V P                   '       d   \        ^ 8:  d   R# V P                   R,          V,          pV\        ,          pV ;P                  V,          un        V P                  R;;,          V,          uu&   V P                  R;;,          V,          uu&   V P	                  RVR RVR R	V 24       R# )
uM   One hour of funding on whatever is open right now â€” nothing if we are flat.Nrì   rE   rG   ÚFUNDINGrz   z USD on rê   z USD open at )rX   ÚFUNDING_PER_HOURr_   r]   r„   )r   r"   rÈ   rí   s   &&  r   Úaccrue_fundingÚBot.accrue_funding=  sŒ   € à�x�xˆxÔ+¨qÔ0ÙØ—8‘8˜E•? UÕ*ˆØÔ)Õ)ˆØ�Š˜Õ�Ø�
‰
�5×˜SÕ ÓØ�
‰
�9× Õ$ÓØ�‰�˜s 3˜i x°¸¨~¸]È5È'ÐRÖSr   c           	     óê  € V P                   pVR ,          VR,          V,
          ,          VR,          ,          \        ^4      \        \        \        4      4      ,          \        ,
          8¼  d…   V P                  RRV RVR,           2\        V P                  ) VR,          4      R7       V P                  RRV R24       \        ^ 4      R	R
uV n        V n         V n	        V P                  4        R
# R# )r   rë   Ú
LIQUIDATEDzprice z
 vs entry r>   )rE   zat z. Capital gone.NTF)rX   rQ   ro   rõ   ÚMAINTr„   r?   r_   r–   ra   rp   )r   r"   r  s   && r   Ú
liquidatedÚBot.liquidatedH  sÁ   € Ø�H‰HˆØˆU�8�q˜•z EÕ)Õ*¨Q¨w­ZÕ7¼1¸Q»4Ä!ÄCÌÃMÓBRÕ;RÔUZÕ;ZÔZØ�H‰H�\ V¨E¨7°*¸Q¸w½Z¸LÐ#IÌuÐVZ×VbÑVbÐUbÐdeÐflÕdmÓOnˆHÔoØ�J‰J�| s¨5¨'°Ð%AÔBÜ01°!³°d¸DÐ-ˆDŒL˜$œ( D¤IØ�I‰IŒKÙÙr   c                óØ   € V P                  V4      VuV n        V n        T P                  R V P                   RV^8X  d   RMR R24       V P	                  4        V P                  4        R# )zNEW LINEz | price must be ÚaboveÚbelowz itN)rÙ   r   rU   r„   Ú_update_trailÚ
check_gate)r   r   rU   s   &&&r   Úset_lineÚBot.set_lineS  s\   € Ø#Ÿ|™|¨DÓ1°4ÐˆŒ	�4”9Ø�‰� §	¡	˜{Ð*;ÀtÈqÄy¹GÐV]Ð;^Ð^aÐbÔcØ×ÑÔØ�‰Ör   c                óê  € V P                   '       d   V P                   R,          '       g   R# \        ^ 8:  d
   RV n        R# V P                  V P                   R,          V P                  ,          \        ,          \        ,          ,
          pV P                  f	   Wn        R# V P                   R,          ^8X  d   \        V P                  V4      V n        R# \        V P                  V4      V n        R# )zDThe exit ratchets with the run: TRAIL_BRICKS behind the newest line.rï   Nr   )rX   ÚTRAIL_BRICKSr[   r   rK   r  Úmin)r   Úcands   & r   r$  ÚBot._update_trailY  sš   € à——�˜TŸX™X i×0Ô0ÙÜ˜1ÔØˆDŒJÙØ�y‰y˜4Ÿ8™8 E�?¨T¯Y©YÕ6¼ÕCÄlÕRÕRˆØ�:‰:ÒØŽJØ�X‰X�e�_ Ô!Ü˜TŸZ™Z¨Ó.ˆDŽJä˜TŸZ™Z¨Ó.ˆDŽJr   c                ó   € V P                   f   R # V P                   p\        R8X  d\   V P                  pVf   R # T P                  \	        W!,
          4      V\
        ,          8*  V P                  ^8X  d   W!8¬  MW!8*  R4       R # \        R8X  dq   V P                  f   R # V P                  w  r4T P                  \        W44      Tu;8*  ;'       d    \        W44      8*  Mu V P                  ^8X  d   WA8¬  MWA8*  R4       R # R # )NÚbandr"   Úchart1zchart 1)
r   Ú	GATE_MODErY   Ú_gater  Ú	GATE_BANDrU   rV   r*  r  )r   ÚLrà   r$   r%   s   &    r   r%  ÚBot.check_gateh  sÂ   € Ø�9‰9ÒÙØ�I‰IˆÜ˜ÔØ—‘ˆBØŠzÙØ�J‰J”s˜2�6“{ a¬)¥mÑ3Ø$(§I¡I°¤N˜š¸¹À7öLä˜(Ô"Ø�z‰zÒ!ÙØ—:‘:‰DˆAØ�J‰J”s˜1“y A×2Ô2¬¨Q«Ô2Ø#'§9¡9°¤>˜š¸¹ÀöLñ	 #r   c                ó„  € V P                   '       d¼   V'       g´   RV n         RV n        V P                  '       d’   RRuV P                  R&   V P                  R&   V P                  R,          ^8X  d   RMRpV P                  R	R
V RV P                  R,           R24       V P	                  V R2RV P                  R,           R24       R# R# V P                   '       ga   V'       dW   V'       dM   RV n         V P                  RV RV P
                   R24       V P	                  RV RV P
                   24       R# R# R# R# )zMinside = something is touching the line, ahead = price is on the line's side.FNTrï   rî   r   rñ   rò   ÚHOLDzfinal direction z @ rë   z" | held until price touches a linez HELDzfinal direction from u%    â€” closes when price touches a linezGATE ONz	 at line z: chart 3 tradesz
TRADING ONz touched the line at )rW   r[   rX   r„   r–   r   )r   ÚinsideÚaheadÚwhorý   s   &&&& r   r1  Ú	Bot._gatey  s   € à�9�9ˆ9ŸVØˆDŒIØˆDŒJØ�x�xˆxØ9=¸uÐ6�—‘˜Ñ# T§X¡X¨gÑ%6Ø!%§¡¨%¥°AÔ!5‘v¸7�Ø—‘˜Ð#3°D°6¸¸T¿X¹XÀgÕ=NÐ<Oð PCð "Dô Eà—
‘
˜d˜V 5˜>Ð-BÀ4Ç8Á8ÈGÕCTÐBUð VNð ,Oö Pñ ð ——�Ÿv¯%ØˆDŒIØ�H‰H�Y 3 % y°·±°Ð;KÐ LÔMØ�J‰J�|¨ uÐ,AÀ$Ç)Á)ÀÐ%MÖNñ +0™v‘r   c                ó6   € W3V n         V P                  4        R # r   )rV   r%  )r   r$   r%   s   &&&r   Ú	on_chart1ÚBot.on_chart1Š  s   € Ø�VˆŒ
Ø�‰Ör   c                óÈ  € V P                   e   V P                  '       d   R # V P                   V P                  rT\        W4      \	        W4      rvYdu;8*  ;'       d    V8*  Mu pV'       d�   VR,          '       dŽ   V P
                  e   V P
                  MTp	Yiu;8:  d   V8:  db   M R # \        R8X  d   T	MV P                  p
T P                  T
\        R8X  d   \        ^ 4      MV P                  R4       V P                  R4       R # \        R8X  d*   T P                  Y€P                  ^8X  d   W$8¬  MW$8*  R4       V P                  '       g   R # V'       d6   Ve   VR,          V8w  d   V P!                  VRR7       R # RV) uVR	&   VR
&   R # V'       dN   VR	,          '       d=   W5R,          8w  d.   Wd8”  d   ^MRVR
,          8X  d   V P!                  VRR7       R # R # R # R # R # )Nrï   r   r
  r   zchart 3r   T)r  rî   rU   Fr    )r   ra   rX   r*  r  r[   rÚ   rY   r   rQ   rR   r  r0  r1  rU   rW   r  )r   r$   r%   r&   r3  r  ÚloÚhiÚtouchesÚLxrð   s   &&&&       r   Ú	on_chart3ÚBot.on_chart3Ž  s`  € Ø�9‰9Ò §	§	 	ÙØ�y‰y˜$Ÿ(™(ˆ1Ü�Q“œC ›IˆBØ—-”-˜R”-ˆß��9—”Ø#Ÿz™zÒ5�—’¸1ˆBØŽ~˜2Ž~ñ
 ô	 ! FœN‘b°·±�Ø—
‘
˜3¬°¬¤ !¤¸D¿I¹IØ:ô<à—	‘	Ð9Ô:ÙÜ˜Ô Ø�J‰J�w¯I©I¸¬N ¢ÀÁÈ)ÔTØ�y�yˆyÙßØŠy˜A˜e�H¨œMØ—	‘	˜! T�	Ö*à(,¨q¨bÐ%��'‘
˜A˜f›Iß�1�W—:”: !¨¥x¤-¸2¼6±aÀrÈaÐPVÍiÔ5WØ�I‰I�a ˆIÖ'ñ 6X¡-‘:‰Qr   c              ƒ  óþ  "  € V P                   P                  \        R ^R7      G Rj  x€L
 p\        \        P
                  ! \        P                  4      P                  4       R,          4      pV Uu. uF  q3^,          V8  g   K  VNK  	  ppV'       g   R# V P                  P                  \        VR,          ^,          4      4      pV F#  pV P                  V^ ,          V^,          4       K%  	  R#  LÍu upi 5i)rÉ   rË   NrÊ   r    )rJ   rÖ   r‹   r×   r   r5   r   r6   rØ   rL   r)   rQ   r&  )r   rÞ   rß   r'   ÚclosedÚbricksÚbs   &      r   Únew_hourÚBot.new_hour©  sµ   é € Ø—;‘;×-Ñ-´VÀdÐRSÐ-ÓT×TˆÜ”—’œhŸl™lÓ+×5Ñ5Ó7¸$Õ>Ó?ˆÙÓ-™R˜ Q¥4¨"¡9—!�!™RˆÐ-ßÙØ—‘—‘œq ¨¥¨A¥Ó/Ó0ˆÛˆAØ�M‰M˜!˜A�$  !¥Ö%ó ñ Uùâ-ùs)   ‚&C=¨C6©A
C=Á3C8ÂC8ÂA*C=Ã8C=c              ƒ  ó  "  € Wn         V P                  '       d   V P                  V4      '       d   R # VR,          pV P                  f   W0n        M?W0P                  8w  d0   W0n        V P	                  V4       V P                  4       G R j  x€L
  V P                  P                  V4       F  w  rEpV P                  WE4       K  	  V P                  P                  V4       F  w  rEpV P                  WEV4       K  	  R #  Ls5i)Ni€î6 )rY   rX   r  rZ   r  rI  rN   r)   r<  rP   rC  )r   r"   ÚtsrZ   r$   r%   Ú_r&   s   &&&     r   Úon_tradeÚBot.on_trade³  s½   é € ØŒØ�8�8ˆ8˜Ÿ™¨×.Ò.ÙØ�Y�ˆØ�9‰9ÒØ�IØ—Y‘YÔØŒIØ×Ñ Ô&Ø—-‘-“/×!Ð!Ø—w‘w—|‘| EÖ*‰GˆA�!Ø�N‰N˜1Ö ñ +à—w‘w—|‘| EÖ*‰GˆA�!Ø�N‰N˜1 Ö#ó +ñ "ùs   ‚/D²ADÂD ÂA4D)r_   rJ   r]   ra   rW   rZ   rV   rY   r   rT   rX   rS   rN   rL   rP   r`   rU   rR   r[   r   )rt   rt   rt   )r+   r,   r-   r.   r   rb   rp   r„   r–   rŽ   r’   r³   r¸   rá   rÙ   r   r   r  r  r  r  r&  r$  r%  r1  r<  rC  rI  rN  r0   r1   r2   s   @r   rA   rA   t   s�   ø‡ € ôò(Jò
)ôGòWò%ò)òòòwò4Tòò4ò6	-òò<	Tòòò/òLò"Oò"ò(ò6&÷$ð $r   rA   c               ƒ   óÒ  "  € \         P                  ! 4       G R j  x€L
 p \        V 4      pVP                  4       G R j  x€L
  \	        V 4      pVP                  \        4      ;_uu_4       GR j  x€L
 p VP                  4       G R j  x€L
 pVP                  \        VR,          4      VR,          4      G R j  x€L
  KL   L¤ Lƒ LT L= L  + GR j  x€L 
 '       g   i     R # ; i5i)Nr  ÚT)
r   ÚcreaterA   rá   r   Úaggtrade_socketr‹   ÚrecvrN  rQ   )rJ   ÚbotÚsmÚstreamÚms        r   ÚmainrY  Ä  sž   é € Ü×%Ò%Ó'×'€FÜ
ˆf‹+€CØ
�(‰(‹*×ÐÜ	˜fÓ	%€BØ×!Ñ!¤&×)×)Ô)¨VØØ—k‘k“m×#ˆAØ—,‘,œq  3¥›y¨!¨C­&Ó1×1Ò1ñ (áá)á#Ù1÷ *×)×)Ñ)üs   ‚C'›C œ"C'¾C¿0C'Á/CÁ0C'Á3C
ÂCÂ	0C
Â9CÂ:C
Ã C'ÃC'ÃC'ÃC
ÃC
Ã
C$	ÃCÃ
C$	ÃC$	Ã	C'Ú__main__z
stopped)r   Úmarket)r   r/  r.  )3r/   Úasyncior€   ri   re   rŒ   Úurllib.parser¢   Úurllib.requestr   r   Údecimalr   rQ   r   r   Úbinancer   r   r‹   rK   rM   rO   rõ   r^   r  r÷   rô   r  rÚ   r)  r0  r2  rù   rø   r  Úgetenvr�   r‘   r   rh   r   r   r5   r?   rA   rY  r+   ÚrunÚKeyboardInterruptr~   r8   r   r   Ú<module>rd     so  ðñó8 Û 
Û Û 	Û Û Û ß 'ß ;Ñ ;ç 5ð €Ù�‹j€
Ù�‹j€Ù�	‹l€	Ø€Ù�‹f€
Ù�‹g€Ù�‹k€	Ù�‹i€
Ù�‹j€Ø€Ø€ð €	ñ �‹j€	Ù�
‹m€ð €ñ �Z“=Ð ð —’Ð/Ó0€Ø—’Ð-Ó.€Ø—’˜<Ó(€
Ø# \Ð €
ˆHð Ð!Ô! iÐ3OÔ&OÐ OÐO÷ñ ò:DòQ÷
M$ñ M$ò`
2ð ˆzÔðØ�Š‘D“FÖñ øð ô Ùˆk×ðús   ÄD( Ä(D;Ä:D;