{"id":399247,"date":"2024-06-29T14:33:54","date_gmt":"2024-06-29T14:33:54","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=399247"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2024-06-29T14:33:54","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=399247","title":{"rendered":"<span>\u041f\u0438\u0448\u0435\u043c \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e\u00a0\u0431\u043e\u0442\u0430 \u0434\u043b\u044f \u0430\u043a\u0446\u0438\u0439<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438\u00a0\u2014 \u0412\u0410\u0416\u041d\u041e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435: \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u043a\u00a0\u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u0442\u044c \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u043c\u0438 \u0430\u043a\u0446\u0438\u044f\u043c\u0438 \u0438\u043b\u0438\u00a0\u0437\u0430\u0440\u0443\u0431\u0435\u0436\u043d\u044b\u043c\u0438 \u0430\u043a\u0446\u0438\u044f\u043c\u0438. \u0412\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e\u00a0\u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u0431\u043e\u0442\u0430, \u0432\u044b\u00a0\u043b\u0438\u0447\u043d\u043e \u043d\u0435\u0441\u0435\u0442\u0435 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u00a0\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u0435 \u0438\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0438\u043d\u0432\u0435\u0441\u0442\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u00a0\u043d\u0438\u043c\u0438 \u0440\u0438\u0441\u043a\u0438. \u042f \u043d\u0435\u00a0\u043d\u0435\u0441\u0443 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u00a0\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430. \u0418 \u044f \u043d\u0435\u00a0\u0434\u0430\u044e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0438\u043d\u0432\u0435\u0441\u0442\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439 \u0438\u043b\u0438\u00a0\u0441\u043e\u0432\u0435\u0442\u043e\u0432. \u041d\u0435\u00a0\u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435, \u0447\u0442\u043e\u00a0\u0431\u043e\u0442\u044b \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b \u043f\u0440\u0438\u043d\u0435\u0441\u0442\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0443\u0431\u044b\u0442\u043a\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0438\u0445 \u0441\u00a0\u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e.<\/p>\n<h3>\u041f\u0430\u0440\u0443 \u0441\u043b\u043e\u0432 \u043e\u0431\u043e \u043c\u043d\u0435<\/h3>\n<p>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f\u00a0\u043c\u0435\u043d\u044f \u044d\u0442\u043e \u0445\u043e\u0431\u0431\u0438 \u0438 \u043b\u044e\u0431\u0438\u043c\u043e\u0435 \u0434\u0435\u043b\u043e. \u0410\u00a0\u0442\u0430\u043a \u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0448\u0443 \u043d\u0435\u00a0\u043e\u0441\u043e\u0431\u043e \u0440\u0443\u0433\u0430\u0442\u044c \u0437\u0430\u00a0\u043a\u043e\u0434:\u2011)<\/p>\n<h2>\u0412\u044b\u0431\u043e\u0440 \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a<\/h2>\n<p>\u041a\u0430\u043a\u00a0\u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435, \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u043c\u043d\u043e\u0433\u043e))) \u043d\u043e\u00a0\u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0442\u0435, \u0443\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c API\u00a0\u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0448 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u0440\u043e\u0431\u043e\u0442 \u0441\u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u0430\u044f\u0432\u043a\u0438 \u043d\u0430\u00a0\u043f\u043e\u043a\u0443\u043f\u043a\u0443 \u0438 \u043f\u0440\u043e\u0434\u0430\u0436\u0443 \u0430\u043a\u0446\u0438\u0439.<\/p>\n<p>\u0412\u00a0\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0420\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u0434\u043b\u044f\u00a0\u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0438 \u0420\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u043c\u0438 \u0430\u043a\u0446\u0438\u044f\u043c\u0438, \u0435\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c\u0438 \u0430\u043a\u0446\u0438\u044f\u043c\u0438\u00a0\u2014 \u0442\u043e \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043d\u0438\u0445\u00a0\u0436\u0435\u00a0\u2014 \u0447\u0435\u0440\u0435\u0437 \u0421\u041f\u0411 \u0431\u0438\u0440\u0436\u0443. (\u043a\u043e\u0434 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430 \u043d\u0435\u00a0\u043f\u043e\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f\u00a0\u2014 \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u0438\u043a\u0435\u0440\u0430\u00a0\u2014 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0431\u0443\u043c\u0430\u0433\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u0442\u044c).<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0432\u0430\u0441 \u0434\u043e\u043b\u0433\u043e \u043d\u0435\u00a0\u043c\u0443\u0447\u0430\u0442\u044c \u0441\u00a0\u0432\u044b\u0431\u043e\u0440\u043e\u043c \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0434\u043b\u044f\u00a0\u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0431\u043e\u0442\u0430, \u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043c\u043e\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043f\u043e\u0441\u043b\u0435 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u043f\u043e\u00a0\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0445 \u0431\u043e\u0442\u043e\u0432, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u0432\u00a0live \u0440\u0435\u0436\u0438\u043c\u0435\u00a0\u2014 \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0442\u043e\u0440\u0433\u0443\u044e\u0449\u0438\u0445 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u043c\u0438 \u0430\u043a\u0446\u0438\u044f\u043c\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4ac\/8ba\/e29\/4ac8bae29e16fb3fd7715c2a24f81473.png\" alt=\"\u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0434\u0435\u043b\u043e\u043a \u0437\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f, \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c H1\" title=\"\u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0434\u0435\u043b\u043e\u043a \u0437\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f, \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c H1\" width=\"1930\" height=\"441\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4ac\/8ba\/e29\/4ac8bae29e16fb3fd7715c2a24f81473.png\"\/><\/p>\n<div><figcaption>\u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0434\u0435\u043b\u043e\u043a \u0437\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f, \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c H1<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0443\u0436\u043d\u044b\u0439 \u0438 \u0432\u0430\u0436\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0432\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0431\u043e\u0442\u0430\u00a0\u2014 \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u043d\u0430\u00a0\u0438\u0441\u0442\u043e\u0440\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"https:\/\/github.com\/WISEPLAT\/backtrader\" rel=\"noopener noreferrer nofollow\">BackTrader<\/a>.<\/p>\n<p>\u0418\u0442\u0430\u043a \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c! )))<\/p>\n<p><strong>1\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442<\/strong>\u00a0\u2014 \u0435\u0441\u043b\u0438 \u043e\u0447\u0435\u043d\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u0440\u043e\u0431\u043e\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 \u043b\u044e\u0431\u043e\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u00a0\u2014 \u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0435\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"https:\/\/github.com\/WISEPLAT\/QuikPy\" rel=\"noopener noreferrer nofollow\">QuikPy <\/a>\u0432\u00a0\u0441\u0432\u044f\u0437\u043a\u0435 \u0441\u00a0\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 <a href=\"https:\/\/github.com\/WISEPLAT\/BackTraderQuik\" rel=\"noopener noreferrer nofollow\">BackTraderQuik<\/a>\u00a0\u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0434\u0432\u0443\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u0448\u0435\u043c\u0443 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u043c\u0443 \u0440\u043e\u0431\u043e\u0442\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u00a0\u043b\u044e\u0431\u044b\u043c \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u043c, \u0443\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u043c \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b <strong>Quik<\/strong>. \u0410\u00a0\u044d\u0442\u043e\u0442 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0435\u0441\u0442\u044c \u0443\u00a0\u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432. <\/p>\n<blockquote>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043a\u0430\u043a \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044f \u043c\u043e\u0433\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u043f\u0440\u043e\u0441\u0442\u043e \u0433\u043e\u043b\u043e\u0441\u0443\u0439\u0442\u0435 \u0437\u0430 \u044d\u0442\u043e! )))<\/p>\n<\/blockquote>\n<p>\u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043f\u043e \u044d\u0442\u043e\u0439 \u0441\u0432\u044f\u0437\u043a\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0432\u0430\u0441 \u0432\u044b\u043b\u043e\u0436\u0438\u043b <a href=\"https:\/\/github.com\/WISEPLAT\/Learn-BackTrader\" rel=\"noopener noreferrer nofollow\">\u0432\u043e\u0442 \u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p><strong>2\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442<\/strong>\u00a0\u2014 \u043e\u043d \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u00a0\u0432\u044b\u0431\u043e\u0440\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432, \u043d\u043e\u00a0\u0434\u0430\u0451\u0442 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0441\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 API \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432, \u0438 \u043e\u043d\u0438!! \u0437\u0430\u043c\u0435\u0442\u044c\u0442\u0435\u00a0\u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u043a\u043e\u0441\u044f\u043a\u0438) \u0438 <strong>\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u00a0\u2014 \u044d\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u043b\u044e\u0441!<\/strong><\/p>\n<p>\u0414\u043b\u044f\u00a0\u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0424\u0438\u043d\u0430\u043c\u00a0\u2014 API \u0435\u0449\u0435 \u0432\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 ))) \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <a href=\"https:\/\/github.com\/WISEPLAT\/FinamPy\" rel=\"noopener noreferrer nofollow\">FinamPy<\/a> + <a href=\"https:\/\/github.com\/WISEPLAT\/BackTraderFinam\" rel=\"noopener noreferrer nofollow\">BackTraderFinam<\/a>  <\/p>\n<p>\u0414\u043b\u044f\u00a0\u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0422\u0438\u043d\u044c\u043a\u043e\u0444\u0444\u00a0\u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/github.com\/WISEPLAT\/BackTraderTinkoff\" rel=\"noopener noreferrer nofollow\">BackTraderTinkoff<\/a> <br \/>* \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043a\u043e\u0434\u0430 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b \u0432\u00a0\u0438\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438\u00a0\u2014 <a href=\"https:\/\/github.com\/Tinkoff\/invest-python\/blob\/main\/examples\/wiseplat_live_strategy_print_ohlcv.py\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438<\/a> \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e API \u0422\u0438\u043d\u044c\u043a\u043e\u0444\u0444<\/p>\n<p>\u0414\u043b\u044f\u00a0\u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0410\u043b\u043e\u0440\u00a0\u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <a href=\"https:\/\/github.com\/WISEPLAT\/AlorPy\" rel=\"noopener noreferrer nofollow\">AlorPy<\/a> \u0438 <a href=\"https:\/\/github.com\/WISEPLAT\/BackTraderAlor\" rel=\"noopener noreferrer nofollow\">BackTraderAlor<\/a>  <\/p>\n<p>\u041e\u0424\u0424\u0422\u041e\u041f\u0418\u041a: \u0415\u0441\u043b\u0438 \u043a\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u00a0\u043a\u0440\u0438\u043f\u0442\u043e\u0431\u0438\u0440\u0436\u0435\u00a0\u2014 \u0442\u043e \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u0432\u043e\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"https:\/\/github.com\/WISEPLAT\/backtrader_binance\" rel=\"noopener noreferrer nofollow\">backtrader_binance<\/a>, \u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0430\u043a\u00a0\u0436\u0435, \u0442.\u00a0\u0435. \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442\u00a0\u0436\u0435 \u043a\u043e\u0434, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f\u00a0\u0440\u0430\u0437\u043d\u044b\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432, \u0432\u043e\u0442 \u043f\u0440\u043e <a href=\"https:\/\/habr.com\/ru\/articles\/729036\/\" rel=\"noopener noreferrer nofollow\">\u043d\u0435\u0435 \u0441\u0442\u0430\u0442\u044c\u044f<\/a>.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u00a0\u2014 \u0410\u043b\u043e\u0440. )) \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043a\u0430\u043a\u00a0\u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430 \u0434\u043b\u044f\u00a0\u0424\u0438\u043d\u0430\u043c \u0438\u043b\u0438\u00a0\u0422\u0438\u043d\u044c\u043a\u043e\u0444\u0444\u00a0\u2014 \u043a\u0430\u043a\u00a0\u044d\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044f \u043c\u043e\u0433\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u043f\u0440\u043e\u0441\u0442\u043e \u0433\u043e\u043b\u043e\u0441\u0443\u0439\u0442\u0435 \u0437\u0430\u00a0\u044d\u0442\u043e! )))<\/p>\n<h2>\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0431\u043e\u0442\u0430<\/h2>\n<h3>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f<\/h3>\n<ol>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e\u00a0<a href=\"https:\/\/www.python.org\/downloads\/\" rel=\"noopener noreferrer nofollow\">Python 3.11<\/a>;<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u0440\u0435\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\u00a0<a href=\"https:\/\/www.jetbrains.com\/pycharm\/download\/#section=windows\" rel=\"noopener noreferrer nofollow\">PyCharm Community 2023.1<\/a>;<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c PyCharm Community;<\/p>\n<\/li>\n<li>\n<p>\u0412 \u043d\u0451\u043c \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0435\u0433\u043e \u043d\u0430\u0437\u043e\u0432\u0451\u043c\u00a0<strong>alor_trade_robot<\/strong>\u00a0\u0438 \u0443\u043a\u0430\u0436\u0435\u043c \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435\u00a0<strong>Virtualenv<\/strong>, \u0441 Python 3.11 => \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c &#171;Create&#187;;<\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/25e\/7c2\/428\/25e7c24286057b8ec6cd65ade3525431.png\" alt=\"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043b\u044f \u0430\u043b\u0433\u043e-\u0442\u0440\u0435\u0439\u0434\u0438\u043d\u0433\u0430\" title=\"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043b\u044f \u0430\u043b\u0433\u043e-\u0442\u0440\u0435\u0439\u0434\u0438\u043d\u0433\u0430\" width=\"1194\" height=\"984\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/25e\/7c2\/428\/25e7c24286057b8ec6cd65ade3525431.png\"\/><\/p>\n<div><figcaption>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043b\u044f \u0430\u043b\u0433\u043e-\u0442\u0440\u0435\u0439\u0434\u0438\u043d\u0433\u0430<\/figcaption><\/div>\n<\/figure>\n<ol start=\"5\">\n<li>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u043e\u0437\u0434\u0430\u043b\u0441\u044f \u0438 \u0432 \u043d\u0451\u043c \u0441\u043e\u0437\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435, \u043c\u044b \u0441\u0442\u0430\u043b\u0438 \u0433\u043e\u0442\u043e\u0432\u044b \u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a))) \u041a\u043b\u0438\u043a\u0430\u0435\u043c \u0432\u043d\u0438\u0437\u0443 \u0441\u043b\u0435\u0432\u0430 \u043d\u0430 &#171;Terminal&#187; \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u0431\u0443\u0434\u0435\u043c \u0432\u0432\u043e\u0434\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a;  <\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ea8\/76f\/7a2\/ea876f7a20e7af81e6a7e235f1bd7709.png\" alt=\"\u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u043f\u0440\u043e\u0435\u043a\u0442\u0430  \" title=\"\u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u043f\u0440\u043e\u0435\u043a\u0442\u0430  \" width=\"2064\" height=\"1180\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ea8\/76f\/7a2\/ea876f7a20e7af81e6a7e235f1bd7709.png\"\/><\/p>\n<div><figcaption>\u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u043f\u0440\u043e\u0435\u043a\u0442\u0430  <\/figcaption><\/div>\n<\/figure>\n<ol start=\"6\">\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438:<\/p>\n<p>\u0412 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0432\u0432\u043e\u0434\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0431\u0440\u043e\u043a\u0435\u0440\u0443 \u0410\u043b\u043e\u0440 \u043f\u043e API:<\/p>\n<p><code>git clone https:\/\/github.com\/WISEPLAT\/AlorPy<\/code><\/p>\n<p>\u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 API \u0410\u043b\u043e\u0440\u0430 \u0441 <a href=\"https:\/\/github.com\/WISEPLAT\/backtrader\" rel=\"noopener noreferrer nofollow\">Backtrader<\/a>:<\/p>\n<p><code>git clone https:\/\/github.com\/WISEPLAT\/BackTraderAlor<\/code> <\/p>\n<p>\u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u0438\u0445 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0439 \u0443 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0434\u0432\u0435 \u043f\u0430\u043f\u043a\u0438 AlorPy \u0438 BackTraderAlor<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f98\/d5f\/f76\/f98d5ff76a9ba8ec713e62dc349ef72b.png\" alt=\"\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 AlorPy \u0438 BackTraderAlor\" title=\"\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 AlorPy \u0438 BackTraderAlor\" width=\"2065\" height=\"1183\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f98\/d5f\/f76\/f98d5ff76a9ba8ec713e62dc349ef72b.png\"\/><\/p>\n<div><figcaption>\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 AlorPy \u0438 BackTraderAlor<\/figcaption><\/div>\n<\/figure>\n<\/li>\n<\/ol>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0445 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0439\u00a0<a href=\"https:\/\/github.com\/WISEPLAT\/backtrader\" rel=\"noopener noreferrer nofollow\">Backtrader<\/a><\/p>\n<p><code>pip install git+https:\/\/github.com\/WISEPLAT\/backtrader.git<\/code><\/p>\n<p>P.S. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u00a0<a href=\"https:\/\/github.com\/WISEPLAT\/backtrader\" rel=\"noopener noreferrer nofollow\">Backtrader<\/a>\u00a0\u0438\u0437 \u043c\u043e\u0435\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f (\u0442\u0430\u043a \u043a\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0432 \u043d\u0435\u043c \u0441\u0432\u043e\u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u044b).<\/p>\n<p>\u0418 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c<\/p>\n<p><code>pip install requests pytz websockets matplotlib<\/code>  <\/p>\n<h3>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438<\/h3>\n<p>\u0427\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043b\u0435\u0433\u0447\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u0438\u043c\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0438, \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0432\u043d\u0443\u0442\u0440\u0438 \u044d\u0442\u0438\u0445 \u043f\u0430\u043f\u043e\u043a\u00a0<strong>AlorPy<\/strong>\u00a0\u0438\u00a0<strong>BackTraderAlor<\/strong>.<\/p>\n<p>\u041d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0434\u0432\u0430 \u0444\u0430\u0439\u043b\u0430 <strong>02 &#8212; Symbols.py<\/strong> \u0438 <strong>Strategy.py<\/strong> \u0438\u0437 \u043f\u0430\u043f\u043a\u0438 BackTraderAlor\\DataExamples<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c4a\/309\/f0a\/c4a309f0a18d47b15783ea691e30198a.png\" alt=\"02 - Symbols.py \u0438 Strategy.py\" title=\"02 - Symbols.py \u0438 Strategy.py\" width=\"1284\" height=\"1144\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c4a\/309\/f0a\/c4a309f0a18d47b15783ea691e30198a.png\"\/><\/p>\n<div><figcaption><strong>02 &#8212; Symbols.py<\/strong> \u0438 <strong>Strategy.py<\/strong><\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0438\u0445 \u0432 \u043a\u043e\u0440\u0435\u043d\u044c \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2ce\/c8f\/8b1\/2cec8f8b1c6731d19b71e72589e507b0.png\" alt=\"\u043f\u043e\u043c\u0435\u0449\u0430\u0435\u043c \u0444\u0430\u0439\u043b\u044b \u0432 \u043a\u043e\u0440\u0435\u043d\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430\" title=\"\u043f\u043e\u043c\u0435\u0449\u0430\u0435\u043c \u0444\u0430\u0439\u043b\u044b \u0432 \u043a\u043e\u0440\u0435\u043d\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430\" width=\"2047\" height=\"1159\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2ce\/c8f\/8b1\/2cec8f8b1c6731d19b71e72589e507b0.png\"\/><\/p>\n<div><figcaption>\u043f\u043e\u043c\u0435\u0449\u0430\u0435\u043c \u0444\u0430\u0439\u043b\u044b \u0432 \u043a\u043e\u0440\u0435\u043d\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043e\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 AlorPy\\Config.py<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2f3\/abb\/100\/2f3abb100dd86a21fcbef43b844628ae.png\" alt=\"\u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438\" title=\"\u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438\" width=\"667\" height=\"433\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2f3\/abb\/100\/2f3abb100dd86a21fcbef43b844628ae.png\"\/><\/p>\n<div><figcaption>\u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u0415\u0433\u043e \u0442\u043e\u0436\u0435 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0432 \u043a\u043e\u0440\u0435\u043d\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u043f\u0430\u043f\u043a\u0443 <strong>my_config<\/strong>(\u0435\u0451 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c), \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0442\u0430\u043a:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f7b\/b44\/1b6\/f7bb441b6c2bbeaf2cf2f25a394fdb00.png\" alt=\"\u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0432\u043e\u0439 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438\" title=\"\u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0432\u043e\u0439 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438\" width=\"1501\" height=\"726\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f7b\/b44\/1b6\/f7bb441b6c2bbeaf2cf2f25a394fdb00.png\"\/><\/p>\n<div><figcaption>\u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0432\u043e\u0439 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0430 <strong>02\u00a0\u2014 Symbols.py<\/strong>, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e:<\/p>\n<p>1) \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0432\u043e\u0439 <strong>API \u043a\u043b\u044e\u0447 <\/strong>\u0438 \u0432\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u00a0\u043f\u043e\u043b\u0435 RefreshToken;<\/p>\n<p>2) \u0443\u0437\u043d\u0430\u0442\u044c \u0441\u0432\u043e\u0439 <strong>UserName<\/strong> \u0438 \u0432\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u00a0\u043f\u043e\u043b\u0435 UserName;<\/p>\n<p>3) \u0443\u0437\u043d\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u0444\u0435\u043b\u044f \u0434\u043b\u044f\u00a0\u0424\u043e\u043d\u0434\u043e\u0432\u043e\u0433\u043e \u0440\u044b\u043d\u043a\u0430 \u0438 \u0432\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u00a0\u043f\u043e\u043b\u0435 PortfolioStocks<br \/><em>\u2014 \u0447\u0435\u0440\u0435\u0437 \u0444\u0430\u0439\u043b AlorPy\\Examples\\02\u00a0\u2014 Accounts.py\u00a0\u2014 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435;<\/em><\/p>\n<p>4) \u0443\u0437\u043d\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u0444\u0435\u043b\u044f \u0434\u043b\u044f\u00a0\u0421\u0440\u043e\u0447\u043d\u043e\u0433\u043e \u0440\u044b\u043d\u043a\u0430 \u0438 \u0432\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u00a0\u043f\u043e\u043b\u0435 PortfolioFutures<br \/><em>\u2014 \u0447\u0435\u0440\u0435\u0437 \u0444\u0430\u0439\u043b AlorPy\\Examples\\02\u00a0\u2014 Accounts.py\u00a0\u2014 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435;<\/em><\/p>\n<p>5) \u0443\u0437\u043d\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u0444\u0435\u043b\u044f \u0434\u043b\u044f\u00a0\u0412\u0430\u043b\u044e\u0442\u043d\u043e\u0433\u043e \u0440\u044b\u043d\u043a\u0430 \u0438 \u0432\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u00a0\u043f\u043e\u043b\u0435 PortfolioFx<br \/><em>\u2014 \u0447\u0435\u0440\u0435\u0437 \u0444\u0430\u0439\u043b AlorPy\\Examples\\02\u00a0\u2014 Accounts.py\u00a0\u2014 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/em><\/p>\n<p>\u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e, \u0447\u0442\u043e\u00a0\u0432\u0441\u0451 \u044d\u0442\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432\u00a0\u0444\u0430\u0439\u043b\u0435 <strong>my_config\\Config.py<\/strong><\/p>\n<p>\u0418 \u043a\u0430\u043a\u00a0\u0432\u0441\u0435 \u044d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u0442\u0430\u043a\u00a0\u0436\u0435 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u00a0\u044d\u0442\u043e\u043c\u00a0\u0436\u0435 \u0444\u0430\u0439\u043b\u0435.<\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u00a0\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f\u00a0\u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0438 \u043d\u0430\u00a0\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0441\u0447\u0435\u0442\u0435 \u043d\u0430\u00a0\u0444\u043e\u043d\u0434\u043e\u0432\u043e\u043c \u0440\u044b\u043d\u043a\u0435.<\/p>\n<p>\u0422\u0430\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cbf\/293\/586\/cbf2935864f955f6c8c026e29547d81a.png\" width=\"1012\" height=\"537\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cbf\/293\/586\/cbf2935864f955f6c8c026e29547d81a.png\"\/><\/figure>\n<h4>\u041a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u043a\u0435\u043d Refresh Token<\/h4>\n<p>1) <a href=\"https:\/\/www.alorbroker.ru\/open?promo=L0708\" rel=\"noopener noreferrer nofollow\">\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u0447\u0435\u0442 \u0432\u00a0\u0410\u043b\u043e\u0440 <\/a>(\u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e!);<\/p>\n<p>2) \u0414\u043b\u044f\u00a0\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043b\u043e\u0433\u0438\u043d\u0430\/\u043f\u0430\u0440\u043e\u043b\u044f \u0434\u0435\u043c\u043e \u0441\u0447\u0435\u0442\u0430 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u044f\u0432\u043a\u0443 \u0432\u00a0Telegram \u043d\u0430 <a href=\"https:\/\/t.me\/AlorOpenAPI\" rel=\"noopener noreferrer nofollow\">https:\/\/t.me\/AlorOpenAPI<\/a>;<\/p>\n<p>3) \u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 <a href=\"https:\/\/alor.dev\/login\" rel=\"noopener noreferrer nofollow\">https:\/\/alor.dev\/login<\/a>;<\/p>\n<p>4) \u0412\u044b\u0431\u0440\u0430\u0442\u044c \u00ab\u0422\u043e\u043a\u0435\u043d\u044b \u0434\u043b\u044f\u00a0\u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a\u00a0API\u00bb.<\/p>\n<h3>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0410\u043b\u043e\u0440\u0443 \u0447\u0435\u0440\u0435\u0437 API<\/h3>\n<p>\u0412\u00a0\u0444\u0430\u0439\u043b\u0435 <strong>02\u00a0\u2014 Symbols.py <\/strong>\u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 \u0444\u0430\u0439\u043b <strong>my_config\\Config.py <\/strong>\u0434\u043b\u044f\u00a0\u044d\u0442\u043e\u0433\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0438 \u043f\u0440\u0430\u0432\u0438\u043c \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ca1\/4d7\/12f\/ca14d712f315d23b87f58c233bbb7a9b.png\" width=\"1641\" height=\"451\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ca1\/4d7\/12f\/ca14d712f315d23b87f58c233bbb7a9b.png\"\/><\/figure>\n<p>\u043c\u0435\u043d\u044f\u0435\u043c <code>AlorPy.Config<\/code> \u043d\u0430 <code>my_config.Config<\/code> \u0441\u0442\u0430\u043d\u0435\u0442 \u0442\u0430\u043a:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/12c\/ccb\/9d7\/12cccb9d7bf004f9f222d936ab235daf.png\" alt=\"\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433 \u0444\u0430\u0439\u043b\u0430\" title=\"\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433 \u0444\u0430\u0439\u043b\u0430\" width=\"1890\" height=\"811\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/12c\/ccb\/9d7\/12cccb9d7bf004f9f222d936ab235daf.png\"\/><\/p>\n<div><figcaption>\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433 \u0444\u0430\u0439\u043b\u0430<\/figcaption><\/div>\n<\/figure>\n<p><strong>\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0435 LiveBars \u0440\u0435\u0436\u0438\u043c, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 LiveBars=False<\/strong><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f&#8230; \u0414\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0442\u0430\u043a:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a25\/07a\/77d\/a2507a77de5fdc09ca27808331ce533c.png\" alt=\"LifeDars=False, \u0438 \u0431\u0430\u0440\u044b \u043f\u0440\u0438\u0448\u043b\u0438\" title=\"LifeDars=False, \u0438 \u0431\u0430\u0440\u044b \u043f\u0440\u0438\u0448\u043b\u0438\" width=\"2677\" height=\"1288\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a25\/07a\/77d\/a2507a77de5fdc09ca27808331ce533c.png\"\/><\/p>\n<div><figcaption>LifeDars=False, \u0438 \u0431\u0430\u0440\u044b \u043f\u0440\u0438\u0448\u043b\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u0430\u043a\u00a0\u043c\u044b \u0432\u0438\u0434\u0438\u043c\u00a0\u2014 \u0442\u0435\u0441\u0442 \u0443\u0434\u0430\u043b\u0441\u044f\u00a0\u2014 \u0431\u0430\u0440\u044b \u043f\u0440\u0438\u0448\u043b\u0438.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043a\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430!!<\/p>\n<h3>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430 \u0434\u043b\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0438 \u0430\u043a\u0446\u0438\u044f\u043c\u0438<\/h3>\n<p>\u0414\u043b\u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043a\u043e\u0434\u0430, \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u0430, \u043f\u043e\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u00a0\u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0435\u0439 \u0438 \u0441\u00a0\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u00a0\u0440\u044b\u043d\u043a\u0430 \u043f\u043e\u00a0\u0442\u0438\u043a\u0435\u0440\u0443\/\u0442\u0438\u043a\u0435\u0440\u0430\u043c \u0438 \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/p>\n<pre><code class=\"python\">\u0438\u043c\u043f\u043e\u0440\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445_\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a  \u043a\u043b\u0430\u0441\u0441 \u0418\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432  \u043a\u043b\u0430\u0441\u0441 \u0421\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438\/\u0422\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b  # --- \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0440\u0430\u0437\u0434\u0435\u043b --- \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e API \u043a \u0431\u0438\u0440\u0436\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438   \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0442\u0438\u043a\u0435\u0440\u0443\/\u0442\u0438\u043a\u0435\u0440\u0430\u043c \u043f\u043e API   \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u044d\u0442\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0435\u0439   \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u044f\u0432\u043e\u043a \u043d\u0430 \u043f\u043e\u043a\u0443\u043f\u043a\u0443\/\u043f\u0440\u043e\u0434\u0430\u0436\u0443 \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0438\u0437 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0432\u044b\u0432\u043e\u0434 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432<\/code><\/pre>\n<p>\u041a\u0430\u043a\u00a0\u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u043d\u0430\u043c \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0443\u043d\u043a\u0442\u044b:<\/p>\n<ul>\n<li>\n<p>\u00ab\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u044d\u0442\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0435\u0439\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u00ab\u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u044f\u0432\u043e\u043a \u043d\u0430\u00a0\u043f\u043e\u043a\u0443\u043f\u043a\u0443\/\u043f\u0440\u043e\u0434\u0430\u0436\u0443\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0438\u0437\u00a0\u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u0432\u043e\u0434 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432.<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0443\u043d\u043a\u0442\u044b \u0441\u0434\u0435\u043b\u0430\u043d\u044b \u0432\u00a0\u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435\u00a0\u2014 \u043a\u043e\u0434 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u044b\u0439, \u043d\u043e\u00a0\u044f \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0435\u0433\u043e \u0437\u0434\u0435\u0441\u044c, \u0435\u0449\u0451 \u0440\u0430\u0437, \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0432\u00a0\u043b\u0438\u0448\u043d\u0435\u0435\u00a0\u2014 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044f\u00a0\u2014 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u0435\u00a0\u0443\u0434\u0430\u043b\u044f\u044f, \u0447\u0442\u043e\u0431\u044b \u0432\u0430\u043c \u043b\u0435\u0433\u0447\u0435\u00a0\u0431\u044b\u043b\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c.<\/p>\n<p>\u0418\u0442\u0430\u043a \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u0430\u0439\u043b \u0434\u043b\u044f\u00a0\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <strong>02\u00a0\u2014 Symbols.py<\/strong>, \u0432\u043e\u0442 \u0435\u0433\u043e \u043a\u043e\u0434:<\/p>\n<pre><code class=\"python\">from datetime import date, datetime from backtrader import Cerebro, TimeFrame from BackTraderAlor.ALStore import ALStore  # \u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 Alor from my_config.Config import Config  # \u0424\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 import Strategy as ts  # \u0422\u043e\u0440\u0433\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b  # \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0438\u043a\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u041e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0443 if __name__ == '__main__':  # \u0422\u043e\u0447\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430     symbols = ('MOEX.SBER', 'MOEX.GAZP', 'MOEX.LKOH', 'MOEX.GMKN',)  # \u041a\u043e\u0440\u0442\u0435\u0436 \u0442\u0438\u043a\u0435\u0440\u043e\u0432     store = ALStore(UserName=Config.UserName, RefreshToken=Config.RefreshToken, Boards=Config.Boards, Accounts=Config.Accounts)  # \u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 Alor     cerebro = Cerebro(stdstats=False)  # \u0418\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u043c \"\u0434\u0432\u0438\u0436\u043e\u043a\" BackTrader. \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0441\u0434\u0435\u043b\u043e\u043a \u0438 \u043a\u0440\u0438\u0432\u043e\u0439 \u0434\u043e\u0445\u043e\u0434\u043d\u043e\u0441\u0442\u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u0430     for symbol in symbols:  # \u041f\u0440\u043e\u0431\u0435\u0433\u0430\u0435\u043c\u0441\u044f \u043f\u043e \u0432\u0441\u0435\u043c \u0442\u0438\u043a\u0435\u0440\u0430\u043c         # data = store.getdata(dataname=symbol, timeframe=TimeFrame.Minutes, compression=1, fromdate=date.today(), LiveBars=False)  # \u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438 \u043d\u043e\u0432\u044b\u0435 \u0431\u0430\u0440\u044b \u0442\u0438\u043a\u0435\u0440\u0430 \u0441 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0435\u0441\u0441\u0438\u0438         data = store.getdata(dataname=symbol, timeframe=TimeFrame.Minutes, compression=15, fromdate=datetime(2021, 10, 4), LiveBars=False)  # \u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438 \u043d\u043e\u0432\u044b\u0435 \u0431\u0430\u0440\u044b \u0442\u0438\u043a\u0435\u0440\u0430 \u0441 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0435\u0441\u0441\u0438\u0438         cerebro.adddata(data)  # \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0438\u043a\u0435\u0440     # cerebro.addstrategy(ts.PrintStatusAndBars, name=\"One Ticker\", symbols=('MOEX.SBER',))  # \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u0440\u0433\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0442\u0438\u043a\u0435\u0440\u0443     # cerebro.addstrategy(ts.PrintStatusAndBars, name=\"Two Tickers\", symbols=('MOEX.GAZP', 'MOEX.LKOH',))  # \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u0440\u0433\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u043e \u0434\u0432\u0443\u043c \u0442\u0438\u043a\u0435\u0440\u0430\u043c     cerebro.addstrategy(ts.PrintStatusAndBars, name=\"All Tickers\")  # \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u0440\u0433\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u043e \u0432\u0441\u0435\u043c \u0442\u0438\u043a\u0435\u0440\u0430\u043c     cerebro.run()  # \u0417\u0430\u043f\u0443\u0441\u043a \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b <\/code><\/pre>\n<p>\u0412\u043d\u0435\u0441\u0435\u043d\u043d\u044b\u0435 \u0432 \u043d\u0435\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p>\u043f\u043e\u043c\u0435\u043d\u044f\u043b \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c \u043d\u0430 M15;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b\/\u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u043a\u043e \u0432\u0441\u0435\u043c \u0442\u0438\u043a\u0435\u0440\u0430\u043c;<\/p>\n<\/li>\n<li>\n<p>\u0438 \u0434\u0430\u0442\u0443 \u0441\u0442\u0430\u0440\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u0430\u0440\u043e\u0432 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b \u043d\u0430 datetime(2021, 10, 4).<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u0430\u0439\u043b \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 <strong>Strategy.py<\/strong>, \u0432\u043e\u0442 \u0435\u0433\u043e \u043a\u043e\u0434:<\/p>\n<pre><code class=\"python\">import backtrader as bt   class PrintStatusAndBars(bt.Strategy):     \"\"\"     - \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f     - \u041f\u0440\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u0431\u0430\u0440\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0435\u0433\u043e \u0446\u0435\u043d\u044b\/\u043e\u0431\u044a\u0435\u043c     - \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043a \u043d\u043e\u0432\u044b\u043c \u0431\u0430\u0440\u0430\u043c     \"\"\"     params = (  # \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b         ('name', None),  # \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b         ('symbols', None),  # \u0421\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u0440\u0433\u0443\u0435\u043c\u044b\u0445 \u0442\u0438\u043a\u0435\u0440\u043e\u0432. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0442\u043e\u0440\u0433\u0443\u0435\u043c \u0432\u0441\u0435 \u0442\u0438\u043a\u0435\u0440\u044b     )      def log(self, txt, dt=None):         \"\"\"\u0412\u044b\u0432\u043e\u0434 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441 \u0434\u0430\u0442\u043e\u0439 \u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\"\"\"         dt = bt.num2date(self.datas[0].datetime[0]) if not dt else dt  # \u0417\u0430\u0434\u0430\u043d\u043d\u0430\u044f \u0434\u0430\u0442\u0430 \u0438\u043b\u0438 \u0434\u0430\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0431\u0430\u0440\u0430 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0442\u0438\u043a\u0435\u0440\u0430 \u0422\u0421         print(f'{dt.strftime(\"%d.%m.%Y %H:%M\")}, {txt}')  # \u0412\u044b\u0432\u043e\u0434\u0438\u043c \u0434\u0430\u0442\u0443 \u0438 \u0432\u0440\u0435\u043c\u044f \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c      def __init__(self):         \"\"\"\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b\"\"\"         self.isLive = False  # \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435      def next(self):         \"\"\"\u041f\u0440\u0438\u0445\u043e\u0434 \u043d\u043e\u0432\u043e\u0433\u043e \u0431\u0430\u0440\u0430 \u0442\u0438\u043a\u0435\u0440\u0430\"\"\"         # if self.p.name:  # \u0415\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0442\u043e \u0431\u0443\u0434\u0435\u043c \u0436\u0434\u0430\u0442\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u0430 \u0432\u0441\u0435\u0445 \u0431\u0430\u0440\u043e\u0432         #     lastdatetimes = [bt.num2date(data.datetime[0]) for data in self.datas]  # \u0414\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0431\u0430\u0440\u0430 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0438\u043a\u0435\u0440\u0430         #     if lastdatetimes.count(lastdatetimes[0]) != len(lastdatetimes):  # \u0415\u0441\u043b\u0438 \u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0431\u0430\u0440\u043e\u0432 \u043d\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b         #         return  # \u0442\u043e \u0435\u0449\u0435 \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u0438 \u0432\u0441\u0435 \u043d\u043e\u0432\u044b\u0435 \u0431\u0430\u0440\u044b. \u0416\u0434\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435, \u0432\u044b\u0445\u043e\u0434\u0438\u043c         #     print(self.p.name)         for data in self.datas:  # \u041f\u0440\u043e\u0431\u0435\u0433\u0430\u0435\u043c\u0441\u044f \u043f\u043e \u0432\u0441\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u043c \u0442\u0438\u043a\u0435\u0440\u0430\u043c             if not self.p.symbols or data._name in self.p.symbols:  # \u0415\u0441\u043b\u0438 \u0442\u043e\u0440\u0433\u0443\u0435\u043c \u0432\u0441\u0435 \u0442\u0438\u043a\u0435\u0440\u044b \u0438\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0439 \u0442\u0438\u043a\u0435\u0440                 self.log(f'{data._name} - {bt.TimeFrame.Names[data.p.timeframe]} {data.p.compression} - Open={data.open[0]:.2f}, High={data.high[0]:.2f}, Low={data.low[0]:.2f}, Close={data.close[0]:.2f}, Volume={data.volume[0]:.0f}',                          bt.num2date(data.datetime[0]))      def notify_data(self, data, status, *args, **kwargs):         \"\"\"\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0441\u0443\u0441\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0431\u0430\u0440\u043e\u0432\"\"\"         data_status = data._getstatusname(status)  # \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0442\u0430\u0442\u0443\u0441 (\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 LiveBars=True)         print(f'{data._name} - {self.p.name} - {data_status}')  # \u0421\u0442\u0430\u0442\u0443\u0441 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0438\u043a\u0435\u0440\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e         self.isLive = data_status == 'LIVE'  # \u0412 Live \u0440\u0435\u0436\u0438\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0442\u0438\u043a\u0435\u0440\u0430 <\/code><\/pre>\n<p>\u0412\u043d\u0435\u0441\u0435\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043d\u0435\u0433\u043e:<\/p>\n<ul>\n<li>\n<p>\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 def next(self): &#8212; \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u043b \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u0430\u0440\u043e\u0432 &#8212; \u0442.\u043a. \u0434\u043b\u044f \u043c\u043e\u0435\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u044d\u0442\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u0435\u043b\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a, \u0447\u0442\u043e\u0431\u044b \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043b\u043e\u043c\u0430\u043b\u0438:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/092\/7ae\/e21\/0927aee21cad9bcce3152a97e943f918.png\" alt=\"\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\" title=\"\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\" width=\"2661\" height=\"1281\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/092\/7ae\/e21\/0927aee21cad9bcce3152a97e943f918.png\"\/><\/p>\n<div><figcaption>\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u0438 15-\u043c\u0438\u043d\u0443\u0442\u043d\u044b\u0435 \u0431\u0430\u0440\u044b \u0438 \u0432\u0441\u0435 \u041e\u041a.<\/p>\n<pre><code>.... 24.04.2023 19:45, MOEX.GMKN - Minutes 15 - Open=15676.00, High=15682.00, Low=15672.00, Close=15678.00, Volume=216 24.04.2023 20:00, MOEX.SBER - Minutes 15 - Open=235.23, High=235.23, Low=235.03, Close=235.07, Volume=10064 24.04.2023 20:00, MOEX.GAZP - Minutes 15 - Open=181.87, High=182.00, Low=181.80, Close=181.94, Volume=13728 24.04.2023 20:00, MOEX.LKOH - Minutes 15 - Open=4707.50, High=4707.50, Low=4705.00, Close=4706.00, Volume=1439 24.04.2023 20:00, MOEX.GMKN - Minutes 15 - Open=15672.00, High=15682.00, Low=15672.00, Close=15682.00, Volume=153 24.04.2023 20:15, MOEX.SBER - Minutes 15 - Open=235.03, High=235.11, Low=235.00, Close=235.06, Volume=11403 24.04.2023 20:15, MOEX.GAZP - Minutes 15 - Open=181.87, High=182.30, Low=181.85, Close=182.16, Volume=29052 24.04.2023 20:15, MOEX.LKOH - Minutes 15 - Open=4706.00, High=4714.00, Low=4705.50, Close=4714.00, Volume=2092 24.04.2023 20:15, MOEX.GMKN - Minutes 15 - Open=15682.00, High=15682.00, Low=15676.00, Close=15682.00, Volume=265 24.04.2023 20:30, MOEX.SBER - Minutes 15 - Open=235.06, High=235.11, Low=235.03, Close=235.05, Volume=4995 24.04.2023 20:30, MOEX.GAZP - Minutes 15 - Open=182.16, High=182.23, Low=181.91, Close=181.96, Volume=18775 24.04.2023 20:30, MOEX.LKOH - Minutes 15 - Open=4714.00, High=4714.00, Low=4711.00, Close=4712.00, Volume=642 24.04.2023 20:30, MOEX.GMKN - Minutes 15 - Open=15682.00, High=15694.00, Low=15680.00, Close=15692.00, Volume=440 24.04.2023 20:45, MOEX.SBER - Minutes 15 - Open=235.04, High=235.11, Low=235.02, Close=235.06, Volume=10582 24.04.2023 20:45, MOEX.GAZP - Minutes 15 - Open=181.96, High=181.96, Low=181.70, Close=181.81, Volume=13281 24.04.2023 20:45, MOEX.LKOH - Minutes 15 - Open=4712.00, High=4714.00, Low=4710.00, Close=4711.00, Volume=2349 24.04.2023 20:45, MOEX.GMKN - Minutes 15 - Open=15694.00, High=15696.00, Low=15686.00, Close=15686.00, Volume=180 24.04.2023 21:00, MOEX.SBER - Minutes 15 - Open=235.06, High=235.10, Low=235.01, Close=235.10, Volume=7533 24.04.2023 21:00, MOEX.GAZP - Minutes 15 - Open=181.81, High=181.94, Low=181.75, Close=181.91, Volume=5271 24.04.2023 21:00, MOEX.LKOH - Minutes 15 - Open=4711.00, High=4711.00, Low=4710.00, Close=4711.00, Volume=1955 24.04.2023 21:00, MOEX.GMKN - Minutes 15 - Open=15688.00, High=15694.00, Low=15688.00, Close=15692.00, Volume=137 24.04.2023 21:15, MOEX.SBER - Minutes 15 - Open=235.10, High=235.15, Low=235.09, Close=235.15, Volume=9973 24.04.2023 21:15, MOEX.GAZP - Minutes 15 - Open=181.91, High=181.97, Low=181.82, Close=181.89, Volume=7075 24.04.2023 21:15, MOEX.LKOH - Minutes 15 - Open=4711.00, High=4713.00, Low=4710.50, Close=4712.50, Volume=1519 24.04.2023 21:15, MOEX.GMKN - Minutes 15 - Open=15692.00, High=15698.00, Low=15688.00, Close=15698.00, Volume=229 24.04.2023 21:30, MOEX.SBER - Minutes 15 - Open=235.14, High=235.18, Low=235.11, Close=235.17, Volume=7582 24.04.2023 21:30, MOEX.GAZP - Minutes 15 - Open=181.87, High=182.14, Low=181.86, Close=182.03, Volume=9900 24.04.2023 21:30, MOEX.LKOH - Minutes 15 - Open=4713.00, High=4713.00, Low=4708.50, Close=4709.50, Volume=2170 24.04.2023 21:30, MOEX.GMKN - Minutes 15 - Open=15696.00, High=15698.00, Low=15690.00, Close=15694.00, Volume=73 24.04.2023 21:45, MOEX.SBER - Minutes 15 - Open=235.16, High=235.30, Low=235.13, Close=235.15, Volume=22209 24.04.2023 21:45, MOEX.GAZP - Minutes 15 - Open=182.03, High=182.15, Low=182.01, Close=182.01, Volume=5444 24.04.2023 21:45, MOEX.LKOH - Minutes 15 - Open=4709.50, High=4712.00, Low=4708.00, Close=4710.50, Volume=894 24.04.2023 21:45, MOEX.GMKN - Minutes 15 - Open=15690.00, High=15696.00, Low=15660.00, Close=15694.00, Volume=938 24.04.2023 22:00, MOEX.SBER - Minutes 15 - Open=235.15, High=235.26, Low=235.11, Close=235.22, Volume=11980 24.04.2023 22:00, MOEX.GAZP - Minutes 15 - Open=182.04, High=182.13, Low=181.90, Close=182.11, Volume=10208 24.04.2023 22:00, MOEX.LKOH - Minutes 15 - Open=4711.00, High=4719.00, Low=4709.00, Close=4717.00, Volume=4481 24.04.2023 22:00, MOEX.GMKN - Minutes 15 - Open=15694.00, High=15700.00, Low=15690.00, Close=15700.00, Volume=444 24.04.2023 22:15, MOEX.SBER - Minutes 15 - Open=235.25, High=235.28, Low=235.22, Close=235.22, Volume=8336 24.04.2023 22:15, MOEX.GAZP - Minutes 15 - Open=182.11, High=182.11, Low=181.96, Close=182.05, Volume=5406 24.04.2023 22:15, MOEX.LKOH - Minutes 15 - Open=4718.50, High=4719.00, Low=4716.50, Close=4719.00, Volume=2532 24.04.2023 22:15, MOEX.GMKN - Minutes 15 - Open=15700.00, High=15702.00, Low=15688.00, Close=15700.00, Volume=161 24.04.2023 22:30, MOEX.SBER - Minutes 15 - Open=235.24, High=235.24, Low=235.18, Close=235.20, Volume=3598 24.04.2023 22:30, MOEX.GAZP - Minutes 15 - Open=182.05, High=182.07, Low=181.96, Close=181.99, Volume=6737 24.04.2023 22:30, MOEX.LKOH - Minutes 15 - Open=4718.50, High=4719.00, Low=4716.50, Close=4717.00, Volume=1011 24.04.2023 22:30, MOEX.GMKN - Minutes 15 - Open=15698.00, High=15700.00, Low=15688.00, Close=15698.00, Volume=134 24.04.2023 22:45, MOEX.SBER - Minutes 15 - Open=235.20, High=235.20, Low=235.02, Close=235.08, Volume=14638 24.04.2023 22:45, MOEX.GAZP - Minutes 15 - Open=182.00, High=182.11, Low=181.99, Close=182.06, Volume=3898 24.04.2023 22:45, MOEX.LKOH - Minutes 15 - Open=4718.00, High=4719.00, Low=4714.00, Close=4717.00, Volume=1931 24.04.2023 22:45, MOEX.GMKN - Minutes 15 - Open=15692.00, High=15700.00, Low=15692.00, Close=15692.00, Volume=185 24.04.2023 23:00, MOEX.SBER - Minutes 15 - Open=235.09, High=235.15, Low=235.03, Close=235.10, Volume=9085 24.04.2023 23:00, MOEX.GAZP - Minutes 15 - Open=182.06, High=182.09, Low=182.00, Close=182.03, Volume=7404 24.04.2023 23:00, MOEX.LKOH - Minutes 15 - Open=4716.50, High=4719.00, Low=4715.00, Close=4718.00, Volume=1214 24.04.2023 23:00, MOEX.GMKN - Minutes 15 - Open=15698.00, High=15710.00, Low=15690.00, Close=15690.00, Volume=604 24.04.2023 23:15, MOEX.SBER - Minutes 15 - Open=235.10, High=235.17, Low=235.03, Close=235.14, Volume=12324 24.04.2023 23:15, MOEX.GAZP - Minutes 15 - Open=182.03, High=182.10, Low=181.69, Close=181.86, Volume=19210 24.04.2023 23:15, MOEX.LKOH - Minutes 15 - Open=4717.50, High=4717.50, Low=4714.50, Close=4716.00, Volume=509 24.04.2023 23:15, MOEX.GMKN - Minutes 15 - Open=15698.00, High=15700.00, Low=15688.00, Close=15694.00, Volume=78<\/code><\/pre>\n<p><strong>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u043c\u0443 &#8212; \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0434\u043b\u044f \u0440\u043e\u0431\u043e\u0442\u0430!<\/strong><\/p>\n<h2>\u041f\u0438\u0448\u0435\u043c \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e \u0434\u043b\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430<\/h2>\n<p>\u0412\u0441\u0435 \u0431\u0443\u0434\u0435\u043c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 &#8212; \u0434\u0435\u043b\u0430\u0442\u044c backtesting \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438. <\/p>\n<p>1) \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u043d\u0435\u0433 \u0443 \u043d\u0430\u0441 \u043d\u0430 \u0441\u0447\u0435\u0442\u0443 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u043c\u0438\u0441\u0441\u0438\u0438<\/p>\n<pre><code class=\"python\">cerebro.broker.setcash(3000000)  # \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u043d\u0435\u0433 cerebro.broker.setcommission(commission=0.01)  # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u0438\u0441\u0441\u0438\u044e<\/code><\/pre>\n<p>2) \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u0432 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d<\/p>\n<pre><code class=\"python\">print('\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u043e\u0440\u0442\u0444\u0435\u043b\u044f: %.2f' % cerebro.broker.getvalue()) print('\u0421\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430: %.2f' % cerebro.broker.get_cash())<\/code><\/pre>\n<p>\u043f\u0443\u043d\u043a\u0442\u044b 1) \u0438 2) \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u0444\u0430\u0439\u043b <strong>02 &#8212; Symbols.py<\/strong><\/p>\n<p>3) \u0435\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c live \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0430\u0448\u0435\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438, \u0442\u043e \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0447\u0435\u0442\u044b\u0440\u044c\u043c\u044f \u0441\u0442\u0440\u043e\u0447\u043a\u0430\u043c\u0438 \u2011!!! <code>\u043d\u043e \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u044d\u0442\u043e\u0433\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u0442.\u043a. \u0432\u0441\u0435 \u0437\u0430\u044f\u0432\u043a\u0438 \u043d\u0430 \u043f\u043e\u043a\u0443\u043f\u043a\u0443 \u0438 \u043f\u0440\u043e\u0434\u0430\u0436\u0443 \u0441\u0440\u0430\u0437\u0443 \u043d\u0430\u0447\u043d\u0443\u0442 \u043f\u043e\u043f\u0430\u0434\u0430\u0442\u044c \u043d\u0430 \u0431\u0438\u0440\u0436\u0443 \u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0442\u0430\u043a, \u043a\u0430\u043a \u0443 \u0432\u0430\u0441 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u043a\u043e\u0434\u0435!! - \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u043e\u0431\u0435\u0433\u0430\u0435\u0442\u0435\u0441\u044c \u043f\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u0438 - \u0442\u043e \u0438 \u0441\u043a\u0440\u0438\u043f\u0442 \u0431\u0443\u0434\u0435\u0442 \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0440\u044b\u043d\u043e\u043a \u043f\u043e \"\u0441\u0442\u0430\u0440\u043e\u0439\" \u0446\u0435\u043d\u0435... \u0430 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0446\u0435\u043d\u0430 \u0434\u0430\u043b\u0435\u043a\u043e \u0443\u0436\u0435 \u043d\u0435 \u0442\u0430... <\/code><strong>\u0411\u0423\u0414\u042c\u0422\u0415 \u0417\u0414\u0415\u0421\u042c \u0412\u041d\u0418\u041c\u0410\u0422\u0415\u041b\u042c\u041d\u042b! \u0414\u043b\u044f\u00a0live \u0440\u0435\u0436\u0438\u043c\u0430\u00a0\u2014 \u043d\u0435\u00a0\u043f\u0440\u043e\u0431\u0435\u0433\u0430\u0439\u0442\u0435\u0441\u044c \u043f\u043e\u00a0\u0438\u0441\u0442\u043e\u0440\u0438\u0438.<\/strong><\/p>\n<pre><code class=\"python\">exchange = 'MOEX'  # \u0411\u0438\u0440\u0436\u0430 portfolio = Config.PortfolioStocks  # \u041f\u043e\u0440\u0442\u0444\u0435\u043b\u044c \u0444\u043e\u043d\u0434\u043e\u0432\u043e\u0433\u043e \u0440\u044b\u043d\u043a\u0430     broker = store.getbroker(use_positions=False, portfolio=portfolio, exchange=exchange)  # \u0411\u0440\u043e\u043a\u0435\u0440 Alor cerebro.setbroker(broker)  # \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0431\u0440\u043e\u043a\u0435\u0440\u0430<\/code><\/pre>\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c! \u041f\u0440\u043e\u0441\u0442\u043e \u0434\u043b\u044f \u0438\u043d\u0444\u043e, \u043a\u0430\u043a \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c live \u0440\u0435\u0436\u0438\u043c.<\/p>\n<p>\u041a\u043b\u0430\u0441\u0441 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432:<\/p>\n<ol>\n<li>\n<p><strong>init<\/strong>\u00a0&#8212; \u0438\u0442\u0430\u043a \u043f\u043e\u043d\u044f\u0442\u043d\u043e &#8212; \u0437\u0434\u0435\u0441\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0434\u043b\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445;<\/p>\n<\/li>\n<li>\n<p><strong>start<\/strong>\u00a0&#8212; \u0437\u0434\u0435\u0441\u044c <strong>\u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e<\/strong> \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p><strong>next<\/strong>\u00a0&#8212; \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0440\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u0431\u0430\u0440\u0430 \u043f\u043e \u0442\u0438\u043a\u0435\u0440\u0443;<\/p>\n<\/li>\n<li>\n<p><strong>notify_order<\/strong>\u00a0&#8212; \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u043a\u0443\u043f\u043a\u0430 \u0438\u043b\u0438 \u043f\u0440\u043e\u0434\u0430\u0436\u0430;<\/p>\n<\/li>\n<li>\n<p><strong>notify_trade<\/strong>\u00a0&#8212; \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u0433\u0434\u0430 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u0443\u0441 \u043f\u043e\u0437\u0438\u0446\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p><strong>notify_data<\/strong>\u00a0&#8212; \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u0433\u0434\u0430 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u0443\u0441 \u043f\u0440\u0438\u0445\u043e\u0434\u0430 \u0431\u0430\u0440\u0430 \u043d\u0430 <strong>live<\/strong> \u0440\u0435\u0436\u0438\u043c.<\/p>\n<\/li>\n<\/ol>\n<p>\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u044e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c\/\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b\/\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b.<\/p>\n<p>4) \u0412 <strong>init<\/strong> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c:<\/p>\n<pre><code class=\"python\">self.order = None self.orders_bar_executed = {}<\/code><\/pre>\n<p>5) \u0412 <strong>start<\/strong> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c:<\/p>\n<pre><code class=\"python\">for data in self.datas:  # \u041f\u0440\u043e\u0431\u0435\u0433\u0430\u0435\u043c\u0441\u044f \u043f\u043e \u0432\u0441\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u043c \u0442\u0438\u043a\u0435\u0440\u0430\u043c     ticker = data._dataname  # \u0438\u043c\u044f \u0442\u0438\u043a\u0435\u0440\u0430     self.orders_bar_executed[ticker] = 0<\/code><\/pre>\n<p>6) \u0412 <strong>next<\/strong> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c:<\/p>\n<pre><code class=\"python\">ticker = data._dataname  # \u0438\u043c\u044f \u0442\u0438\u043a\u0435\u0440\u0430 _close = data.close[0]  # \u0442\u0435\u043a\u0443\u0449\u0438\u0439 close _low = data.low[0]  # \u0442\u0435\u043a\u0443\u0449\u0438\u0439 low _high = data.high[0]  # \u0442\u0435\u043a\u0443\u0449\u0438\u0439 high _open = data.open[0]  # \u0442\u0435\u043a\u0443\u0449\u0438\u0439 close  # \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u043c\u044b \u0432 \u0440\u044b\u043d\u043a\u0435? if not self.position:     # \u0415\u0449\u0451 \u043d\u0435\u0442... \u043c\u044b \u041c\u041e\u0413\u041b\u0418 \u0411\u042b \u041a\u0423\u041f\u0418\u0422\u042c, \u0435\u0441\u043b\u0438 \u0431\u044b...     if self.data.close[0] &lt; self.data.close[-1]:         # \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f         if self.data.close[-1] &lt; self.data.close[-2]:             # \u041f\u041e\u041a\u0423\u041f\u0410\u0419, \u041f\u041e\u041a\u0423\u041f\u0410\u0419, \u041f\u041e\u041a\u0423\u041f\u0410\u0419!!! (\u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e)             self.log('BUY CREATE, %.2f' % self.data.close[0])             # \u0421\u043b\u0435\u0434\u0438\u043c \u0437\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u043c \u043e\u0440\u0434\u0435\u0440\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u043e\u0440\u0434\u0435\u0440\u0430             self.order = self.buy(data=data)  # , size=size) else:     # \u0423\u0436\u0435 \u0432 \u0440\u044b\u043d\u043a\u0435? ... \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u043f\u0440\u043e\u0434\u0430\u0442\u044c     try:         # \u043f\u0440\u043e\u0434\u0430\u0451\u043c \u043f\u043e\u0441\u043b\u0435 5 \u0431\u0430\u0440\u043e\u0432 \u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u043a\u0443\u043f\u043a\u0438...         if len(self) >= (self.orders_bar_executed[data._name] + 5):             # \u041f\u0420\u041e\u0414\u0410\u0412\u0410\u0419, \u041f\u0420\u041e\u0414\u0410\u0412\u0410\u0419, \u041f\u0420\u041e\u0414\u0410\u0412\u0410\u0419!!! (\u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e)             self.log('SELL CREATE, %.2f' % self.data.close[0])             # \u0421\u043b\u0435\u0434\u0438\u043c \u0437\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u043c \u043e\u0440\u0434\u0435\u0440\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u043e\u0440\u0434\u0435\u0440\u0430             self.order = self.sell(data=data)     except:         print(\"error...\")<\/code><\/pre>\n<p>7) \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <strong>notify_trade<\/strong>:<\/p>\n<pre><code class=\"python\">def notify_trade(self, trade):     if not trade.isclosed:         return     self.log('OPERATION PROFIT, GROSS %.2f, NET %.2f' % (trade.pnl, trade.pnlcomm))<\/code><\/pre>\n<p>8) \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <strong>notify_order<\/strong>:<\/p>\n<pre><code class=\"python\">def notify_order(self, order):     ticker = order.data._name     size = order.size      if order.status in [order.Submitted, order.Accepted]:         # Buy\/Sell order submitted\/accepted to\/by broker - Nothing to do         return      # \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u043c\u044b \u0432 \u0440\u044b\u043d\u043a\u0435?     # \u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0431\u0440\u043e\u043a\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c \u0437\u0430\u044f\u0432\u043a\u0443, \u0435\u0441\u043b\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u0435\u043d\u0435\u0433     if order.status in [order.Completed]:         if order.isbuy():             self.log('BUY EXECUTED, %.2f' % order.executed.price)         elif order.issell():             self.log('SELL EXECUTED, %.2f' % order.executed.price)          self.bar_executed = len(self)         self.orders_bar_executed[order.data._name] = len(self)      elif order.status in [order.Canceled, order.Margin, order.Rejected]:         self.log('Order Canceled\/Margin\/Rejected')      # \u0417\u0430\u043f\u0438\u0441\u044c: \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0440\u0434\u0435\u0440\u0430 - \u043d\u0435\u0442     self.order = None<\/code><\/pre>\n<p>\u043f\u0443\u043d\u043a\u0442\u044b 4), 5), 6), 7) \u0438 8) \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u0444\u0430\u0439\u043b \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 <strong>Strategy.py<\/strong><\/p>\n<p><strong>\u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438, \u0447\u0442\u043e \u043c\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043a\u0443\u043f\u0430\u0435\u043c \u0438 \u043f\u0440\u043e\u0434\u0430\u0435\u043c \u0447\u0435\u0440\u0435\u0437 5 \u0431\u0430\u0440\u043e\u0432.<\/strong><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/516\/a1e\/bc3\/516a1ebc32aa4ebbce6165ce5009549c.png\" alt=\"\u0421\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f: \u043c\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043a\u0443\u043f\u0430\u0435\u043c \u0438 \u043f\u0440\u043e\u0434\u0430\u0435\u043c \u0447\u0435\u0440\u0435\u0437 5 \u0431\u0430\u0440\u043e\u0432\" title=\"\u0421\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f: \u043c\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043a\u0443\u043f\u0430\u0435\u043c \u0438 \u043f\u0440\u043e\u0434\u0430\u0435\u043c \u0447\u0435\u0440\u0435\u0437 5 \u0431\u0430\u0440\u043e\u0432\" width=\"774\" height=\"753\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/516\/a1e\/bc3\/516a1ebc32aa4ebbce6165ce5009549c.png\"\/><\/p>\n<div><figcaption><strong>\u0421\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f: \u043c\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043a\u0443\u043f\u0430\u0435\u043c \u0438 \u043f\u0440\u043e\u0434\u0430\u0435\u043c \u0447\u0435\u0440\u0435\u0437 5 \u0431\u0430\u0440\u043e\u0432<\/strong><\/figcaption><\/div>\n<\/figure>\n<p>\u0418\u0442\u0430\u043a, \u043a\u043e\u0434 \u0444\u0430\u0439\u043b\u0430 <strong>02 &#8212; Symbols.py<\/strong>:<\/p>\n<pre><code class=\"python\">from datetime import date, datetime from backtrader import Cerebro, TimeFrame from BackTraderAlor.ALStore import ALStore  # \u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 Alor from my_config.Config import Config  # \u0424\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 import Strategy as ts  # \u0422\u043e\u0440\u0433\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b  # \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0438\u043a\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u041e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0443 if __name__ == '__main__':  # \u0422\u043e\u0447\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430     symbols = ('MOEX.SBER', 'MOEX.GAZP', 'MOEX.LKOH', 'MOEX.GMKN',)  # \u041a\u043e\u0440\u0442\u0435\u0436 \u0442\u0438\u043a\u0435\u0440\u043e\u0432     store = ALStore(UserName=Config.UserName, RefreshToken=Config.RefreshToken, Boards=Config.Boards, Accounts=Config.Accounts)  # \u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 Alor     cerebro = Cerebro(stdstats=False)  # \u0418\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u043c \"\u0434\u0432\u0438\u0436\u043e\u043a\" BackTrader. \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0441\u0434\u0435\u043b\u043e\u043a \u0438 \u043a\u0440\u0438\u0432\u043e\u0439 \u0434\u043e\u0445\u043e\u0434\u043d\u043e\u0441\u0442\u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u0430      cerebro.broker.setcash(3000000)  # \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u043d\u0435\u0433     cerebro.broker.setcommission(commission=0.01)  # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u0438\u0441\u0441\u0438\u044e      for symbol in symbols:  # \u041f\u0440\u043e\u0431\u0435\u0433\u0430\u0435\u043c\u0441\u044f \u043f\u043e \u0432\u0441\u0435\u043c \u0442\u0438\u043a\u0435\u0440\u0430\u043c         # data = store.getdata(dataname=symbol, timeframe=TimeFrame.Minutes, compression=1, fromdate=date.today(), LiveBars=False)  # \u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438 \u043d\u043e\u0432\u044b\u0435 \u0431\u0430\u0440\u044b \u0442\u0438\u043a\u0435\u0440\u0430 \u0441 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0435\u0441\u0441\u0438\u0438         data = store.getdata(dataname=symbol, timeframe=TimeFrame.Minutes, compression=15, fromdate=datetime(2021, 10, 4), LiveBars=False)  # \u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438 \u043d\u043e\u0432\u044b\u0435 \u0431\u0430\u0440\u044b \u0442\u0438\u043a\u0435\u0440\u0430 \u0441 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0435\u0441\u0441\u0438\u0438         cerebro.adddata(data)  # \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0438\u043a\u0435\u0440     # cerebro.addstrategy(ts.PrintStatusAndBars, name=\"One Ticker\", symbols=('MOEX.SBER',))  # \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u0440\u0433\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0442\u0438\u043a\u0435\u0440\u0443     # cerebro.addstrategy(ts.PrintStatusAndBars, name=\"Two Tickers\", symbols=('MOEX.GAZP', 'MOEX.LKOH',))  # \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u0440\u0433\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u043e \u0434\u0432\u0443\u043c \u0442\u0438\u043a\u0435\u0440\u0430\u043c     cerebro.addstrategy(ts.PrintStatusAndBars, name=\"All Tickers\")  # \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u0440\u0433\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u043e \u0432\u0441\u0435\u043c \u0442\u0438\u043a\u0435\u0440\u0430\u043c      results = cerebro.run()  # \u0417\u0430\u043f\u0443\u0441\u043a \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b     print('\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u043e\u0440\u0442\u0444\u0435\u043b\u044f: %.2f' % cerebro.broker.getvalue())     print('\u0421\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430: %.2f' % cerebro.broker.get_cash()) <\/code><\/pre>\n<p>\u0418\u0442\u0430\u043a, \u043a\u043e\u0434 \u0444\u0430\u0439\u043b\u0430 <strong>Strategy.py<\/strong><\/p>\n<pre><code class=\"python\">import backtrader as bt   class PrintStatusAndBars(bt.Strategy):     \"\"\"     - \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f     - \u041f\u0440\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u0431\u0430\u0440\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0435\u0433\u043e \u0446\u0435\u043d\u044b\/\u043e\u0431\u044a\u0435\u043c     - \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043a \u043d\u043e\u0432\u044b\u043c \u0431\u0430\u0440\u0430\u043c     \"\"\"     params = (  # \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b         ('name', None),  # \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b         ('symbols', None),  # \u0421\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u0440\u0433\u0443\u0435\u043c\u044b\u0445 \u0442\u0438\u043a\u0435\u0440\u043e\u0432. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0442\u043e\u0440\u0433\u0443\u0435\u043c \u0432\u0441\u0435 \u0442\u0438\u043a\u0435\u0440\u044b     )      def log(self, txt, dt=None):         \"\"\"\u0412\u044b\u0432\u043e\u0434 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441 \u0434\u0430\u0442\u043e\u0439 \u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\"\"\"         dt = bt.num2date(self.datas[0].datetime[0]) if not dt else dt  # \u0417\u0430\u0434\u0430\u043d\u043d\u0430\u044f \u0434\u0430\u0442\u0430 \u0438\u043b\u0438 \u0434\u0430\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0431\u0430\u0440\u0430 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0442\u0438\u043a\u0435\u0440\u0430 \u0422\u0421         print(f'{dt.strftime(\"%d.%m.%Y %H:%M\")}, {txt}')  # \u0412\u044b\u0432\u043e\u0434\u0438\u043c \u0434\u0430\u0442\u0443 \u0438 \u0432\u0440\u0435\u043c\u044f \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c      def __init__(self):         \"\"\"\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b\"\"\"         self.isLive = False  # \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435         self.order = None         self.orders_bar_executed = {}      def start(self):         for data in self.datas:  # \u041f\u0440\u043e\u0431\u0435\u0433\u0430\u0435\u043c\u0441\u044f \u043f\u043e \u0432\u0441\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u043c \u0442\u0438\u043a\u0435\u0440\u0430\u043c             ticker = data._dataname  # \u0438\u043c\u044f \u0442\u0438\u043a\u0435\u0440\u0430             self.orders_bar_executed[ticker] = 0      def next(self):         \"\"\"\u041f\u0440\u0438\u0445\u043e\u0434 \u043d\u043e\u0432\u043e\u0433\u043e \u0431\u0430\u0440\u0430 \u0442\u0438\u043a\u0435\u0440\u0430\"\"\"         # if self.p.name:  # \u0415\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0442\u043e \u0431\u0443\u0434\u0435\u043c \u0436\u0434\u0430\u0442\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u0430 \u0432\u0441\u0435\u0445 \u0431\u0430\u0440\u043e\u0432         #     lastdatetimes = [bt.num2date(data.datetime[0]) for data in self.datas]  # \u0414\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0431\u0430\u0440\u0430 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0438\u043a\u0435\u0440\u0430         #     if lastdatetimes.count(lastdatetimes[0]) != len(lastdatetimes):  # \u0415\u0441\u043b\u0438 \u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0431\u0430\u0440\u043e\u0432 \u043d\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b         #         return  # \u0442\u043e \u0435\u0449\u0435 \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u0438 \u0432\u0441\u0435 \u043d\u043e\u0432\u044b\u0435 \u0431\u0430\u0440\u044b. \u0416\u0434\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435, \u0432\u044b\u0445\u043e\u0434\u0438\u043c         #     print(self.p.name)         for data in self.datas:  # \u041f\u0440\u043e\u0431\u0435\u0433\u0430\u0435\u043c\u0441\u044f \u043f\u043e \u0432\u0441\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u043c \u0442\u0438\u043a\u0435\u0440\u0430\u043c             if not self.p.symbols or data._name in self.p.symbols:  # \u0415\u0441\u043b\u0438 \u0442\u043e\u0440\u0433\u0443\u0435\u043c \u0432\u0441\u0435 \u0442\u0438\u043a\u0435\u0440\u044b \u0438\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0439 \u0442\u0438\u043a\u0435\u0440                 self.log(f'{data._name} - {bt.TimeFrame.Names[data.p.timeframe]} {data.p.compression} - Open={data.open[0]:.2f}, High={data.high[0]:.2f}, Low={data.low[0]:.2f}, Close={data.close[0]:.2f}, Volume={data.volume[0]:.0f}',                          bt.num2date(data.datetime[0]))                  ticker = data._dataname  # \u0438\u043c\u044f \u0442\u0438\u043a\u0435\u0440\u0430                 _close = data.close[0]  # \u0442\u0435\u043a\u0443\u0449\u0438\u0439 close                 _low = data.low[0]  # \u0442\u0435\u043a\u0443\u0449\u0438\u0439 low                 _high = data.high[0]  # \u0442\u0435\u043a\u0443\u0449\u0438\u0439 high                 _open = data.open[0]  # \u0442\u0435\u043a\u0443\u0449\u0438\u0439 close                  # \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u043c\u044b \u0432 \u0440\u044b\u043d\u043a\u0435?                 if not self.position:                     # \u0415\u0449\u0451 \u043d\u0435\u0442... \u043c\u044b \u041c\u041e\u0413\u041b\u0418 \u0411\u042b \u041a\u0423\u041f\u0418\u0422\u042c, \u0435\u0441\u043b\u0438 \u0431\u044b...                     if self.data.close[0] &lt; self.data.close[-1]:                         # \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f                         if self.data.close[-1] &lt; self.data.close[-2]:                             # \u041f\u041e\u041a\u0423\u041f\u0410\u0419, \u041f\u041e\u041a\u0423\u041f\u0410\u0419, \u041f\u041e\u041a\u0423\u041f\u0410\u0419!!! (\u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e)                             self.log('BUY CREATE, %.2f' % self.data.close[0])                             # \u0421\u043b\u0435\u0434\u0438\u043c \u0437\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u043c \u043e\u0440\u0434\u0435\u0440\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u043e\u0440\u0434\u0435\u0440\u0430                             self.order = self.buy(data=data)  # , size=size)                 else:                     # \u0423\u0436\u0435 \u0432 \u0440\u044b\u043d\u043a\u0435? ... \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u043f\u0440\u043e\u0434\u0430\u0442\u044c                     try:                         # \u043f\u0440\u043e\u0434\u0430\u0451\u043c \u043f\u043e\u0441\u043b\u0435 5 \u0431\u0430\u0440\u043e\u0432 \u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u043a\u0443\u043f\u043a\u0438...                         if len(self) >= (self.orders_bar_executed[data._name] + 5):                             # \u041f\u0420\u041e\u0414\u0410\u0412\u0410\u0419, \u041f\u0420\u041e\u0414\u0410\u0412\u0410\u0419, \u041f\u0420\u041e\u0414\u0410\u0412\u0410\u0419!!! (\u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e)                             self.log('SELL CREATE, %.2f' % self.data.close[0])                             # \u0421\u043b\u0435\u0434\u0438\u043c \u0437\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u043c \u043e\u0440\u0434\u0435\u0440\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u043e\u0440\u0434\u0435\u0440\u0430                             self.order = self.sell(data=data)                     except:                         print(\"error...\")      def notify_trade(self, trade):         if not trade.isclosed:             return         self.log('OPERATION PROFIT, GROSS %.2f, NET %.2f' % (trade.pnl, trade.pnlcomm))      def notify_order(self, order):         ticker = order.data._name         size = order.size          if order.status in [order.Submitted, order.Accepted]:             # Buy\/Sell order submitted\/accepted to\/by broker - Nothing to do             return          # \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u043c\u044b \u0432 \u0440\u044b\u043d\u043a\u0435?         # \u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0431\u0440\u043e\u043a\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c \u0437\u0430\u044f\u0432\u043a\u0443, \u0435\u0441\u043b\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u0435\u043d\u0435\u0433         if order.status in [order.Completed]:             if order.isbuy():                 self.log('BUY EXECUTED, %.2f' % order.executed.price)             elif order.issell():                 self.log('SELL EXECUTED, %.2f' % order.executed.price)              self.bar_executed = len(self)             self.orders_bar_executed[order.data._name] = len(self)          elif order.status in [order.Canceled, order.Margin, order.Rejected]:             self.log('Order Canceled\/Margin\/Rejected')          # \u0417\u0430\u043f\u0438\u0441\u044c: \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0440\u0434\u0435\u0440\u0430 - \u043d\u0435\u0442         self.order = None      def notify_data(self, data, status, *args, **kwargs):         \"\"\"\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0431\u0430\u0440\u043e\u0432\"\"\"         data_status = data._getstatusname(status)  # \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0442\u0430\u0442\u0443\u0441 (\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 LiveBars=True)         print(f'{data._name} - {self.p.name} - {data_status}')  # \u0421\u0442\u0430\u0442\u0443\u0441 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0438\u043a\u0435\u0440\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e         self.isLive = data_status == 'LIVE'  # \u0412 Live \u0440\u0435\u0436\u0438\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0442\u0438\u043a\u0435\u0440\u0430 <\/code><\/pre>\n<p><strong>\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u044d\u0442\u0443 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442!<\/strong><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4f7\/7a4\/2f8\/4f77a42f82e190744a806eb82988a78b.png\" alt=\"\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438\" title=\"\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438\" width=\"2656\" height=\"1279\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4f7\/7a4\/2f8\/4f77a42f82e190744a806eb82988a78b.png\"\/><\/p>\n<div><figcaption>\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u043e\u0440\u0442\u0444\u0435\u043b\u044f: 1 294 456.74<\/p>\n<p>\u0421\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430: 45 568 288.40<\/p>\n<p>\u0427\u0422\u041e???<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e42\/3fe\/453\/e423fe453c660142abe758e4bbc9d3ca.png\" alt=\"\u041a\u0440\u0443\u0442\u043e? \u0414\u0430? )))\" title=\"\u041a\u0440\u0443\u0442\u043e? \u0414\u0430? )))\" width=\"460\" height=\"451\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e42\/3fe\/453\/e423fe453c660142abe758e4bbc9d3ca.png\"\/><\/p>\n<div><figcaption>\u041a\u0440\u0443\u0442\u043e? \u0414\u0430? )))<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0440\u0430\u0437\u0443 \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e\u00a0\u044d\u0442\u043e \u043d\u0435\u00a0\u0433\u0440\u0430\u0430\u043b\u044c\u00a0\u2014 \u0438 \u0432\u00a0\u043a\u043e\u0434\u0435 \u0435\u0441\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a\u00a0\u0442\u0430\u043a\u0438\u043c \u043e\u0448\u0435\u043b\u043e\u043c\u043b\u044f\u044e\u0449\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c)))<\/p>\n<p>\u041a\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0437\u0430\u0441\u043d\u044f\u043b \u0432\u0438\u0434\u0435\u043e \u0441\u00a0\u0440\u0430\u0437\u043e\u0431\u043b\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u0430\u043a\u043e\u0439 \u0441\u0432\u0435\u0440\u0445 \u0434\u043e\u0445\u043e\u0434\u043d\u043e\u0441\u0442\u0438, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043f\u043e <a href=\"https:\/\/youtube.com\/live\/zx1Cn_VaL24?feature=share\" rel=\"noopener noreferrer nofollow\">\u0441\u0441\u044b\u043b\u043a\u0435<\/a>.<\/p>\n<h3>\u0418\u043d\u043e\u0433\u0434\u0430 \u043b\u0443\u0447\u0448\u0435 \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0435\u043c \u0441\u0442\u043e \u0440\u0430\u0437 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c<\/h3>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0435\u0441\u0442\u044c \u043f\u043e \u0448\u0430\u0433\u0430\u043c \u0432 \u0432\u0438\u0434\u0435\u043e, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043f\u043e <a href=\"https:\/\/youtube.com\/live\/UKMH6bBN8NM?feature=share\" rel=\"noopener noreferrer nofollow\">\u0441\u0441\u044b\u043b\u043a\u0435<\/a><\/p>\n<h3>\u0418\u0442\u043e\u0433<\/h3>\n<p>\u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e, \u0447\u0442\u043e\u00a0\u0446\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438\u00a0\u0431\u044b\u043b\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u00a0\u2014 \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0433\u043a\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438\u0445 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0445 \u0440\u043e\u0431\u043e\u0442\u043e\u0432. \u041d\u0438 \u043a\u0430\u043a\u0438\u0445 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0445 \u043a\u043e\u043d\u0441\u0443\u043b\u044c\u0442\u0430\u0446\u0438\u0439 \u0438\u043b\u0438\u00a0\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439 \u043d\u0435\u00a0\u0434\u0430\u044e\u00a0\u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0438\u0448\u0435\u043c \u043a\u043e\u0434 \u0434\u043b\u044f\u00a0\u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0431\u043e\u0442\u0430. \u0418 \u0431\u0435\u0437\u00a0\u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a\u00a0\u2014 \u043d\u0435\u00a0\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430 \u0432\u00a0live \u0440\u0435\u0436\u0438\u043c\u0435&#8230;<\/p>\n<p>\u0418\u0442\u0430\u043a, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0438\u0448\u0438\u0442\u0435 \u043a\u043e\u0434 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430, \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u0442\u0435 \u0435\u0433\u043e \u043d\u0430\u00a0\u0438\u0441\u0442\u043e\u0440\u0438\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0435 Live \u0440\u0435\u0436\u0438\u043c, \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0435 \u0432\u00a0\u0440\u0430\u0431\u043e\u0442\u0443)<\/p>\n<p>\u041a\u0430\u043a\u00a0\u043c\u043d\u0435 \u0432\u0438\u0434\u0438\u0442\u0441\u044f, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e:\u2011) \u0418 \u0436\u0434\u0443 \u0432\u0430\u0448\u0438\u0445 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \/ \u0444\u0438\u043a\u0441\u043e\u0432 \/ \u0438\u0434\u0435\u0439! <\/p>\n<p>P.\u00a0S. \u042d\u0442\u043e \u043a\u043e\u0434 \u0432\u044b\u043b\u043e\u0436\u0438\u043b \u043d\u0430\u00a0GitHub <a href=\"https:\/\/github.com\/WISEPLAT\/alor_trade_robot\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u00a0\u044d\u0442\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435<\/a>. \u041d\u0435\u00a0\u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0441\u0432\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 \u0444\u0430\u0439\u043b \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 <strong>my_config\\Config.py<\/strong><\/p>\n<p>\u0412\u0441\u0435\u043c \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u0434\u043d\u044f! \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430\u00a0\u0443\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f! \u0415\u0441\u043b\u0438 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c \u0442\u0430\u043a\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0442\u043e \u0436\u0434\u0443 \u0432\u0430\u0448\u0435\u0439 \u043f\u043e\u0437\u0438\u0442\u0438\u0432\u043d\u043e\u0439 \u043e\u0446\u0435\u043d\u043a\u0438)) <\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \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\/731354\/\"> https:\/\/habr.com\/ru\/articles\/731354\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438\u00a0\u2014 \u0412\u0410\u0416\u041d\u041e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435: \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u043a\u00a0\u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u0442\u044c \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u043c\u0438 \u0430\u043a\u0446\u0438\u044f\u043c\u0438 \u0438\u043b\u0438\u00a0\u0437\u0430\u0440\u0443\u0431\u0435\u0436\u043d\u044b\u043c\u0438 \u0430\u043a\u0446\u0438\u044f\u043c\u0438. \u0412\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e\u00a0\u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u0431\u043e\u0442\u0430, \u0432\u044b\u00a0\u043b\u0438\u0447\u043d\u043e \u043d\u0435\u0441\u0435\u0442\u0435 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u00a0\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u0435 \u0438\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0438\u043d\u0432\u0435\u0441\u0442\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u00a0\u043d\u0438\u043c\u0438 \u0440\u0438\u0441\u043a\u0438. \u042f \u043d\u0435\u00a0\u043d\u0435\u0441\u0443 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u00a0\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430. \u0418 \u044f \u043d\u0435\u00a0\u0434\u0430\u044e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0438\u043d\u0432\u0435\u0441\u0442\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439 \u0438\u043b\u0438\u00a0\u0441\u043e\u0432\u0435\u0442\u043e\u0432. \u041d\u0435\u00a0\u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435, \u0447\u0442\u043e\u00a0\u0431\u043e\u0442\u044b \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b \u043f\u0440\u0438\u043d\u0435\u0441\u0442\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0443\u0431\u044b\u0442\u043a\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0438\u0445 \u0441\u00a0\u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e.<\/p>\n<h3>\u041f\u0430\u0440\u0443 \u0441\u043b\u043e\u0432 \u043e\u0431\u043e \u043c\u043d\u0435<\/h3>\n<p>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f\u00a0\u043c\u0435\u043d\u044f \u044d\u0442\u043e \u0445\u043e\u0431\u0431\u0438 \u0438 \u043b\u044e\u0431\u0438\u043c\u043e\u0435 \u0434\u0435\u043b\u043e. \u0410\u00a0\u0442\u0430\u043a \u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0448\u0443 \u043d\u0435\u00a0\u043e\u0441\u043e\u0431\u043e \u0440\u0443\u0433\u0430\u0442\u044c \u0437\u0430\u00a0\u043a\u043e\u0434:\u2011)<\/p>\n<h2>\u0412\u044b\u0431\u043e\u0440 \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a<\/h2>\n<p>\u041a\u0430\u043a\u00a0\u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435, \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u043c\u043d\u043e\u0433\u043e))) \u043d\u043e\u00a0\u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0442\u0435, \u0443\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c API\u00a0\u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0448 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u0440\u043e\u0431\u043e\u0442 \u0441\u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u0430\u044f\u0432\u043a\u0438 \u043d\u0430\u00a0\u043f\u043e\u043a\u0443\u043f\u043a\u0443 \u0438 \u043f\u0440\u043e\u0434\u0430\u0436\u0443 \u0430\u043a\u0446\u0438\u0439.<\/p>\n<p>\u0412\u00a0\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0420\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u0434\u043b\u044f\u00a0\u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0438 \u0420\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u043c\u0438 \u0430\u043a\u0446\u0438\u044f\u043c\u0438, \u0435\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c\u0438 \u0430\u043a\u0446\u0438\u044f\u043c\u0438\u00a0\u2014 \u0442\u043e \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043d\u0438\u0445\u00a0\u0436\u0435\u00a0\u2014 \u0447\u0435\u0440\u0435\u0437 \u0421\u041f\u0411 \u0431\u0438\u0440\u0436\u0443. (\u043a\u043e\u0434 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430 \u043d\u0435\u00a0\u043f\u043e\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f\u00a0\u2014 \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u0438\u043a\u0435\u0440\u0430\u00a0\u2014 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0431\u0443\u043c\u0430\u0433\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u0442\u044c).<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0432\u0430\u0441 \u0434\u043e\u043b\u0433\u043e \u043d\u0435\u00a0\u043c\u0443\u0447\u0430\u0442\u044c \u0441\u00a0\u0432\u044b\u0431\u043e\u0440\u043e\u043c \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0434\u043b\u044f\u00a0\u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0431\u043e\u0442\u0430, \u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043c\u043e\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043f\u043e\u0441\u043b\u0435 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u043f\u043e\u00a0\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0445 \u0431\u043e\u0442\u043e\u0432, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u0432\u00a0live \u0440\u0435\u0436\u0438\u043c\u0435\u00a0\u2014 \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0442\u043e\u0440\u0433\u0443\u044e\u0449\u0438\u0445 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u043c\u0438 \u0430\u043a\u0446\u0438\u044f\u043c\u0438.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0434\u0435\u043b\u043e\u043a \u0437\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f, \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c H1<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0443\u0436\u043d\u044b\u0439 \u0438 \u0432\u0430\u0436\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0432\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0431\u043e\u0442\u0430\u00a0\u2014 \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u043d\u0430\u00a0\u0438\u0441\u0442\u043e\u0440\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"https:\/\/github.com\/WISEPLAT\/backtrader\" rel=\"noopener noreferrer nofollow\">BackTrader<\/a>.<\/p>\n<p>\u0418\u0442\u0430\u043a \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c! )))<\/p>\n<p><strong>1\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442<\/strong>\u00a0\u2014 \u0435\u0441\u043b\u0438 \u043e\u0447\u0435\u043d\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u0440\u043e\u0431\u043e\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 \u043b\u044e\u0431\u043e\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u00a0\u2014 \u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0435\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"https:\/\/github.com\/WISEPLAT\/QuikPy\" rel=\"noopener noreferrer nofollow\">QuikPy <\/a>\u0432\u00a0\u0441\u0432\u044f\u0437\u043a\u0435 \u0441\u00a0\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 <a href=\"https:\/\/github.com\/WISEPLAT\/BackTraderQuik\" rel=\"noopener noreferrer nofollow\">BackTraderQuik<\/a>\u00a0\u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0434\u0432\u0443\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u0448\u0435\u043c\u0443 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u043c\u0443 \u0440\u043e\u0431\u043e\u0442\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u00a0\u043b\u044e\u0431\u044b\u043c \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u043c, \u0443\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u043c \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b <strong>Quik<\/strong>. \u0410\u00a0\u044d\u0442\u043e\u0442 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0435\u0441\u0442\u044c \u0443\u00a0\u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432. <\/p>\n<blockquote>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043a\u0430\u043a \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044f \u043c\u043e\u0433\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u043f\u0440\u043e\u0441\u0442\u043e \u0433\u043e\u043b\u043e\u0441\u0443\u0439\u0442\u0435 \u0437\u0430 \u044d\u0442\u043e! )))<\/p>\n<\/blockquote>\n<p>\u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043f\u043e \u044d\u0442\u043e\u0439 \u0441\u0432\u044f\u0437\u043a\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0432\u0430\u0441 \u0432\u044b\u043b\u043e\u0436\u0438\u043b <a href=\"https:\/\/github.com\/WISEPLAT\/Learn-BackTrader\" rel=\"noopener noreferrer nofollow\">\u0432\u043e\u0442 \u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p><strong>2\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442<\/strong>\u00a0\u2014 \u043e\u043d \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u00a0\u0432\u044b\u0431\u043e\u0440\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432, \u043d\u043e\u00a0\u0434\u0430\u0451\u0442 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0441\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 API \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432, \u0438 \u043e\u043d\u0438!! \u0437\u0430\u043c\u0435\u0442\u044c\u0442\u0435\u00a0\u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u043a\u043e\u0441\u044f\u043a\u0438) \u0438 <strong>\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u00a0\u2014 \u044d\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u043b\u044e\u0441!<\/strong><\/p>\n<p>\u0414\u043b\u044f\u00a0\u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0424\u0438\u043d\u0430\u043c\u00a0\u2014 API \u0435\u0449\u0435 \u0432\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 ))) \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <a href=\"https:\/\/github.com\/WISEPLAT\/FinamPy\" rel=\"noopener noreferrer nofollow\">FinamPy<\/a> + <a href=\"https:\/\/github.com\/WISEPLAT\/BackTraderFinam\" rel=\"noopener noreferrer nofollow\">BackTraderFinam<\/a>  <\/p>\n<p>\u0414\u043b\u044f\u00a0\u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0422\u0438\u043d\u044c\u043a\u043e\u0444\u0444\u00a0\u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/github.com\/WISEPLAT\/BackTraderTinkoff\" rel=\"noopener noreferrer nofollow\">BackTraderTinkoff<\/a> <br \/>* \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043a\u043e\u0434\u0430 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b \u0432\u00a0\u0438\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438\u00a0\u2014 <a href=\"https:\/\/github.com\/Tinkoff\/invest-python\/blob\/main\/examples\/wiseplat_live_strategy_print_ohlcv.py\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438<\/a> \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e API \u0422\u0438\u043d\u044c\u043a\u043e\u0444\u0444<\/p>\n<p>\u0414\u043b\u044f\u00a0\u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0410\u043b\u043e\u0440\u00a0\u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <a href=\"https:\/\/github.com\/WISEPLAT\/AlorPy\" rel=\"noopener noreferrer nofollow\">AlorPy<\/a> \u0438 <a href=\"https:\/\/github.com\/WISEPLAT\/BackTraderAlor\" rel=\"noopener noreferrer nofollow\">BackTraderAlor<\/a>  <\/p>\n<p>\u041e\u0424\u0424\u0422\u041e\u041f\u0418\u041a: \u0415\u0441\u043b\u0438 \u043a\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u00a0\u043a\u0440\u0438\u043f\u0442\u043e\u0431\u0438\u0440\u0436\u0435\u00a0\u2014 \u0442\u043e \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u0432\u043e\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"https:\/\/github.com\/WISEPLAT\/backtrader_binance\" rel=\"noopener noreferrer nofollow\">backtrader_binance<\/a>, \u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0430\u043a\u00a0\u0436\u0435, \u0442.\u00a0\u0435. \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442\u00a0\u0436\u0435 \u043a\u043e\u0434, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f\u00a0\u0440\u0430\u0437\u043d\u044b\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432, \u0432\u043e\u0442 \u043f\u0440\u043e <a href=\"https:\/\/habr.com\/ru\/articles\/729036\/\" rel=\"noopener noreferrer nofollow\">\u043d\u0435\u0435 \u0441\u0442\u0430\u0442\u044c\u044f<\/a>.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u00a0\u2014 \u0410\u043b\u043e\u0440. )) \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043a\u0430\u043a\u00a0\u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430 \u0434\u043b\u044f\u00a0\u0424\u0438\u043d\u0430\u043c \u0438\u043b\u0438\u00a0\u0422\u0438\u043d\u044c\u043a\u043e\u0444\u0444\u00a0\u2014 \u043a\u0430\u043a\u00a0\u044d\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044f \u043c\u043e\u0433\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u043f\u0440\u043e\u0441\u0442\u043e \u0433\u043e\u043b\u043e\u0441\u0443\u0439\u0442\u0435 \u0437\u0430\u00a0\u044d\u0442\u043e! )))<\/p>\n<h2>\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0431\u043e\u0442\u0430<\/h2>\n<h3>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f<\/h3>\n<ol>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e\u00a0<a href=\"https:\/\/www.python.org\/downloads\/\" rel=\"noopener noreferrer nofollow\">Python 3.11<\/a>;<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u0440\u0435\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\u00a0<a href=\"https:\/\/www.jetbrains.com\/pycharm\/download\/#section=windows\" rel=\"noopener noreferrer nofollow\">PyCharm Community 2023.1<\/a>;<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c PyCharm Community;<\/p>\n<\/li>\n<li>\n<p>\u0412 \u043d\u0451\u043c \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0435\u0433\u043e \u043d\u0430\u0437\u043e\u0432\u0451\u043c\u00a0<strong>alor_trade_robot<\/strong>\u00a0\u0438 \u0443\u043a\u0430\u0436\u0435\u043c \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435\u00a0<strong>Virtualenv<\/strong>, \u0441 Python 3.11 => \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c &#171;Create&#187;;<\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\">\n<div><figcaption>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043b\u044f \u0430\u043b\u0433\u043e-\u0442\u0440\u0435\u0439\u0434\u0438\u043d\u0433\u0430<\/figcaption><\/div>\n<\/figure>\n<ol start=\"5\">\n<li>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u043e\u0437\u0434\u0430\u043b\u0441\u044f \u0438 \u0432 \u043d\u0451\u043c \u0441\u043e\u0437\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435, \u043c\u044b \u0441\u0442\u0430\u043b\u0438 \u0433\u043e\u0442\u043e\u0432\u044b \u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a))) \u041a\u043b\u0438\u043a\u0430\u0435\u043c \u0432\u043d\u0438\u0437\u0443 \u0441\u043b\u0435\u0432\u0430 \u043d\u0430 &#171;Terminal&#187; \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u0431\u0443\u0434\u0435\u043c \u0432\u0432\u043e\u0434\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a;  <\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\">\n<div><figcaption>\u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u043f\u0440\u043e\u0435\u043a\u0442\u0430  <\/figcaption><\/div>\n<\/figure>\n<ol start=\"6\">\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438:<\/p>\n<p>\u0412 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0432\u0432\u043e\u0434\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0431\u0440\u043e\u043a\u0435\u0440\u0443 \u0410\u043b\u043e\u0440 \u043f\u043e API:<\/p>\n<p><code>git clone https:\/\/github.com\/WISEPLAT\/AlorPy<\/code><\/p>\n<p>\u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 API \u0410\u043b\u043e\u0440\u0430 \u0441 <a href=\"https:\/\/github.com\/WISEPLAT\/backtrader\" rel=\"noopener noreferrer nofollow\">Backtrader<\/a>:<\/p>\n<p><code>git clone https:\/\/github.com\/WISEPLAT\/BackTraderAlor<\/code> <\/p>\n<p>\u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u0438\u0445 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0439 \u0443 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0434\u0432\u0435 \u043f\u0430\u043f\u043a\u0438 AlorPy \u0438 BackTraderAlor<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 AlorPy \u0438 BackTraderAlor<\/figcaption><\/div>\n<\/figure>\n<\/li>\n<\/ol>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0445 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0439\u00a0<a href=\"https:\/\/github.com\/WISEPLAT\/backtrader\" rel=\"noopener noreferrer nofollow\">Backtrader<\/a><\/p>\n<p><code>pip install git+https:\/\/github.com\/WISEPLAT\/backtrader.git<\/code><\/p>\n<p>P.S. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u00a0<a href=\"https:\/\/github.com\/WISEPLAT\/backtrader\" rel=\"noopener noreferrer nofollow\">Backtrader<\/a>\u00a0\u0438\u0437 \u043c\u043e\u0435\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f (\u0442\u0430\u043a \u043a\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0432 \u043d\u0435\u043c \u0441\u0432\u043e\u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u044b).<\/p>\n<p>\u0418 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c<\/p>\n<p><code>pip install requests pytz websockets matplotlib<\/code>  <\/p>\n<h3>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438<\/h3>\n<p>\u0427\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043b\u0435\u0433\u0447\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u0438\u043c\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0438, \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0432\u043d\u0443\u0442\u0440\u0438 \u044d\u0442\u0438\u0445 \u043f\u0430\u043f\u043e\u043a\u00a0<strong>AlorPy<\/strong>\u00a0\u0438\u00a0<strong>BackTraderAlor<\/strong>.<\/p>\n<p>\u041d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0434\u0432\u0430 \u0444\u0430\u0439\u043b\u0430 <strong>02 &#8212; Symbols.py<\/strong> \u0438 <strong>Strategy.py<\/strong> \u0438\u0437 \u043f\u0430\u043f\u043a\u0438 BackTraderAlor\\DataExamples<\/p>\n<figure class=\"full-width\">\n<div><figcaption><strong>02 &#8212; Symbols.py<\/strong> \u0438 <strong>Strategy.py<\/strong><\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0438\u0445 \u0432 \u043a\u043e\u0440\u0435\u043d\u044c \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u043f\u043e\u043c\u0435\u0449\u0430\u0435\u043c \u0444\u0430\u0439\u043b\u044b \u0432 \u043a\u043e\u0440\u0435\u043d\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043e\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 AlorPy\\Config.py<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u0415\u0433\u043e \u0442\u043e\u0436\u0435 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0432 \u043a\u043e\u0440\u0435\u043d\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u043f\u0430\u043f\u043a\u0443 <strong>my_config<\/strong>(\u0435\u0451 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c), \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0442\u0430\u043a:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0432\u043e\u0439 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0430 <strong>02\u00a0\u2014 Symbols.py<\/strong>, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e:<\/p>\n<p>1) \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0432\u043e\u0439 <strong>API \u043a\u043b\u044e\u0447 <\/strong>\u0438 \u0432\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u00a0\u043f\u043e\u043b\u0435 RefreshToken;<\/p>\n<p>2) \u0443\u0437\u043d\u0430\u0442\u044c \u0441\u0432\u043e\u0439 <strong>UserName<\/strong> \u0438 \u0432\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u00a0\u043f\u043e\u043b\u0435 UserName;<\/p>\n<p>3) \u0443\u0437\u043d\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u0444\u0435\u043b\u044f \u0434\u043b\u044f\u00a0\u0424\u043e\u043d\u0434\u043e\u0432\u043e\u0433\u043e \u0440\u044b\u043d\u043a\u0430 \u0438 \u0432\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u00a0\u043f\u043e\u043b\u0435 PortfolioStocks<br \/><em>\u2014 \u0447\u0435\u0440\u0435\u0437 \u0444\u0430\u0439\u043b AlorPy\\Examples\\02\u00a0\u2014 Accounts.py\u00a0\u2014 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435;<\/em><\/p>\n<p>4) \u0443\u0437\u043d\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u0444\u0435\u043b\u044f \u0434\u043b\u044f\u00a0\u0421\u0440\u043e\u0447\u043d\u043e\u0433\u043e \u0440\u044b\u043d\u043a\u0430 \u0438 \u0432\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u00a0\u043f\u043e\u043b\u0435 PortfolioFutures<br \/><em>\u2014 \u0447\u0435\u0440\u0435\u0437 \u0444\u0430\u0439\u043b AlorPy\\Examples\\02\u00a0\u2014 Accounts.py\u00a0\u2014 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435;<\/em><\/p>\n<p>5) \u0443\u0437\u043d\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u0444\u0435\u043b\u044f \u0434\u043b\u044f\u00a0\u0412\u0430\u043b\u044e\u0442\u043d\u043e\u0433\u043e \u0440\u044b\u043d\u043a\u0430 \u0438 \u0432\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u00a0\u043f\u043e\u043b\u0435 PortfolioFx<br \/><em>\u2014 \u0447\u0435\u0440\u0435\u0437 \u0444\u0430\u0439\u043b AlorPy\\Examples\\02\u00a0\u2014 Accounts.py\u00a0\u2014 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/em><\/p>\n<p>\u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e, \u0447\u0442\u043e\u00a0\u0432\u0441\u0451 \u044d\u0442\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432\u00a0\u0444\u0430\u0439\u043b\u0435 <strong>my_config\\Config.py<\/strong><\/p>\n<p>\u0418 \u043a\u0430\u043a\u00a0\u0432\u0441\u0435 \u044d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u0442\u0430\u043a\u00a0\u0436\u0435 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u00a0\u044d\u0442\u043e\u043c\u00a0\u0436\u0435 \u0444\u0430\u0439\u043b\u0435.<\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u00a0\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f\u00a0\u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0438 \u043d\u0430\u00a0\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0441\u0447\u0435\u0442\u0435 \u043d\u0430\u00a0\u0444\u043e\u043d\u0434\u043e\u0432\u043e\u043c \u0440\u044b\u043d\u043a\u0435.<\/p>\n<p>\u0422\u0430\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f:<\/p>\n<figure class=\"full-width\"><\/figure>\n<h4>\u041a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u043a\u0435\u043d Refresh Token<\/h4>\n<p>1) <a href=\"https:\/\/www.alorbroker.ru\/open?promo=L0708\" rel=\"noopener noreferrer nofollow\">\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u0447\u0435\u0442 \u0432\u00a0\u0410\u043b\u043e\u0440 <\/a>(\u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e!);<\/p>\n<p>2) \u0414\u043b\u044f\u00a0\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043b\u043e\u0433\u0438\u043d\u0430\/\u043f\u0430\u0440\u043e\u043b\u044f \u0434\u0435\u043c\u043e \u0441\u0447\u0435\u0442\u0430 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u044f\u0432\u043a\u0443 \u0432\u00a0Telegram \u043d\u0430 <a href=\"https:\/\/t.me\/AlorOpenAPI\" rel=\"noopener noreferrer nofollow\">https:\/\/t.me\/AlorOpenAPI<\/a>;<\/p>\n<p>3) \u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 <a href=\"https:\/\/alor.dev\/login\" rel=\"noopener noreferrer nofollow\">https:\/\/alor.dev\/login<\/a>;<\/p>\n<p>4) \u0412\u044b\u0431\u0440\u0430\u0442\u044c \u00ab\u0422\u043e\u043a\u0435\u043d\u044b \u0434\u043b\u044f\u00a0\u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a\u00a0API\u00bb.<\/p>\n<h3>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0410\u043b\u043e\u0440\u0443 \u0447\u0435\u0440\u0435\u0437 API<\/h3>\n<p>\u0412\u00a0\u0444\u0430\u0439\u043b\u0435 <strong>02\u00a0\u2014 Symbols.py <\/strong>\u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 \u0444\u0430\u0439\u043b <strong>my_config\\Config.py <\/strong>\u0434\u043b\u044f\u00a0\u044d\u0442\u043e\u0433\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0438 \u043f\u0440\u0430\u0432\u0438\u043c \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u043c\u0435\u043d\u044f\u0435\u043c <code>AlorPy.Config<\/code> \u043d\u0430 <code>my_config.Config<\/code> \u0441\u0442\u0430\u043d\u0435\u0442 \u0442\u0430\u043a:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433 \u0444\u0430\u0439\u043b\u0430<\/figcaption><\/div>\n<\/figure>\n<p><strong>\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0435 LiveBars \u0440\u0435\u0436\u0438\u043c, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 LiveBars=False<\/strong><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f&#8230; \u0414\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0442\u0430\u043a:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>LifeDars=False, \u0438 \u0431\u0430\u0440\u044b \u043f\u0440\u0438\u0448\u043b\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u0430\u043a\u00a0\u043c\u044b \u0432\u0438\u0434\u0438\u043c\u00a0\u2014 \u0442\u0435\u0441\u0442 \u0443\u0434\u0430\u043b\u0441\u044f\u00a0\u2014 \u0431\u0430\u0440\u044b \u043f\u0440\u0438\u0448\u043b\u0438.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043a\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430!!<\/p>\n<h3>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430 \u0434\u043b\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0438 \u0430\u043a\u0446\u0438\u044f\u043c\u0438<\/h3>\n<p>\u0414\u043b\u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043a\u043e\u0434\u0430, \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u0430, \u043f\u043e\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u00a0\u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0435\u0439 \u0438 \u0441\u00a0\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u00a0\u0440\u044b\u043d\u043a\u0430 \u043f\u043e\u00a0\u0442\u0438\u043a\u0435\u0440\u0443\/\u0442\u0438\u043a\u0435\u0440\u0430\u043c \u0438 \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/p>\n<pre><code class=\"python\">\u0438\u043c\u043f\u043e\u0440\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445_\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a  \u043a\u043b\u0430\u0441\u0441 \u0418\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432  \u043a\u043b\u0430\u0441\u0441 \u0421\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438\/\u0422\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b  # --- \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0440\u0430\u0437\u0434\u0435\u043b --- \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e API \u043a \u0431\u0438\u0440\u0436\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438   \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0442\u0438\u043a\u0435\u0440\u0443\/\u0442\u0438\u043a\u0435\u0440\u0430\u043c \u043f\u043e API   \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u044d\u0442\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0435\u0439   \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u044f\u0432\u043e\u043a \u043d\u0430 \u043f\u043e\u043a\u0443\u043f\u043a\u0443\/\u043f\u0440\u043e\u0434\u0430\u0436\u0443 \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0438\u0437 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0432\u044b\u0432\u043e\u0434 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432<\/code><\/pre>\n<p>\u041a\u0430\u043a\u00a0\u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u043d\u0430\u043c \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0443\u043d\u043a\u0442\u044b:<\/p>\n<ul>\n<li>\n<p>\u00ab\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u044d\u0442\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0435\u0439\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u00ab\u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u044f\u0432\u043e\u043a \u043d\u0430\u00a0\u043f\u043e\u043a\u0443\u043f\u043a\u0443\/\u043f\u0440\u043e\u0434\u0430\u0436\u0443\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0438\u0437\u00a0\u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u0432\u043e\u0434 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432.<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0443\u043d\u043a\u0442\u044b \u0441\u0434\u0435\u043b\u0430\u043d\u044b \u0432\u00a0\u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435\u00a0\u2014 \u043a\u043e\u0434 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u044b\u0439, \u043d\u043e\u00a0\u044f \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0435\u0433\u043e \u0437\u0434\u0435\u0441\u044c, \u0435\u0449\u0451 \u0440\u0430\u0437, \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0432\u00a0\u043b\u0438\u0448\u043d\u0435\u0435\u00a0\u2014 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044f\u00a0\u2014 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u0435\u00a0\u0443\u0434\u0430\u043b\u044f\u044f, \u0447\u0442\u043e\u0431\u044b \u0432\u0430\u043c \u043b\u0435\u0433\u0447\u0435\u00a0\u0431\u044b\u043b\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c.<\/p>\n<p>\u0418\u0442\u0430\u043a \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u0430\u0439\u043b \u0434\u043b\u044f\u00a0\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <strong>02\u00a0\u2014 Symbols.py<\/strong>, \u0432\u043e\u0442 \u0435\u0433\u043e \u043a\u043e\u0434:<\/p>\n<pre><code class=\"python\">from datetime import date, datetime from backtrader import Cerebro, TimeFrame from BackTraderAlor.ALStore import ALStore  # \u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 Alor from my_config.Config import Config  # \u0424\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 import Strategy as ts  # \u0422\u043e\u0440\u0433\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b  # \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0438\u043a\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u041e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0443 if __name__ == '__main__':  # \u0422\u043e\u0447\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430     symbols = ('MOEX.SBER', 'MOEX.GAZP', 'MOEX.LKOH', 'MOEX.GMKN',)  # \u041a\u043e\u0440\u0442\u0435\u0436 \u0442\u0438\u043a\u0435\u0440\u043e\u0432     store = ALStore(UserName=Config.UserName, RefreshToken=Config.RefreshToken, Boards=Config.Boards, Accounts=Config.Accounts)  # \u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 Alor     cerebro = Cerebro(stdstats=False)  # \u0418\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u043c \"\u0434\u0432\u0438\u0436\u043e\u043a\" BackTrader. \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0441\u0434\u0435\u043b\u043e\u043a \u0438 \u043a\u0440\u0438\u0432\u043e\u0439 \u0434\u043e\u0445\u043e\u0434\u043d\u043e\u0441\u0442\u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u0430     for symbol in symbols:  # \u041f\u0440\u043e\u0431\u0435\u0433\u0430\u0435\u043c\u0441\u044f \u043f\u043e \u0432\u0441\u0435\u043c \u0442\u0438\u043a\u0435\u0440\u0430\u043c         # data = store.getdata(dataname=symbol, timeframe=TimeFrame.Minutes, compression=1, fromdate=date.today(), LiveBars=False)  # \u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438 \u043d\u043e\u0432\u044b\u0435 \u0431\u0430\u0440\u044b \u0442\u0438\u043a\u0435\u0440\u0430 \u0441 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0435\u0441\u0441\u0438\u0438         data = store.getdata(dataname=symbol, timeframe=TimeFrame.Minutes, compression=15, fromdate=datetime(2021, 10, 4), LiveBars=False)  # \u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438 \u043d\u043e\u0432\u044b\u0435 \u0431\u0430\u0440\u044b \u0442\u0438\u043a\u0435\u0440\u0430 \u0441 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0435\u0441\u0441\u0438\u0438         cerebro.adddata(data)  # \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0438\u043a\u0435\u0440     # cerebro.addstrategy(ts.PrintStatusAndBars, name=\"One Ticker\", symbols=('MOEX.SBER',))  # \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u0440\u0433\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0442\u0438\u043a\u0435\u0440\u0443     # cerebro.addstrategy(ts.PrintStatusAndBars, name=\"Two Tickers\", symbols=('MOEX.GAZP', 'MOEX.LKOH',))  # \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u0440\u0433\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u043e \u0434\u0432\u0443\u043c \u0442\u0438\u043a\u0435\u0440\u0430\u043c     cerebro.addstrategy(ts.PrintStatusAndBars, name=\"All Tickers\")  # \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u0440\u0433\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u043e \u0432\u0441\u0435\u043c \u0442\u0438\u043a\u0435\u0440\u0430\u043c     cerebro.run()  # \u0417\u0430\u043f\u0443\u0441\u043a \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b <\/code><\/pre>\n<p>\u0412\u043d\u0435\u0441\u0435\u043d\u043d\u044b\u0435 \u0432 \u043d\u0435\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p>\u043f\u043e\u043c\u0435\u043d\u044f\u043b \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c \u043d\u0430 M15;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b\/\u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u043a\u043e \u0432\u0441\u0435\u043c \u0442\u0438\u043a\u0435\u0440\u0430\u043c;<\/p>\n<\/li>\n<li>\n<p>\u0438 \u0434\u0430\u0442\u0443 \u0441\u0442\u0430\u0440\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u0430\u0440\u043e\u0432 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b \u043d\u0430 datetime(2021, 10, 4).<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u0430\u0439\u043b \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 <strong>Strateg<\/strong><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-399247","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/399247","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=399247"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/399247\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=399247"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=399247"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=399247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}