{"id":484590,"date":"2026-06-22T14:25:59","date_gmt":"2026-06-22T14:25:59","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=484590"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=484590","title":{"rendered":"AI \u2014 \u0410\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442 \u0434\u043b\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0438 \u0441 \u043a\u0440\u0438\u043f\u0442\u043e-\u0431\u0438\u0440\u0436\u0430\u043c\u0438"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><strong>\u041a\u0440\u0438\u043f\u0442\u043e-\u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442<\/strong> \u2014 \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u043e\u0434 \u0431\u0438\u0440\u0436\u0438 (spot + USDT-perpetual, \u0442\u043e \u0435\u0441\u0442\u044c \u0438 \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u044f, \u0438 \u0431\u0435\u0441\u0441\u0440\u043e\u0447\u043d\u044b\u0435 \u0444\u044c\u044e\u0447\u0435\u0440\u0441\u044b).<\/p>\n<p>\u041c\u043e\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0439\u00a0\u00a0\u043f\u0440\u043e\u0435\u043a\u0442, \u043d\u0430\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u0447\u0435\u043d\u044c \u0434\u043e\u043b\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b, \u2014 7 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0442\u0440\u0443\u0434\u043e\u0432. \u0421\u0442\u0430\u0442\u044c\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u0438 \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u043c\u043e\u044f \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0425\u0430\u0431\u0440\u0435. \u0418\u0442\u0430\u043a, \u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a \u0441\u0443\u0442\u0438.<\/p>\n<p>\u041d\u0435\u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u0431\u043e\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0430\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0438 \u043d\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043c\u043d\u0435 \u0425\u0425\u0425\u0425 \u2014 \u0434\u043e\u0445\u043e\u0434\u00a0\u043a\u043b\u0435\u043f\u0430\u0442\u044c, \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0442, \u043e\u043d \u043c\u043e\u0439 \u0441\u043e\u0432\u0435\u0442\u043d\u0438\u043a. \u041e\u043d \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0440\u044b\u043d\u043e\u0447\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b, \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0435\u0442 \u0438\u0445 \u0447\u0435\u0440\u0435\u0437 ML-\u043c\u043e\u0434\u0435\u043b\u044c (\u0442.\u0435. \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0446\u0435\u043d\u044b), \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043a\u0443\u0447\u0435\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0438 \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0435\u0442 \u0432 Telegram \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0432\u0438\u0434\u0430:<\/p>\n<blockquote>\n<p>\u00abBTCUSDT 15m LONG @ 64321, SL=\u2026, TP=\u2026, score=\u2026\u00bb<\/p>\n<\/blockquote>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0432 <strong>Telegram<\/strong>:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/a0\/d1\/f6\/a0d1f6255a0eed44a00475cefd75882c.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/a0\/d1\/f6\/a0d1f6255a0eed44a00475cefd75882c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/a0\/d1\/f6\/a0d1f6255a0eed44a00475cefd75882c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0410 \u0432\u043e\u0442 <strong>\u043e\u0431\u0449\u0430\u044f \u0431\u043b\u043e\u043a-\u0441\u0445\u0435\u043c\u0430, \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u0430\u044f<\/strong>, \u0434\u043b\u044f \u0442\u0440\u0435\u0439\u0434\u0435\u0440\u043e\u0432 \u0438 \u043d\u0435\u043f\u0440\u043e\u0444\u0438\u043b\u044c\u043d\u044b\u0445 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439. \u0427\u0442\u043e\u0431\u044b \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043e \u0447\u0451\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u0440\u0435\u0447\u044c, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0430\u0447\u043d\u0443 \u043f\u043e\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0432\u0430\u0441 \u0432 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0435\u0442\u0430\u043b\u0438:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/2a\/e5\/ae\/2ae5ae9d201bb02e033bdcfc8441e472.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/2a\/e5\/ae\/2ae5ae9d201bb02e033bdcfc8441e472.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/2a\/e5\/ae\/2ae5ae9d201bb02e033bdcfc8441e472.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><strong>\u0424\u0438\u0447\u0438 \u2014 \u044d\u0442\u043e \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0442\u043e\u044f\u0442 \u0441\u0442\u043e\u043b\u0431\u044b \u043c\u043e\u0435\u0433\u043e \u0442\u0432\u043e\u0440\u0435\u043d\u0438\u044f.<\/strong> \u0414\u043e\u043b\u0433\u043e \u043f\u0440\u043e\u0432\u043e\u0437\u0438\u043b\u0441\u044f \u043d\u0430\u0434 \u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0437\u0430 \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u044d\u0442\u0438\u0445 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439. \u0412\u043e\u0442 \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440:<\/p>\n<ul>\n<li>\n<p>EMA 9\/20\/50\/200, SMA 20 &#8212; \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0438\u0435 \u0441\u0440\u0435\u0434\u043d\u0438\u0435 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0435\u0440\u0438\u043e\u0434\u043e\u043c. \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442, \u043a\u0443\u0434\u0430 \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u0446\u0435\u043d\u0430 \u00ab\u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u043c\u00bb \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u0445.<\/p>\n<\/li>\n<li>\n<p>MACD (12, 26, 9), \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u2014 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f\/\u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0438\u0445, \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043b\u043e\u0432\u0438\u0442\u044c \u0441\u043c\u0435\u043d\u0443 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430.<\/p>\n<\/li>\n<li>\n<p>Bollinger (20, 2), \u0448\u0438\u0440\u0438\u043d\u0430 \u043a\u0430\u043d\u0430\u043b\u0430-\u0433\u0440\u0430\u043d\u0438\u0446\u044b \u00ab\u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e\u00bb \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0446\u0435\u043d\u044b \u0438 \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043d\u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u0441\u0436\u0430\u0442\u044b.<\/p>\n<\/li>\n<li>\n<p>ATR + ATR% \u043a \u0446\u0435\u043d\u0435\u2014 \u0441\u0440\u0435\u0434\u043d\u0438\u0439 \u0438\u0441\u0442\u0438\u043d\u043d\u044b\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d, \u043f\u043e \u0441\u0443\u0442\u0438 \u00ab\u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u0435\u0447\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0435\u00bb. \u0414\u0430\u043b\u044c\u0448\u0435 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0435\u0433\u043e \u043a\u0430\u043a \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0435\u0440\u0443 \u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<\/li>\n<li>\n<p>RSI, ADX, OBV -\u0438\u043d\u0434\u0435\u043a\u0441 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u043b\u044b, \u0441\u0438\u043b\u0430 \u0442\u0440\u0435\u043d\u0434\u0430 \u0438 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0451\u043c \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p>z-score \u043f\u043e close \u0438 volume-\u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435 \u0446\u0435\u043d\u044b \u0438 \u043e\u0431\u044a\u0451\u043c\u0430 \u043e\u0442 \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0435\u0433\u043e \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u0432 \u00ab\u0441\u0438\u0433\u043c\u0430\u0445\u00bb. \u041f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u00ab\u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f\u00bb.<\/p>\n<\/li>\n<li>\n<p>trend_score \u2208 [-1; 1] \u043c\u043e\u0439 \u0441\u0432\u043e\u0434\u043d\u044b\u0439 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0442\u0440\u0435\u043d\u0434\u0430, \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b EMA \u0438 \u043d\u0430\u043a\u043b\u043e\u043d\u0430 EMA50. \u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u00ab\u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e \u0438\u0434\u0451\u0442 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435\u00bb. <em>\u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043c\u0435\u0442\u043e\u0434 \u00ab\u0442\u0440\u043e\u0439\u043d\u043e\u0433\u043e \u0431\u0430\u0440\u044c\u0435\u0440\u0430\u00bb \u0438\u0437 \u043a\u043d\u0438\u0433\u0438 Advances in Financial Machine Learning (2018)<\/em>* \u0410\u0432\u0442\u043e\u0440: Marcos L\u00f3pez de Prado, \u0435\u0441\u043b\u0438 \u043a\u043e\u043c\u0443-\u0442\u043e \u043d\u0443\u0436\u043d\u0430 \u044d\u0442\u0430 \u043a\u043d\u0438\u0436\u043a\u0430, \u044f \u043f\u043e\u0434\u0435\u043b\u044e\u0441\u044c. \u0418\u0434\u0435\u044f \u0431\u044b\u043b\u0430 \u0442\u0430\u043a\u0430\u044f: \u041a\u0430\u0436\u0434\u043e\u0439 \u0441\u0432\u0435\u0447\u0435 \u043c\u044b \u0437\u0430\u0434\u0430\u0451\u043c \u0432\u043e\u043f\u0440\u043e\u0441: \u00ab\u0441\u043b\u044b\u0448\u044c, \u043c\u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0441\u0434\u0435\u043b\u043a\u0443 \u0441\u0435\u0439\u0447\u0430\u0441 \u0438\u043b\u0438 \u043f\u043e\u0434\u043e\u0436\u0434\u0430\u0442\u044c, \u043f\u043e\u043a\u0430 \u0446\u0435\u043d\u0430 \u043d\u0435 \u0440\u0443\u0445\u043d\u0435\u0442, \u0438\u043b\u0438 \u0432\u043e\u0439\u0442\u0438 \u0432 \u0441\u0434\u0435\u043b\u043a\u0443 \u0438 \u043e\u043d\u0430 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0435\u0442 \u0442\u0435\u0439\u043a-\u043f\u0440\u043e\u0444\u0438\u0442\u0430\u00bb. \u0410 \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0434\u0435\u043b\u044c\u043a\u0430-\u043c\u0443\u0434\u043c\u0430\u0437\u0435\u043b\u044c\u043a\u0430 \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u043e\u0442\u0432\u0435\u0442 \u0434\u0430\u0451\u0442: \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043c\u0435\u0442\u043a\u043e\u0439 \u00aby\u00bb, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0442\u043e\u043c \u0443\u0447\u0438\u0442\u0441\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 (\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f). \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>def trend_score_from_emas(df: pl.DataFrame) -&gt; pl.DataFrame: # 1) \u0424\u043b\u0430\u0433\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 EMA: +1 \/ -1 \/ 0 df = df.with_columns([ pl.when((pl.col(\u201cema_20\u201d) &gt; pl.col(\u201cema_50\u201d)) &amp; (pl.col(\u201cema_50\u201d) &gt; pl.col(\u201cema_200\u201d))).then(1.0) .when((pl.col(\u201cema_20\u201d) &lt; pl.col(\u201cema_50\u201d)) &amp; (pl.col(\u201cema_50\u201d) &lt; pl.col(\u201cema_200\u201d))).then(-1.0) .otherwise(0.0).alias(\u201cema_stack\u201d) ])<\/p>\n<pre><code># 2) \u041d\u0430\u043a\u043b\u043e\u043d EMA50 \u0437\u0430 3 \u0431\u0430\u0440\u0430. # \u0414\u0435\u043b\u044e \u043d\u0430 \u0441\u0430\u043c\u0443 EMA50, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0446\u0435\u043d\u044b, \u0430 \u043d\u0435 \u0432 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u0435.# \u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u043d\u043e\u043b\u044c \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430, \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u044e \u043a\u0430\u043a \u0441\u043f\u043e\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b \u043c\u043d\u0435 \u043d\u0443\u043b\u0438, \u044f \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442slope_raw = (pl.col(\"ema_50\") - pl.col(\"ema_50\").shift(3))denom = pl.when(pl.col(\"ema_50\").shift(3).abs() &lt; 1e-12)\\          .then(1e-12)\\          .otherwise(pl.col(\"ema_50\").shift(3))df = df.with_columns([(slope_raw \/ denom).alias(\"ema50_slope3\")])# 3) \u0417\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043d\u0430\u043a\u043b\u043e\u043d \u0432 \u043e\u043a\u043d\u043e \u00b12% \u0438 \u043d\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u043a [-1; +1]# 2% \u0437\u0430 3 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u0438 \u0447\u0430\u0441\u0430 \u0435\u0441\u043b\u0438 \u0440\u0435\u0437\u043a\u043e\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435df = df.with_columns([    (_clip(pl.col(\"ema50_slope3\"), -0.02, 0.02) \/ 0.02).alias(\"ema50_slope3_n\")])# 4) \u0421\u0432\u043e\u0434\u043d\u044b\u0439 \u0431\u0430\u043b\u043b: 70% \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 EMA + 30% \u043d\u0430\u043a\u043b\u043e\u043d. # \u0417\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u0432 [-1; +1] \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u043b\u0435\u0437\u0442\u0438 \u043a\u0440\u0438\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044fdf = df.with_columns([    _clip(0.7 * pl.col(\"ema_stack\") + 0.3 * pl.col(\"ema50_slope3_n\"), -1.0, 1.0)    .alias(\"trend_score\")])return df<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>p.s \u043f\u0440\u043e\u0441\u0442\u0438\u0442\u0435, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043c\u043e\u0434\u0435\u0440\u0430\u0442\u043e\u0440\u044b, \u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u0438\u0442\u044c\u2026<\/strong><\/p>\n<p><strong>vol_regime:<\/strong> low\/mid\/high-\u0440\u0435\u0436\u0438\u043c \u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u043e ATR. \u0422\u0438\u043f\u0430, \u0447\u0442\u043e \u0441 \u0440\u044b\u043d\u043a\u043e\u043c? \u00ab\u041e\u043d \u0441\u043f\u0438\u0442?\u0423\u043c\u0435\u0440? \u0411\u043e\u0434\u0440 \u0438 \u0441\u0432\u0435\u0436?\u00bb<\/p>\n<p><strong>squeeze play<\/strong>&#8212; \u0444\u043b\u0430\u0433 \u0441\u0436\u0430\u0442\u0438\u044f \u0411\u043e\u043b\u043b\u0438\u043d\u0434\u0436\u0435\u0440\u0430. \u0423\u0437\u043a\u0438\u0435 BB \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0440\u0435\u0437\u043a\u043e\u043c\u0443 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044e.<\/p>\n<p><strong>ange_index<\/strong>&#8212; \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u043e\u0442\u043b\u0438\u0447\u0438\u0442\u044c \u0442\u0440\u0435\u043d\u0434 \u043e\u0442 \u0444\u043b\u044d\u0442 (\u0431\u043e\u043a\u043e\u0432\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f).<\/p>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043c\u043b\u0430\u0434\u0448\u0435\u0433\u043e \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u0430 15m \u043f\u043e\u0434\u043c\u0435\u0448\u0438\u0432\u0430\u044e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 trend_score_4h (\u0442.\u0435 \u0442\u0440\u0435\u043d\u0434 4-\u0447\u0430\u0441\u043e\u0432\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u0430). \u0414\u0435\u043b\u0430\u044e \u044d\u0442\u043e \u0447\u0435\u0440\u0435\u0437 numpy.searchsorted- \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u0435\u0435, \u0447\u0435\u043c join_asof \u0438\u0437 Polars. \u0422\u0430\u043a, \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u0438\u0434\u0438\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0441\u0442\u0430\u0440\u0448\u0435\u0433\u043e \u0422\u0424, \u043d\u0435 \u0442\u0435\u0440\u044f\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438.<\/p>\n<p><strong>Volume Profile<\/strong> &#8212; \u044d\u0442\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043e\u0431\u044a\u0451\u043c\u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0441\u0432\u0435\u0447\u043d\u043e\u0439 \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u044a\u0451\u043c\u0430 \u043f\u043e \u0443\u0440\u043e\u0432\u043d\u044f\u043c \u0446\u0435\u043d\u044b. \u0421\u0447\u0438\u0442\u0430\u044e \u0435\u0433\u043e \u043f\u043e 90-\u0434\u043d\u0435\u0432\u043d\u043e\u043c\u0443 \u043e\u043a\u043d\u0443, \u043d\u0430\u0445\u043e\u0436\u0443 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0441 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u044a\u0451\u043c\u043e\u043c \u0438 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d, \u0433\u0434\u0435 \u043f\u0440\u043e\u0448\u043b\u043e 70% \u0442\u043e\u0440\u0433\u043e\u0432. \u0413\u0440\u0430\u043d\u0438\u0446\u044b \u044d\u0442\u043e\u0433\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u2014 \u0432\u0432\u0435\u0440\u0445 \u0438 \u0432\u043d\u0438\u0437. \u0417\u0430\u0442\u0435\u043c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0432\u0435\u0447\u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u0438 \u0434\u043e \u044d\u0442\u0438\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0432 \u0435\u0434\u0438\u043d\u0438\u0446\u0430\u0445 ATR -\u044d\u0442\u043e \u043f\u043e\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438 \u043a\u0430\u043a \u0444\u0438\u0447\u0430, \u0438 \u043a\u0430\u043a \u0444\u0438\u043b\u044c\u0442\u0440 \u043f\u0440\u043e\u0442\u0438\u0432 \u0432\u0445\u043e\u0434\u0430 \u00ab\u0432 \u0441\u0442\u0435\u043d\u0443\u00bb.<\/p>\n<p><strong>\u0426\u0435\u043b\u044c-\u043c\u0435\u0447\u0442\u0430!<\/strong><\/p>\n<p>\u0418\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0434\u0435\u0441\u044f\u0442\u043a\u0430 \u043f\u0430\u0440 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u0430\u0445. \u0425\u043e\u0442\u0435\u043b \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u0432\u0435\u0436\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438\u0437 \u0431\u0438\u0440\u0436\u0438 \u0438 \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e\u00a0\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u0442\u044c \u2014 \u0440\u0443\u0447\u043d\u043e\u0439 \u0442\u0440\u0443\u0434 \u043d\u0435 \u043f\u0440\u0438\u043d\u043e\u0441\u0438\u043b \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430, \u0431\u044b\u043b\u0430 \u0443\u0441\u0442\u0430\u043b\u043e\u0441\u0442\u044c. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u0440\u0438\u0448\u043b\u0430 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u0438\u0434\u0435\u044f, \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0441 \u0431\u0438\u0440\u0436\u0438 \u0438 \u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0432 Telegram? \u0422\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0432\u0438\u0434\u0435\u0442\u044c, \u0432 \u043a\u0430\u043a\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0441\u0442\u043e\u0301\u0438\u0442 \u0437\u0430\u0445\u043e\u0434\u0438\u0442\u044c, \u0438 \u0438\u0433\u0440\u0430\u0442\u044c \u043d\u0430 \u0440\u044b\u043d\u043a\u0435 \u0431\u043e\u043b\u0435\u0435 \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u043e.<\/p>\n<p>\u0427\u0442\u043e \u0432 \u0438\u0442\u043e\u0433\u0435 \u0443\u043c\u0435\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0430:<\/p>\n<p><strong>24\/7 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u0440\u044b\u043d\u043e\u043a \u043f\u043e WebSocket<\/strong> (\u044d\u0442\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0438\u0440\u0436\u0430 \u0441\u0430\u043c\u0430 \u0448\u043b\u0451\u0442 \u0441\u0432\u0435\u0436\u0438\u0435 \u0441\u0432\u0435\u0447\u0438) \u0438 \u0434\u043e\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u043e REST (\u043e\u0434\u0438\u043d\u043e\u0447\u043d\u044b\u0435 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0434\u043b\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445).<\/p>\n<p><strong>\u0421\u0430\u043c\u0430 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0444\u0438\u0447\u0438<\/strong> (EMA, RSI, MACD, ATR, BB, ADX, OBV, trend_score, \u0440\u0435\u0436\u0438\u043c \u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438). \u0412\u044b\u0448\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043b, \u0447\u0442\u043e \u044d\u0442\u043e.<\/p>\n<p><strong>\u041e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f<\/strong> \u0432\u0432\u0435\u0440\u0445\/\u0432\u043d\u0438\u0437 \u043d\u0430 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0435 H \u0431\u0430\u0440\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 &#8212; LightGBM (\u044d\u0442\u043e \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u044b\u0439 \u0431\u0443\u0441\u0442\u0438\u043d\u0433, \u0448\u0442\u0443\u043a\u0430 \u043f\u043e\u0441\u0435\u0440\u044c\u0451\u0437\u043d\u0435\u0435) \u0438\u043b\u0438 \u043b\u043e\u0433\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f + \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u043d\u0430\u044f \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430 (\u043f\u043e\u043f\u0440\u043e\u0449\u0435, \u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435).<\/p>\n<p>\u041d\u0435 \u043b\u0435\u0437\u0435\u0442 \u0432 \u043a\u0430\u0436\u0434\u043e\u0435 \u0448\u0435\u0432\u0435\u043b\u0435\u043d\u0438\u0435: \u0435\u0441\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u044b (TrendAlign, SR-guard, Flip-guard, Volume Profile, \u043a\u0443\u043b\u0434\u0430\u0443\u043d, Freeze \u043d\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u044f\u0445\/\u043c\u0430\u043a\u0440\u043e). \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u0436\u0435.<\/p>\n<p>\u0428\u043b\u0451\u0442 \u0432 Telegram \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u0443\u0440\u043e\u0432\u043d\u0438 SL\/TP \u0438 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u044b \u0432\u0441\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u0421\u0447\u0438\u0442\u0430\u0435\u0442 ex-post \u043f\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432-winrate (\u0434\u043e\u043b\u044f \u043f\u0440\u0438\u0431\u044b\u043b\u044c\u043d\u044b\u0445), RR (risk\/reward, \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0431\u044b\u043b\u0438 \u043a \u0440\u0438\u0441\u043a\u0443), \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435. \u0427\u0442\u043e\u0431\u044b \u044f \u043c\u043e\u0433 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043d\u0435 \u0432\u0440\u0451\u0442 \u043b\u0438 \u043c\u043e\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u0441\u0435\u0431\u0435. \u0410 \u0442\u0430\u043a\u043e\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0431\u044b\u0432\u0430\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u0434\u0432\u0438\u0436\u043e\u043a \u00ab\u0432 \u043c\u043e\u043c\u0435\u043d\u0442\u0435\u00bb \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0445\u043e\u0440\u043e\u0448\u043e, \u0430 \u043d\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0441\u043b\u0438\u0432\u0430\u0435\u0442.<\/p>\n<p><strong>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0435\u0441\u0442\u044c Advisor<\/strong>&#8212; \u044d\u0442\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044c\/\u0441\u0442\u0440\u0430\u0436, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437 \u0432 N \u043c\u0438\u043d\u0443\u0442 \u0441\u043a\u0430\u043d\u0438\u0440\u0443\u0435\u0442 4h\/1d \u0438 \u0438\u0449\u0435\u0442 \u0441\u0440\u0435\u0434\u043d\u0435\u0441\u0440\u043e\u0447\u043d\u044b\u0435 \u0441\u0432\u0438\u043d\u0433\u0438 (\u0442\u0440\u0435\u043d\u0434 1d + swing 4h + \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0441\u0442\u044c \u043e\u0442 SR + \u0431\u0440\u0435\u0439\u043a\u0430\u0443\u0442). \u041f\u0440\u043e \u043d\u0435\u0433\u043e \u0442\u043e\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e. \u0418 \u0432\u0441\u0451 \u044d\u0442\u043e \u0438\u0437 \u043e\u0434\u043d\u043e\u0439 \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u043d\u0430 Streamlit \u043c\u043d\u0435 \u0431\u044b\u043b\u043e \u043b\u0435\u043d\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043b\u0430\u0437\u0438\u0442\u044c \u0432 YAML-\u043a\u043e\u043d\u0444\u0438\u0433 \u0438 \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c CLI-\u043a\u043e\u043c\u0430\u043d\u0434\u044b.<\/p>\n<p><strong>\u0421\u0442\u0435\u043a<\/strong> Python 3.11, asyncio (\u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u043a\u043e\u0434, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0441 \u0431\u0438\u0440\u0436\u0438 \u0431\u0435\u0437 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a). Polars + PyArrow, \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e, \u0447\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0434\u0430\u0442\u0430\u0444\u0440\u0435\u0439\u043c\u043e\u0432 \u0438 parquet-\u0444\u0430\u0439\u043b\u043e\u0432.<\/p>\n<p>aiohttp + websockets + tenacity, \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u0431\u0438\u0440\u0436\u0435\u0439 (HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b, WebSocket-\u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044b \u043f\u0440\u0438 \u0441\u0431\u043e\u044f\u0445).<\/p>\n<p>scikit-learn + LightGBM-\u043c\u043e\u0434\u0435\u043b\u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>Pydantic v2 + YAML \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f. YAML &#8212; \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438, Pydantic \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u0432\u0441\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430.<\/p>\n<p>Streamlit- \u0434\u043b\u044f \u0432\u0435\u0431-\u0430\u0434\u043c\u0438\u043d\u043a\u0438 (\u0431\u0435\u0437 \u043d\u0435\u0451 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u0432\u0441\u0451 \u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u044c, \u0447\u0442\u043e \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u043d\u043e).<\/p>\n<p>Prometheus client \u043c\u0435\u0442\u0440\u0438\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u0432\u0438\u0434\u0435\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430.<\/p>\n<p>\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043a\u0430\u043a \u0442\u0430\u043a\u043e\u0432\u043e\u0433\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u0441\u0442\u0430\u043b \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u0441\u0451 \u043b\u0435\u0436\u0438\u0442 \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 parquet. \u041c\u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442.<\/p>\n<p><strong>\u042f\u0434\u0440\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/strong><\/p>\n<p>\u041d\u0438\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0431\u043b\u043e\u043a-\u0441\u0445\u0435\u043c\u0430. \u041e\u043d\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0430 \u043d\u0430 \u0442\u0440\u0438 \u0447\u0430\u0441\u0442\u0438.\u00a0\u0411\u043e\u043b\u044c\u0448\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043d\u0435 \u0432\u043c\u0435\u0449\u0430\u043b\u0430\u0441\u044c \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c (\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0441\u0436\u0438\u043c\u0430\u0442\u044c, \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u0438 \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u0438). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0434\u0451\u043c \u043f\u043e \u044d\u0442\u0430\u043f\u0430\u043c.<\/p>\n<p><strong>\u0427\u0430\u0441\u0442\u044c 1. \u0421\u0431\u043e\u0440 \u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445<\/strong><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/03\/9d\/6f\/039d6f7d1401c0dad0bdd573809fe91d.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/03\/9d\/6f\/039d6f7d1401c0dad0bdd573809fe91d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/03\/9d\/6f\/039d6f7d1401c0dad0bdd573809fe91d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e \u0441\u0445\u0435\u043c\u0435:<\/p>\n<p><strong>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0438\u0440\u0436\u0438.<\/strong> \u0421\u0432\u0435\u0447\u0438 15-\u043c\u0438\u043d\u0443\u0442\u043d\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0434\u0432\u0443\u043c\u044f \u043f\u0443\u0442\u044f\u043c\u0438: \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e WebSocket \u0438 \u0432 \u0432\u0438\u0434\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 REST API. \u0421\u043b\u043e\u0439 \u0438\u043d\u0433\u0435\u0441\u0442\u0430 (ws.py+ history.py) \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0438\u0445, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043d\u0430 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u043e\u0441\u0442\u044c. \u0412\u0441\u0451 \u043e\u043a \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c, \u043d\u0435 \u043e\u043a \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u043c.<\/p>\n<p><strong>\u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435<\/strong>.\u0412\u0441\u0435 \u0441\u0432\u0435\u0447\u0438 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u00abpartitioned parquet\u00bb \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u043f\u043e \u043f\u0430\u043f\u043a\u0430\u043c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0438\u0441\u043a \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043a\u0443\u0441\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u044b\u043b \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u044b\u043c. \u0420\u0430\u0437\u0431\u0438\u0432\u043a\u0430 \u043f\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0443, \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u0443 \u0438 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 (spot\/linear). \u0414\u0430\u0451\u0442 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0438 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435. \u0418\u043d\u043e\u0433\u0434\u0430 \u0434\u0443\u043c\u0430\u0435\u0448\u044c, \u043d\u0430\u0434\u043e \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0431\u0430\u0437\u0443.<\/p>\n<p><strong>\u0420\u0435\u0441\u0435\u043c\u043f\u043b\u0435\u0440<\/strong>.\u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 15-\u043c\u0438\u043d\u0443\u0442\u043e\u043a \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0441\u0442\u0430\u0440\u0448\u0438\u0435 \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u044b: 30m, 1h, 4h \u0438 1d. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u043a\u0430\u0447\u0435\u043a \u2014 \u0432\u0441\u0451 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0422\u0424. \u042d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u0443 \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u0430\u043c\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u044b. \u0414\u0440\u0443\u0433\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b (\u0437\u0430\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0422\u0424 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e) \u044f \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u0434\u0430\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0431\u0430\u0440\u0430\u043c.<\/p>\n<p><strong>\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0434\u0435\u0440\u0438\u0432\u0430\u0442\u0438\u0432\u043e\u0432<\/strong>. \u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0442\u044f\u043d\u0443\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u0431\u0438\u0440\u0436\u0438 v5: \u0441\u0442\u0430\u0432\u043a\u0430 \u0444\u0438\u043d\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (funding rate \u043a\u043e\u043c\u0438\u0441\u0441\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043b\u043e\u043d\u0433\u0438 \u043f\u043b\u0430\u0442\u044f\u0442 \u0448\u043e\u0440\u0442\u0430\u043c \u0438\u043b\u0438, \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442), \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 (OI &#8212; \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0441\u0435\u0433\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u0439) \u0438 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438 (\u043a\u043e\u0433\u0434\u0430 \u0447\u044c\u0438-\u0442\u043e \u043f\u043e\u0437\u044b \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0442). \u0412\u0441\u0451 \u044d\u0442\u043e \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u044d\u0448 cache\/context.<\/p>\n<p><strong>Volume Profile<\/strong>. \u041f\u043e 90-\u0434\u043d\u0435\u0432\u043d\u043e\u043c\u0443 \u043e\u043a\u043d\u0443 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043e\u0431\u044a\u0451\u043c\u0430 \u2014 \u0443\u0440\u043e\u0432\u043d\u0438. \u0412\u0432\u0435\u0440\u0445, \u0432\u043d\u0438\u0437 \u0438 \u0442\u043e\u0447\u043a\u0430 \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u043e\u0431\u044a\u0451\u043c\u0430. \u042d\u0442\u0438 \u0443\u0440\u043e\u0432\u043d\u0438 \u043f\u043e\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0438 \u0432 \u0444\u0438\u0447\u0430\u0445, \u0438 \u0432 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0445 \u0434\u0432\u0438\u0436\u043a\u0430.<\/p>\n<p><strong>\u0420\u0430\u0441\u0447\u0451\u0442 \u0444\u0438\u0447<\/strong>.\u041d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u0435 \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b (EMA, MACD, BB, ATR, RSI, ADX, OBV), \u0440\u0435\u0436\u0438\u043c\u044b \u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0444\u043b\u0430\u0433\u0438 \u0441\u0436\u0430\u0442\u0438\u044f \u0411\u043e\u043b\u043b\u0438\u043d\u0434\u0436\u0435\u0440\u0430, trend_score. \u0421\u044e\u0434\u0430 \u0436\u0435 \u043f\u043e\u0434\u043c\u0435\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0434\u0435\u0440\u0438\u0432\u0430\u0442\u0438\u0432\u043e\u0432 \u0438 \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u0438 \u0434\u043e VP-\u0443\u0440\u043e\u0432\u043d\u0435\u0439. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u2014 \u0435\u0434\u0438\u043d\u044b\u0439 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0444\u0438\u0447 \u0432 cache\/features.<\/p>\n<p><strong>\u0412\u044b\u0432\u043e\u0434<\/strong> \u044d\u0442\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430: \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0432\u0435\u0447\u0438, \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0430 \u0441 30+ \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430\u043c\u0438, \u0433\u043e\u0442\u043e\u0432\u0430\u044f \u043a ML.<\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u0438\u043d\u0433\u0435\u0441\u0442 \u0434\u0430\u043d\u043d\u044b\u0445, \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0435 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0441\u044f \u0441 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043c, \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0431\u043e\u0440\u0430, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f. \u041c\u043e\u0436\u043d\u043e \u0434\u0443\u043c\u0430\u0442\u044c \u043e \u043d\u0451\u043c \u043a\u0430\u043a \u043e \u00ab\u043f\u0440\u0438\u0451\u043c\u043a\u0430 \u0442\u043e\u0432\u0430\u0440\u0430 \u043d\u0430 \u0441\u043a\u043b\u0430\u0434\u00bb \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438, \u0441\u0432\u0435\u0440\u0438\u043b\u0438, \u0447\u0442\u043e \u043d\u0435 \u0431\u0438\u0442\u044b\u0439, \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u043b\u0438 \u043f\u043e \u043f\u043e\u043b\u043a\u0430\u043c, \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/66\/ea\/82\/66ea8252314afcd16274a479cccc4187.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/66\/ea\/82\/66ea8252314afcd16274a479cccc4187.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/66\/ea\/82\/66ea8252314afcd16274a479cccc4187.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><strong>\u0427\u0430\u0441\u0442\u044c 2. \u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0434\u0432\u0438\u0436\u043e\u043a \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0439<\/strong><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/c0\/4e\/a6\/c04ea6714ffd32286dfb1effda1aac43.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/c0\/4e\/a6\/c04ea6714ffd32286dfb1effda1aac43.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/c0\/4e\/a6\/c04ea6714ffd32286dfb1effda1aac43.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><strong>\u041b\u0435\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u2014 \u0441\u0445\u0435\u043c\u044b-\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438<\/strong>. \u0421\u0445\u0435\u043c\u0430 \u0431\u044b\u043b\u0430 \u0431\u043e\u043b\u044c\u0448\u0430\u044f, \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u0432\u0441\u0451 \u0440\u0430\u0437\u0431\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0431\u043b\u043e\u043a\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. \u041e\u0447\u0435\u043d\u044c \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c.<\/p>\n<p><strong>\u0421\u0431\u043e\u0440\u043a\u0430 ML-\u0442\u0430\u0431\u043b\u0438\u0446\u044b<\/strong>. \u0418\u0437 \u043a\u044d\u0448\u0430 \u0444\u0438\u0447 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0439 \u0434\u0430\u0442\u0430\u0441\u0435\u0442. \u041a\u0430\u0436\u0434\u043e\u0439 \u0441\u0432\u0435\u0447\u0435 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043a\u0430 \u043f\u043e \u043c\u0435\u0442\u043e\u0434\u0443 triple-barrier, \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0431\u0430\u0440\u0430 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0442\u0435\u0439 \u043f\u0440\u043e\u0444\u0438\u0442 \u0438 \u043d\u0438\u0436\u043d\u0438\u0439 \u0441\u0442\u043e\u043f \u043b\u043e\u0441. \u0411\u0430\u0440\u044c\u0435\u0440\u044b \u0432 ATR, \u0438 \u0447\u0435\u0440\u0435\u0437 H \u0431\u0430\u0440\u043e\u0432 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a\u043e\u0439 \u0431\u0430\u0440\u044c\u0435\u0440 \u0431\u044b\u043b \u043f\u0440\u043e\u0431\u0438\u0442 \u043f\u0435\u0440\u0432\u044b\u043c. \u042d\u0442\u043e \u0434\u0430\u0451\u0442 \u0447\u0435\u0441\u0442\u043d\u0443\u044e \u0431\u0438\u043d\u0430\u0440\u043d\u0443\u044e \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e: \u00ab\u0432\u044b\u0433\u043e\u0434\u043d\u0435\u0435 \u0431\u044b\u043b \u043b\u043e\u043d\u0433\u00bb \/\u00ab\u0432\u044b\u0433\u043e\u0434\u043d\u0435\u0435 \u0431\u044b\u043b \u0448\u043e\u0440\u0442\u00bb. \u0415\u0441\u043b\u0438 \u043d\u0438 \u0442\u043e\u0442, \u043d\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u043d\u0435 \u043f\u0440\u043e\u0431\u0438\u0442 \u0437\u0430 H \u0431\u0430\u0440\u043e\u0432 \u2014 \u044d\u0442\u043e\u0442 \u0431\u0430\u0440 \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u043a\u0430\u043a \u00ab\u043d\u0435\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439\u00bb.<\/p>\n<p><strong>\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435<\/strong>. \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u0430\u0434\u043c\u0438\u043d\u043a\u0438: LightGBM (\u0442\u044f\u0436\u0451\u043b\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0441 \u0440\u0430\u043d\u043d\u0435\u0439 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u043f\u043e \u043c\u0435\u0442\u0440\u0438\u043a\u0435 AUC, \u0442\u043e\u0447\u043d\u0435\u0435, \u043d\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435) \u0438\u043b\u0438 LogisticRegression + StandardScaler (\u043b\u0451\u0433\u043a\u0430\u044f, \u0431\u044b\u0441\u0442\u0440\u0430\u044f, \u0431\u0435\u0437 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439; \u043f\u043e\u0434\u043e\u0439\u0434\u0451\u0442, \u0435\u0441\u043b\u0438 LightGBM \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043d\u0435 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f).<\/p>\n<p><strong>\u041a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u043e\u0439 T.<\/strong> \u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 T, \u0443\u0441\u0438\u043b\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u00ab\u0441\u0442\u043e\u0439\u043a\u043e\u0441\u0442\u044c\u00bb \u043c\u043e\u0434\u0435\u043b\u0438 (\u0432 \u043c\u0438\u0440\u0435 ML \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043b\u043e\u0433\u0438\u0442\u0430\u043c\u0438), \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0439. \u0417\u0430\u043c\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0435\u0440\u043e\u0439 \u0442\u0430\u043a, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u0430 \u0432 \u0441\u0432\u043e\u0438\u0445 \u043e\u0446\u0435\u043d\u043a\u0430\u0445 \u0434\u043e \u0438 \u043f\u043e\u0441\u043b\u0435, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e. \u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0447\u0430\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0443\u0432\u0435\u0440\u0435\u043d\u0430 \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u00ab\u0433\u0430\u043b\u043b\u044e\u0446\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u00bb \u2014 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c 90% \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0442\u0430\u043c, \u0433\u0434\u0435 \u043f\u043e \u0444\u0430\u043a\u0442\u0443 60%. \u0423 \u043c\u0435\u043d\u044f \u043a\u0430\u043a-\u0442\u043e \u0443\u043f\u0430\u043b\u043e \u0441 0.12 \u0434\u043e 0.04, \u0438 \u044d\u0442\u043e \u0441\u0440\u0430\u0437\u0443 \u0441\u0442\u0430\u043b\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u043f\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432.<\/p>\n<p><strong>\u041c\u043e\u0434\u0435\u043b\u044c \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435<\/strong> (\u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0438\u0447, \u0431\u0430\u0440\u044c\u0435\u0440\u044b, \u043c\u0435\u0442\u0440\u0438\u043a\u0438, T) \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0443 models, \u043f\u043e\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u044c\u043a\u0438.<\/p>\n<p><strong>\u041f\u0440\u0430\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0445\u0435\u043c\u044b \u2014 \u0434\u0432\u0438\u0436\u043e\u043a \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/strong><\/p>\n<p>\u041d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u043c \u0431\u0430\u0440\u0435 \u0434\u0432\u0438\u0436\u043e\u043a \u0431\u0435\u0440\u0451\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0444\u0438\u0447\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0438\u0437 \u043a\u044d\u0448\u0430, \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0440\u043e\u0441\u0442 \u0438 \u043f\u0430\u0434\u0435\u043d\u0438\u0435.<\/p>\n<p><strong>\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u0434\u043c\u0435\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0443\u0442 \u0436\u0435<\/strong>: \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u0435\u0440\u0438\u0432\u0430\u0442\u0438\u0432\u043e\u0432 \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 Freeze (\u043d\u043e\u0432\u043e\u0441\u0442\u0438\/\u043c\u0430\u043a\u0440\u043e) \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u0414\u043b\u044f \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e API CryptoPanic &#8212; \u043e\u043d \u043e\u0442\u0434\u0430\u0451\u0442 \u043b\u0435\u043d\u0442\u0443 \u043f\u043e \u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043b\u044e\u0442\u0430\u043c, \u0438 \u0435\u0441\u043b\u0438 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0447\u0442\u043e-\u0442\u043e \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e\u0435 (\u0432\u0437\u043b\u043e\u043c, \u0434\u0435\u043b\u0438\u0441\u0442\u0438\u043d\u0433, \u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435), \u0434\u0432\u0438\u0436\u043e\u043a \u0441\u0442\u0430\u0432\u0438\u0442 \u00ab\u0437\u0430\u043c\u043e\u0440\u043e\u0437\u043a\u0443\u00bb \u043d\u0430 N \u043c\u0438\u043d\u0443\u0442 \u0438 \u0432 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043d\u043e\u0432\u044b\u0445 \u0432\u0445\u043e\u0434\u043e\u0432 \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442.<\/p>\n<p><strong>\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u043e\u0440\u043e\u0433\u0438<\/strong>. \u0411\u0430\u0437\u043e\u0432\u044b\u0435 \u043b\u043e\u043d\u0433\/\u0448\u043e\u0440\u0442\u044b\/gap \u0443\u043c\u043d\u043e\u0436\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u0438 \u0440\u0435\u0436\u0438\u043c\u0430-\u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0442\u0438\u043f\u0430 \u0440\u044b\u043d\u043a\u0430 (trend\/flat) \u0438 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 (ASIA\/EU\/US). \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a \u0440\u0430\u0437\u043d\u044b\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c. \u041d\u0430 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e\u043c \u0430\u0437\u0438\u0430\u0442\u0441\u043a\u043e\u043c \u0440\u044b\u043d\u043a\u0435 \u043f\u043e\u0440\u043e\u0433\u0438 \u043c\u044f\u0433\u0447\u0435, \u043d\u043e \u0431\u044b\u0432\u0430\u044e\u0442 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430, \u0430 \u0432\u043e\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u041d\u044c\u044e-\u0419\u043e\u0440\u043a\u0430 \u2014 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u043d\u043e \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e.<\/p>\n<p><strong>\u0426\u0435\u043f\u043e\u0447\u043a\u0430 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432<\/strong>. \u041e\u043d\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a, Freeze \u2014 Cooldown \u2014 TrendAlign \u2014 SR-guard \u2014 VP-filter \u2014 Flip-guard \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 score. \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u044c \u043e\u0434\u0438\u043d \u0444\u0438\u043b\u044c\u0442\u0440 \u0441\u043a\u0430\u0437\u0430\u043b \u00ab\u043d\u0435\u0442\u00bb \u2014 \u0441\u0438\u0433\u043d\u0430\u043b \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435\u00a0\u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u044b. \u0416\u0434\u0438 \u0442\u043e\u0436\u0435 \u043b\u043e\u0433\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0438 \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u043f\u043e\u0442\u043e\u043c \u0441\u043c\u043e\u0442\u0440\u044e, \u043a\u0430\u043a\u043e\u0439 \u0444\u0438\u043b\u044c\u0442\u0440 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0440\u0435\u0436\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u044b. \u0418\u043d\u043e\u0433\u0434\u0430 \u0432\u0438\u0436\u0443, \u0447\u0442\u043e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u0432\u0445\u043e\u0434\u043e\u0432 \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 Flip-guard &#8212; \u0438 \u0434\u0443\u043c\u0430\u044e, \u043c\u043e\u0436\u0435\u0442, \u044f \u0435\u0433\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0436\u0451\u0441\u0442\u043a\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b.<\/p>\n<p>**\u0412\u044b\u0432\u043e\u0434 **\u044d\u0442\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430:\u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u044b \u2014 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u043b\u043e\u043d\u0433\/\u0448\u043e\u0440\u0442 \u0441 \u0443\u0440\u043e\u0432\u043d\u044f\u043c\u0438 \u0421\u041b\/\u0422\u041f, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u043e ATR, \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 Telegram. \u0412\u0441\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f (\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u044b, \u0438 \u043e\u0442\u043a\u0430\u0437\u044b) \u043f\u0438\u0448\u0443\u0442\u0441\u044f \u0432 \u0436\u0443\u0440\u043d\u0430\u043b data\/signals \u0441\u0440\u0430\u0437\u0443 \u0432 \u0434\u0432\u0443\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u0445:\u2014 parquet (\u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438) \u0438 CSV (\u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0432 Excel \u0433\u043b\u0430\u0437\u0430\u043c\u0438).<\/p>\n<p><strong>\u0427\u0430\u0441\u0442\u044c 3. \u0410\u043d\u0430\u043b\u0438\u0437 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0438 Advisor<\/strong><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/a9\/c3\/9c\/a9c39c08999fb145c9e135c4b584516e.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/a9\/c3\/9c\/a9c39c08999fb145c9e135c4b584516e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/a9\/c3\/9c\/a9c39c08999fb145c9e135c4b584516e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u042d\u0442\u0430 \u0441\u0445\u0435\u043c\u0430 \u043f\u0440\u043e \u0442\u043e, \u043a\u0430\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0441\u0430\u043c\u0430 \u0441\u0435\u0431\u044f \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0441\u0440\u0435\u0434\u043d\u0438\u0445 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u0445. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0438\u043c\u0435\u044e \u0432 \u0432\u0438\u0434\u0443. <strong>\u041b\u0435\u0432\u0430\u044f \u0432\u0435\u0442\u043a\u0430 \u2014 ex-post \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440.<\/strong><\/p>\n<p>Ex-post \u043c\u044b \u0431\u0435\u0440\u0451\u043c \u0443\u0436\u0435 \u0432\u044b\u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0438 \u0441\u0438\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c, \u043a\u0430\u043a \u0431\u044b\u043b\u043e \u0431\u044b \u00ab\u0435\u0441\u043b\u0438 \u0431 \u0441\u0442\u0430\u043b\u0438 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0435\u0440\u0430\u043c\u0438\u00bb \u0438\u043b\u0438, \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u00ab\u0445\u043e\u0440\u043e\u0448\u043e, \u0447\u0442\u043e \u043d\u0435 \u0437\u0430\u0448\u0451\u043b\u00bb<\/p>\n<p><strong>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a<\/strong>. \u0411\u0435\u0440\u0451\u0442\u0441\u044f \u0436\u0443\u0440\u043d\u0430\u043b \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438\u0437 data\/signals \u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 15-\u043c\u0438\u043d\u0443\u0442\u043d\u044b\u0435 \u0441\u0432\u0435\u0447\u0438 \u0438\u0437 \u043a\u0435\u0448\u0430.<\/p>\n<p><strong>\u0421\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f<\/strong>. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043b\u043e\u043d\u0433\/\u0448\u043e\u0440\u0442 \u0441\u0438\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0445\u043e\u0434 \u2014 \u043f\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0431\u0430\u0440\u0430 \u043f\u043e\u0441\u043b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 (\u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u043e\u0434\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u0435) \u2014 \u044d\u0442\u043e Ex-post.<\/p>\n<p>\u041c\u0435\u0442\u0440\u0438\u043a\u0438 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435:winrate (% \u043f\u0440\u0438\u0431\u044b\u043b\u044c\u043d\u044b\u0445 \u0441\u0434\u0435\u043b\u043e\u043a), \u0441\u0440\u0435\u0434\u043d\u0438\u0439 RR (\u0440\u0438\u0441\u043a\/\u0440\u0435\u0432\u0430\u0440\u0434), \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0441\u0442\u044c \u0432 RR, \u043c\u0435\u0434\u0438\u0430\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0443\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f, \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u0430 \u043f\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u043c. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0432 data.<\/p>\n<p>\u0417\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u043d\u043e? \u0411\u0435\u0437 ex-post \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u0432\u0435\u0441\u0442\u0438\u0441\u044c \u043d\u0430 \u0440\u0430\u0437\u0432\u043e\u0434\u043d\u044f\u043a, \u0447\u0442\u043e \u0434\u0432\u0438\u0436\u043e\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u043e. \u0421 ex-post \u0432\u0438\u0434\u0438\u0448\u044c \u043f\u0440\u0430\u0432\u0434\u0443, \u0433\u0434\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0448\u0438\u0431\u0430\u0435\u0442\u0441\u044f, \u0433\u0430\u043b\u043b\u044e\u0446\u0438\u043d\u0430\u0446\u0438\u044f \u0435\u0441\u0442\u044c \u0438\u043b\u0438 \u0435\u0451 \u043d\u0435\u0442? \u041a\u0430\u043a\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0440\u0435\u0436\u0443\u0442 \u043f\u0440\u0438\u0431\u044b\u043b\u044c, \u0430 \u043a\u0430\u043a\u0438\u0435, \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0441\u043f\u0430\u0441\u0430\u044e\u0442 \u043e\u0442 \u043f\u043e\u0442\u0435\u0440\u044c. \u042d\u0442\u043e, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0441\u0430\u043c\u0430\u044f \u043e\u0442\u0440\u0435\u0437\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u042d\u0442\u043e \u043e \u0447\u0451\u043c \u0432\u044b\u0448\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043b.<\/p>\n<p><strong>\u041f\u0440\u0430\u0432\u0430\u044f \u0432\u0435\u0442\u043a\u0430 \u2014 \u044d\u0442\u043e Advisor(\u0441\u0442\u0440\u0430\u0436). \u042f \u043e \u043d\u0451\u043c \u0432\u044b\u0448\u0435\u043b, \u043f\u0438\u0441\u0430\u043b.<\/strong><\/p>\n<p><strong>\u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441<\/strong>. Advisor \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430(\u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0441\u043b\u0443\u0436\u0431\u0443, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u043d\u0435 \u043c\u0435\u0448\u0430\u043b\u0438 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430) \u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u0443\u0435\u0442 \u0444\u0438\u0447\u0438 \u043d\u0430 \u0441\u0442\u0430\u0440\u0448\u0438\u0445 \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u0430\u0445 (4h \u0438 1d) \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043e\u043c (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0440\u0430\u0437 \u0432 5 \u043c\u0438\u043d\u0443\u0442).<\/p>\n<p><strong>\u041b\u043e\u0433\u0438\u043a\u0430 \u043f\u043e\u0438\u0441\u043a\u0430 \u0441\u0432\u0438\u043d\u0433\u043e\u0432<\/strong>. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0439\u0442\u0438 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435 \u0442\u0440\u0435\u043d\u0434\u0430 \u043d\u0430 \u0434\u043d\u0451\u0432\u043a\u0438, \u0435\u0441\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u0439 \u0441\u0432\u0438\u043d\u0433 \u043d\u0430 4\u0447, \u0442\u043e\u0433\u0434\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u0438\u043d\u0433-\u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0443.<\/p>\n<p><strong>\u0412\u044b\u0432\u043e\u0434<\/strong>. \u041a\u0430\u0440\u0442\u043e\u0447\u043a\u0438 \u0443\u0445\u043e\u0434\u044f\u0442 \u0432 Telegram (\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u0442\u043e\u043a\u043e\u043c \u043e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u2014 \u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u043b, \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0435 \u0441\u043f\u0443\u0442\u0430\u0442\u044c) \u0438 \u0432 \u0436\u0443\u0440\u043d\u0430\u043b data\/advisor. \u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u043b\u043e\u0432\u0438\u043b \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0445\u043e\u0434\u044b \u043d\u0430 15m, \u0430 Advisor-\u043a\u0440\u0443\u043f\u043d\u044b\u0435 \u0441\u0432\u0438\u043d\u0433\u0438 \u043d\u0430 \u0434\u043d\u0451\u0432\u043a\u0435. \u0423 \u043d\u0438\u0445 \u0440\u0430\u0437\u043d\u044b\u0435 \u0440\u0438\u0442\u043c\u044b \u0438 \u0440\u0430\u0437\u043d\u044b\u0435 \u0446\u0435\u043b\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0438 \u0440\u0430\u0437\u043d\u0435\u0441\u0435\u043d\u044b \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c.<\/p>\n<p><strong>Streamlit<\/strong>-\u0430\u0434\u043c\u0438\u043d\u043a\u0430 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0451 \u0432\u043e\u0435\u0434\u0438\u043d\u043e. \u0418\u0437 \u043d\u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0432\u0438\u0436\u043e\u043a \u0438 Advisor, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0436\u0443\u0440\u043d\u0430\u043b\u044b, \u043f\u0440\u043e\u0433\u043d\u0430\u0442\u044c ex-post \u0437\u0430 \u043d\u0443\u0436\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434, \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.<\/p>\n<p><strong>\u042f\u0434\u0440\u043e \u043a\u043e\u0434 \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442<\/strong> \u0427\u0442\u043e\u0431\u044b \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u0447\u0438\u043b\u0430\u0441\u044c, \u0435\u0439 \u043d\u0443\u0436\u043d\u044b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b: \u00ab\u0412\u043e\u0442 \u0441\u0432\u0435\u0447\u0430\/\u0431\u0430\u0440. \u0427\u0442\u043e \u043d\u0430\u0434\u043e \u0442\u0435\u0431\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u2014 \u041b\u043e\u043d\u0433 \u0438\u043b\u0438 \u0448\u043e\u0440\u0442?\u00bb \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u044e \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c. \u0411\u0435\u0440\u0451\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0432\u0435\u0447\u0443 \u0438\u0437 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 (\u0437\u0434\u0435\u0441\u044c \u0443 \u043d\u0430\u0441 \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u044f, 180 \u0434\u043d\u0435\u0439) \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c: \u2014 \u0426\u0435\u043d\u0430 \u0440\u0430\u0441\u0442\u0451\u0442? \u041e\u043d\u0430 \u043d\u0430 \u043d\u0443\u0436\u043d\u043e\u0439 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0435 \u2014 \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u0430\u0434\u043e \u043b\u043e\u043d\u0433\u043e\u0432\u0430\u0442\u044c \u2014 \u0426\u0435\u043d\u0430 \u0443\u043f\u0430\u043b\u0430 \u043d\u0430 \u043d\u0443\u0436\u043d\u0443\u044e \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0443 \u2014 \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u041d\u0438 \u0442\u043e, \u043d\u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u0437\u0430 \u043e\u0442\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u2014 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435, \u2014 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u043d\u0435\u044f\u0441\u043d\u0430. \u0416\u0434\u0451\u043c \u0442\u043e\u0447\u043a\u0438 \u0432\u0445\u043e\u0434\u0430. \u0412\u043e\u0442 \u0438 \u0432\u0441\u0451. \u041f\u0440\u043e\u0445\u043e\u0436\u0443\u0441\u044c \u0442\u0430\u043a \u043f\u043e \u0432\u0441\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438, \u043f\u043e\u043b\u0443\u0447\u0430\u044e \u043c\u0438\u043b\u043b\u0438\u043e\u043d \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0441 \u0433\u043e\u0442\u043e\u0432\u044b\u043c\u0438 \u043e\u0442\u0432\u0435\u0442\u0430\u043c\u0438. \u0421\u043a\u0430\u0440\u043c\u043b\u0438\u0432\u0430\u044e \u0432\u0441\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043c\u043e\u0434\u0435\u043b\u0438. \u041c\u043e\u0434\u0435\u043b\u044c \u0443\u0447\u0438\u0442\u0441\u044f \u0438 \u043f\u043e\u0442\u043e\u043c \u043d\u0430 \u0436\u0438\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0443\u0433\u0430\u0434\u0430\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u0441\u0430\u043c\u0430. \u0423\u0433\u0430\u0434\u0430\u043b\u0430 \u2014 \u043c\u043e\u043b\u043e\u0434\u0435\u0446, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435, \u0435\u0441\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u043f\u0440\u043e\u043c\u0430\u0445\u043d\u0443\u043b\u0430\u0441\u044c, \u043f\u0435\u0440\u0435\u0443\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0449\u0435 \u2014 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0432\u044b\u0440\u043e\u0441\u043b\u0430 \u0446\u0435\u043d\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0431\u043c\u0430\u043d. \u0426\u0435\u043d\u0430 \u043c\u043e\u0433\u043b\u0430 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u043f\u0430\u0441\u0442\u044c \u0438 \u0432\u044b\u0431\u0438\u0442\u044c \u0441\u0442\u043e\u043f-\u043b\u043e\u0441\u0441, \u0430 \u043f\u043e\u0442\u043e\u043c \u0441\u043a\u0430\u043a\u0430\u043d\u0443\u0442\u044c \u0432\u0432\u0435\u0440\u0445, \u043a\u0430\u043a \u043e\u043d\u0438 \u043b\u044e\u0431\u044f\u0442. \u041f\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u00ab\u0443\u0433\u0430\u0434\u0430\u043b\u00bb. \u041f\u043e \u0444\u0430\u043a\u0442\u0443 \u2014 \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0432\u044b\u0448\u0435\u043b \u0441 \u0443\u0431\u044b\u0442\u043a\u043e\u043c. <strong>\u0421\u043f\u043e\u0441\u043e\u0431 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 \u0447\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u044c<\/strong>: \u0441\u043c\u043e\u0442\u0440\u044e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u043e \u043f\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u0438, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435.<\/p>\n<p> def triple_barrier_label(df: pl.DataFrame, horizon: int, up_k: float, dn_k: float) -&gt; pl.DataFrame:     df = df.sort([&#171;symbol&#187;, &#171;ts&#187;]) <\/p>\n<pre><code>if \"atr\" not in df.columns:    print(\"[triple_barrier] atr \u043d\u0435\u0442 \u0432 df, \u0431\u0430\u0440\u044c\u0435\u0440\u044b \u0431\u0443\u0434\u0443\u0442 \u043d\u0443\u043b\u0435\u0432\u044b\u0435\")parts = []for g in _partition_by(df, \"symbol\"):    n = len(g)    if n &lt; 2:        continue    close = g[\"close\"].to_numpy()    high = g[\"high\"].to_numpy()    low = g[\"low\"].to_numpy()    if \"atr\" in g.columns:        atr = g[\"atr\"].fill_null(strategy=\"forward\").fill_null(0.0).to_numpy()    else:        atr = np.zeros(n)    y = np.zeros(n, dtype=np.int8)    tp_px = np.full(n, np.nan)    sl_px = np.full(n, np.nan)    for i in range(n - 1):        a = atr[i]        c = close[i]        if a &lt;= 0 or np.isnan(c):            continue        up = c + up_k * a        dn = c - dn_k * a        tp_px[i] = up        sl_px[i] = dn        # \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0440\u043e\u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0432\u043f\u0435\u0440\u0451\u0434        end = i + 1 + horizon        if end &gt; n:            end = n        up_j = -1        dn_j = -1        for j in range(i + 1, end):            if up_j &lt; 0 and high[j] &gt;= up:                up_j = j            if dn_j &lt; 0 and low[j] &lt;= dn:                dn_j = j            if up_j &gt;= 0 and dn_j &gt;= 0:                break        # \u043c\u0435\u0442\u043e\u0434 FIFO        if up_j &lt; 0 and dn_j &lt; 0:            continue  # y[i] \u0443\u0436\u0435 0        if dn_j &lt; 0:            y[i] = 1        elif up_j &lt; 0:            y[i] = -1        else:            y[i] = 1 if up_j &lt; dn_j else -1    parts.append(        g.select([\"ts\", \"symbol\", \"tf\"]).with_columns(            pl.Series(\"y\", y),            pl.Series(\"tp_price\", tp_px),            pl.Series(\"sl_price\", sl_px),        )    )if not parts:    # \u0442\u0443\u0442 \u043f\u0443\u0441\u0442\u043e\u0439 \u0432\u0445\u043e\u0434    return dflabels = pl.concat(parts)return df.join(labels, on=[\"symbol\", \"ts\", \"tf\"], how=\"left\")<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0417\u0430\u043f\u043e\u043c\u043d\u0438\u043b \u043d\u0430 \u0432\u0441\u044e \u0436\u0438\u0437\u043d\u044c: \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0432 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0445\u043e\u0434, \u0435\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u0447\u0442\u043e-\u0442\u043e \u0441\u043c\u0435\u0448\u0430\u043b\u043e\u0441\u044c, \u0442\u043e \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0441\u044f \u043b\u043e\u0436\u043d\u044b\u0435. \u041a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u043e\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0430\u044f \u0448\u0442\u0443\u043a\u0430. \u0411\u0435\u0437 \u043d\u0435\u0451 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0438\u043a\u0430\u043a.<\/p>\n<p>def sigmoid(x: np.ndarray) -&gt; np.ndarray: x = np.asarray(x, dtype=np.float64) out = np.empty_like(x) pos = x &gt;= 0 neg = ~pos out[pos] = 1.0 \/ (1.0 + np.exp(-x[pos])) ex = np.exp(x[neg]) out[neg] = ex \/ (1.0 + ex) return out def temperature_scale(logits: np.ndarray, T: float) -&gt; np.ndarray: # \u0434\u0435\u043b\u0438\u043c \u043b\u043e\u0433\u0438\u0442\u044b \u043d\u0430 T \u2014 \u043f\u0440\u0438 T&gt;1 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u00ab\u0441\u0436\u0438\u043c\u0430\u044e\u0442\u0441\u044f\u00bb \u043a 0.5 # \u043f\u0440\u0438 T&lt;1 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u043a\u0440\u0430\u0439\u043d\u0438\u043c\u0438 return sigmoid(logits \/ T) def grid_search_temperature(logits_valid, y_valid, Tmin=0.6, Tmax=2.5, step=0.05): # \u0422\u0443\u043f\u043e\u0439 \u043f\u0435\u0440\u0435\u0431\u043e\u0440 \u043f\u043e \u0441\u0435\u0442\u043a\u0435. \u041d\u0430 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u043e\u0434\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0432 \u0442\u0440\u0435\u0439\u043d. best_T, best_ll = 1.0, float(\u201cinf\u201d) for T in np.arange(Tmin, Tmax + 1e-9, step): p = temperature_scale(logits_valid, T) ll = log_loss(y_valid, p, labels=[0, 1]) if ll &lt; best_ll: best_ll, best_T = ll, T return float(best_T)<\/p>\n<p>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e\u0439<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/b8\/ba\/51\/b8ba51e1b2e69f5a7b1c44c67c7d4bbf.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/b8\/ba\/51\/b8ba51e1b2e69f5a7b1c44c67c7d4bbf.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/b8\/ba\/51\/b8ba51e1b2e69f5a7b1c44c67c7d4bbf.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ac\/01\/ae\/ac01aef199aff4fe06fea0b9d6d72b0c.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/ac\/01\/ae\/ac01aef199aff4fe06fea0b9d6d72b0c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/ac\/01\/ae\/ac01aef199aff4fe06fea0b9d6d72b0c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/f2\/ac\/25\/f2ac25e955a38fdd32c3103e43b00ee4.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/f2\/ac\/25\/f2ac25e955a38fdd32c3103e43b00ee4.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/f2\/ac\/25\/f2ac25e955a38fdd32c3103e43b00ee4.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c,\u00a0\u0432\u044b \u0434\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u0434\u043e \u043a\u043e\u043d\u0446\u0430! \u0426\u0435\u043b\u0438 \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435: \u041c\u043e\u0434\u0435\u0440\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0431\u0443\u0434\u0443, \u043d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0431\u0438\u0440\u0436\u0438 Binance \u0438 BINGX, \u043a\u0441\u0442\u0430\u0442\u0438, \u0432\u043e\u0442 \u0447\u0442\u043e\u00a0\u0437\u0430\u043c\u0435\u0442\u0438\u043b,\u00a0\u043f\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u043d\u0435\u0442\u0430\u043c, \u0446\u0435\u043d\u0430 \u0443 \u0431\u0438\u0440\u0436 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u0438\u0441\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0446\u0435\u043d\u044b \u043d\u0430 \u0441\u0434\u0435\u043b\u043a\u0438.<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1050600\/\">https:\/\/habr.com\/ru\/articles\/1050600\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041a\u0440\u0438\u043f\u0442\u043e-\u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442 \u2014 \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u043e\u0434 \u0431\u0438\u0440\u0436\u0438 (spot + USDT-perpetual, \u0442\u043e \u0435\u0441\u0442\u044c \u0438 \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u044f, \u0438 \u0431\u0435\u0441\u0441\u0440\u043e\u0447\u043d\u044b\u0435 \u0444\u044c\u044e\u0447\u0435\u0440\u0441\u044b).\u041c\u043e\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0439\u00a0\u00a0\u043f\u0440\u043e\u0435\u043a\u0442, \u043d\u0430\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u0447\u0435\u043d\u044c \u0434\u043e\u043b\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b, \u2014 7 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0442\u0440\u0443\u0434\u043e\u0432. \u0421\u0442\u0430\u0442\u044c\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u0438 \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u043c\u043e\u044f \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0425\u0430\u0431\u0440\u0435. \u0418\u0442\u0430\u043a, \u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a \u0441\u0443\u0442\u0438.\u041d\u0435\u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u0431\u043e\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0430\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0438 \u043d\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043c\u043d\u0435 \u0425\u0425\u0425\u0425 \u2014 \u0434\u043e\u0445\u043e\u0434\u00a0\u043a\u043b\u0435\u043f\u0430\u0442\u044c, \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0442, \u043e\u043d \u043c\u043e\u0439 \u0441\u043e\u0432\u0435\u0442\u043d\u0438\u043a. \u041e\u043d \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0440\u044b\u043d\u043e\u0447\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b, \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0435\u0442 \u0438\u0445 \u0447\u0435\u0440\u0435\u0437 ML-\u043c\u043e\u0434\u0435\u043b\u044c (\u0442.\u0435. \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0446\u0435\u043d\u044b), \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043a\u0443\u0447\u0435\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0438 \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0435\u0442 \u0432 Telegram \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0432\u0438\u0434\u0430:\u00abBTCUSDT 15m LONG @ 64321, SL=\u2026, TP=\u2026, score=\u2026\u00bb\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0432 Telegram:\u0410 \u0432\u043e\u0442 \u043e\u0431\u0449\u0430\u044f \u0431\u043b\u043e\u043a-\u0441\u0445\u0435\u043c\u0430, \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u0430\u044f, \u0434\u043b\u044f \u0442\u0440\u0435\u0439\u0434\u0435\u0440\u043e\u0432 \u0438 \u043d\u0435\u043f\u0440\u043e\u0444\u0438\u043b\u044c\u043d\u044b\u0445 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439. \u0427\u0442\u043e\u0431\u044b \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043e \u0447\u0451\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u0440\u0435\u0447\u044c, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0430\u0447\u043d\u0443 \u043f\u043e\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0432\u0430\u0441 \u0432 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0435\u0442\u0430\u043b\u0438:\u0424\u0438\u0447\u0438 \u2014 \u044d\u0442\u043e \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0442\u043e\u044f\u0442 \u0441\u0442\u043e\u043b\u0431\u044b \u043c\u043e\u0435\u0433\u043e \u0442\u0432\u043e\u0440\u0435\u043d\u0438\u044f. \u0414\u043e\u043b\u0433\u043e \u043f\u0440\u043e\u0432\u043e\u0437\u0438\u043b\u0441\u044f \u043d\u0430\u0434 \u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0437\u0430 \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u044d\u0442\u0438\u0445 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439. \u0412\u043e\u0442 \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440:EMA 9\/20\/50\/200, SMA 20 &#8212; \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0438\u0435 \u0441\u0440\u0435\u0434\u043d\u0438\u0435 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0435\u0440\u0438\u043e\u0434\u043e\u043c. \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442, \u043a\u0443\u0434\u0430 \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u0446\u0435\u043d\u0430 \u00ab\u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u043c\u00bb \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u0445.MACD (12, 26, 9), \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u2014 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f\/\u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0438\u0445, \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043b\u043e\u0432\u0438\u0442\u044c \u0441\u043c\u0435\u043d\u0443 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430.Bollinger (20, 2), \u0448\u0438\u0440\u0438\u043d\u0430 \u043a\u0430\u043d\u0430\u043b\u0430-\u0433\u0440\u0430\u043d\u0438\u0446\u044b \u00ab\u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e\u00bb \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0446\u0435\u043d\u044b \u0438 \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043d\u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u0441\u0436\u0430\u0442\u044b.ATR + ATR% \u043a \u0446\u0435\u043d\u0435\u2014 \u0441\u0440\u0435\u0434\u043d\u0438\u0439 \u0438\u0441\u0442\u0438\u043d\u043d\u044b\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d, \u043f\u043e \u0441\u0443\u0442\u0438 \u00ab\u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u0435\u0447\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0435\u00bb. \u0414\u0430\u043b\u044c\u0448\u0435 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0435\u0433\u043e \u043a\u0430\u043a \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0435\u0440\u0443 \u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438.RSI, ADX, OBV -\u0438\u043d\u0434\u0435\u043a\u0441 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u043b\u044b, \u0441\u0438\u043b\u0430 \u0442\u0440\u0435\u043d\u0434\u0430 \u0438 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0451\u043c \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.z-score \u043f\u043e close \u0438 volume-\u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435 \u0446\u0435\u043d\u044b \u0438 \u043e\u0431\u044a\u0451\u043c\u0430 \u043e\u0442 \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0435\u0433\u043e \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u0432 \u00ab\u0441\u0438\u0433\u043c\u0430\u0445\u00bb. \u041f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u00ab\u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f\u00bb.trend_score \u2208 [-1; 1] \u043c\u043e\u0439 \u0441\u0432\u043e\u0434\u043d\u044b\u0439 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0442\u0440\u0435\u043d\u0434\u0430, \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b EMA \u0438 \u043d\u0430\u043a\u043b\u043e\u043d\u0430 EMA50. \u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u00ab\u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e \u0438\u0434\u0451\u0442 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435\u00bb. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043c\u0435\u0442\u043e\u0434 \u00ab\u0442\u0440\u043e\u0439\u043d\u043e\u0433\u043e \u0431\u0430\u0440\u044c\u0435\u0440\u0430\u00bb \u0438\u0437 \u043a\u043d\u0438\u0433\u0438 Advances in Financial Machine Learning (2018)* \u0410\u0432\u0442\u043e\u0440: Marcos L\u00f3pez de Prado, \u0435\u0441\u043b\u0438 \u043a\u043e\u043c\u0443-\u0442\u043e \u043d\u0443\u0436\u043d\u0430 \u044d\u0442\u0430 \u043a\u043d\u0438\u0436\u043a\u0430, \u044f \u043f\u043e\u0434\u0435\u043b\u044e\u0441\u044c. \u0418\u0434\u0435\u044f \u0431\u044b\u043b\u0430 \u0442\u0430\u043a\u0430\u044f: \u041a\u0430\u0436\u0434\u043e\u0439 \u0441\u0432\u0435\u0447\u0435 \u043c\u044b \u0437\u0430\u0434\u0430\u0451\u043c \u0432\u043e\u043f\u0440\u043e\u0441: \u00ab\u0441\u043b\u044b\u0448\u044c, \u043c\u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0441\u0434\u0435\u043b\u043a\u0443 \u0441\u0435\u0439\u0447\u0430\u0441 \u0438\u043b\u0438 \u043f\u043e\u0434\u043e\u0436\u0434\u0430\u0442\u044c, \u043f\u043e\u043a\u0430 \u0446\u0435\u043d\u0430 \u043d\u0435 \u0440\u0443\u0445\u043d\u0435\u0442, \u0438\u043b\u0438 \u0432\u043e\u0439\u0442\u0438 \u0432 \u0441\u0434\u0435\u043b\u043a\u0443 \u0438 \u043e\u043d\u0430 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0435\u0442 \u0442\u0435\u0439\u043a-\u043f\u0440\u043e\u0444\u0438\u0442\u0430\u00bb. \u0410 \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0434\u0435\u043b\u044c\u043a\u0430-\u043c\u0443\u0434\u043c\u0430\u0437\u0435\u043b\u044c\u043a\u0430 \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u043e\u0442\u0432\u0435\u0442 \u0434\u0430\u0451\u0442: \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043c\u0435\u0442\u043a\u043e\u0439 \u00aby\u00bb, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0442\u043e\u043c \u0443\u0447\u0438\u0442\u0441\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 (\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f). \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430.def trend_score_from_emas(df: pl.DataFrame) -&gt; pl.DataFrame: # 1) \u0424\u043b\u0430\u0433\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 EMA: +1 \/ -1 \/ 0 df = df.with_columns([ pl.when((pl.col(\u201cema_20\u201d) &gt; pl.col(\u201cema_50\u201d)) &amp; (pl.col(\u201cema_50\u201d) &gt; pl.col(\u201cema_200\u201d))).then(1.0) .when((pl.col(\u201cema_20\u201d) &lt; pl.col(\u201cema_50\u201d)) &amp; (pl.col(\u201cema_50\u201d) &lt; pl.col(\u201cema_200\u201d))).then(-1.0) .otherwise(0.0).alias(\u201cema_stack\u201d) ])# 2) \u041d\u0430\u043a\u043b\u043e\u043d EMA50 \u0437\u0430 3 \u0431\u0430\u0440\u0430. # \u0414\u0435\u043b\u044e \u043d\u0430 \u0441\u0430\u043c\u0443 EMA50, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0446\u0435\u043d\u044b, \u0430 \u043d\u0435 \u0432 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u0435.# \u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u043d\u043e\u043b\u044c \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430, \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u044e \u043a\u0430\u043a \u0441\u043f\u043e\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b \u043c\u043d\u0435 \u043d\u0443\u043b\u0438, \u044f \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442slope_raw = (pl.col(&#171;ema_50&#187;) &#8212; pl.col(&#171;ema_50&#187;).shift(3))denom = pl.when(pl.col(&#171;ema_50&#187;).shift(3).abs() &lt; 1e-12)\\          .then(1e-12)\\          .otherwise(pl.col(&#171;ema_50&#187;).shift(3))df = df.with_columns([(slope_raw \/ denom).alias(&#171;ema50_slope3&#187;)])# 3) \u0417\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043d\u0430\u043a\u043b\u043e\u043d \u0432 \u043e\u043a\u043d\u043e \u00b12% \u0438 \u043d\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u043a [-1; +1]# 2% \u0437\u0430 3 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u0438 \u0447\u0430\u0441\u0430 \u0435\u0441\u043b\u0438 \u0440\u0435\u0437\u043a\u043e\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435df = df.with_columns([    (_clip(pl.col(&#171;ema50_slope3&#187;), -0.02, 0.02) \/ 0.02).alias(&#171;ema50_slope3_n&#187;)])# 4) \u0421\u0432\u043e\u0434\u043d\u044b\u0439 \u0431\u0430\u043b\u043b: 70% \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 EMA + 30% \u043d\u0430\u043a\u043b\u043e\u043d. # \u0417\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u0432 [-1; +1] \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u043b\u0435\u0437\u0442\u0438 \u043a\u0440\u0438\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044fdf = df.with_columns([    _clip(0.7 * pl.col(&#171;ema_stack&#187;) + 0.3 * pl.col(&#171;ema50_slope3_n&#187;), -1.0, 1.0)    .alias(&#171;trend_score&#187;)])return dfp.s \u043f\u0440\u043e\u0441\u0442\u0438\u0442\u0435, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043c\u043e\u0434\u0435\u0440\u0430\u0442\u043e\u0440\u044b, \u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u0438\u0442\u044c\u2026vol_regime: low\/mid\/high-\u0440\u0435\u0436\u0438\u043c \u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u043e ATR. \u0422\u0438\u043f\u0430, \u0447\u0442\u043e \u0441 \u0440\u044b\u043d\u043a\u043e\u043c? \u00ab\u041e\u043d \u0441\u043f\u0438\u0442?\u0423\u043c\u0435\u0440? \u0411\u043e\u0434\u0440 \u0438 \u0441\u0432\u0435\u0436?\u00bbsqueeze play- \u0444\u043b\u0430\u0433 \u0441\u0436\u0430\u0442\u0438\u044f \u0411\u043e\u043b\u043b\u0438\u043d\u0434\u0436\u0435\u0440\u0430. \u0423\u0437\u043a\u0438\u0435 BB \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0440\u0435\u0437\u043a\u043e\u043c\u0443 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044e.ange_index- \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u043e\u0442\u043b\u0438\u0447\u0438\u0442\u044c \u0442\u0440\u0435\u043d\u0434 \u043e\u0442 \u0444\u043b\u044d\u0442 (\u0431\u043e\u043a\u043e\u0432\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f).\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043c\u043b\u0430\u0434\u0448\u0435\u0433\u043e \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u0430 15m \u043f\u043e\u0434\u043c\u0435\u0448\u0438\u0432\u0430\u044e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 trend_score_4h (\u0442.\u0435 \u0442\u0440\u0435\u043d\u0434 4-\u0447\u0430\u0441\u043e\u0432\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u0430). \u0414\u0435\u043b\u0430\u044e \u044d\u0442\u043e \u0447\u0435\u0440\u0435\u0437 numpy.searchsorted- \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u0435\u0435, \u0447\u0435\u043c join_asof \u0438\u0437 Polars. \u0422\u0430\u043a, \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u0438\u0434\u0438\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0441\u0442\u0430\u0440\u0448\u0435\u0433\u043e \u0422\u0424, \u043d\u0435 \u0442\u0435\u0440\u044f\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438.Volume Profile &#8212; \u044d\u0442\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043e\u0431\u044a\u0451\u043c\u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0441\u0432\u0435\u0447\u043d\u043e\u0439 \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u044a\u0451\u043c\u0430 \u043f\u043e \u0443\u0440\u043e\u0432\u043d\u044f\u043c \u0446\u0435\u043d\u044b. \u0421\u0447\u0438\u0442\u0430\u044e \u0435\u0433\u043e \u043f\u043e 90-\u0434\u043d\u0435\u0432\u043d\u043e\u043c\u0443 \u043e\u043a\u043d\u0443, \u043d\u0430\u0445\u043e\u0436\u0443 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0441 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u044a\u0451\u043c\u043e\u043c \u0438 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d, \u0433\u0434\u0435 \u043f\u0440\u043e\u0448\u043b\u043e 70% \u0442\u043e\u0440\u0433\u043e\u0432. \u0413\u0440\u0430\u043d\u0438\u0446\u044b \u044d\u0442\u043e\u0433\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u2014 \u0432\u0432\u0435\u0440\u0445 \u0438 \u0432\u043d\u0438\u0437. \u0417\u0430\u0442\u0435\u043c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0432\u0435\u0447\u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u0438 \u0434\u043e \u044d\u0442\u0438\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0432 \u0435\u0434\u0438\u043d\u0438\u0446\u0430\u0445 ATR -\u044d\u0442\u043e \u043f\u043e\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438 \u043a\u0430\u043a \u0444\u0438\u0447\u0430, \u0438 \u043a\u0430\u043a \u0444\u0438\u043b\u044c\u0442\u0440 \u043f\u0440\u043e\u0442\u0438\u0432 \u0432\u0445\u043e\u0434\u0430 \u00ab\u0432 \u0441\u0442\u0435\u043d\u0443\u00bb.\u0426\u0435\u043b\u044c-\u043c\u0435\u0447\u0442\u0430!\u0418\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0434\u0435\u0441\u044f\u0442\u043a\u0430 \u043f\u0430\u0440 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u0430\u0445. \u0425\u043e\u0442\u0435\u043b \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u0432\u0435\u0436\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438\u0437 \u0431\u0438\u0440\u0436\u0438 \u0438 \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e\u00a0\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u0442\u044c \u2014 \u0440\u0443\u0447\u043d\u043e\u0439 \u0442\u0440\u0443\u0434 \u043d\u0435 \u043f\u0440\u0438\u043d\u043e\u0441\u0438\u043b \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430, \u0431\u044b\u043b\u0430 \u0443\u0441\u0442\u0430\u043b\u043e\u0441\u0442\u044c. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u0440\u0438\u0448\u043b\u0430 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u0438\u0434\u0435\u044f, \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0441 \u0431\u0438\u0440\u0436\u0438 \u0438 \u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0432 Telegram? \u0422\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0432\u0438\u0434\u0435\u0442\u044c, \u0432 \u043a\u0430\u043a\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0441\u0442\u043e\u0301\u0438\u0442 \u0437\u0430\u0445\u043e\u0434\u0438\u0442\u044c, \u0438 \u0438\u0433\u0440\u0430\u0442\u044c \u043d\u0430 \u0440\u044b\u043d\u043a\u0435 \u0431\u043e\u043b\u0435\u0435 \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u043e.\u0427\u0442\u043e \u0432 \u0438\u0442\u043e\u0433\u0435 \u0443\u043c\u0435\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0430:24\/7 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u0440\u044b\u043d\u043e\u043a \u043f\u043e WebSocket (\u044d\u0442\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0438\u0440\u0436\u0430 \u0441\u0430\u043c\u0430 \u0448\u043b\u0451\u0442 \u0441\u0432\u0435\u0436\u0438\u0435 \u0441\u0432\u0435\u0447\u0438) \u0438 \u0434\u043e\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u043e REST (\u043e\u0434\u0438\u043d\u043e\u0447\u043d\u044b\u0435 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0434\u043b\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445).\u0421\u0430\u043c\u0430 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0444\u0438\u0447\u0438 (EMA, RSI, MACD, ATR, BB, ADX, OBV, trend_score, \u0440\u0435\u0436\u0438\u043c \u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438). \u0412\u044b\u0448\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043b, \u0447\u0442\u043e \u044d\u0442\u043e.\u041e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0432\u0432\u0435\u0440\u0445\/\u0432\u043d\u0438\u0437 \u043d\u0430 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0435 H \u0431\u0430\u0440\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 &#8212; LightGBM (\u044d\u0442\u043e \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u044b\u0439 \u0431\u0443\u0441\u0442\u0438\u043d\u0433, \u0448\u0442\u0443\u043a\u0430 \u043f\u043e\u0441\u0435\u0440\u044c\u0451\u0437\u043d\u0435\u0435) \u0438\u043b\u0438 \u043b\u043e\u0433\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f + \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u043d\u0430\u044f \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430 (\u043f\u043e\u043f\u0440\u043e\u0449\u0435, \u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435).\u041d\u0435 \u043b\u0435\u0437\u0435\u0442 \u0432 \u043a\u0430\u0436\u0434\u043e\u0435 \u0448\u0435\u0432\u0435\u043b\u0435\u043d\u0438\u0435: \u0435\u0441\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u044b (TrendAlign, SR-guard, Flip-guard, Volume Profile, \u043a\u0443\u043b\u0434\u0430\u0443\u043d, Freeze \u043d\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u044f\u0445\/\u043c\u0430\u043a\u0440\u043e). \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u0436\u0435.\u0428\u043b\u0451\u0442 \u0432 Telegram \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u0443\u0440\u043e\u0432\u043d\u0438 SL\/TP \u0438 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u044b \u0432\u0441\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u0421\u0447\u0438\u0442\u0430\u0435\u0442 ex-post \u043f\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432-winrate (\u0434\u043e\u043b\u044f \u043f\u0440\u0438\u0431\u044b\u043b\u044c\u043d\u044b\u0445), RR (risk\/reward, \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0431\u044b\u043b\u0438 \u043a \u0440\u0438\u0441\u043a\u0443), \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435. \u0427\u0442\u043e\u0431\u044b \u044f \u043c\u043e\u0433 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043d\u0435 \u0432\u0440\u0451\u0442 \u043b\u0438 \u043c\u043e\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u0441\u0435\u0431\u0435. \u0410 \u0442\u0430\u043a\u043e\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0431\u044b\u0432\u0430\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u0434\u0432\u0438\u0436\u043e\u043a \u00ab\u0432 \u043c\u043e\u043c\u0435\u043d\u0442\u0435\u00bb \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0445\u043e\u0440\u043e\u0448\u043e, \u0430 \u043d\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0441\u043b\u0438\u0432\u0430\u0435\u0442.\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0435\u0441\u0442\u044c Advisor- \u044d\u0442\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044c\/\u0441\u0442\u0440\u0430\u0436, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437 \u0432 N \u043c\u0438\u043d\u0443\u0442 \u0441\u043a\u0430\u043d\u0438\u0440\u0443\u0435\u0442 4h\/1d \u0438 \u0438\u0449\u0435\u0442 \u0441\u0440\u0435\u0434\u043d\u0435\u0441\u0440\u043e\u0447\u043d\u044b\u0435 \u0441\u0432\u0438\u043d\u0433\u0438 (\u0442\u0440\u0435\u043d\u0434 1d + swing 4h + \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0441\u0442\u044c \u043e\u0442 SR + \u0431\u0440\u0435\u0439\u043a\u0430\u0443\u0442). \u041f\u0440\u043e \u043d\u0435\u0433\u043e \u0442\u043e\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e. \u0418 \u0432\u0441\u0451 \u044d\u0442\u043e \u0438\u0437 \u043e\u0434\u043d\u043e\u0439 \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u043d\u0430 Streamlit \u043c\u043d\u0435 \u0431\u044b\u043b\u043e \u043b\u0435\u043d\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043b\u0430\u0437\u0438\u0442\u044c \u0432 YAML-\u043a\u043e\u043d\u0444\u0438\u0433 \u0438 \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c CLI-\u043a\u043e\u043c\u0430\u043d\u0434\u044b.\u0421\u0442\u0435\u043a Python 3.11, asyncio (\u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u043a\u043e\u0434, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0441 \u0431\u0438\u0440\u0436\u0438 \u0431\u0435\u0437 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a). Polars + PyArrow, \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e, \u0447\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0434\u0430\u0442\u0430\u0444\u0440\u0435\u0439\u043c\u043e\u0432 \u0438 parquet-\u0444\u0430\u0439\u043b\u043e\u0432.aiohttp + websockets + tenacity, \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u0431\u0438\u0440\u0436\u0435\u0439 (HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b, WebSocket-\u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044b \u043f\u0440\u0438 \u0441\u0431\u043e\u044f\u0445).scikit-learn + LightGBM-\u043c\u043e\u0434\u0435\u043b\u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f.Pydantic v2 + YAML \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f. YAML &#8212; \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438, Pydantic \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u0432\u0441\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430.Streamlit- \u0434\u043b\u044f \u0432\u0435\u0431-\u0430\u0434\u043c\u0438\u043d\u043a\u0438 (\u0431\u0435\u0437 \u043d\u0435\u0451 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u0432\u0441\u0451 \u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u044c, \u0447\u0442\u043e \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u043d\u043e).Prometheus client \u043c\u0435\u0442\u0440\u0438\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u0432\u0438\u0434\u0435\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430.\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043a\u0430\u043a \u0442\u0430\u043a\u043e\u0432\u043e\u0433\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u0441\u0442\u0430\u043b \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u0441\u0451 \u043b\u0435\u0436\u0438\u0442 \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 parquet. \u041c\u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442.\u042f\u0434\u0440\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u044b\u041d\u0438\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0431\u043b\u043e\u043a-\u0441\u0445\u0435\u043c\u0430. \u041e\u043d\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0430 \u043d\u0430 \u0442\u0440\u0438 \u0447\u0430\u0441\u0442\u0438.\u00a0\u0411\u043e\u043b\u044c\u0448\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043d\u0435 \u0432\u043c\u0435\u0449\u0430\u043b\u0430\u0441\u044c \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c (\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0441\u0436\u0438\u043c\u0430\u0442\u044c, \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u0438 \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u0438). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0434\u0451\u043c \u043f\u043e \u044d\u0442\u0430\u043f\u0430\u043c.\u0427\u0430\u0441\u0442\u044c 1. \u0421\u0431\u043e\u0440 \u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e \u0441\u0445\u0435\u043c\u0435:\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0438\u0440\u0436\u0438. \u0421\u0432\u0435\u0447\u0438 15-\u043c\u0438\u043d\u0443\u0442\u043d\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0434\u0432\u0443\u043c\u044f \u043f\u0443\u0442\u044f\u043c\u0438: \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e WebSocket \u0438 \u0432 \u0432\u0438\u0434\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 REST API. \u0421\u043b\u043e\u0439 \u0438\u043d\u0433\u0435\u0441\u0442\u0430 (ws.py+ history.py) \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0438\u0445, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043d\u0430 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u043e\u0441\u0442\u044c. \u0412\u0441\u0451 \u043e\u043a \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c, \u043d\u0435 \u043e\u043a \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u043c.\u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435.\u0412\u0441\u0435 \u0441\u0432\u0435\u0447\u0438 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u00abpartitioned parquet\u00bb \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u043f\u043e \u043f\u0430\u043f\u043a\u0430\u043c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0438\u0441\u043a \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043a\u0443\u0441\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u044b\u043b \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u044b\u043c. \u0420\u0430\u0437\u0431\u0438\u0432\u043a\u0430 \u043f\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0443, \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u0443 \u0438 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 (spot\/linear). \u0414\u0430\u0451\u0442 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0438 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435. \u0418\u043d\u043e\u0433\u0434\u0430 \u0434\u0443\u043c\u0430\u0435\u0448\u044c, \u043d\u0430\u0434\u043e \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0431\u0430\u0437\u0443.\u0420\u0435\u0441\u0435\u043c\u043f\u043b\u0435\u0440.\u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 15-\u043c\u0438\u043d\u0443\u0442\u043e\u043a \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0441\u0442\u0430\u0440\u0448\u0438\u0435 \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u044b: 30m, 1h, 4h \u0438 1d. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u043a\u0430\u0447\u0435\u043a \u2014 \u0432\u0441\u0451 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0422\u0424. \u042d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u0443 \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u0430\u043c\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u044b. \u0414\u0440\u0443\u0433\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b (\u0437\u0430\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0422\u0424 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e) \u044f \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u0434\u0430\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0431\u0430\u0440\u0430\u043c.\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0434\u0435\u0440\u0438\u0432\u0430\u0442\u0438\u0432\u043e\u0432. \u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0442\u044f\u043d\u0443\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u0431\u0438\u0440\u0436\u0438 v5: \u0441\u0442\u0430\u0432\u043a\u0430 \u0444\u0438\u043d\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (funding rate \u043a\u043e\u043c\u0438\u0441\u0441\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043b\u043e\u043d\u0433\u0438 \u043f\u043b\u0430\u0442\u044f\u0442 \u0448\u043e\u0440\u0442\u0430\u043c \u0438\u043b\u0438, \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442), \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 (OI &#8212; \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0441\u0435\u0433\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u0439) \u0438 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438 (\u043a\u043e\u0433\u0434\u0430 \u0447\u044c\u0438-\u0442\u043e \u043f\u043e\u0437\u044b \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0442). \u0412\u0441\u0451 \u044d\u0442\u043e \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u044d\u0448 cache\/context.Volume Profile. \u041f\u043e 90-\u0434\u043d\u0435\u0432\u043d\u043e\u043c\u0443 \u043e\u043a\u043d\u0443 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043e\u0431\u044a\u0451\u043c\u0430 \u2014 \u0443\u0440\u043e\u0432\u043d\u0438. \u0412\u0432\u0435\u0440\u0445, \u0432\u043d\u0438\u0437 \u0438 \u0442\u043e\u0447\u043a\u0430 \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u043e\u0431\u044a\u0451\u043c\u0430. \u042d\u0442\u0438 \u0443\u0440\u043e\u0432\u043d\u0438 \u043f\u043e\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0438 \u0432 \u0444\u0438\u0447\u0430\u0445, \u0438 \u0432 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0445 \u0434\u0432\u0438\u0436\u043a\u0430.\u0420\u0430\u0441\u0447\u0451\u0442 \u0444\u0438\u0447.\u041d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u0435 \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b (EMA, MACD, BB, ATR, RSI, ADX, OBV), \u0440\u0435\u0436\u0438\u043c\u044b \u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0444\u043b\u0430\u0433\u0438 \u0441\u0436\u0430\u0442\u0438\u044f \u0411\u043e\u043b\u043b\u0438\u043d\u0434\u0436\u0435\u0440\u0430, trend_score. \u0421\u044e\u0434\u0430 \u0436\u0435 \u043f\u043e\u0434\u043c\u0435\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0434\u0435\u0440\u0438\u0432\u0430\u0442\u0438\u0432\u043e\u0432 \u0438 \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u0438 \u0434\u043e VP-\u0443\u0440\u043e\u0432\u043d\u0435\u0439. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u2014 \u0435\u0434\u0438\u043d\u044b\u0439 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0444\u0438\u0447 \u0432 cache\/features.\u0412\u044b\u0432\u043e\u0434 \u044d\u0442\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430: \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0432\u0435\u0447\u0438, \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0430 \u0441 30+ \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430\u043c\u0438, \u0433\u043e\u0442\u043e\u0432\u0430\u044f \u043a ML.\u041a\u0441\u0442\u0430\u0442\u0438, \u0438\u043d\u0433\u0435\u0441\u0442 \u0434\u0430\u043d\u043d\u044b\u0445, \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0435 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0441\u044f \u0441 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043c, \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0431\u043e\u0440\u0430, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f. \u041c\u043e\u0436\u043d\u043e \u0434\u0443\u043c\u0430\u0442\u044c \u043e \u043d\u0451\u043c \u043a\u0430\u043a \u043e \u00ab\u043f\u0440\u0438\u0451\u043c\u043a\u0430 \u0442\u043e\u0432\u0430\u0440\u0430 \u043d\u0430 \u0441\u043a\u043b\u0430\u0434\u00bb \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438, \u0441\u0432\u0435\u0440\u0438\u043b\u0438, \u0447\u0442\u043e \u043d\u0435 \u0431\u0438\u0442\u044b\u0439, \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u043b\u0438 \u043f\u043e \u043f\u043e\u043b\u043a\u0430\u043c, \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.\u0427\u0430\u0441\u0442\u044c 2. \u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0434\u0432\u0438\u0436\u043e\u043a \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0439\u041b\u0435\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u2014 \u0441\u0445\u0435\u043c\u044b-\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438. \u0421\u0445\u0435\u043c\u0430 \u0431\u044b\u043b\u0430 \u0431\u043e\u043b\u044c\u0448\u0430\u044f, \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u0432\u0441\u0451 \u0440\u0430\u0437\u0431\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0431\u043b\u043e\u043a\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. \u041e\u0447\u0435\u043d\u044c \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c.\u0421\u0431\u043e\u0440\u043a\u0430 ML-\u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u0418\u0437 \u043a\u044d\u0448\u0430 \u0444\u0438\u0447&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-484590","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/484590","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=484590"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/484590\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=484590"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=484590"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=484590"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}