id: 3a7f847a2eb94a5f87a74b25ba5ad561
parent_id: 
item_type: 1
item_id: 18689e40d07641cbb464b1e273d3101c
item_updated_time: 1764345627250
title_diff: "[{\"diffs\":[[1,\"【python技术】用TA-Lib、plotly构建股票技术指标分析系统\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":36}]"
body_diff: "[{\"diffs\":[[1,\"<html>\\\r\\\n<head>\\\r\\\n  <title>【python技术】用TA-Lib、plotly构建股票技术指标分析系统</title>\\\r\\\n  <basefont face=\\\"微软雅黑\\\" size=\\\"2\\\" />\\\r\\\n  <meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=utf-8\\\" />\\\r\\\n  <meta name=\\\"exporter-version\\\" content=\\\"YXBJ Windows/608924 (zh-CN, DDL); Windows/10.0.0 (Win64); EDAMVersion=V2;\\\"/>\\\r\\\n  <meta name=\\\"content-class\\\" content=\\\"yinxiang.peso.superNote\\\"/>\\\r\\\n  <meta name=\\\"application-data:yinxiang.noteLayout\\\" content=\\\"{\\\"lineSpace\\\":\\\"recommend\\\",\\\"paragraphSpace\\\":\\\"recommend\\\"}\\\"/>\\\r\\\n  <style>\\\r\\\n\\tbody, td {\\\r\\\n\\t  font-family: 微软雅黑;\\\r\\\n\\t  font-size: 12pt;\\\r\\\n\\t}\\\r\\\n  </style>\\\r\\\n</head>\\\r\\\n<body>\\\r\\\n<a name=\\\"39762\\\"></a>\\\r\\\n<h1>【python技术】用TA-Lib、plotly构建股票技术指标分析系统</h1>\\\r\\\n\\\r\\\n<div><span style=\\\"margin:0px;\\\"><div style=\\\"padding:8px 0px;margin:8px auto;max-width:700px;\\\"> <div><span></span></div>\\\n<p></p>\\\n<div style=\\\"--en-blockquote:true;box-sizing: border-box; padding-left: 19px; padding-top: 6px; padding-bottom: 6px; border-left: 3px solid #b4c0cc; background-position: initial initial; background-repeat: initial initial; margin-top: 6px\\\"><div>原文链接: <a href=\\\"http://mp.weixin.qq.com/s?__biz=MzI5NDAzNzExNw==&amp;mid=2247487035&amp;idx=1&amp;sn=a14d483ef4cc658989fc6ca565bc2ba7&amp;chksm=ed4fc3dcc452e7b50fcbfabc793159ab87136dad8806c822ceebc274a8c862667733b7487c30&amp;mpshare=1&amp;scene=1&amp;srcid=0411siM1SYUThRscKyA84PW9&amp;sharer_shareinfo=3625b689b53fb9b4e87d15138ee0065a&amp;sharer_shareinfo_first=3625b689b53fb9b4e87d15138ee0065a#rd\\\"><span>http://mp.weixin.qq.com/s?__biz=MzI5NDAzNzExNw==&amp;mid=2247487...</span></a></div></div>\\\n<p></p>\\\n<div><span></span></div>\\\n<div style=\\\"\\\"><div><div><h1 style=\\\"margin:0\\\"> 【python技术】用TA-Lib、plotly构建股票技术指标分析系统 </h1><div><span style=\\\"position:relative\\\">原创</span><span><span style=\\\"position:relative\\\">子晓0808</span></span><span><a style=\\\"position:relative\\\"> 子晓聊技术 </a></span><span><em></em></span></div><div style=\\\";\\\"><div style=\\\"text-align: center;\\\"><img src=\\\":/422c6128f75642a9a48f0c3e05dd2f72\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;\\\"/></div><div style=\\\"text-align: center;\\\"><img src=\\\":/89e5768144074390a32d10bf03307dc0\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;\\\"/></div><div><span><br/></span></div><div><span>背景： 一些同学看我之前写的开源项目介绍，卡在了</span><span>TA-Lib</span><span>安装这一步，问我这个怎么安装。也有同学问我怎么分析某只股票是否值得买，参考哪些技术指标。</span></div><div><span>这里提供下思路，方便需要的同学。虽然之前技术指标分别都写过对应的文章，但比较零散，感兴趣的同学可以翻一翻之前的文章。  这里计划把常用的指标用</span><span>TA-Lib直接一个界面全部搞定，仅供参考</span></div><div><span>先介绍下TA-Lib。</span></div><p style=\\\"margin:var(--yb-md-content-gap-main);padding:0;border:0;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-variant-alternates:inherit;font-variant-position:inherit;font-variant-emoji:inherit;font-weight:400;font-stretch:inherit;font-size:16px;line-height:inherit;font-family:&quot;PingFang SC&quot;,-apple-system,&quot;system-ui&quot;,&quot;Segoe UI&quot;,Roboto,Ubuntu,&quot;Helvetica Neue&quot;,Helvetica,Arial,&quot;Hiragino Sans GB&quot;,&quot;Microsoft YaHei UI&quot;,&quot;Microsoft YaHei&quot;,&quot;Source Han Sans CN&quot;,sans-serif;font-optical-sizing:inherit;font-size-adjust:inherit;font-kerning:inherit;font-feature-settings:inherit;font-variation-settings:inherit;vertical-align:baseline;word-break:break-word;overflow-wrap:break-word;color:rgba(0,0,0,0.9);letter-spacing:normal;orphans:2;text-align:start;text-indent:0;text-transform:none;widows:2;word-spacing:0;-webkit-text-stroke-width:0;white-space:normal;background-color:rgb(252,252,252);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\\\"><span>TA-Lib是一个开源的金融技术分析库，涵盖超过150种技术指标的计算，包括趋势指标（如移动平均线）、动量指标（如RSI）、波动率指标（如布林带）等。其底层采用C语言优化，并通过Python、Java等接口暴露功能，计算速度极快，特别适合处理高频金融数据。</span></p><p style=\\\"margin:var(--yb-md-content-gap-main);padding:0;border:0;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-variant-alternates:inherit;font-variant-position:inherit;font-variant-emoji:inherit;font-weight:400;font-stretch:inherit;font-size:16px;line-height:inherit;font-family:&quot;PingFang SC&quot;,-apple-system,&quot;system-ui&quot;,&quot;Segoe UI&quot;,Roboto,Ubuntu,&quot;Helvetica Neue&quot;,Helvetica,Arial,&quot;Hiragino Sans GB&quot;,&quot;Microsoft YaHei UI&quot;,&quot;Microsoft YaHei&quot;,&quot;Source Han Sans CN&quot;,sans-serif;font-optical-sizing:inherit;font-size-adjust:inherit;font-kerning:inherit;font-feature-settings:inherit;font-variation-settings:inherit;vertical-align:baseline;word-break:break-word;overflow-wrap:break-word;color:rgba(0,0,0,0.9);letter-spacing:normal;orphans:2;text-align:start;text-indent:0;text-transform:none;widows:2;word-spacing:0;-webkit-text-stroke-width:0;white-space:normal;background-color:rgb(252,252,252);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\\\"><span><br/></span></p><h4 style=\\\"margin:var(--yb-md-content-gap-t3);padding:0;border:0;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:bold;font-family:&quot;PingFang SC&quot;,-apple-system,&quot;system-ui&quot;,&quot;Segoe UI&quot;,Roboto,Ubuntu,&quot;Helvetica Neue&quot;,Helvetica,Arial,&quot;Hiragino Sans GB&quot;,&quot;Microsoft YaHei UI&quot;,&quot;Microsoft YaHei&quot;,&quot;Source Han Sans CN&quot;,sans-serif;vertical-align:baseline;color:rgba(0,0,0,0.9);letter-spacing:normal;orphans:2;text-align:start;text-indent:0;text-transform:none;widows:2;word-spacing:0;-webkit-text-stroke-width:0;white-space:normal;background-color:rgb(252,252,252);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\\\"><span>核心优势</span></h4><ul style=\\\"margin:0;margin-left:2em;padding:0;border:0;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-variant-alternates:inherit;font-variant-position:inherit;font-variant-emoji:inherit;font-weight:400;font-stretch:inherit;font-size:16px;line-height:inherit;font-family:&quot;PingFang SC&quot;,-apple-system,&quot;system-ui&quot;,&quot;Segoe UI&quot;,Roboto,Ubuntu,&quot;Helvetica Neue&quot;,Helvetica,Arial,&quot;Hiragino Sans GB&quot;,&quot;Microsoft YaHei UI&quot;,&quot;Microsoft YaHei&quot;,&quot;Source Han Sans CN&quot;,sans-serif;font-optical-sizing:inherit;font-size-adjust:inherit;font-kerning:inherit;font-feature-settings:inherit;font-variation-settings:inherit;vertical-align:baseline;list-style:disc;color:rgba(0,0,0,0.9);letter-spacing:normal;orphans:2;text-align:start;text-indent:0;text-transform:none;widows:2;word-spacing:0;-webkit-text-stroke-width:0;white-space:normal;background-color:rgb(252,252,252);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\\\"><li style=\\\"margin: 0px 0px 0.5em;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;word-break: break-word;overflow-wrap: break-word;\\\"><strong style=\\\"margin: 0px;padding: 0px;border: 0px;font-style: inherit;font-variant: inherit;font-weight: bold;font-stretch: inherit;font-size: inherit;line-height: inherit;font-family: inherit;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;\\\"><span>高效计算</span></strong><div><span>：C语言内核确保毫秒级指标计算。</span></div></li><li style=\\\"margin: 0.5em 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;word-break: break-word;overflow-wrap: break-word;\\\"><strong style=\\\"margin: 0px;padding: 0px;border: 0px;font-style: inherit;font-variant: inherit;font-weight: bold;font-stretch: inherit;font-size: inherit;line-height: inherit;font-family: inherit;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;\\\"><span>全面覆盖</span></strong><div><span>：支持均线、MACD、KDJ、布林带等主流指标。</span></div></li><li style=\\\"margin: 0.5em 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;word-break: break-word;overflow-wrap: break-word;\\\"><strong style=\\\"margin: 0px;padding: 0px;border: 0px;font-style: inherit;font-variant: inherit;font-weight: bold;font-stretch: inherit;font-size: inherit;line-height: inherit;font-family: inherit;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;\\\"><span>多语言支持</span></strong><div><span>：Python、C/C++、Java、Ruby等均可调用。</span></div></li><li style=\\\"margin: 0.5em 0px 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;word-break: break-word;overflow-wrap: break-word;\\\"><strong style=\\\"margin: 0px;padding: 0px;border: 0px;font-style: inherit;font-variant: inherit;font-weight: bold;font-stretch: inherit;font-size: inherit;line-height: inherit;font-family: inherit;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;\\\"><span>开源免费</span></strong><div><span>：社区活跃，文档丰富，适合个人与商业项目。</span></div></li></ul><div><span><br/></span></div><div><span>以我用的mac为例：</span></div><div><span>1、通过homebrew 安装ta-lib</span></div><pre style=\\\"white-space:pre-wrap;margin: 0.5em 0px;padding: 1em;border: 0px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-variant-numeric: inherit;font-variant-east-asian: inherit;font-variant-alternates: inherit;font-variant-position: inherit;font-variant-emoji: inherit;font-weight: 400;font-stretch: inherit;font-size: 16px;line-height: 1.5;font-family: &quot;Fira Code&quot;, &quot;Fira Mono&quot;, Menlo, Consolas, &quot;DejaVu Sans Mono&quot;, monospace;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;background: rgb(250, 250, 250);border-radius: 0.3em;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: normal;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;color: rgb(56, 58, 66);direction: ltr;word-break: normal;tab-size: 2;hyphens: none;overflow: auto;\\\"><div style=\\\"--en-codeblock:true;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>brew </span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>install</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> ta-lib</span></span></div></pre><div><span>通过</span></div><pre style=\\\"white-space:pre-wrap;margin: 0.5em 0px;padding: 1em;border: 0px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-variant-numeric: inherit;font-variant-east-asian: inherit;font-variant-alternates: inherit;font-variant-position: inherit;font-variant-emoji: inherit;font-weight: 400;font-stretch: inherit;font-size: 16px;line-height: 1.5;font-family: &quot;Fira Code&quot;, &quot;Fira Mono&quot;, Menlo, Consolas, &quot;DejaVu Sans Mono&quot;, monospace;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;background: rgb(250, 250, 250);border-radius: 0.3em;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: normal;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;color: rgb(56, 58, 66);direction: ltr;word-break: normal;tab-size: 2;hyphens: none;overflow: auto;\\\"><div style=\\\"--en-codeblock:true;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>ls</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> /opt/homebrew/opt/ta-lib/lib/</span></span></div></pre><div><span>确认下</span><span style=\\\"color: rgba(0, 0, 0, 0.9);font-family: &quot;PingFang SC&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, Roboto, Ubuntu, &quot;Helvetica Neue&quot;, Helvetica, Arial, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, &quot;Source Han Sans CN&quot;, sans-serif;font-size: 14px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(243, 243, 243);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;display: inline !important;float: none;\\\"><span>libta_lib.0.dylib是否存在</span></span></div><div><span style=\\\"color: rgba(0, 0, 0, 0.9);font-family: &quot;PingFang SC&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, Roboto, Ubuntu, &quot;Helvetica Neue&quot;, Helvetica, Arial, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, &quot;Source Han Sans CN&quot;, sans-serif;font-size: 14px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(243, 243, 243);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;display: inline !important;float: none;\\\"><span>2、安装python包</span></span></div><pre style=\\\"white-space:pre-wrap;margin: 0.5em 0px;padding: 1em;border: 0px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-variant-numeric: inherit;font-variant-east-asian: inherit;font-variant-alternates: inherit;font-variant-position: inherit;font-variant-emoji: inherit;font-weight: 400;font-stretch: inherit;font-size: 16px;line-height: 1.5;font-family: &quot;Fira Code&quot;, &quot;Fira Mono&quot;, Menlo, Consolas, &quot;DejaVu Sans Mono&quot;, monospace;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;background: rgb(250, 250, 250);border-radius: 0.3em;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: normal;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;color: rgb(56, 58, 66);direction: ltr;word-break: normal;tab-size: 2;hyphens: none;overflow: auto;\\\"><div style=\\\"--en-codeblock:true;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>pip </span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>install</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> ta-lib</span></span></div></pre><div><span>3、如果</span><span style=\\\"color: rgba(0, 0, 0, 0.9);font-family: &quot;PingFang SC&quot;, -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, Roboto, Ubuntu, &quot;Helvetica Neue&quot;, Helvetica, Arial, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, &quot;Source Han Sans CN&quot;, sans-serif;font-size: 14px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(243, 243, 243);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;display: inline !important;float: none;\\\"><span>brew info ta-lib 出不来效果尝试 </span></span><span>做下软连接</span></div><pre style=\\\"white-space:pre-wrap;margin: 0.5em 0px;padding: 1em;border: 0px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-variant-numeric: inherit;font-variant-east-asian: inherit;font-variant-alternates: inherit;font-variant-position: inherit;font-variant-emoji: inherit;font-weight: 400;font-stretch: inherit;font-size: 16px;line-height: 1.5;font-family: &quot;Fira Code&quot;, &quot;Fira Mono&quot;, Menlo, Consolas, &quot;DejaVu Sans Mono&quot;, monospace;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;background: rgb(250, 250, 250);border-radius: 0.3em;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: normal;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;color: rgb(56, 58, 66);direction: ltr;text-align: left;word-break: normal;tab-size: 2;hyphens: none;overflow: auto;\\\"><div style=\\\"--en-codeblock:true;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>sudo</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> </span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>ln</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> -s /opt/homebrew/Cellar/ta-lib/0.4.0/lib/libta_lib.0.dylib /usr/local/lib/</span></span></div></pre><div><span>修改成对应的ta-lib版本</span></div><div><span><br/></span></div><div><span>windows网上搜索下对应的方式。</span></div><div><span><br/></span></div><div><span><span style=\\\"font-weight: bold;\\\">下面系统讲一下常用的技术指标</span></span></div><h4 style=\\\"margin:var(--yb-md-content-gap-t3);padding:0;border:0;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:bold;font-family:&quot;PingFang SC&quot;,-apple-system,&quot;system-ui&quot;,&quot;Segoe UI&quot;,Roboto,Ubuntu,&quot;Helvetica Neue&quot;,Helvetica,Arial,&quot;Hiragino Sans GB&quot;,&quot;Microsoft YaHei UI&quot;,&quot;Microsoft YaHei&quot;,&quot;Source Han Sans CN&quot;,sans-serif;vertical-align:baseline;color:rgba(0,0,0,0.9);letter-spacing:normal;orphans:2;text-align:start;text-indent:0;text-transform:none;widows:2;word-spacing:0;-webkit-text-stroke-width:0;white-space:normal;background-color:rgb(252,252,252);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\\\"><span>1. 移动平均线（MA）：捕捉趋势方向</span></h4><p style=\\\"margin:var(--yb-md-content-gap-main);padding:0;border:0;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-variant-alternates:inherit;font-variant-position:inherit;font-variant-emoji:inherit;font-weight:400;font-stretch:inherit;font-size:16px;line-height:inherit;font-family:&quot;PingFang SC&quot;,-apple-system,&quot;system-ui&quot;,&quot;Segoe UI&quot;,Roboto,Ubuntu,&quot;Helvetica Neue&quot;,Helvetica,Arial,&quot;Hiragino Sans GB&quot;,&quot;Microsoft YaHei UI&quot;,&quot;Microsoft YaHei&quot;,&quot;Source Han Sans CN&quot;,sans-serif;font-optical-sizing:inherit;font-size-adjust:inherit;font-kerning:inherit;font-feature-settings:inherit;font-variation-settings:inherit;vertical-align:baseline;word-break:break-word;overflow-wrap:break-word;color:rgba(0,0,0,0.9);letter-spacing:normal;orphans:2;text-align:start;text-indent:0;text-transform:none;widows:2;word-spacing:0;-webkit-text-stroke-width:0;white-space:normal;background-color:rgb(252,252,252);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\\\"><span>移动平均线是识别趋势的基础工具。TA-Lib提供</span><code style=\\\"margin: 0px 8px;padding: 2px 4px;border: none;font-style: inherit;font-variant: inherit;font-weight: inherit;font-stretch: inherit;font-size: 14px;line-height: inherit;font-family: inherit;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;word-break: break-word;background-color: var(--yb-md-inline-code-bg-color);border-radius: 4px;color: var(--yb-md-inline-code-color);\\\"><span>SMA</span></code><span>（简单移动平均）、</span><code style=\\\"margin: 0px 8px;padding: 2px 4px;border: none;font-style: inherit;font-variant: inherit;font-weight: inherit;font-stretch: inherit;font-size: 14px;line-height: inherit;font-family: inherit;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;word-break: break-word;background-color: var(--yb-md-inline-code-bg-color);border-radius: 4px;color: var(--yb-md-inline-code-color);\\\"><span>EMA</span></code><span>（指数移动平均）等函数。</span></p><pre style=\\\"margin: 0px;padding: 0px;border: 0px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-variant-numeric: inherit;font-variant-east-asian: inherit;font-variant-alternates: inherit;font-variant-position: inherit;font-variant-emoji: inherit;font-weight: 400;font-stretch: inherit;font-size: 16px;line-height: inherit;font-family: inherit;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\\\"><div style=\\\"margin: 0px 0px 16px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;border-radius: 8px;overflow: hidden;\\\"><p style=\\\"margin:0\\\"><span><br/></span></p><p style=\\\"margin:0\\\"><span style=\\\"margin: 0px;padding: 0px;border: 0px;font-style: normal;font-variant: inherit;font-weight: inherit;font-stretch: inherit;font-size: 18px;line-height: inherit;font-family: iconfont !important;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;-webkit-font-smoothing: antialiased;color: currentcolor;\\\"></span></p><pre style=\\\"white-space:pre-wrap;margin: 0.5em 0px;padding: 1em;border: 0px;font-style: inherit;font-variant: inherit;font-weight: inherit;font-stretch: inherit;font-size: inherit;line-height: 1.5;font-family: &quot;Fira Code&quot;, &quot;Fira Mono&quot;, Menlo, Consolas, &quot;DejaVu Sans Mono&quot;, monospace;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;background: rgb(250, 250, 250);border-radius: 0.3em;color: rgb(56, 58, 66);direction: ltr;text-align: left;word-spacing: normal;word-break: normal;tab-size: 2;hyphens: none;overflow: auto;\\\"><div style=\\\"--en-codeblock:true;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(166, 38, 164);\\\"><span>import</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> talib</span><span><br/></span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(166, 38, 164);\\\"><span>import</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> numpy </span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(166, 38, 164);\\\"><span>as</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> np</span><span><br/></span></span><span><br/></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font-style: italic;font-variant: inherit;font-weight: inherit;font-stretch: inherit;font-size: inherit;line-height: inherit;font-family: inherit;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;color: rgb(160, 161, 167);\\\"><span># 示例数据：收盘价（假设为连续10天的数据）</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span><br/></span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>close_prices </span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>=</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> np</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>.</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>array</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>(</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>[</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>45.3</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>,</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>46.1</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>,</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>47.8</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>,</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>48.5</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>,</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>49.2</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>,</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>50.1</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>,</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>49.8</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>,</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>51.0</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>,</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>50.5</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>,</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>52.3</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>]</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>)</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span><br/></span></span><span><br/></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font-style: italic;font-variant: inherit;font-weight: inherit;font-stretch: inherit;font-size: inherit;line-height: inherit;font-family: inherit;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;color: rgb(160, 161, 167);\\\"><span># 计算5日简单移动平均线</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span><br/></span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>sma5 </span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>=</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> talib</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>.</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>SMA</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>(</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>close_prices</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>,</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> timeperiod</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>=</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>5</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>)</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span><br/></span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(166, 38, 164);\\\"><span>print</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>(</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(80, 161, 79);\\\"><span>&quot;5日SMA:&quot;</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>,</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> sma5</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>)</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span><br/></span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font-style: italic;font-variant: inherit;font-weight: inherit;font-stretch: inherit;font-size: inherit;line-height: inherit;font-family: inherit;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;color: rgb(160, 161, 167);\\\"><span># 输出：[       nan        nan        nan        nan 47.38, 48.34, 49.12, 49.88, 50.32, 50.94]</span></span></div></pre><pre style=\\\"white-space:pre-wrap;margin: 0.5em 0px;padding: 1em;border: 0px;font-style: inherit;font-variant: inherit;font-weight: inherit;font-stretch: inherit;font-size: inherit;line-height: 1.5;font-family: &quot;Fira Code&quot;, &quot;Fira Mono&quot;, Menlo, Consolas, &quot;DejaVu Sans Mono&quot;, monospace;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;background: rgb(250, 250, 250);border-radius: 0.3em;color: rgb(56, 58, 66);direction: ltr;text-align: left;word-spacing: normal;word-break: normal;tab-size: 2;hyphens: none;overflow: auto;\\\"><div style=\\\"--en-codeblock:true;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span style=\\\"margin: 0px;padding: 0px;border: 0px;font-style: italic;font-variant: inherit;font-weight: inherit;font-stretch: inherit;font-size: inherit;line-height: inherit;font-family: inherit;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;color: rgb(160, 161, 167);\\\"><span><br/></span></span></div></pre></div></pre><h4 style=\\\"margin:var(--yb-md-content-gap-t3);padding:0;border:0;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:bold;font-family:&quot;PingFang SC&quot;,-apple-system,&quot;system-ui&quot;,&quot;Segoe UI&quot;,Roboto,Ubuntu,&quot;Helvetica Neue&quot;,Helvetica,Arial,&quot;Hiragino Sans GB&quot;,&quot;Microsoft YaHei UI&quot;,&quot;Microsoft YaHei&quot;,&quot;Source Han Sans CN&quot;,sans-serif;vertical-align:baseline;color:rgba(0,0,0,0.9);letter-spacing:normal;orphans:2;text-align:start;text-indent:0;text-transform:none;widows:2;word-spacing:0;-webkit-text-stroke-width:0;white-space:normal;background-color:rgb(252,252,252);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\\\"><span>2. 相对强弱指数（RSI）：识别超买超卖</span></h4><p style=\\\"margin:var(--yb-md-content-gap-main);padding:0;border:0;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-variant-alternates:inherit;font-variant-position:inherit;font-variant-emoji:inherit;font-weight:400;font-stretch:inherit;font-size:16px;line-height:inherit;font-family:&quot;PingFang SC&quot;,-apple-system,&quot;system-ui&quot;,&quot;Segoe UI&quot;,Roboto,Ubuntu,&quot;Helvetica Neue&quot;,Helvetica,Arial,&quot;Hiragino Sans GB&quot;,&quot;Microsoft YaHei UI&quot;,&quot;Microsoft YaHei&quot;,&quot;Source Han Sans CN&quot;,sans-serif;font-optical-sizing:inherit;font-size-adjust:inherit;font-kerning:inherit;font-feature-settings:inherit;font-variation-settings:inherit;vertical-align:baseline;word-break:break-word;overflow-wrap:break-word;color:rgba(0,0,0,0.9);letter-spacing:normal;orphans:2;text-align:start;text-indent:0;text-transform:none;widows:2;word-spacing:0;-webkit-text-stroke-width:0;white-space:normal;background-color:rgb(252,252,252);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\\\"><span>RSI用于衡量价格变动速度，通常在70以上视为超买，30以下为超卖。</span></p><pre style=\\\"margin: 0px;padding: 0px;border: 0px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-variant-numeric: inherit;font-variant-east-asian: inherit;font-variant-alternates: inherit;font-variant-position: inherit;font-variant-emoji: inherit;font-weight: 400;font-stretch: inherit;font-size: 16px;line-height: inherit;font-family: inherit;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\\\"><div style=\\\"margin: 0px 0px 16px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;border-radius: 8px;overflow: hidden;\\\"><p style=\\\"margin:0\\\"><span><br/></span></p><p style=\\\"margin:0\\\"><span style=\\\"margin: 0px;padding: 0px;border: 0px;font-style: normal;font-variant: inherit;font-weight: inherit;font-stretch: inherit;font-size: 18px;line-height: inherit;font-family: iconfont !important;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;-webkit-font-smoothing: antialiased;color: currentcolor;\\\"></span></p><pre style=\\\"white-space:pre-wrap;margin: 0.5em 0px;padding: 1em;border: 0px;font-style: inherit;font-variant: inherit;font-weight: inherit;font-stretch: inherit;font-size: inherit;line-height: 1.5;font-family: &quot;Fira Code&quot;, &quot;Fira Mono&quot;, Menlo, Consolas, &quot;DejaVu Sans Mono&quot;, monospace;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;background: rgb(250, 250, 250);border-radius: 0.3em;color: rgb(56, 58, 66);direction: ltr;text-align: left;word-spacing: normal;word-break: normal;tab-size: 2;hyphens: none;overflow: auto;\\\"><div style=\\\"--en-codeblock:true;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>rsi14 </span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>=</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> talib</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>.</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>RSI</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>(</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>close_prices</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>,</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> timeperiod</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>=</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>14</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>)</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span><br/></span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(166, 38, 164);\\\"><span>print</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>(</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(80, 161, 79);\\\"><span>&quot;14日RSI:&quot;</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>,</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> rsi14</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>[</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>-</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>1</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>]</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>)</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>  </span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font-style: italic;font-variant: inherit;font-weight: inherit;font-stretch: inherit;font-size: inherit;line-height: inherit;font-family: inherit;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;color: rgb(160, 161, 167);\\\"><span># 输出最新RSI值</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span><br/></span></span><span><br/></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font-style: italic;font-variant: inherit;font-weight: inherit;font-stretch: inherit;font-size: inherit;line-height: inherit;font-family: inherit;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;color: rgb(160, 161, 167);\\\"><span># 策略示例：RSI低于30时触发买入信号</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span><br/></span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(166, 38, 164);\\\"><span>if</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> rsi14</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>[</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>-</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>1</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>]</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> </span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>&lt;</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> </span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>30</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>:</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span><br/></span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>    </span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(166, 38, 164);\\\"><span>print</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>(</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(80, 161, 79);\\\"><span>&quot;买入信号：RSI超卖区域！&quot;</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>)</span></span></div></pre><pre style=\\\"white-space:pre-wrap;margin: 0.5em 0px;padding: 1em;border: 0px;font-style: inherit;font-variant: inherit;font-weight: inherit;font-stretch: inherit;font-size: inherit;line-height: 1.5;font-family: &quot;Fira Code&quot;, &quot;Fira Mono&quot;, Menlo, Consolas, &quot;DejaVu Sans Mono&quot;, monospace;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;background: rgb(250, 250, 250);border-radius: 0.3em;color: rgb(56, 58, 66);direction: ltr;text-align: left;word-spacing: normal;word-break: normal;tab-size: 2;hyphens: none;overflow: auto;\\\"><div style=\\\"--en-codeblock:true;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span><br/></span></span></div></pre></div></pre><h4 style=\\\"margin:var(--yb-md-content-gap-t3);padding:0;border:0;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:bold;font-family:&quot;PingFang SC&quot;,-apple-system,&quot;system-ui&quot;,&quot;Segoe UI&quot;,Roboto,Ubuntu,&quot;Helvetica Neue&quot;,Helvetica,Arial,&quot;Hiragino Sans GB&quot;,&quot;Microsoft YaHei UI&quot;,&quot;Microsoft YaHei&quot;,&quot;Source Han Sans CN&quot;,sans-serif;vertical-align:baseline;color:rgba(0,0,0,0.9);letter-spacing:normal;orphans:2;text-align:start;text-indent:0;text-transform:none;widows:2;word-spacing:0;-webkit-text-stroke-width:0;white-space:normal;background-color:rgb(252,252,252);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\\\"><span>3. MACD：捕捉趋势转折</span></h4><p style=\\\"margin:var(--yb-md-content-gap-main);padding:0;border:0;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-variant-alternates:inherit;font-variant-position:inherit;font-variant-emoji:inherit;font-weight:400;font-stretch:inherit;font-size:16px;line-height:inherit;font-family:&quot;PingFang SC&quot;,-apple-system,&quot;system-ui&quot;,&quot;Segoe UI&quot;,Roboto,Ubuntu,&quot;Helvetica Neue&quot;,Helvetica,Arial,&quot;Hiragino Sans GB&quot;,&quot;Microsoft YaHei UI&quot;,&quot;Microsoft YaHei&quot;,&quot;Source Han Sans CN&quot;,sans-serif;font-optical-sizing:inherit;font-size-adjust:inherit;font-kerning:inherit;font-feature-settings:inherit;font-variation-settings:inherit;vertical-align:baseline;word-break:break-word;overflow-wrap:break-word;color:rgba(0,0,0,0.9);letter-spacing:normal;orphans:2;text-align:start;text-indent:0;text-transform:none;widows:2;word-spacing:0;-webkit-text-stroke-width:0;white-space:normal;background-color:rgb(252,252,252);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\\\"><span>MACD由快线（DIF）、慢线（DEA）和柱状图（MACD Histogram）组成，常用于判断多空转换。</span></p><pre style=\\\"margin: 0px;padding: 0px;border: 0px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-variant-numeric: inherit;font-variant-east-asian: inherit;font-variant-alternates: inherit;font-variant-position: inherit;font-variant-emoji: inherit;font-weight: 400;font-stretch: inherit;font-size: 16px;line-height: inherit;font-family: inherit;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\\\"><div style=\\\"margin: 0px 0px 16px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;border-radius: 8px;overflow: hidden;\\\"><p style=\\\"margin:0\\\"><span><br/></span></p><p style=\\\"margin:0\\\"><span style=\\\"margin: 0px;padding: 0px;border: 0px;font-style: normal;font-variant: inherit;font-weight: inherit;font-stretch: inherit;font-size: 18px;line-height: inherit;font-family: iconfont !important;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;-webkit-font-smoothing: antialiased;color: currentcolor;\\\"></span></p><pre style=\\\"white-space:pre-wrap;margin: 0.5em 0px;padding: 1em;border: 0px;font-style: inherit;font-variant: inherit;font-weight: inherit;font-stretch: inherit;font-size: inherit;line-height: 1.5;font-family: &quot;Fira Code&quot;, &quot;Fira Mono&quot;, Menlo, Consolas, &quot;DejaVu Sans Mono&quot;, monospace;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;background: rgb(250, 250, 250);border-radius: 0.3em;color: rgb(56, 58, 66);direction: ltr;text-align: left;word-spacing: normal;word-break: normal;tab-size: 2;hyphens: none;overflow: auto;\\\"><div style=\\\"--en-codeblock:true;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>macd</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>,</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> signal</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>,</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> hist </span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>=</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> talib</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>.</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>MACD</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>(</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>close_prices</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>,</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> </span><span><br/></span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>                               fastperiod</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>=</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>12</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>,</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> </span><span><br/></span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>                               slowperiod</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>=</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>26</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>,</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> </span><span><br/></span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>                               signalperiod</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>=</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>9</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>)</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span><br/></span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font-style: italic;font-variant: inherit;font-weight: inherit;font-stretch: inherit;font-size: inherit;line-height: inherit;font-family: inherit;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;color: rgb(160, 161, 167);\\\"><span># 金叉：MACD线上穿信号线（买入信号）</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span><br/></span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(166, 38, 164);\\\"><span>if</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> macd</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>[</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>-</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>2</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>]</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> </span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>&lt;</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> signal</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>[</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>-</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>2</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>]</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> </span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(166, 38, 164);\\\"><span>and</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> macd</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>[</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>-</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>1</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>]</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> </span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>&gt;</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> signal</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>[</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>-</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>1</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>]</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>:</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span><br/></span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>    </span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(166, 38, 164);\\\"><span>print</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>(</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(80, 161, 79);\\\"><span>&quot;MACD金叉出现，建议买入！&quot;</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>)</span></span></div></pre><pre style=\\\"white-space:pre-wrap;margin: 0.5em 0px;padding: 1em;border: 0px;font-style: inherit;font-variant: inherit;font-weight: inherit;font-stretch: inherit;font-size: inherit;line-height: 1.5;font-family: &quot;Fira Code&quot;, &quot;Fira Mono&quot;, Menlo, Consolas, &quot;DejaVu Sans Mono&quot;, monospace;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;background: rgb(250, 250, 250);border-radius: 0.3em;color: rgb(56, 58, 66);direction: ltr;text-align: left;word-spacing: normal;word-break: normal;tab-size: 2;hyphens: none;overflow: auto;\\\"><div style=\\\"--en-codeblock:true;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span><br/></span></span></div></pre></div></pre><h4 style=\\\"margin:var(--yb-md-content-gap-t3);padding:0;border:0;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:bold;font-family:&quot;PingFang SC&quot;,-apple-system,&quot;system-ui&quot;,&quot;Segoe UI&quot;,Roboto,Ubuntu,&quot;Helvetica Neue&quot;,Helvetica,Arial,&quot;Hiragino Sans GB&quot;,&quot;Microsoft YaHei UI&quot;,&quot;Microsoft YaHei&quot;,&quot;Source Han Sans CN&quot;,sans-serif;vertical-align:baseline;color:rgba(0,0,0,0.9);letter-spacing:normal;orphans:2;text-align:start;text-indent:0;text-transform:none;widows:2;word-spacing:0;-webkit-text-stroke-width:0;white-space:normal;background-color:rgb(252,252,252);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\\\"><span>4. 布林带（Bollinger Bands）：衡量波动率</span></h4><p style=\\\"margin:var(--yb-md-content-gap-main);padding:0;border:0;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-variant-alternates:inherit;font-variant-position:inherit;font-variant-emoji:inherit;font-weight:400;font-stretch:inherit;font-size:16px;line-height:inherit;font-family:&quot;PingFang SC&quot;,-apple-system,&quot;system-ui&quot;,&quot;Segoe UI&quot;,Roboto,Ubuntu,&quot;Helvetica Neue&quot;,Helvetica,Arial,&quot;Hiragino Sans GB&quot;,&quot;Microsoft YaHei UI&quot;,&quot;Microsoft YaHei&quot;,&quot;Source Han Sans CN&quot;,sans-serif;font-optical-sizing:inherit;font-size-adjust:inherit;font-kerning:inherit;font-feature-settings:inherit;font-variation-settings:inherit;vertical-align:baseline;word-break:break-word;overflow-wrap:break-word;color:rgba(0,0,0,0.9);letter-spacing:normal;orphans:2;text-align:start;text-indent:0;text-transform:none;widows:2;word-spacing:0;-webkit-text-stroke-width:0;white-space:normal;background-color:rgb(252,252,252);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\\\"><span><br/></span></p><p style=\\\"margin:var(--yb-md-content-gap-main);padding:0;border:0;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-variant-alternates:inherit;font-variant-position:inherit;font-variant-emoji:inherit;font-weight:400;font-stretch:inherit;font-size:16px;line-height:inherit;font-family:&quot;PingFang SC&quot;,-apple-system,&quot;system-ui&quot;,&quot;Segoe UI&quot;,Roboto,Ubuntu,&quot;Helvetica Neue&quot;,Helvetica,Arial,&quot;Hiragino Sans GB&quot;,&quot;Microsoft YaHei UI&quot;,&quot;Microsoft YaHei&quot;,&quot;Source Han Sans CN&quot;,sans-serif;font-optical-sizing:inherit;font-size-adjust:inherit;font-kerning:inherit;font-feature-settings:inherit;font-variation-settings:inherit;vertical-align:baseline;word-break:break-word;overflow-wrap:break-word;color:rgba(0,0,0,0.9);letter-spacing:normal;orphans:2;text-align:start;text-indent:0;text-transform:none;widows:2;word-spacing:0;-webkit-text-stroke-width:0;white-space:normal;background-color:rgb(252,252,252);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\\\"><span>布林带由中轨（均线）、上轨和下轨组成，价格突破轨道常被视为趋势信号。</span></p><pre style=\\\"margin: 0px;padding: 0px;border: 0px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-variant-numeric: inherit;font-variant-east-asian: inherit;font-variant-alternates: inherit;font-variant-position: inherit;font-variant-emoji: inherit;font-weight: 400;font-stretch: inherit;font-size: 16px;line-height: inherit;font-family: inherit;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;color: rgba(0, 0, 0, 0.9);letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(252, 252, 252);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\\\"><div style=\\\"margin: 0px 0px 16px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;border-radius: 8px;overflow: hidden;\\\"><p style=\\\"margin:0\\\"><span><br/></span></p><p style=\\\"margin:0\\\"><span style=\\\"margin: 0px;padding: 0px;border: 0px;font-style: normal;font-variant: inherit;font-weight: inherit;font-stretch: inherit;font-size: 18px;line-height: inherit;font-family: iconfont !important;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;-webkit-font-smoothing: antialiased;color: currentcolor;\\\"></span></p><pre style=\\\"white-space:pre-wrap;margin: 0.5em 0px;padding: 1em;border: 0px;font-style: inherit;font-variant: inherit;font-weight: inherit;font-stretch: inherit;font-size: inherit;line-height: 1.5;font-family: &quot;Fira Code&quot;, &quot;Fira Mono&quot;, Menlo, Consolas, &quot;DejaVu Sans Mono&quot;, monospace;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;background: rgb(250, 250, 250);border-radius: 0.3em;color: rgb(56, 58, 66);direction: ltr;text-align: left;word-spacing: normal;word-break: normal;tab-size: 2;hyphens: none;overflow: auto;\\\"><div style=\\\"--en-codeblock:true;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>upper</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>,</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> middle</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>,</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> lower </span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>=</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> talib</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>.</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>BBANDS</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>(</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>close_prices</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>,</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> </span><span><br/></span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>                                    timeperiod</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>=</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>20</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>,</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> </span><span><br/></span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>                                    nbdevup</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>=</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>2</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>,</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> </span><span><br/></span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>                                    nbdevdn</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>=</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>2</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>)</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span><br/></span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font-style: italic;font-variant: inherit;font-weight: inherit;font-stretch: inherit;font-size: inherit;line-height: inherit;font-family: inherit;font-optical-sizing: inherit;font-size-adjust: inherit;font-kerning: inherit;font-feature-settings: inherit;font-variation-settings: inherit;vertical-align: baseline;color: rgb(160, 161, 167);\\\"><span># 价格突破上轨可能预示回调</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span><br/></span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(166, 38, 164);\\\"><span>if</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> close_prices</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>[</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>-</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>1</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>]</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> </span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>&gt;</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span> upper</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>[</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(64, 120, 242);\\\"><span>-</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(183, 107, 1);\\\"><span>1</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>]</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>:</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span><br/></span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;\\\"><span>    </span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(166, 38, 164);\\\"><span>print</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>(</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(80, 161, 79);\\\"><span>&quot;价格突破布林带上轨，警惕超买风险！&quot;</span></span><span style=\\\"margin: 0px;padding: 0px;border: 0px;font: inherit;vertical-align: baseline;color: rgb(56, 58, 66);\\\"><span>)</span></span></div></pre></div></pre><div><span><br/></span></div><div><span>这里提供下核心代码</span></div><div style=\\\"margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;overflow-wrap: break-word;text-align: left;\\\"><pre style=\\\"border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;text-align: left;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;\\\"><span style=\\\"display: block;background: none;height: 30px;width: 100%;background-size: 40px;background-repeat: no-repeat;background-color: #282c34;margin-bottom: -7px;border-radius: 5px;background-position: 10px 10px;background-image: url(&quot;https://mmbiz.qpic.cn/mmbiz_svg/aXUpZVUYfjykIwKqAQ8JO1nq8mpqkcxQGc9Nn5XwH5CicZsuIicqg8kjzfrG4X4cyKRMtvicMZjge3GQLRBo3ldKnbOibIw9DZOm/640?wx_fmt=svg&amp;from=appmsg&quot;);\\\"></span><div style=\\\"--en-codeblock:true;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span><br/></span><span style=\\\"color: #5c6370;font-style: italic;line-height: 26px;\\\"><span># 数据获取</span></span><span><br/></span><span>def get_stock_data(_symbol, start, end, period_type):</span><span><br/></span><span>    try:</span><span><br/></span><span>        df = ak.stock_zh_a_hist(</span><span><br/></span><span>            symbol=_symbol,</span><span><br/></span><span>            period=period_type,</span><span><br/></span><span>            start_date=start.strftime(</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>&quot;%Y%m%d&quot;</span></span><span>),</span><span><br/></span><span>            end_date=end.strftime(</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>&quot;%Y%m%d&quot;</span></span><span>),</span><span><br/></span><span>            adjust=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>&quot;qfq&quot;</span></span><span><br/></span><span>        )</span><span><br/></span><span>        </span><span style=\\\"color: #c678dd;line-height: 26px;\\\"><span>if</span></span><span> df.empty:</span><span><br/></span><span>            </span><span style=\\\"color: #e6c07b;line-height: 26px;\\\"><span>return</span></span><span> pd.DataFrame()</span><span><br/></span><span>        df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'日期'</span></span><span>] = pd.to_datetime(df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'日期'</span></span><span>])</span><span><br/></span><span>        </span><span style=\\\"color: #e6c07b;line-height: 26px;\\\"><span>return</span></span><span> df.sort_values(</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'日期'</span></span><span>).set_index(</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'日期'</span></span><span>)</span><span><br/></span><span>    except Exception as e:</span><span><br/></span><span>        st.error(f</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>&quot;数据获取失败: {str(e)}&quot;</span></span><span>)</span><span><br/></span><span>        </span><span style=\\\"color: #e6c07b;line-height: 26px;\\\"><span>return</span></span><span> pd.DataFrame()</span><span><br/></span><span><br/></span><span><br/></span><span style=\\\"color: #5c6370;font-style: italic;line-height: 26px;\\\"><span># 技术指标计算</span></span><span><br/></span><span>def calculate_indicators(df):</span><span><br/></span><span>    </span><span style=\\\"color: #5c6370;font-style: italic;line-height: 26px;\\\"><span># 均线系统</span></span><span><br/></span><span>    df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'MA5'</span></span><span>] = talib.SMA(df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'收盘'</span></span><span>], timeperiod=5)</span><span><br/></span><span>    df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'MA10'</span></span><span>] = talib.SMA(df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'收盘'</span></span><span>], timeperiod=10)</span><span><br/></span><span>    df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'MA20'</span></span><span>] = talib.SMA(df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'收盘'</span></span><span>], timeperiod=20)</span><span><br/></span><span><br/></span><span>    </span><span style=\\\"color: #5c6370;font-style: italic;line-height: 26px;\\\"><span># MACD</span></span><span><br/></span><span>    df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'MACD'</span></span><span>], df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'MACDsignal'</span></span><span>], df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'MACDhist'</span></span><span>] = talib.MACD(</span><span><br/></span><span>        df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'收盘'</span></span><span>], fastperiod=12, slowperiod=26, signalperiod=9)</span><span><br/></span><span><br/></span><span>    </span><span style=\\\"color: #5c6370;font-style: italic;line-height: 26px;\\\"><span># RSI</span></span><span><br/></span><span>    df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'RSI14'</span></span><span>] = talib.RSI(df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'收盘'</span></span><span>], timeperiod=14)</span><span><br/></span><span><br/></span><span>    </span><span style=\\\"color: #5c6370;font-style: italic;line-height: 26px;\\\"><span># KDJ</span></span><span><br/></span><span>    df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'slowk'</span></span><span>], df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'slowd'</span></span><span>] = talib.STOCH(</span><span><br/></span><span>        df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'最高'</span></span><span>], df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'最低'</span></span><span>], df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'收盘'</span></span><span>],</span><span><br/></span><span>        fastk_period=9, slowk_period=3, slowk_matype=0,</span><span><br/></span><span>        slowd_period=3, slowd_matype=0</span><span><br/></span><span>    )</span><span><br/></span><span>    df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'slowj'</span></span><span>] = 3 * df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'slowk'</span></span><span>] - 2 * df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'slowd'</span></span><span>]</span><span><br/></span><span><br/></span><span>    </span><span style=\\\"color: #5c6370;font-style: italic;line-height: 26px;\\\"><span># 布林带</span></span><span><br/></span><span>    df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'upper'</span></span><span>], df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'middle'</span></span><span>], df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'lower'</span></span><span>] = talib.BBANDS(df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'收盘'</span></span><span>], timeperiod=20)</span><span><br/></span><span><br/></span><span>    </span><span style=\\\"color: #5c6370;font-style: italic;line-height: 26px;\\\"><span># 成交量</span></span><span><br/></span><span>    df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'VOL_MA5'</span></span><span>] = talib.SMA(df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'成交量'</span></span><span>], timeperiod=5)</span><span><br/></span><span>    </span><span style=\\\"color: #e6c07b;line-height: 26px;\\\"><span>return</span></span><span> df.dropna()</span><span><br/></span><span><br/></span><span><br/></span><span style=\\\"color: #5c6370;font-style: italic;line-height: 26px;\\\"><span># 创建交互图表</span></span><span><br/></span><span>def create_plotly_chart(df, period):</span><span><br/></span><span>    fig = make_subplots(</span><span><br/></span><span>        rows=5, cols=1,</span><span><br/></span><span>        shared_xaxes=True,</span><span><br/></span><span>        vertical_spacing=0.03,</span><span><br/></span><span>        row_heights=[0.5, 0.15, 0.15, 0.15, 0.2],</span><span><br/></span><span>        specs=[[{</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>&quot;secondary_y&quot;</span></span><span>: True}], [{}], [{}], [{}], [{}]]</span><span><br/></span><span>    )</span><span><br/></span><span><br/></span><span>    </span><span style=\\\"color: #5c6370;font-style: italic;line-height: 26px;\\\"><span># K线图（红涨绿跌）</span></span><span><br/></span><span>    fig.add_trace(go.Candlestick(</span><span><br/></span><span>        x=df.index,</span><span><br/></span><span>        open=df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'开盘'</span></span><span>],</span><span><br/></span><span>        high=df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'最高'</span></span><span>],</span><span><br/></span><span>        low=df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'最低'</span></span><span>],</span><span><br/></span><span>        close=df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'收盘'</span></span><span>],</span><span><br/></span><span>        name=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'K线'</span></span><span>,</span><span><br/></span><span>        increasing={</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'line'</span></span><span>: {</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'color'</span></span><span>: </span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'red'</span></span><span>}, </span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'fillcolor'</span></span><span>: </span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'rgba(255,0,0,0.3)'</span></span><span>},</span><span><br/></span><span>        decreasing={</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'line'</span></span><span>: {</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'color'</span></span><span>: </span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'green'</span></span><span>}, </span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'fillcolor'</span></span><span>: </span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'rgba(0,128,0,0.3)'</span></span><span>}</span><span><br/></span><span>    ), row=1, col=1)</span><span><br/></span><span><br/></span><span>    </span><span style=\\\"color: #5c6370;font-style: italic;line-height: 26px;\\\"><span># 均线系统</span></span><span><br/></span><span>    </span><span style=\\\"color: #c678dd;line-height: 26px;\\\"><span>for</span></span><span> ma, color </span><span style=\\\"color: #c678dd;line-height: 26px;\\\"><span>in</span></span><span> zip([</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'MA5'</span></span><span>, </span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'MA10'</span></span><span>, </span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'MA20'</span></span><span>], [</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'orange'</span></span><span>, </span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'blue'</span></span><span>, </span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'purple'</span></span><span>]):</span><span><br/></span><span>        fig.add_trace(go.Scatter(</span><span><br/></span><span>            x=df.index, y=df[ma],</span><span><br/></span><span>            name=ma,</span><span><br/></span><span>            line=dict(color=color, width=1.5),</span><span><br/></span><span>            opacity=0.8</span><span><br/></span><span>        ), row=1, col=1)</span><span><br/></span><span><br/></span><span>    </span><span style=\\\"color: #5c6370;font-style: italic;line-height: 26px;\\\"><span># MACD</span></span><span><br/></span><span>    colors = np.where(df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'MACDhist'</span></span><span>] &gt; 0, </span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'red'</span></span><span>, </span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'green'</span></span><span>)</span><span><br/></span><span>    fig.add_trace(go.Bar(</span><span><br/></span><span>        x=df.index, y=df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'MACDhist'</span></span><span>],</span><span><br/></span><span>        name=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'MACD Hist'</span></span><span>,</span><span><br/></span><span>        marker_color=colors</span><span><br/></span><span>    ), row=2, col=1)</span><span><br/></span><span>    fig.add_trace(go.Scatter(</span><span><br/></span><span>        x=df.index, y=df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'MACD'</span></span><span>],</span><span><br/></span><span>        line=dict(color=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'blue'</span></span><span>),</span><span><br/></span><span>        name=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'MACD'</span></span><span><br/></span><span>    ), row=2, col=1)</span><span><br/></span><span>    fig.add_trace(go.Scatter(</span><span><br/></span><span>        x=df.index, y=df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'MACDsignal'</span></span><span>],</span><span><br/></span><span>        line=dict(color=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'orange'</span></span><span>),</span><span><br/></span><span>        name=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'Signal'</span></span><span><br/></span><span>    ), row=2, col=1)</span><span><br/></span><span><br/></span><span>    </span><span style=\\\"color: #5c6370;font-style: italic;line-height: 26px;\\\"><span># RSI</span></span><span><br/></span><span>    fig.add_trace(go.Scatter(</span><span><br/></span><span>        x=df.index, y=df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'RSI14'</span></span><span>],</span><span><br/></span><span>        line=dict(color=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'purple'</span></span><span>),</span><span><br/></span><span>        name=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'RSI 14'</span></span><span><br/></span><span>    ), row=3, col=1)</span><span><br/></span><span>    fig.add_hline(y=30, line=dict(color=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'gray'</span></span><span>, dash=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'dash'</span></span><span>), row=3, col=1)</span><span><br/></span><span>    fig.add_hline(y=70, line=dict(color=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'gray'</span></span><span>, dash=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'dash'</span></span><span>), row=3, col=1)</span><span><br/></span><span><br/></span><span>    </span><span style=\\\"color: #5c6370;font-style: italic;line-height: 26px;\\\"><span># KDJ</span></span><span><br/></span><span>    fig.add_trace(go.Scatter(</span><span><br/></span><span>        x=df.index, y=df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'slowk'</span></span><span>],</span><span><br/></span><span>        line=dict(color=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'blue'</span></span><span>),</span><span><br/></span><span>        name=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'K值'</span></span><span><br/></span><span>    ), row=4, col=1)</span><span><br/></span><span>    fig.add_trace(go.Scatter(</span><span><br/></span><span>        x=df.index, y=df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'slowd'</span></span><span>],</span><span><br/></span><span>        line=dict(color=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'orange'</span></span><span>),</span><span><br/></span><span>        name=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'D值'</span></span><span><br/></span><span>    ), row=4, col=1)</span><span><br/></span><span>    fig.add_trace(go.Scatter(</span><span><br/></span><span>        x=df.index, y=df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'slowj'</span></span><span>],</span><span><br/></span><span>        line=dict(color=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'green'</span></span><span>, dash=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'dot'</span></span><span>),</span><span><br/></span><span>        name=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'J值'</span></span><span><br/></span><span>    ), row=4, col=1)</span><span><br/></span><span>    fig.add_hline(y=20, line=dict(color=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'gray'</span></span><span>, dash=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'dash'</span></span><span>), row=4, col=1)</span><span><br/></span><span>    fig.add_hline(y=80, line=dict(color=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'gray'</span></span><span>, dash=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'dash'</span></span><span>), row=4, col=1)</span><span><br/></span><span><br/></span><span>    </span><span style=\\\"color: #5c6370;font-style: italic;line-height: 26px;\\\"><span># 成交量</span></span><span><br/></span><span>    colors = np.where(df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'收盘'</span></span><span>] &gt; df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'开盘'</span></span><span>], </span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'red'</span></span><span>, </span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'green'</span></span><span>)</span><span><br/></span><span>    fig.add_trace(go.Bar(</span><span><br/></span><span>        x=df.index, y=df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'成交量'</span></span><span>],</span><span><br/></span><span>        name=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'成交量'</span></span><span>,</span><span><br/></span><span>        marker_color=colors,</span><span><br/></span><span>        opacity=0.7</span><span><br/></span><span>    ), row=5, col=1)</span><span><br/></span><span>    fig.add_trace(go.Scatter(</span><span><br/></span><span>        x=df.index, y=df[</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'VOL_MA5'</span></span><span>],</span><span><br/></span><span>        line=dict(color=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'orange'</span></span><span>),</span><span><br/></span><span>        name=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'成交量MA5'</span></span><span><br/></span><span>    ), row=5, col=1)</span><span><br/></span><span><br/></span><span>    </span><span style=\\\"color: #5c6370;font-style: italic;line-height: 26px;\\\"><span># 布局设置</span></span><span><br/></span><span>    fig.update_layout(</span><span><br/></span><span>        height=1200,</span><span><br/></span><span>        title=f</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>'{symbol} {period}级别技术分析'</span></span><span>,</span><span><br/></span><span>        font=CHINESE_FONT,</span><span><br/></span><span>        showlegend=True,</span><span><br/></span><span>        xaxis_rangeslider_visible=False,</span><span><br/></span><span>        hovermode=</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>&quot;x unified&quot;</span></span><span><br/></span><span>    )</span><span><br/></span><span><br/></span><span>    </span><span style=\\\"color: #5c6370;font-style: italic;line-height: 26px;\\\"><span># Y轴标签</span></span><span><br/></span><span>    yaxis_labels = [</span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>&quot;价格&quot;</span></span><span>, </span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>&quot;MACD&quot;</span></span><span>, </span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>&quot;RSI&quot;</span></span><span>, </span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>&quot;KDJ&quot;</span></span><span>, </span><span style=\\\"color: #98c379;line-height: 26px;\\\"><span>&quot;成交量&quot;</span></span><span>]</span><span><br/></span><span>    </span><span style=\\\"color: #c678dd;line-height: 26px;\\\"><span>for</span></span><span> i, label </span><span style=\\\"color: #c678dd;line-height: 26px;\\\"><span>in</span></span><span> enumerate(yaxis_labels, 1):</span><span><br/></span><span>        fig.update_yaxes(title_text=label, row=i, col=1)</span><span><br/></span><span><br/></span><span>    </span><span style=\\\"color: #e6c07b;line-height: 26px;\\\"><span>return</span></span><span> fig</span><span><br/></span><span><br/></span></div></pre></div><div><span><br/></span></div><div><span><br/></span></div><div><span>完整代码这里我不就贴了。   说下原因， 这次代码用到了ta-lib，</span><span>如果ta-lib自己解决不了安装问题，就不要折腾了。</span></div><div><span style=\\\"color:rgba(0, 0, 0, 0.9);font-size:17px;font-family:&quot;mp-quote&quot;, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;line-height:1.6;letter-spacing:0.034em;font-style:normal;font-weight:normal;\\\"> 就像我之前文章提供的代码用到node、pywencai， 我真的没有时间精力 一步步手把手教怎么安装，况且我还提供了文章答疑。  说实话， 我分享的知识是无偿的， 没必要最后像 </span><span style=\\\"color:rgba(0, 0, 0, 0.9);font-size:17px;font-family:&quot;mp-quote&quot;, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;line-height:1.6;letter-spacing:0.034em;font-style:normal;font-weight:normal;\\\">东郭先生和狼那样， 我不帮人一步步免费安装并且运行起来，最后惹一身骚。今天遇到很坑的事情， 微信账号不知道什么情况还被人投诉了，申诉后才解锁。 难道免费分享是原罪？</span></div><div><span style=\\\"color:rgba(0, 0, 0, 0.9);font-size:17px;font-family:&quot;mp-quote&quot;, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;line-height:1.6;letter-spacing:0.034em;font-style:normal;font-weight:normal;\\\">最后，想要完整代码比较简单， 对这篇文章进行点赞分享且在看就可以（最近文章阅读量不佳， 掺杂点私心，增加点阅读量） ， 如果不想让人看到 随意打赏也行(美股今天晚上大跌， A股明天貌似有抄底机会，正好加仓为国护盘)。 到时候 微信截图联系我就行。免费、付费的形式二选一就可以， 突然觉得自己就是个天才</span></div><div><span><br/></span></div><div><span></span></div><div><span><br/></span></div><div><span><br/></span></div></div></div></div></div></div></span>\\\n</div></body></html>\\u0000\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":102310}]"
metadata_diff: {"new":{"id":"18689e40d07641cbb464b1e273d3101c","parent_id":"f67288c3a0be4374b5d532b5dcc3aabc","latitude":"0.00000000","longitude":"0.00000000","altitude":"0.0000","author":"","source_url":"","is_todo":0,"todo_due":0,"todo_completed":0,"source":"joplin-desktop","source_application":"net.cozic.joplin-desktop","application_data":"","order":1764348829033,"markup_language":2,"is_shared":0,"share_id":"","conflict_original_id":"","master_key_id":"","user_data":"","deleted_time":0},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2025-11-28T21:04:04.114Z
created_time: 2025-11-28T21:04:04.114Z
type_: 13