{"id":5046,"date":"2026-10-16T07:34:00","date_gmt":"2026-10-15T23:34:00","guid":{"rendered":"https:\/\/laoyulaoyu.com\/?p=5046"},"modified":"2026-10-09T17:40:38","modified_gmt":"2026-10-09T09:40:38","slug":"%e5%9b%9e%e6%b5%8b%e4%b8%8d%e7%94%a8%e9%87%8d%e5%86%99%e5%b0%b1%e8%83%bd%e4%b8%8a%e5%ae%9e%e7%9b%98%ef%bc%8c%e8%bf%99%e4%ba%8b-nautilustrader-%e7%9c%9f%e7%9a%84%e5%81%9a%e5%88%b0%e4%ba%86%e5%90%97","status":"publish","type":"post","link":"https:\/\/laoyulaoyu.com\/index.php\/2026\/10\/16\/%e5%9b%9e%e6%b5%8b%e4%b8%8d%e7%94%a8%e9%87%8d%e5%86%99%e5%b0%b1%e8%83%bd%e4%b8%8a%e5%ae%9e%e7%9b%98%ef%bc%8c%e8%bf%99%e4%ba%8b-nautilustrader-%e7%9c%9f%e7%9a%84%e5%81%9a%e5%88%b0%e4%ba%86%e5%90%97\/","title":{"rendered":"\u56de\u6d4b\u4e0d\u7528\u91cd\u5199\u5c31\u80fd\u4e0a\u5b9e\u76d8\uff0c\u8fd9\u4e8b NautilusTrader \u771f\u7684\u505a\u5230\u4e86\u5417\uff1f"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u4f5c \u8005\uff1a<a href=\"https:\/\/www.laoyulaoyu.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">\u8001\u4f59\u635e\u9c7c<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-cyan-bluish-gray-color\">\u539f\u521b\u4e0d\u6613\uff0c\u8f6c\u8f7d\u8bf7\u6807\u660e\u51fa\u5904\u53ca\u539f\u4f5c\u8005\u3002<\/mark><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"900\" height=\"383\" src=\"https:\/\/laoyulaoyu.com\/wp-content\/uploads\/2026\/10\/cover-3.png\" alt=\"\" class=\"wp-image-5047\" srcset=\"https:\/\/laoyulaoyu.com\/wp-content\/uploads\/2026\/10\/cover-3.png 900w, https:\/\/laoyulaoyu.com\/wp-content\/uploads\/2026\/10\/cover-3-300x128.jpg 300w, https:\/\/laoyulaoyu.com\/wp-content\/uploads\/2026\/10\/cover-3-766x326.jpg 766w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u6587\u4e2d\u793a\u4f8b\u4ec5\u7528\u4e8e\u6280\u672f\u8ba8\u8bba\uff0c\u4e0d\u6784\u6210\u4efb\u4f55\u64cd\u4f5c\u5efa\u8bae\u3002<br>\u91cf\u5316\u7b56\u7565\u5f00\u53d1\u5e94\u4ee5\u5b66\u4e60\u548c\u6280\u672f\u4ea4\u6d41\u4e3a\u76ee\u7684\u3002<br>\u672c\u53f7\u4e0d\u8350\u80a1\u3001\u4e0d\u5356\u8bfe\u3001\u4e0d\u627f\u8bfa\u6536\u76ca\u3002<br>\u5e02\u573a\u6709\u98ce\u9669\uff0c\u8bf7\u5408\u6cd5\u5408\u89c4\u6295\u8d44\u3002<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\u672c\u6587\u7ea6 4800 \u5b57 | \u9884\u8ba1\u9605\u8bfb 12\u5206\u949f\uff0c\u540e\u6709\u4ee3\u7801\u548c\u5f00\u6e90\u4ed3\u5e93\u4f7f\u7528\u8def\u5f84\uff0c\u5efa\u8bae\u5148\u6536\u85cf\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">NautilusTrader \u4e0d\u662f\u4e00\u4e2a\u7b56\u7565\u5e93\uff0c\u4e5f\u4e0d\u662f\u4e00\u4e2a\u56de\u6d4b\u5de5\u5177\u3002\u5b83\u662f\u4e00\u5957\u5b8c\u6574\u7684\u4ea4\u6613\u5f15\u64ce\uff0c\u4ea4\u6613\u7cfb\u7edf\u7684\u5730\u57fa\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GitHub \u4e0a 29740 \u4e2a star\u30013949 \u4e2a fork\uff0cLGPL-3.0 \u534f\u8bae\uff0c2018 \u5e74\u7acb\u9879\uff0cnautechsystems \u7ef4\u62a4\uff0c\u5230\u4eca\u5929\u8fd8\u5728\u9ad8\u9891\u63d0\u4ea4\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b83\u8981\u89e3\u51b3\u7684\u662f\u8fd9\u4e48\u4e00\u4ef6\u4e8b\u3002\u5e02\u9762\u4e0a\u5927\u591a\u6570\u91cf\u5316\u6846\u67b6\uff0c\u628a\u7814\u7a76\u9636\u6bb5\u548c\u4ea4\u6613\u9636\u6bb5\u5206\u6210\u4e86\u4e24\u5957\u4e1c\u897f\u3002\u7814\u7a76\u7528 pandas \u4e00\u628a\u68ad\uff0c\u7b56\u7565\u903b\u8f91\u9a8c\u8bc1\u5b8c\uff0c\u7b49\u771f\u8981\u4e0a\u5e02\u573a\uff0c\u884c\u60c5\u600e\u4e48\u63a5\u3001\u8ba2\u5355\u600e\u4e48\u62a5\u3001\u4ed3\u4f4d\u600e\u4e48\u7b97\u3001\u65ad\u7ebf\u600e\u4e48\u91cd\u8fde\u3001\u5bf9\u4e0d\u4e0a\u8d26\u600e\u4e48\u529e\uff0c\u5168\u90e8\u63a8\u5012\u91cd\u5199\u4e00\u904d\u3002\u8fd9\u5957\u91cd\u5199\u7684\u6d3b\u513f\u5f80\u5f80\u6bd4\u5199\u7b56\u7565\u672c\u8eab\u8fd8\u8d39\u65f6\u95f4\uff0c\u800c\u4e14\u6539\u4e00\u4e2a\u53c2\u6570\u8981\u8bb0\u5f97\u4e24\u8fb9\u90fd\u6539\uff0c\u5fd8\u4e00\u8fb9\u5c31\u7b49\u7740\u5b9e\u76d8\u7ed9\u4f60\u60ca\u559c\u5427\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b83\u7684\u601d\u8def\u662f\u628a\u5730\u57fa\u5148\u94fa\u597d\u3002\u7814\u7a76\u548c\u5b9e\u76d8\u8e29\u5728\u540c\u4e00\u5757\u5730\u57fa\u4e0a\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6362\u53e5\u8bdd\u8bf4\uff0c\u4f60\u5199\u7b56\u7565\u7684\u90a3\u90e8\u5206\u4ee3\u7801\uff0c\u8dd1\u56de\u6d4b\u548c\u8dd1\u5b9e\u76d8\u662f\u540c\u4e00\u4efd\u3002\u5dee\u7684\u662f\u63a5\u54ea\u4e2a\u4ea4\u6613\u6240\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u4e00\u3001\u5b83\u7684\u7ed3\u6784\u957f\u4ec0\u4e48\u6837<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4e00\u70b9\u662f\u7406\u89e3\u5b83\u7684\u5173\u952e\uff0c\u4e0d\u7136\u540e\u9762\u5168\u770b\u4e0d\u61c2\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b83\u662f\u4e24\u5c42\u7ed3\u6784\uff0c\u5e95\u4e0b\u90a3\u5c42\u7528 Rust \u5199\uff0c\u4e0a\u9762\u90a3\u5c42\u7528 Python\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"624\" src=\"https:\/\/laoyulaoyu.com\/wp-content\/uploads\/2026\/10\/nautilus-trader-1024x624.png\" alt=\"\" class=\"wp-image-5048\" srcset=\"https:\/\/laoyulaoyu.com\/wp-content\/uploads\/2026\/10\/nautilus-trader-1024x624.png 1024w, https:\/\/laoyulaoyu.com\/wp-content\/uploads\/2026\/10\/nautilus-trader-300x183.png 300w, https:\/\/laoyulaoyu.com\/wp-content\/uploads\/2026\/10\/nautilus-trader-767x468.png 767w, https:\/\/laoyulaoyu.com\/wp-content\/uploads\/2026\/10\/nautilus-trader-1536x937.png 1536w, https:\/\/laoyulaoyu.com\/wp-content\/uploads\/2026\/10\/nautilus-trader-2048x1249.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u5e95\u4e0b\u90a3\u5c42 Rust \u5185\u6838\u8d1f\u8d23\u6240\u6709&#8221;\u4e0d\u80fd\u6162&#8221;\u548c&#8221;\u4e0d\u80fd\u9519&#8221;\u7684\u4e1c\u897f\u3002\u884c\u60c5\u6570\u636e\u8fdb\u6765\u3001\u8ba2\u5355\u64ae\u5408\u3001\u6301\u4ed3\u4e0e\u8d44\u91d1\u8ba1\u7b97\u3001\u98ce\u63a7\u6821\u9a8c\u3001\u6267\u884c\u7b97\u6cd5\u3001\u8ddf\u4ea4\u6613\u6240\u7684\u901a\u4fe1\uff0c\u5168\u5728\u8fd9\u4e00\u5c42\u3002\u5b83\u8dd1\u5728 tokio \u5f02\u6b65\u8fd0\u884c\u65f6\u4e0a\uff0c\u5185\u5b58\u5206\u914d\u5668\u7528\u7684\u662f mimalloc\uff0c\u65f6\u95f4\u7cbe\u5ea6\u662f\u7eb3\u79d2\u7ea7\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0a\u9762\u90a3\u5c42 Python \u53ea\u8d1f\u8d23\u4e00\u4ef6\u4e8b\uff0c\u5199\u7b56\u7565\u3002\u4f60\u5199\u4e00\u4e2a\u7c7b\u7ee7\u627f Strategy\uff0c\u8ba2\u9605 K \u7ebf\u6216\u8005\u76d8\u53e3\uff0c\u5728\u56de\u8c03\u91cc\u4e0b\u5224\u65ad\u8981\u4e0d\u8981\u4e0b\u5355\u3002\u8fd9\u90e8\u5206\u662f Python \u8212\u670d\u7684\u90a3\u90e8\u5206\uff0c\u4e0d\u7528\u8ddf\u5185\u5b58\u548c\u7ebf\u7a0b\u6253\u4ea4\u9053\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e2d\u95f4\u9760 PyO3 \u7c98\u8d77\u6765\u3002\u8fd9\u4e5f\u662f\u4e3a\u4ec0\u4e48\u88c5\u5b8c\u5305\u8981 60MB\uff0c\u91cc\u9762\u585e\u7684\u662f\u5b8c\u6574\u7684 Rust \u8fd0\u884c\u65f6\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b83\u5185\u90e8\u8fd8\u6709\u51e0\u4e2a\u6838\u5fc3\u7ec4\u4ef6\uff0c\u503c\u5f97\u77e5\u9053\u540d\u5b57\uff0c\u56e0\u4e3a\u6587\u6863\u91cc\u5230\u5904\u662f\u5b83\u4eec\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>`Cache` \u6570\u636e\u7f13\u5b58\u3002\u884c\u60c5\u548c\u8d26\u6237\u72b6\u6001\u90fd\u5b58\u5728\u8fd9\u91cc\uff0c\u7b56\u7565\u67e5\u8be2\u8d70\u5b83<\/li>\n\n\n\n<li>`MessageBus` \u6d88\u606f\u603b\u7ebf\u3002\u7ec4\u4ef6\u4e4b\u95f4\u9760\u5b83\u901a\u4fe1\uff0c\u4e0d\u76f4\u63a5\u4e92\u76f8\u8c03\u7528<\/li>\n\n\n\n<li>`Portfolio` \u6301\u4ed3\u4e0e\u8d26\u6237\u3002\u7b97\u4ed3\u4f4d\u3001\u7b97\u76c8\u4e8f\u3001\u7b97\u4fdd\u8bc1\u91d1<\/li>\n\n\n\n<li>`RiskEngine` \u98ce\u63a7\u3002\u4e0b\u5355\u524d\u6821\u9a8c\uff0c\u62d2\u4e0d\u5408\u89c4\u7684\u8ba2\u5355<\/li>\n\n\n\n<li>`ExecutionEngine` \u6267\u884c\u3002\u628a\u8ba2\u5355\u9001\u5230\u4ea4\u6613\u6240\uff0c\u6536\u56de\u6267<\/li>\n\n\n\n<li>`Actors` \u53c2\u4e0e\u8005\u3002\u4e0d\u6b62\u7b56\u7565\u80fd\u505a Actor\uff0c\u884c\u60c5\u8ba2\u9605\u3001\u5bf9\u8d26\u903b\u8f91\u90fd\u53ef\u4ee5\u505a\u6210 Actor \u6302\u8fdb\u53bb<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd8\u6709\u4e00\u70b9\u5b83\u7684\u8bbe\u8ba1\u53d6\u5411\u8981\u7559\u610f\uff0c\u5b83\u7684 API \u5206\u9ad8\u4f4e\u4e24\u6863\u3002\u4f4e\u5c42 `BacktestEngine` \u4f60\u53ef\u4ee5\u968f\u4fbf\u62c6\u5f00\u7ec4\u88c5\uff0c\u63a7\u5236\u6700\u7ec6\uff0c\u4f46\u6ca1\u6709\u901a\u5f80\u5b9e\u76d8\u7684\u8def\uff1b\u9ad8\u5c42 `BacktestNode` \u914d\u7f6e\u5316\u3001\u6709\u6570\u636e\u76ee\u5f55\u3001\u80fd\u6279\u91cf\u8dd1\uff0c\u5b98\u65b9\u63a8\u8350\u7528\u8fd9\u4e2a\uff0c\u5b83\u624d\u662f\u80fd\u8fc7\u6e21\u5230\u5b9e\u76d8\u7684\u90a3\u6761\u8def\u3002\u6240\u4ee5\u522b\u4e00\u4e0a\u6765\u5c31\u7528\u4f4e\u5c42 API \u5199\u7b56\u7565\uff0c\u5199\u5b8c\u53d1\u73b0\u4e0a\u4e0d\u4e86\u5b9e\u76d8\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8d44\u4ea7\u7c7b\u522b\u4e0a\u5b83\u662f\u8d44\u4ea7\u65e0\u5173\u7684\uff0c\u4e0d\u7ed1\u5b9a\u67d0\u4e00\u7c7b\u54c1\u79cd\u3002\u80a1\u7968\u3001\u671f\u8d27\u3001\u671f\u6743\u3001\u5916\u6c47\u3001\u52a0\u5bc6\u8d27\u5e01\u3001\u535a\u5f69\u6295\u6ce8\uff0c\u90fd\u80fd\u585e\u8fdb\u540c\u4e00\u5957\u7cfb\u7edf\u7814\u7a76\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u4e8c\u3001\u4f5c\u8005\u81ea\u5df1\u600e\u4e48\u8bf4<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b83\u7684\u81ea\u6211\u4ecb\u7ecd\u91cc\u6709\u4e00\u53e5\u8bdd\u6211\u76ef\u7740\u770b\u4e86\u5f88\u4e45\u3002\u5b83\u8bf4\uff1a<strong>\u56de\u6d4b\u548c\u5b9e\u76d8\u7528\u540c\u4e00\u5957\u67b6\u6784\uff0c\u7b56\u7565\u4ee3\u7801\u9a8c\u8bc1\u5b8c\u53ef\u4ee5\u63a5\u7740\u5f80\u771f\u5b9e\u5e02\u573a\u8d70<\/strong>\u3002\u7d27\u63a5\u7740\u53c8\u8865\u4e86\u4e00\u53e5\uff0c\u8bf4\u5b9e\u76d8\u4f9d\u7136\u4f1a\u5f15\u5165\u573a\u6240\u3001\u4f20\u8f93\u3001\u65f6\u5e8f\u3001\u6301\u4e45\u5316\u3001\u5916\u90e8\u6d3b\u52a8\u548c\u5bf9\u8d26\u8fd9\u4e9b\u884c\u4e3a\uff0c\u6a21\u62df\u672a\u5fc5\u80fd\u590d\u73b0\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5148\u627f\u8ba4\u4e00\u6837\u518d\u627f\u8ba4\u4e00\u53e5\uff0c\u8fd9\u79cd\u5199\u6cd5\u5728\u6211\u770b\u8fc7\u7684\u9879\u76ee\u6587\u6863\u91cc\u4e0d\u591a\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u8fd9\u6b21\u5c31\u60f3\u641e\u6e05\u695a\u7684\u662f\uff0c\u524d\u534a\u53e5\u5230\u5e95\u6210\u4e0d\u6210\u7acb\uff0c\u540e\u534a\u53e5\u5728\u5b9e\u64cd\u91cc\u4f1a\u649e\u5230\u4ec0\u4e48\u6837\u7684\u5899\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u9762\u6309\u987a\u5e8f\u6765\u3002\u5148\u770b\u5b83\u600e\u4e48\u88c5\uff0c\u518d\u9a8c\u5356\u70b9\uff0c\u7136\u540e\u662f\u6211\u8e29\u7684\u5751\u548c\u8dd1\u51fa\u6765\u7684\u6570\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b83\u7684 pip \u5305 60MB\uff0c\u56e0\u4e3a\u91cc\u9762\u585e\u4e86\u5b8c\u6574\u7684 Rust \u8fd0\u884c\u65f6\uff08mimalloc \u5185\u5b58\u5206\u914d\u5668\u3001tokio \u5f02\u6b65\u7f51\u7edc\u3001rustls \u52a0\u5bc6\u3001PyO3 \u7ed1\u5b9a\uff09\u3002\u524d\u7f6e\u6761\u4ef6\u662f Python 3.13 \u6216 3.14\uff0c\u88c5\u5b8c\u4e0d\u9700\u8981\u4f60\u78b0 Rust \u5de5\u5177\u94fe\uff0c\u56e0\u4e3a\u5b98\u65b9\u76f4\u63a5\u7ed9\u4e86\u9884\u7f16\u8bd1\u8f6e\u5b50\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u662f\u5728\u4e00\u53f0 64GB \u5185\u5b58\u7684 Mac mini \u4e0a\u88c5\u7684\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ec8\u7aef\u91cc\u8dd1 `pip install` \u65f6\u52a0\u4e0a\u9884\u53d1\u5e03\u5f00\u5173\uff08\u6587\u6863\u91cc\u5199\u4f5c\u53cc\u8fde\u5b57\u7b26\u52a0 pre \u90a3\u4e2a\u53c2\u6570\uff09\uff0c\u4e00\u6761\u547d\u4ee4\u641e\u5b9a\u3002\u88c5\u5b8c\u6211\u7b2c\u4e00\u4ef6\u4e8b\u662f\u53bb\u6838\u5b9e\u5b83\u5230\u5e95\u88c5\u6210\u4e86\u4ec0\u4e48\u7248\u672c\uff0c\u800c\u4e0d\u662f\u6025\u7740\u5199\u7b56\u7565\u3002\u88c5\u5b8c\u987a\u624b\u770b\u4e86\u4e00\u773c\u5b83\u81ea\u62a5\u7684\u73af\u5883\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">nautilus_trader 2.0.0rc6\uff0cnautilus_core 0.65.0\uff0crustc 1.98.1\uff0cnumpy 2.5.3\uff0cpandas 3.0.6\uff0cprecision high\uff08128-bit, 16 dp\uff09\uff0cprofile release\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">precision \u90a3\u4e00\u884c\u6211\u76ef\u7740\u770b\u4e86\u534a\u5929\u3002128-bit\uff0c16 \u4f4d\u5c0f\u6570\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f60\u5e73\u65f6\u5199 Python float \u662f 15 \u5230 17 \u4f4d\u6709\u6548\u6570\u5b57\uff0c\u6570\u5b57\u4e0a\u770b\u7740\u5dee\u4e0d\u591a\uff0c\u4f46\u5b83\u5185\u90e8\u7528\u7684\u662f\u5341\u8fdb\u5236\u5b9a\u70b9\u6570\u7b97\u94b1\u3002\u4f60\u5728\u4ee3\u7801\u91cc\u5199 0.1\uff0c\u5b83\u4e0d\u4f1a\u7ed9\u4f60\u7b97\u51fa 0.1000000000000000055 \u8fd9\u79cd\u60ca\u559c\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4e0d\u662f\u70ab\u6280\uff0c\u662f\u4ea4\u6613\u6240\u7ea7\u522b\u7cfb\u7edf\u7684\u57fa\u672c\u8981\u6c42\u3002\u4f46\u5b83\u786e\u5b9e\u5e26\u6765\u4e00\u4e2a\u526f\u4f5c\u7528\u3002\u6211\u5199\u4ee3\u7801\u65f6\u5f97\u5148\u60f3\u4e00\u904d\u8fd9\u4e2a\u6570\u8d70\u7684\u662f\u54ea\u6761\u8def\u5f84\uff0c\u4e0d\u80fd\u50cf\u5e73\u65f6\u90a3\u6837\u968f\u624b\u4e00\u7b97\u5c31\u4fe1\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u4e09\u3001\u600e\u4e48\u88c5<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b89\u88c5\u8fd9\u4ef6\u4e8b\u672c\u8eab\u4e0d\u96be\uff0c\u96be\u5728\u4f60\u8981\u77e5\u9053\u81ea\u5df1\u88c5\u7684\u662f\u4ec0\u4e48\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u4e00\u6b65\u662f\u88c5 Python 3.13\u3002\u6ce8\u610f\u4e0d\u662f 3.12\uff0c\u5b98\u65b9\u660e\u786e\u5199\u4e86 3.13 \u8d77\u30023.14 \u4e5f\u652f\u6301\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u4e8c\u6b65\u662f\u52a0\u9884\u53d1\u5e03\u5f00\u5173\u88c5 rc \u7248\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install -U nautilus_trader --pre\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u90a3\u4e2a pre \u53c2\u6570\u5fc5\u987b\u52a0\u3002\u622a\u81f3\u5199\u7a3f\uff0cPyPI \u4e0a\u6ca1\u6709\u6b63\u5f0f\u7684 2.0.0\uff0c\u53ea\u6709 `2.0.0rcN` \u7cfb\u5217\uff0c\u6211\u7528\u7684\u662f rc6\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u4e09\u6b65\u662f\u9a8c\u4e00\u4e0b\u7248\u672c\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>python -c \"import nautilus_trader; print(nautilus_trader.__version__)\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6253\u51fa `2.0.0rc6` \u5c31\u7b97\u6210\u4e86\u300260MB \u7684\u5305\uff0c\u51e0\u5341\u79d2\u4e0b\u5b8c\uff0c\u6bd4\u88c5\u4e2a\u5e26 CUDA \u7684 PyTorch \u8f7b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u88c5\u5b8c\u7b2c\u4e00\u4ef6\u4e8b\u522b\u6025\u7740\u5199\u7b56\u7565\uff0c\u5148\u53bb\u770b\u5b83\u81ea\u5e26\u7684\u90a3\u53e5\u8b66\u544a\u3002\u6587\u6863\u91cc\u660e\u786e\u5199\u7740\uff0c\u4e0d\u8981\u5728\u751f\u4ea7\u73af\u5883\u7528\u5f00\u53d1\u8f6e\u5b50\uff0c\u7279\u522b\u662f\u5b9e\u76d8\u63a7\u5236\u771f\u91d1\u767d\u94f6\u7684\u65f6\u5019\u3002\u8fd9\u53e5\u8bdd\u4e0d\u662f\u5ba2\u5957\uff0c\u56e0\u4e3a\u5b83\u540c\u65f6\u8fd8\u63d0\u9192\u4f60 TRACE \u7ea7\u522b\u7684\u65e5\u5fd7\u4f1a\u628a WebSocket \u539f\u59cb\u62a5\u6587\u6253\u51fa\u6765\uff0c\u91cc\u9762\u53ef\u80fd\u5939\u7740\u67d0\u4e9b\u573a\u6240\u7684\u8ba4\u8bc1\u4fe1\u606f\uff0c\u5206\u4eab\u65e5\u5fd7\u4e4b\u524d\u8981\u8131\u654f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u4e2a\u4ea4\u6613\u5f15\u64ce\u4e3b\u52a8\u63d0\u9192\u4f60\u522b\u4e71\u5f00\u65e5\u5fd7\uff0c\u8fd9\u4e2a\u7ec6\u8282\u6bd4\u661f\u6807\u6570\u66f4\u80fd\u8bf4\u660e\u56e2\u961f\u7684\u6210\u719f\u5ea6\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee5\u4e0a\u662f\u88c5\u4e0a\u5c31\u80fd\u7528\u7684\u90e8\u5206\uff0c\u5f80\u4e0b\u662f\u52a8\u624b\u90e8\u5206\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u56db\u3001\u6838\u5fc3\u5356\u70b9\u6211\u9a8c\u8bc1\u4e86\uff0c\u662f\u771f\u7684<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u4e0d\u60f3\u53ea\u8bfb\u6587\u6863\u5c31\u4e0b\u5224\u65ad\uff0c\u6240\u4ee5\u5199\u4e86\u4e2a\u811a\u672c\uff0c\u628a\u540c\u4e00\u4e2a\u7b56\u7565\u7c7b\u5206\u522b\u6302\u5230\u56de\u6d4b\u5f15\u64ce\u548c\u6a21\u62df\u5b9e\u76d8\u8282\u70b9\u4e0a\u8dd1\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u91cc\u8981\u5148\u8bb2\u4e00\u4e0b\u5b83\u6709\u4e24\u5c42 API\u3002\u4f4e\u5c42\u662f `BacktestEngine`\uff0c\u4f60\u53ef\u4ee5\u76f4\u63a5\u5f80\u91cc\u585e\u7ec4\u4ef6\uff0c\u63a7\u5236\u6700\u7ec6\uff0c\u4f46\u6ca1\u6709\u901a\u5f80\u5b9e\u76d8\u7684\u8def\u3002\u9ad8\u5c42\u662f `BacktestNode`\uff0c\u914d\u7f6e\u5bf9\u8c61\u3001\u6570\u636e\u76ee\u5f55\u3001\u6279\u91cf\u8dd1\u90fd\u5f52\u5b83\u7ba1\uff0c\u800c\u4e14\u80fd\u5e73\u6ed1\u8fc7\u6e21\u5230\u5b9e\u76d8\uff0c\u5b98\u65b9\u63a8\u8350\u7528\u8fd9\u4e2a\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u8981\u9a8c\u8bc1\u7684\u662f\u4f4e\u5c42\u548c\u9ad8\u5c42\u80fd\u4e0d\u80fd\u5171\u7528\u540c\u4e00\u5957\u4e1c\u897f\u3002\u8bf4\u5b9e\u8bdd\uff0c\u52a8\u624b\u524d\u6211\u5fc3\u91cc\u6709\u70b9\u6000\u7591\uff0c\u56e0\u4e3a\u8fd9\u7c7b\u627f\u8bfa\u901a\u5e38\u5728\u7b2c\u4e8c\u4e2a\u73af\u8282\u5c31\u9732\u9985\u3002\u5b98\u65b9 examples \u76ee\u5f55\u91cc\u6709\u4e2a `live\/sandbox` \u7684\u4f8b\u5b50\uff0c\u770b\u5b8c\u6211\u5c31\u7167\u7740\u5199\u4e86\u4e00\u6bb5\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from nautilus_trader.live import LiveNode\nfrom nautilus_trader.common import Environment\n\n# \u6a21\u62df\u5b9e\u76d8\uff08\u771f\u5b9e\u884c\u60c5 + \u672c\u5730\u64ae\u5408\u5f15\u64ce\uff09\nnode = (\n    LiveNode.builder(\"SANDBOX-001\", trader_id, Environment.SANDBOX)\n    .with_reconciliation(reconciliation=False)\n    .with_risk_engine_config(LiveRiskEngineConfig(bypass=True))\n    .add_simulated_exec_client(\n        \"SIM\",\n        SandboxExecutionClientFactory(),\n        SandboxExecutionClientConfig(\n            venue=venue,\n            account_id=Account_id,\n            starting_balances=&#91;Money(1_000_000, USD)],\n            fee_model=MakerTakerFeeModel(\n                maker_rate=Decimal(\"0.00002\"),\n                taker_rate=Decimal(\"0.00002\"),\n            ),\n        ),\n    )\n    .build()\n)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8dd1\u51fa\u6765\u4e24\u4e2a\u8282\u70b9\u90fd\u5efa\u6210\u529f\u4e86\u3002\u540c\u4e00\u4efd instrument \u5b9a\u4e49\u3001\u540c\u4e00\u5957\u8d39\u7528\u6a21\u578b\u3001\u540c\u4e00\u5957\u8d26\u6237\u7c7b\u578b\uff0c\u4ece\u56de\u6d4b\u8d70\u5230\u6a21\u62df\u5b9e\u76d8\uff0c\u7b56\u7565\u4ee3\u7801\u4e00\u4e2a\u5b57\u6ca1\u6539\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u628a\u8fd9\u4e2a\u7ed3\u679c\u53cd\u590d\u770b\u4e86\u4e24\u904d\u624d\u6562\u4e0b\u7ed3\u8bba\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u5c31\u662f\u5b83\u771f\u6b63\u503c\u94b1\u7684\u5730\u65b9\u3002\u522b\u7684\u6846\u67b6\u91cc\uff0c\u56de\u6d4b\u548c\u5b9e\u76d8\u662f\u4e24\u5957\u4ee3\u7801\uff0c\u4f60\u6539\u4e00\u4e2a\u53c2\u6570\u8981\u8bb0\u5f97\u4e24\u8fb9\u90fd\u6539\uff0c\u5fd8\u4e86\u5c31\u7b49\u7740\u5b9e\u76d8\u7ed9\u4f60\u60ca\u559c\u5427\u3002\u5b83\u628a\u8fd9\u4e2a\u5751\u586b\u4e86\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u4e94\u3001\u7136\u540e\u6211\u8e29\u5230\u4e86\u7b2c\u4e00\u4e2a\u5751<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u8dd1\u901a\u4e0d\u4ee3\u8868\u80fd\u7528\u3002\u6211\u5582\u6570\u636e\u7684\u65f6\u5019\u5361\u4e86\u5341\u51e0\u5206\u949f\uff0c\u65e5\u5fd7\u5237\u4e86\u4e00\u5c4f\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SubmitOrder ... DENIED: MARKET_PRICE_UNAVAILABLE: order_type=MARKET, instrument_id=AUD\/USD.SIM\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5e02\u4ef7\u5355\u5168\u90e8\u88ab\u62d2\u3002\u6211\u4e00\u5f00\u59cb\u4ee5\u4e3a\u662f\u81ea\u5df1\u4ee3\u7801\u5199\u9519\u4e86\uff0c\u53bb\u7ffb\u6587\u6863\uff0c\u8d8a\u67e5\u8d8a\u614c\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u540e\u6765\u60f3\u660e\u767d\u4e86\uff0c\u95ee\u9898\u51fa\u5728\u6211\u53ea\u5582\u4e86 1 \u5206\u949f K \u7ebf\uff0c\u6ca1\u5582\u62a5\u4ef7\u3002\u5b83\u7684\u64ae\u5408\u5f15\u64ce\u8981\u64ae\u5408\u5e02\u4ef7\u5355\uff0c\u5f97\u6709\u4e00\u4e2a\u4eba\u5bb6\u80fd\u62ff\u6765\u6210\u4ea4\u7684\u4ef7\u683c\uff1b\u4f60\u53ea\u7ed9 K \u7ebf\uff0c\u5b83\u5c31\u4e0d\u80af\u51ed\u7a7a\u634f\u4e00\u4e2a\u51fa\u6765\uff0c\u4e8e\u662f\u6bcf\u4e00\u5355\u90fd\u62d2\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u8bf4\u5b9e\u8bdd\uff0c\u6211\u5f53\u65f6\u5fc3\u91cc\u54af\u5654\u4e86\u4e00\u4e0b\u3002\u8fd9\u8981\u662f\u6362\u4e2a\u6846\u67b6\uff0c\u5f88\u53ef\u80fd\u6084\u6084\u62ff K\u7ebf\u7684\u6536\u76d8\u4ef7\u7ed9\u6211\u64ae\u5408\u4e86\uff0c\u56de\u6d4b\u8dd1\u51fa\u6765\u4e00\u6761\u6f02\u4eae\u66f2\u7ebf\uff0c\u5b9e\u76d8\u4e00\u5355\u90fd\u6210\u4ea4\u4e0d\u4e86\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4e2a\u5751\u6700\u6015\u7684\u4e0d\u662f MARKET_PRICE_UNAVAILABLE \u62a5\u9519\uff0c\u662f\u8fde\u62a5\u90fd\u4e0d\u62a5\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b83\u4e0d\u3002\u8fd9\u662f\u52a0\u5206\u9879\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u628a\u9010\u7b14\u62a5\u4ef7\u5582\u8fdb\u53bb\uff0c\u95ee\u9898\u89e3\u51b3\uff0c\u4e24\u767e\u591a\u7b14\u8ba2\u5355\u5168\u90e8\u6210\u4ea4\u3002\u6539\u52a8\u7684\u6838\u5fc3\u5c31\u4e00\u884c\u6570\u636e\u51c6\u5907\uff0c\u7b56\u7565\u903b\u8f91\u6ca1\u78b0\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u516d\u3001\u540c\u4e00\u4efd\u7b56\u7565\uff0c\u7ed3\u679c\u5dee 19 \u4e07<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u6570\u636e\u8dd1\u901a\u4e4b\u540e\u6211\u505a\u4e86\u4e94\u7ec4\u5bf9\u7167\u3002\u7b56\u7565\u662f\u6700\u666e\u901a\u7684 EMA \u4ea4\u53c9\uff0c\u884c\u60c5\u662f\u56fa\u5b9a\u968f\u673a\u79cd\u5b50\u7684\u5408\u6210\u6570\u636e\uff0c5000 \u6839 1 \u5206\u949f K \u7ebf\uff0c\u8d77\u59cb\u8d44\u91d1 100 \u4e07\u7f8e\u91d1\uff0c\u6bcf\u6b21\u5355\u7b14 100 \u4e07\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u628a\u624b\u7eed\u8d39\u5f53\u552f\u4e00\u53d8\u91cf\u5f80\u4e0a\u52a0\uff0c\u7136\u540e\u987a\u624b\u8bd5\u4e86\u4e24\u7ec4\u5747\u7ebf\u53c2\u6570\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>\u7ec4\u522b<\/th><th>\u624b\u7eed\u8d39\uff08\u5355\u8fb9\uff09<\/th><th>\u5747\u7ebf<\/th><th>\u8ba2\u5355\/\u6210\u4ea4<\/th><th>\u51c0\u5229\u6da6<\/th><th>\u6700\u5927\u56de\u64a4<\/th><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">A \u57fa\u51c6<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.002%<\/td><td class=\"has-text-align-center\" data-align=\"center\">EMA20\/50<\/td><td class=\"has-text-align-center\" data-align=\"center\">172 \/ 172<\/td><td class=\"has-text-align-center\" data-align=\"center\">+87,492.49<\/td><td class=\"has-text-align-center\" data-align=\"center\">1.42%<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">B \u8d39\u7387 \u00d720<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.04%<\/td><td class=\"has-text-align-center\" data-align=\"center\">EMA20\/50<\/td><td class=\"has-text-align-center\" data-align=\"center\">172 \/ 172<\/td><td class=\"has-text-align-center\" data-align=\"center\">+14,397.62<\/td><td class=\"has-text-align-center\" data-align=\"center\">2.61%<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">C \u8d39\u7387 \u00d750<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.1%<\/td><td class=\"has-text-align-center\" data-align=\"center\">EMA20\/50<\/td><td class=\"has-text-align-center\" data-align=\"center\">172 \/ 172<\/td><td class=\"has-text-align-center\" data-align=\"center\">-101,017.45<\/td><td class=\"has-text-align-center\" data-align=\"center\">10.43%<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">D \u6162\u7ebf\u62c9\u957f<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.002%<\/td><td class=\"has-text-align-center\" data-align=\"center\">EMA20\/100<\/td><td class=\"has-text-align-center\" data-align=\"center\">112 \/ 112<\/td><td class=\"has-text-align-center\" data-align=\"center\">+79,492.79<\/td><td class=\"has-text-align-center\" data-align=\"center\">1.96%<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">E \u5feb\u7ebf\u7ede\u7d27<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.002%<\/td><td class=\"has-text-align-center\" data-align=\"center\">EMA10\/20<\/td><td class=\"has-text-align-center\" data-align=\"center\">378 \/ 378<\/td><td class=\"has-text-align-center\" data-align=\"center\">+92,276.92<\/td><td class=\"has-text-align-center\" data-align=\"center\">1.90%<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"532\" src=\"https:\/\/laoyulaoyu.com\/wp-content\/uploads\/2026\/10\/01-cost-sensitivity-1024x532.png\" alt=\"\" class=\"wp-image-5049\" srcset=\"https:\/\/laoyulaoyu.com\/wp-content\/uploads\/2026\/10\/01-cost-sensitivity-1024x532.png 1024w, https:\/\/laoyulaoyu.com\/wp-content\/uploads\/2026\/10\/01-cost-sensitivity-300x156.png 300w, https:\/\/laoyulaoyu.com\/wp-content\/uploads\/2026\/10\/01-cost-sensitivity-767x399.png 767w, https:\/\/laoyulaoyu.com\/wp-content\/uploads\/2026\/10\/01-cost-sensitivity.png 1500w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">\u540c\u4e00\u4efd\u7b56\u7565\uff0c\u53ea\u6539\u624b\u7eed\u8d39\u548c\u5747\u7ebf\u53c2\u6570\uff0c\u5f15\u64ce\u6ca1\u8bf4\u8c0e\u4f46\u7ed3\u679c\u5168\u53d8<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u5148\u770bA \u5230 C\u3002\u7b56\u7565\u4ee3\u7801\u4e00\u4e2a\u5b57\u6ca1\u6539\uff0c\u8ba2\u5355\u6570\u90fd\u662f 172\uff0c\u64ae\u5408\u6b21\u6570\u90fd\u662f 172\uff0c\u552f\u4e00\u53d8\u7684\u662f\u6211\u586b\u8fdb\u53bb\u7684\u8d39\u7387\u5047\u8bbe\u3002\u51c0\u5229\u6da6\u4ece +87,492 \u8d70\u5230 -101,017\uff0c\u4e2d\u95f4\u9694\u4e86 188,509 \u7f8e\u5143\u5c06\u8fd1 19 \u4e07\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6362\u7b97\u6210\u4e00\u53e5\u5927\u767d\u8bdd\u3002\u8fd9\u4efd\u7b56\u7565\u5728 0.002% \u7684\u5047\u8bbe\u4e0b\u8d5a\u94b1\uff0c\u5728 0.1% \u7684\u5047\u8bbe\u4e0b\u4e8f\u94b1\u3002\u800c\u8fd9\u4e24\u4e2a\u6570\u5b57\u90fd\u662f\u6211\u81ea\u5df1\u586b\u7684\uff0c\u5f15\u64ce\u4e0d\u77e5\u9053\u54ea\u4e2a\u662f\u771f\u7684\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b83\u5fe0\u5b9e\u5730\u6267\u884c\u4e86\u6211\u7684\u5047\u8bbe\uff0c\u6ca1\u6709\u66ff\u6211\u515c\u7740\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bf4\u5b9e\u8bdd\u6211\u6709\u70b9\u610f\u5916\u3002\u6211\u4ee5\u4e3a\u8fd9\u7c7b\u6846\u67b6\u591a\u5c11\u4f1a\u66ff\u6211\u515c\u4e00\u70b9\u5e95\uff0c\u6bd4\u5982\u81ea\u52a8\u586b\u4e00\u4e2a 0.1% \u7684\u6ed1\u70b9\u3002\u7ed3\u679c\u5b83\u4e00\u70b9\u90fd\u6ca1\u6709\u3002\u8fd9\u5c31\u662f&#8221;\u56de\u6d4b\u7b49\u4e8e\u5b9e\u76d8&#8221;\u8fd9\u53e5\u8bdd\u91cc\u6700\u5bb9\u6613\u88ab\u8df3\u8fc7\u7684\u90e8\u5206\u3002\u4ee3\u7801\u786e\u5b9e\u5171\u7528\uff0c\u4f46\u6210\u4ea4\u4ef7\u3001\u8d39\u7387\u3001\u5ef6\u8fdf\u3001\u62d2\u5355\u6982\u7387\uff0c\u5168\u662f\u4f60\u7684\u5047\u8bbe\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u518d\u770b D \u548c E\uff0c\u8fd9\u4e24\u7ec4\u66f4\u6709\u610f\u601d\u3002\u5747\u7ebf\u53c2\u6570\u4e00\u6539\uff0c\u8ba2\u5355\u6570\u4ece 172 \u53d8\u6210 112 \u6216\u8005 378\uff0c\u6210\u4ea4\u6b21\u6570\u540c\u6b65\u8ddf\u7740\u53d8\u3002E \u7ec4\u4ea4\u6613\u6700\u9891\u7e41\uff0c\u51c0\u5229\u6da6\u6700\u9ad8\uff0c\u4f46\u5b83\u7684\u6536\u76ca\u662f\u5efa\u7acb\u5728\u66f4\u9ad8\u6362\u624b\u4e0a\u7684\uff0c\u624b\u7eed\u8d39\u4e00\u65e6\u653e\u5927\uff0c\u6700\u5148\u6b7b\u7684\u5c31\u662f\u5b83\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u5728\u505a\u8fd9\u7ec4\u5bf9\u6bd4\u65f6\u987a\u624b\u7b97\u4e86\u6700\u5927\u56de\u64a4\u3002C \u7ec4\u7684 10.43% \u662f A \u7ec4 1.42% \u7684\u4e03\u500d\u591a\u3002\u4e5f\u5c31\u662f\u8bf4\uff0c\u8d39\u7387\u5047\u8bbe\u4e0d\u4ec5\u6539\u53d8\u6536\u76ca\u7684\u7b26\u53f7\uff0c\u8fd8\u6210\u500d\u5730\u6539\u53d8\u4e86\u98ce\u9669\u3002\u8fd9\u6bd4\u6211\u9884\u60f3\u7684\u66f4\u4e25\u91cd\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u4e03\u3001\u5b83\u62a5 Sharpe 16\uff0c\u6211\u7b97\u51fa 0.0296<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u8282\u662f\u6211\u6700\u60f3\u8ddf\u8bfb\u8005\u4ea4\u4ee3\u7684\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8dd1\u5b8c A \u7ec4\uff0c\u5f15\u64ce\u7ed9\u6211\u62a5\u4e86\u4e2a Sharpe 16.04\uff0cSortino 1526.63\uff0cProfit Factor 216\u3002\u8fd9\u4e2a\u6570\u5b57\u592a\u6f02\u4eae\u4e86\u3002\u6211\u4e00\u5f00\u59cb\u4ee5\u4e3a\u662f\u5b83\u7b97\u9519\u4e86\uff0c\u6838\u5b8c\u624d\u77e5\u9053\u4e0d\u662f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u53bb\u67e5\u5b83\u7684\u6536\u76ca\u5e8f\u5217\uff0c\u53d1\u73b0 `returns_series` \u91cc\u53ea\u6709 5 \u4e2a\u70b9\u30025 \u4e2a\u70b9\u7b97\u51fa\u6765\u7684\u5e74\u5316 Sharpe \u80fd\u62a5 16 \u5e76\u4e0d\u5947\u602a\uff0c\u5206\u6bcd\u592a\u5c0f\uff0c\u9664\u51fa\u6765\u81ea\u7136\u662f\u4e2a\u5927\u6570\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u81ea\u5df1\u6309\u6bcf\u6839 bar \u7684\u6743\u76ca\u53d8\u5316\u91cd\u7b97\u4e86\u4e00\u904d\uff0c4999 \u4e2a\u9010 bar \u6536\u76ca\u70b9\uff0c\u7b97\u51fa\u6765\u7684 Sharpe \u662f 0.0296\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"582\" src=\"https:\/\/laoyulaoyu.com\/wp-content\/uploads\/2026\/10\/02-sharpe-mismatch-1024x582.png\" alt=\"\" class=\"wp-image-5050\" srcset=\"https:\/\/laoyulaoyu.com\/wp-content\/uploads\/2026\/10\/02-sharpe-mismatch-1024x582.png 1024w, https:\/\/laoyulaoyu.com\/wp-content\/uploads\/2026\/10\/02-sharpe-mismatch-300x171.png 300w, https:\/\/laoyulaoyu.com\/wp-content\/uploads\/2026\/10\/02-sharpe-mismatch-767x436.png 767w, https:\/\/laoyulaoyu.com\/wp-content\/uploads\/2026\/10\/02-sharpe-mismatch.png 1425w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">\u5f15\u64ce\u62a5 16.04\uff0c\u6211\u7b97\u51fa 0.0296\uff0c\u5dee 540 \u500d\uff0c\u95ee\u9898\u51fa\u5728\u6536\u76ca\u70b9\u6570\u91cf<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u5dee 540 \u500d\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u91cc\u6211\u8981\u8bf4\u6e05\u695a\u3002\u5f15\u64ce\u6ca1\u7b97\u9519\uff0c\u5b83\u53ea\u662f\u4e25\u683c\u6309\u5b83\u7684\u5b9a\u4e49\u5728\u7b97\u3002\u6211\u4e00\u5f00\u59cb\u662f\u628a\u5b83\u5f53\u6210 bug \u7684\u3002\u662f\u6211\u7684\u5408\u6210\u884c\u60c5\u53ea\u8986\u76d6\u4e86 3.5 \u5929\uff085000 \u6839 1 \u5206\u949f K \u7ebf\uff09\uff0c\u5e74\u5316\u7cfb\u6570\u4e00\u4e58\u5c31\u70b8\u4e86\u3002\u6362\u6210\u4e00\u5e74\u771f\u5b9e\u6570\u636e\uff0c\u8fd9\u70b9\u5dee\u5f02\u4f1a\u6d88\u5931\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f46\u8fd9\u4ef6\u4e8b\u672c\u8eab\u662f\u4e2a\u63d0\u9192\u3002\u5b83\u9ed8\u8ba4\u7ed9\u4f60\u8f93\u51fa\u7684\u90a3\u5957\u6f02\u4eae\u7684\u7ee9\u6548\u7edf\u8ba1\uff0c\u6837\u672c\u91cf\u4e0d\u8db3\u7684\u65f6\u5019\u662f\u4e0d\u53ef\u4fe1\u7684\u3002\u8fd9\u4e2a\u5751\u4e0d\u662f\u6211\u8e29\u7684\uff0c\u662f\u4efb\u4f55\u4eba\u62ff\u77ed\u5468\u671f\u6570\u636e\u8dd1\u4e00\u904d\u90fd\u4f1a\u8e29\u7684\u3002\u800c\u4e00\u4e2a\u4ea4\u6613\u6846\u67b6\u628a\u5e74\u5316 Sharpe \u76f4\u63a5\u6253\u5728\u56de\u6d4b\u7ed3\u679c\u91cc\uff0c\u4e5f\u4e0d\u63d0\u9192\u4f60&#8221;\u6536\u76ca\u70b9\u53ea\u6709 5 \u4e2a&#8221;\uff0c\u8fd9\u662f\u8bbe\u8ba1\u4e0a\u53ef\u4ee5\u66f4\u8c28\u614e\u7684\u5730\u65b9\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4e2a\u95ee\u9898\u662f\u6211\u81ea\u5df1\u8e29\u51fa\u6765\u7684\u3002\u6211\u8d77\u521d\u4ee5\u4e3a\u662f\u516c\u5f0f\u9519\u4e86\uff0c\u6838\u5b8c\u53d1\u73b0\u516c\u5f0f\u6ca1\u9519\uff0c\u662f\u6211\u7684\u6837\u672c\u592a\u77ed\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u540e\u6765\u6211\u7684\u5904\u7406\u65b9\u5f0f\u53d8\u4e86\u3002\u73b0\u5728\u62ff\u5230\u56de\u6d4b\u7ed3\u679c\uff0c\u7b2c\u4e00\u4ef6\u4e8b\u5148\u770b returns_series \u7684\u957f\u5ea6\uff0c\u518d\u770b Sharpe\u3002\u8fd9\u4e2a\u987a\u5e8f\u53cd\u8fc7\u6765\uff0c\u5c31\u662f\u81ea\u6b3a\u6b3a\u4eba\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u516b\u3001\u5b83\u9002\u5408\u8c01\uff0c\u4e0d\u9002\u5408\u8c01<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bf4\u70b9\u5b9e\u9645\u7684\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5148\u8bf4\u4e0d\u9002\u5408\u7684\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u53ea\u60f3\u5feb\u901f\u9a8c\u4e00\u4e2a\u7b80\u5355\u7b56\u7565\u7684\u8bdd\uff0c\u5b83\u592a\u91cd\u4e86\u3002\u60f3\u6d4b\u4e2a\u5747\u7ebf\u4ea4\u53c9\uff0cpandas \u52a0 matplotlib \u5341\u51e0\u884c\u5c31\u5b8c\u4e86\uff0c\u88c5\u4e00\u4e2a 60MB \u7684 Rust \u5f15\u64ce\u3001\u5f15\u5165\u4e8b\u4ef6\u9a71\u52a8\u7684\u7f16\u7a0b\u6a21\u578b\uff0c\u6536\u76ca\u4e0d\u6210\u6b63\u6bd4\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u505a A \u80a1\u7684\u8bdd\uff0c\u5b83\u5e2e\u4e0d\u4e0a\u76f4\u63a5\u7684\u5fd9\u3002\u6211\u628a\u5b98\u65b9 integrations \u9875\u9762\u6574\u4e2a\u8fc7\u4e86\u4e00\u904d\uff0c17 \u4e2a adapter \u91cc\u6709 Binance\u3001Bybit\u3001OKX\u3001Coinbase\u3001Kraken\u3001Deribit\u3001dYdX\u3001Hyperliquid\u3001Polygon\u3001Polymarket\u3001Betfair\u3001Databento\u3001Tardis\uff0c\u8fd8\u6709 Interactive Brokers\u3002\u5238\u5546\u53ea\u6709\u4e00\u4e2a IB\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u628a 17 \u4e2a adapter \u7684\u540d\u5b57\u4e00\u4e2a\u4e00\u4e2a\u8bfb\u5b8c\uff0c\u7ed3\u8bba\u662f\u6ca1\u6709\u4e00\u5bb6 A \u80a1\u5238\u5546\uff0c\u4e5f\u6ca1\u6709 CTP\u3001\u671f\u8d27\u516c\u53f8\u6216\u8005\u5238\u5546\u67dc\u53f0\u63a5\u53e3\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bfb\u5230\u6700\u540e\u4e00\u4e2a\u7684\u65f6\u5019\uff0c\u6211\u786e\u8ba4\u81ea\u5df1\u6ca1\u6f0f\u3002\u8fd9\u4e2a\u7ed3\u8bba\u5bf9\u505a A \u80a1\u7684\u4eba\u6709\u70b9\u626b\u5174\uff0c\u4f46\u5b83\u6bd4\u8ba9\u4eba\u4ee5\u4e3a\u300c\u652f\u6301\u591a\u8d44\u4ea7\u300d\u7b49\u4e8e\u300c\u652f\u6301\u4f60\u7684\u8d44\u4ea7\u300d\u8981\u8bda\u5b9e\u3002\u60f3\u505aA\u80a1\uff0c\u5f97\u81ea\u5df1\u6309\u5b83\u7684 adapter \u89c4\u8303\u5199\u4e00\u4e2a\uff0c\u8fd9\u6d3b\u513f\u4e0d\u5c0f\u3002\u5b83\u81ea\u5df1\u5728\u6587\u6863\u91cc\u4e5f\u7559\u4e86\u53e3\u5b50\uff0c\u4efb\u4f55\u6709 REST API \u6216 WebSocket \u884c\u60c5\u7684\u573a\u6240\u90fd\u80fd\u63a5\uff0c\u4f46&#8221;\u80fd\u63a5&#8221;\u548c&#8221;\u6709\u4eba\u63a5&#8221;\u4e4b\u95f4\u8fd8\u6709\u5f88\u957f\u7684\u8def\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6570\u636e\u91cf\u5f88\u5c0f\u7684\u8bdd\uff0c\u5b83\u7684\u901f\u5ea6\u4f18\u52bf\u7528\u4e0d\u4e0a\u3002\u5b83\u5feb\u662f\u56e0\u4e3a Rust \u5185\u6838\u52a0\u7eb3\u79d2\u7ea7\u65f6\u95f4\u6233\uff0c\u90a3\u662f\u7ed9\u76d8\u53e3\u3001\u9ad8\u9891\u3001\u591a\u573a\u6240\u5957\u5229\u51c6\u5907\u7684\u3002\u4f60\u62ff\u65e5\u7ebf\u6570\u636e\u8dd1\u4e00\u4e2a\u5e74\u7ebf\u7b56\u7565\uff0c\u74f6\u9888\u5728Python \u5c42\u7684\u7b56\u7565\u4ee3\u7801\u4e0a\uff0c\u4e0d\u5728\u5185\u6838\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7136\u540e\u8bf4\u9002\u5408\u7684\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b56\u7565\u903b\u8f91\u672c\u8eab\u5df2\u7ecf\u7a33\u5b9a\u3001\u53ea\u662f\u4e0d\u60f3\u5728\u5b9e\u76d8\u73af\u8282\u91cd\u590d\u52b3\u52a8\u7684\u8bdd\uff0c\u5b83\u503c\u5f97\u770b\u3002\u5047\u8bbe\u4f60\u6709\u4e00\u5957\u8dd1\u901a\u7684 alpha\uff0c\u73b0\u5728\u5361\u5728\u63a5\u884c\u60c5\u3001\u5bf9\u8d26\u3001\u65ad\u7ebf\u91cd\u8fde\u8fd9\u4e9b\u7eaf\u5de5\u7a0b\u73af\u8282\u4e0a\uff0c\u5b83\u80fd\u628a\u4f60\u4ece\u8fd9\u4e9b\u6d3b\u513f\u91cc\u635e\u51fa\u6765\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u505a\u52a0\u5bc6\u8d27\u5e01\u7684\u8bdd\uff0c\u8fd9\u662f\u5b83\u7684\u4e3b\u573a\u3002<\/strong>\u8fd9\u5b83\u7684\u4e3b\u573a\uff0c\u4e3b\u6d41\u4ea4\u6613\u6240\u57fa\u672c\u90fd\u5728\uff0cCEX \u548c DEX \u90fd\u6709\uff0c\u6570\u636e\u5546\u4e5f\u914d\u9f50\u4e86\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u9700\u8981\u591a\u573a\u6240\u540c\u65f6\u8dd1\u7684\u8bdd\uff0c\u5b83\u652f\u6301\u540c\u65f6\u5bf9\u591a\u4e2a\u573a\u6240\u505a\u5e02\u548c\u8de8\u573a\u6240\u7b56\u7565\uff0c\u5355\u8fdb\u7a0b\u591a\u573a\u6240\u8fd9\u4e2a\u80fd\u529b\u5728\u5f00\u6e90\u91cc\u4e0d\u7b97\u591a\u89c1\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u4e5d\u3001\u4e24\u4e2a\u5fc5\u987b\u77e5\u9053\u7684\u98ce\u9669<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u4e00\u4ef6\u4e8b\u662f\u9879\u76ee\u6b63\u5728\u5927\u7248\u672c\u5207\u6362\uff0c\u73b0\u5728\u4e0a\u624b\u8981\u9009\u8fb9\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u65b0\u6b63\u5f0f\u7248\u662f v1.231.0\uff0c\u6807\u7b7e\u540e\u9762\u5199\u7740 Beta\uff0c\u53d1\u5e03\u4e8e 2026-08-02\u3002\u5b83\u7684 release note \u91cc\u5199\u5f97\u5f88\u6e05\u695a\uff0c\u8fd9\u662f legacy Cython v1 \u6838\u5fc3\u7684\u6700\u540e\u4e00\u4e2a 1.x \u7248\u672c\uff1b\u4e4b\u540e `develop` \u5206\u652f\u4f1a\u53d8\u6210 v2 \u4e13\u7528\uff0cv1 \u6838\u5fc3\u632a\u5230 `develop_v1` \u5206\u652f\uff0c\u53ea\u6536\u5173\u952e\u5b89\u5168\u8865\u4e01\uff0c\u6536\u5927\u7ea6\u4e09\u4e2a\u6708\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u800c\u6211\u88c5\u7684\u662f 2.0.0rc6\u3002\u4e5f\u5c31\u662f\u8bf4\u73b0\u5728 PyPI \u4e0a\u7684\u6b63\u5f0f\u7248\u548c\u4e00\u4e2aBeta \u7ea7\u65e7\u6838\u5fc3\u7684\u7ee7\u627f\u8005\u5e76\u5b58\uff0c\u529f\u80fd\u90fd\u5728\u5f80\u524d\u63a8\uff0c\u4f46\u6587\u6863\u3001\u793a\u4f8b\u3001issue \u91cc\u6709\u4e00\u90e8\u5206\u8fd8\u5728\u8bb2v1 \u7684\u5199\u6cd5\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8981\u9009\u8fb9\u5c31\u5f97\u60f3\u6e05\u695a\u3002\u60f3\u8ddf\u65b0\u529f\u80fd\u548c\u957f\u671f\u7ef4\u62a4\u8d70 v2\uff0c\u6ce8\u610f\u5b83\u5217\u4e86\u51e0\u6761\u4e0d\u517c\u5bb9\u7684\u53d8\u66f4\uff08Catalog \u65e7\u8ba2\u5355\u4e8b\u4ef6\u6570\u636e\u4e0d\u8bfb\u3001CustomData \u8bed\u4e49\u53d8\u4e86\u3001`Bar.is_revision` \u6ca1\u4e86\uff09\uff0c\u8fc1\u79fb\u5f97\u53e6\u5f00\u4e00\u4e2a\u865a\u62df\u73af\u5883\u6d4b\uff1b\u60f3\u7a33\u5c31\u7559\u5728 1.231.0\uff0c\u4f46\u90a3\u662f\u5b89\u5168\u8865\u4e01\u671f\uff0c\u4e0d\u4f1a\u6709\u65b0\u4e1c\u897f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u4e8c\u4ef6\u4e8b\uff0c\u8fd9\u4e2a\u9879\u76ee\u7684\u957f\u671f\u98ce\u9669\u4e0d\u6765\u81ea\u6280\u672f\uff0c\u6765\u81ea\u4eba\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u53bb\u67e5\u8d21\u732e\u8005\u5206\u5e03\u7684\u65f6\u5019\uff0c\u662f\u5e26\u7740\u300c\u770b\u770b\u662f\u4e0d\u662f\u4e2a\u677e\u6563\u793e\u533a\u300d\u7684\u9884\u671f\u70b9\u7684\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed3\u679c GitHub \u5217\u51fa 210 \u4e2a\u4eba\uff0c\u63d0\u4ea4\u91cf\u5374\u6781\u5ea6\u96c6\u4e2d\u3002\u7b2c\u4e00\u4f4d 19,216 \u6b21\uff0c\u7b2c\u4e8c\u4f4d 339\u6b21\uff0c\u7b2c\u4e09\u4f4d 334 \u6b21\u3002\u524d\u4e00\u4f4d\u4e00\u4e2a\u4eba\u5403\u6389\u7edd\u5927\u90e8\u5206\uff0c\u540e\u9762\u4e24\u767e\u591a\u4eba\u5206\u5269\u4e0b\u7684\u96f6\u5934\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u76ef\u7740\u8fd9\u4e2a\u6570\u770b\u4e86\u597d\u51e0\u904d\u624d\u53cd\u5e94\u8fc7\u6765\u4e0d\u662f\u6211\u8bfb\u9519\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">210 \u8fd9\u4e2a\u6570\u5b57\u633a\u552c\u4eba\u7684\u3002\u6211\u8ba4\u4e3a\u771f\u6b63\u5728\u7ef4\u62a4\u7684\u662f\u4e00\u4e2a\u4eba\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4e2a\u7ed3\u6784\u7684\u542b\u4e49\u5f88\u76f4\u63a5\u3002LGPL-3.0 \u534f\u8bae\u5141\u8bb8\u4f60\u5546\u7528\u3001\u5141\u8bb8\u4f60\u6539\uff0c\u4f46\u6838\u5fc3\u7ef4\u62a4\u57fa\u672c\u538b\u5728\u4e00\u4e2a\u4eba\u8eab\u4e0a\u3002\u4ed6\u54ea\u5929\u4e0d\u5e72\u4e86\uff0c\u8fd9\u4e2a\u9879\u76ee\u7684\u8fed\u4ee3\u901f\u5ea6\u4f1a\u65ad\u5d16\u5f0f\u4e0b\u8dcc\uff0c\u800c\u4f60\u8981\u4e48\u81ea\u5df1\u63a5\u624b\u7ef4\u62a4\uff0c\u8981\u4e48\u56de\u5230\u81ea\u5df1\u642d\u4e00\u5957\u7684\u72b6\u6001\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0d\u662f\u8bf4\u4e00\u4e2a\u4eba\u4e3b\u5bfc\u7684\u9879\u76ee\u4e00\u5b9a\u4e0d\u9760\u8c31\uff0c\u5f88\u591a\u4f18\u79c0\u9879\u76ee\u90fd\u662f\u8fd9\u6837\u8d77\u6765\u7684\u3002\u4f46\u4f60\u5f97\u77e5\u9053\u81ea\u5df1\u5728\u4f9d\u8d56\u4ec0\u4e48\u3002\u7528\u5b83\u505a\u5b9e\u76d8\u57fa\u7840\u8bbe\u65bd\u4e4b\u524d\uff0c\u628a\u8fd9\u4e00\u70b9\u60f3\u6e05\u695a\u6bd4\u628a\u56de\u6d4b\u8dd1\u901a\u66f4\u91cd\u8981\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u5341\u3001\u6211\u7684\u5224\u65ad<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u56de\u5230\u5f00\u5934\u90a3\u4e2a\u95ee\u9898\u3002\u5b83\u5ba3\u4f20\u7684&#8221;\u56de\u6d4b\u5230\u5b9e\u76d8\u4e0d\u7528\u91cd\u5199&#8221;\uff0c\u6210\u7acb\u5417\uff1f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6210\u7acb\uff0c\u4f46\u6709\u524d\u63d0\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6210\u7acb\u7684\u90e8\u5206\u662f\u771f\u7684\u3002\u540c\u4e00\u5957 Strategy\u3001\u8ba2\u5355\u903b\u8f91\u3001\u6267\u884c\u7b97\u6cd5\uff0c\u56de\u6d4b\u548c\u5b9e\u76d8\u5171\u7528\uff0c\u524d\u63d0\u662f\u4f60\u81ea\u5df1\u586b\u7684\u90a3\u4e9b\u5047\u8bbe\u548c\u5b9e\u76d8\u4e00\u81f4\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0d\u6210\u7acb\u7684\u90e8\u5206\u662f\uff0c\u5b83\u4fdd\u8bc1\u4e0d\u4e86\u5047\u8bbe\u548c\u5b9e\u76d8\u4e00\u81f4\uff0c\u90a3\u662f\u4f60\u81ea\u5df1\u7684\u6d3b\u513f\u3002\u5b83\u7ed9\u7684\u662f\u4e00\u628a\u597d\u5c3a\u5b50\uff0c\u91cf\u51fa\u6765\u7684\u6570\u51c6\u4e0d\u51c6\uff0c\u53d6\u51b3\u4e8e\u4f60\u600e\u4e48\u7528\u5c3a\u5b50\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u81ea\u5df1\u7684\u53d6\u820d\u662f\u8fd9\u6837\u7684\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u6211\u73b0\u5728\u6709\u4e00\u4e2a\u5df2\u7ecf\u9a8c\u8bc1\u8fc7\u3001\u53ea\u662f\u5728\u5de5\u7a0b\u73af\u8282\u5361\u4f4f\u7684\u7b56\u7565\uff0c\u6211\u4f1a\u8003\u8651\u7528\u5b83\uff0c\u56e0\u4e3a\u5b83\u66ff\u6211\u7701\u6389\u7684\u6b63\u662f\u6700\u70e6\u7684\u90a3\u90e8\u5206\u5de5\u4f5c\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u6211\u53ea\u662f\u60f3\u505a\u7814\u7a76\u9636\u6bb5\u7684\u5feb\u901f\u9a8c\u8bc1\uff0c\u6211\u4e0d\u7528\u5b83\uff0cpandas \u52a0 polars \u66f4\u5feb\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0d\u7ba1\u7528\u4e0d\u7528\u5b83\uff0c\u6709\u4e00\u6761\u7eaa\u5f8b\u6211\u8fd9\u7bc7\u662f\u5e26\u8d70\u7684\u3002\u770b\u5230\u56de\u6d4b\u7ed3\u679c\uff0c\u5148\u95ee\u6536\u76ca\u70b9\u591f\u4e0d\u591f\uff0c\u518d\u770b\u6536\u76ca\u597d\u4e0d\u597d\u3002\u8fd9\u4e2a\u4e60\u60ef\u5728\u54ea\u4e2a\u6846\u67b6\u91cc\u90fd\u6210\u7acb\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u540e\u4e00\u6bb5\u4ee3\u7801\u5728\u4e0b\u9762\uff0c\u6211\u628a\u5b83\u62c6\u6210\u4e86\u51e0\u6bb5\u5e26\u6ce8\u91ca\u7684\u7248\u672c\uff0c\u53ef\u4ee5\u76f4\u63a5\u8dd1\u3002\u5b83\u53ea\u4f9d\u8d56 nautilus_trader \u672c\u8eab\uff0c\u4e0d\u4e0b\u8f7d\u5916\u90e8\u6570\u636e\uff0c\u6240\u4ee5\u4f60\u8dd1\u51fa\u6765\u7684\u6570\u5b57\u548c\u6211\u6587\u91cc\u7684\u4e00\u81f4\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u9644\u5f55\uff0c\u5b8c\u6574\u811a\u672c<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u811a\u672c\u5206\u6210\u4e94\u6bb5\uff0c\u90fd\u5728\u540c\u4e00\u4e2a\u6587\u4ef6\u91cc\uff0c\u4f9d\u6b21\u662f\u884c\u60c5\u751f\u6210\u3001\u7b56\u7565\u3001\u56de\u6d4b\u88c5\u914d\u3001\u6307\u6807\u81ea\u67e5\u548c\u4e3b\u6d41\u7a0b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f00\u5934\u8fd9\u51e0\u884c import \u4e94\u6bb5\u90fd\u8981\u7528\uff0c\u5148\u653e\u5728\u6700\u524d\u9762\u3002\u6574\u4efd\u811a\u672c\u53ea\u4f9d\u8d56 nautilus_trader \u672c\u8eab\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import math\nimport random\nfrom decimal import Decimal\n\nfrom nautilus_trader.backtest import BacktestEngine\nfrom nautilus_trader.config import BacktestEngineConfig\nfrom nautilus_trader.execution import MakerTakerFeeModel\nfrom nautilus_trader.indicators import ExponentialMovingAverage\nfrom nautilus_trader.model import (\n    BarType, Currency, Money, OrderSide, Price, Quantity, QuoteTick, TraderId, Venue,\n)\nfrom nautilus_trader.testkit.providers import TestInstrumentProvider\nfrom nautilus_trader.trading import Strategy, StrategyConfig\n\nSYMBOL = \"AUD\/USD\"\nBAR_SPEC = \"AUD\/USD.SIM-1-MINUTE-MID-EXTERNAL\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u4e00\u6bb5\uff0c\u884c\u60c5\u3002\u7528\u56fa\u5b9a\u968f\u673a\u79cd\u5b50\uff0c\u4e0d\u8054\u7f51\uff0c\u4fdd\u8bc1\u53ef\u590d\u73b0\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import math\nimport random\n\n\ndef synth_closes(n: int = 5000, seed: int = 7) -&gt; list&#91;float]:\n    \"\"\"\u786e\u5b9a\u6027\u884c\u60c5\u3002\u4e0d\u4e0b\u8f7d\u5916\u90e8\u6570\u636e\uff0c\u4fdd\u8bc1\u8c01\u8dd1\u90fd\u4e00\u6837\u3002\"\"\"\n    rnd = random.Random(seed)\n    px = 1.1000\n    out = &#91;]\n    for i in range(n):\n        # \u7f13\u6162\u7684\u6b63\u5f26\u6f02\u79fb + \u9ad8\u65af\u566a\u58f0\uff0c\u6784\u9020\u4e00\u6bb5\u6709\u8d8b\u52bf\u4f46\u4e0d\u5e73\u6ed1\u7684\u884c\u60c5\n        drift = 0.00004 * math.sin(i \/ 260.0)\n        px *= 1.0 + drift + rnd.gauss(0.0, 0.00045)\n        out.append(round(px, 5))\n    return out\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u4e8c\u6bb5\uff0c\u62a5\u4ef7\u3002\u8fd9\u4e00\u6bb5\u662f\u6211\u8e29\u5751\u4e4b\u540e\u8865\u7684\u3002\u64ae\u5408\u5e02\u4ef7\u5355\u5fc5\u987b\u6709\u62a5\u4ef7\uff0c\u4e0d\u7136\u4f1a\u88ab MARKET_PRICE_UNAVAILABLE \u62d2\u6389\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5199\u8fd9\u6bb5\u7684\u65f6\u5019\u6211\u8bd5\u4e86\u56db\u904d\u624d\u628a\u53c2\u6570\u987a\u5e8f\u641e\u9519\u518d\u641e\u5bf9\u3002Bar \u548c QuoteTick \u90fd\u662f\u4e00\u4e32\u4f4d\u7f6e\u53c2\u6570\uff0cPrice \u548c Quantity \u957f\u5f97\u53c8\u4e0d\u50cf\uff0c\u731c\u9519\u4e00\u6b21\u62a5\u4e00\u4e2a\u7c7b\u578b\u9519\u8bef\u3002\u7b2c\u4e00\u904d\u6211\u628a\u6210\u4ea4\u91cf\u653e\u5728\u4ef7\u683c\u524d\u9762\uff0c\u76f4\u63a5\u88ab\u62d2\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">K \u7ebf\u90a3\u6bb5\u7528\u7684\u662f Bar\uff0c\u7b7e\u540d\u4e0d\u4e00\u6837\uff0c\u987a\u5e8f\u662f bar_type, open, high, low, close, volume, ts_event, ts_init\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from nautilus_trader.model import Bar, Quantity\n\n\ndef make_bars(closes: list&#91;float], bar_spec: str = BAR_SPEC) -&gt; list&#91;Bar]:\n    \"\"\"\u628a\u6536\u76d8\u4ef7\u5e8f\u5217\u5305\u6210 1 \u5206\u949f K \u7ebf\u3002\"\"\"\n    bt = BarType.from_str(bar_spec)\n    bars = &#91;]\n    for i, c in enumerate(closes):\n        prev = closes&#91;i - 1] if i else c\n        hi = max(prev, c) * 1.00012\n        lo = min(prev, c) * 0.99988\n        ts = 1_700_000_000_000_000_000 + i * 60_000_000_000\n        bars.append(\n            Bar(\n                bt,\n                Price.from_str(f\"{prev:.5f}\"),\n                Price.from_str(f\"{hi:.5f}\"),\n                Price.from_str(f\"{lo:.5f}\"),\n                Price.from_str(f\"{c:.5f}\"),\n                Quantity.from_int(1000),\n                ts,\n                ts,\n            ),\n        )\n    return bars\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>def make_quotes(closes: list&#91;float], spread: float = 0.00002):\n    \"\"\"\u7ed9\u6bcf\u4e2a\u65f6\u95f4\u6233\u9020\u4e00\u6761\u53cc\u8fb9\u62a5\u4ef7\u3002\u64ae\u5408\u5fc5\u987b\u6709\u62a5\u4ef7\uff0c\u5426\u5219\u5e02\u4ef7\u5355\u88ab\u62d2\u3002\"\"\"\n    iid = TestInstrumentProvider.default_fx_ccy(SYMBOL, Venue(\"SIM\")).id\n    out = &#91;]\n    for i, c in enumerate(closes):\n        half = spread \/ 2\n        ts = 1_700_000_000_000_000_000 + i * 60_000_000_000\n        out.append(\n            QuoteTick(\n                iid,\n                Price.from_str(f\"{c - half:.5f}\"),\n                Price.from_str(f\"{c + half:.5f}\"),\n                Quantity.from_int(1000),\n                Quantity.from_int(1000),\n                ts,\n                ts,\n            ),\n        )\n    return out\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u4e09\u6bb5\uff0c\u7b56\u7565\u3002EMA \u4ea4\u53c9\uff0c\u7528\u5b83\u81ea\u5e26\u7684\u6307\u6807\u7c7b\u3002\u914d\u7f6e\u7c7b\u8981\u8ddf\u7740\u7b56\u7565\u4e00\u8d77\u7ed9\uff0c\u6f0f\u4e86\u4f1a NameError\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class EmaXConfig(StrategyConfig):\n    def __init__(self, instrument_id, bar_type, trade_size,\n                 fast=20, slow=50, **kw):\n        super().__init__()\n        self.instrument_id = instrument_id\n        self.bar_type = bar_type\n        self.trade_size = trade_size\n        self.fast = fast\n        self.slow = slow\n\n\nclass EmaX(Strategy):\n    def __init__(self, config: EmaXConfig) -&gt; None:\n        super().__init__(config)\n        self.fast_ema = ExponentialMovingAverage(config.fast)\n        self.slow_ema = ExponentialMovingAverage(config.slow)\n        self.equity = &#91;]  # (ts, \u6743\u76ca)\uff0c\u7528\u6765\u81ea\u5df1\u7b97\u6307\u6807\n\n    def on_start(self) -&gt; None:\n        self.register_indicator_for_bars(self.config.bar_type, self.fast_ema)\n        self.register_indicator_for_bars(self.config.bar_type, self.slow_ema)\n        self.subscribe_bars(self.config.bar_type)\n\n    def on_bar(self, bar) -&gt; None:\n        # \u6bcf\u6839 bar \u8bb0\u4e00\u6b21\u6743\u76ca\uff0c\u7528\u6765\u81ea\u5df1\u7b97\u6307\u6807\uff08\u5f15\u64ce\u81ea\u62a5\u7684\u90a3\u5957\u6837\u672c\u91cf\u4e0d\u8db3\uff09\n        acct = self.portfolio.account(self.config.instrument_id.venue)\n        if acct is not None:\n            self.equity.append(\n                (int(bar.ts_event), float(acct.balance_total().as_decimal())),\n            )\n        if not self.indicators_initialized():\n            return\n        iid = self.config.instrument_id\n        if self.fast_ema.value &gt;= self.slow_ema.value:\n            if self.portfolio.is_net_flat(iid):\n                self._market(1)\n            elif self.portfolio.is_net_short(iid):\n                self.close_all_positions(iid)\n                self._market(1)\n        elif self.fast_ema.value &lt; self.slow_ema.value:\n            if self.portfolio.is_net_flat(iid):\n                self._market(-1)\n            elif self.portfolio.is_net_long(iid):\n                self.close_all_positions(iid)\n                self._market(-1)\n\n    def _market(self, sign: int) -&gt; None:\n        \"\"\"\u5e02\u4ef7\u5355\u3002sign \u4e3a 1 \u4e70\u3001-1 \u5356\u3002\"\"\"\n        inst = self.cache.instrument(self.config.instrument_id)\n        side = OrderSide.BUY if sign &gt; 0 else OrderSide.SELL\n        order = self.order_factory.market(\n            self.config.instrument_id,\n            side,\n            inst.make_qty(Decimal(self.config.trade_size)),\n        )\n        self.submit_order(order)\n\n    def on_stop(self) -&gt; None:\n        self.close_all_positions(self.config.instrument_id)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u56db\u6bb5\uff0c\u88c5\u914d\u5f15\u64ce\u3002\u8fd9\u6bb5\u5728\u4e00\u4e2a `run_case` \u51fd\u6570\u91cc\uff0c\u624b\u7eed\u8d39\u662f\u53c2\u6570\u4f20\u8fdb\u53bb\u7684\uff0c\u4e94\u7ec4\u5b9e\u9a8c\u552f\u4e00\u53d8\u7684\u5c31\u662f\u5b83\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from nautilus_trader.model import AccountType, OmsType\n\n\ndef run_case(label, taker_rate=\"0.00002\", maker_rate=\"0.00002\",\n             fast=20, slow=50, starting=1_000_000):\n    venue = Venue(\"SIM\")\n    usd = Currency.from_str(\"USD\")\n\n    engine = BacktestEngine(\n        BacktestEngineConfig(trader_id=TraderId.from_str(\"BACKTESTER-001\"), logging=None),\n    )\n    engine.add_venue(\n        venue=venue,\n        oms_type=OmsType.HEDGING,\n        account_type=AccountType.MARGIN,\n        base_currency=usd,\n        starting_balances=&#91;Money(starting, usd)],\n        fee_model=MakerTakerFeeModel(\n            maker_rate=Decimal(maker_rate),\n            taker_rate=Decimal(taker_rate),\n        ),\n    )\n    inst = TestInstrumentProvider.default_fx_ccy(SYMBOL, venue)\n    engine.add_instrument(inst)\n\n    closes = synth_closes()\n    engine.add_data(make_quotes(closes))\n    engine.add_data(make_bars(closes))\n    strat = EmaX(EmaXConfig(\n        instrument_id=inst.id,\n        bar_type=BarType.from_str(BAR_SPEC),\n        trade_size=Decimal(\"1000000\"),\n        fast=fast, slow=slow,\n    ))\n    engine.add_strategy(strat)\n    engine.run()\n\n    end_bal = float(engine.portfolio.account(venue).balance_total().as_decimal())\n    out = {\n        \"label\": label,\n        \"taker_rate\": taker_rate,\n        \"pnl\": round(end_bal - starting, 2),\n        \"pnl_pct\": round((end_bal - starting) \/ starting * 100, 4),\n        \"n_orders\": int(len(engine.generate_orders_report())),\n        \"n_fills\": int(len(engine.generate_order_fills_report())),\n    }\n    out.update(metrics_from_equity(strat.equity, starting))\n    engine.dispose()\n    return out\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u4e94\u6bb5\uff0c\u81ea\u5df1\u7b97 Sharpe\u3002\u8fd9\u4e00\u70b9\u662f\u6211\u5efa\u8bae\u6bcf\u4e2a\u7528\u8fd9\u4e2a\u6846\u67b6\u7684\u4eba\u90fd\u6284\u8d70\u7684\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def metrics_from_equity(points, starting):\n    \"\"\"\u81ea\u5df1\u7b97\u6700\u5927\u56de\u64a4\u4e0e\u9010\u70b9\u6536\u76ca\uff0c\u907f\u514d\u76f4\u63a5\u5f15\u7528\u5f15\u64ce\u7684\u5e74\u5316\u6307\u6807\u3002\"\"\"\n    bals = &#91;b for _, b in points]\n    peak, mdd = bals&#91;0], 0.0\n    for b in bals:\n        peak = max(peak, b)\n        if peak:\n            mdd = max(mdd, (peak - b) \/ peak)\n    rets = &#91;]\n    for a, b in zip(bals, bals&#91;1:]):\n        if a:\n            rets.append(b \/ a - 1.0)\n    out = {\"eq_points\": len(bals), \"mdd_pct\": round(mdd * 100, 4)}\n    if len(rets) &gt; 1:\n        mean = sum(rets) \/ len(rets)\n        sd = (sum((r - mean) ** 2 for r in rets) \/ (len(rets) - 1)) ** 0.5\n        if sd &gt; 0:\n            out&#91;\"sharpe_unannualized\"] = round(mean \/ sd, 4)\n        out&#91;\"n_periods\"] = len(rets)\n    return out\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8dd1\u5b8c\u4e4b\u540e\u4f60\u4f1a\u5f97\u5230\u4e00\u5f20\u8868\uff0c\u957f\u8fd9\u6837\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>case                            orders   fills            PnL      PnL%   mdd%\nA\u57fa\u51c6 EMA20\/50 taker 0.002%        172     172      87,492.49    8.7492  1.4226\nB \u8d39\u7387x20 taker 0.04%              172     172      14,397.62    1.4398  2.6085\nC \u8d39\u7387x50 taker 0.1%               172     172    -101,017.45  -10.1017 10.4297\nD EMA20\/100                        112     112      79,492.79    7.9493  1.9640\nE EMA10\/20                         378     378      92,276.92    9.2277  1.9034\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u60f3\u6539\u624b\u7eed\u8d39\u5047\u8bbe\uff0c\u5c31\u6539\u4e3b\u6d41\u7a0b\u91cc\u7684\u7b2c\u4e8c\u4e2a\u53c2\u6570\u3002\u60f3\u9a8c\u8bc1\u81ea\u5df1\u90a3\u4efd\u7b56\u7565\u80fd\u4e0d\u80fd\u625b\u4f4f\u6210\u672c\uff0c\u628a taker \u5f80\u4e0a\u8c03 50 \u500d\u770b\u770b\u8fd8\u5269\u591a\u5c11\uff0c\u5c31\u77e5\u9053\u5b83\u662f\u771f\u7684\u6709Alpha \u8fd8\u662f\u521a\u597d\u76d6\u4f4f\u4e86\u624b\u7eed\u8d39\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u9879\u76ee\u5730\u5740 https:\/\/github.com\/nautechsystems\/nautilus_trader<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">#NautilusTrader #\u91cf\u5316\u5de5\u5177 #\u5f00\u6e90\u9879\u76ee #\u56de\u6d4b\u6846\u67b6 #\u5b9e\u76d8\u4ea4\u6613 #\u4e8b\u4ef6\u9a71\u52a8 #\u4ea4\u6613\u7cfb\u7edf #\u91cf\u5316\u5de5\u7a0b #Rust #A\u80a1\u91cf\u5316<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u98ce\u9669\u63d0\u793a\uff1a\u672c\u6587\u6240\u6709\u6570\u636e\u6765\u81ea\u516c\u5f00\u4ed3\u5e93\u4fe1\u606f\u4e0e\u672c\u4eba\u672c\u5730\u5b9e\u6d4b\uff0c\u5408\u6210\u884c\u60c5\u4e0d\u4ee3\u8868\u4efb\u4f55\u771f\u5b9e\u5e02\u573a\uff0c\u4e0d\u6784\u6210\u4efb\u4f55\u64cd\u4f5c\u5efa\u8bae\u3002\u5e02\u573a\u6709\u98ce\u9669\uff0c\u6587\u4e2d\u63d0\u5230\u7684\u4efb\u4f55\u5de5\u5177\u90fd\u4e0d\u6784\u6210\u8350\u80a1\u3002\u5f00\u6e90\u6846\u67b6\u7684\u6280\u672f\u6307\u6807\u4e0d\u80fd\u66ff\u4ee3\u7b56\u7565\u672c\u8eab\u7684\u903b\u8f91\u9a8c\u8bc1\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4f5c \u8005\uff1a\u8001\u4f59\u635e\u9c7c \u539f\u521b\u4e0d\u6613\uff0c\u8f6c\u8f7d\u8bf7\u6807\u660e\u51fa\u5904\u53ca\u539f\u4f5c\u8005&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/laoyulaoyu.com\/index.php\/2026\/10\/16\/%e5%9b%9e%e6%b5%8b%e4%b8%8d%e7%94%a8%e9%87%8d%e5%86%99%e5%b0%b1%e8%83%bd%e4%b8%8a%e5%ae%9e%e7%9b%98%ef%bc%8c%e8%bf%99%e4%ba%8b-nautilustrader-%e7%9c%9f%e7%9a%84%e5%81%9a%e5%88%b0%e4%ba%86%e5%90%97\/\">Continue reading<span class=\"screen-reader-text\">\u56de\u6d4b\u4e0d\u7528\u91cd\u5199\u5c31\u80fd\u4e0a\u5b9e\u76d8\uff0c\u8fd9\u4e8b NautilusTrader \u771f\u7684\u505a\u5230\u4e86\u5417\uff1f<\/span><\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[17,4,5,15,6],"class_list":["post-5046","post","type-post","status-publish","format-standard","hentry","category-aiinvest","tag-ai","tag-15","tag-6","entry"],"_links":{"self":[{"href":"https:\/\/laoyulaoyu.com\/index.php\/wp-json\/wp\/v2\/posts\/5046","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/laoyulaoyu.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/laoyulaoyu.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/laoyulaoyu.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/laoyulaoyu.com\/index.php\/wp-json\/wp\/v2\/comments?post=5046"}],"version-history":[{"count":1,"href":"https:\/\/laoyulaoyu.com\/index.php\/wp-json\/wp\/v2\/posts\/5046\/revisions"}],"predecessor-version":[{"id":5051,"href":"https:\/\/laoyulaoyu.com\/index.php\/wp-json\/wp\/v2\/posts\/5046\/revisions\/5051"}],"wp:attachment":[{"href":"https:\/\/laoyulaoyu.com\/index.php\/wp-json\/wp\/v2\/media?parent=5046"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/laoyulaoyu.com\/index.php\/wp-json\/wp\/v2\/categories?post=5046"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/laoyulaoyu.com\/index.php\/wp-json\/wp\/v2\/tags?post=5046"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}