Files
qmt_bridge/reference/thinktrader_docs/nativeApi_code_examples.html
T

1746 lines
421 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="generator" content="VuePress 2.0.0-beta.67">
<style>
:root {
--c-bg: #fff;
}
html.dark {
--c-bg: #22272e;
}
html, body {
background-color: var(--c-bg);
}
</style>
<script>
const userMode = localStorage.getItem('vuepress-color-scheme');
const systemDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
if (userMode === 'dark' || (userMode !== 'light' && systemDarkMode)) {
document.documentElement.classList.toggle('dark', true);
}
</script>
<link rel="icon" type="image/png" sizes="16x16" href="/images/favicon.ico"><link rel="preload" href="/embed/chat-ui-embed.css" as="style"><link rel="preload" href="/embed/chat-ui-embed.umd.cjs" as="script"><link rel="stylesheet" href="/embed/chat-ui-embed.css"><style>
[data-chat-ui-embedded] {
background-color: var(--c-bg, #fff);
}
html.dark [data-chat-ui-embedded] {
background-color: var(--c-bg, #1b1b1f);
}
.assistant-layout,
.assistant-panel,
.assistant-chat {
background-color: var(--c-bg, #fff);
}
html.dark .assistant-layout,
html.dark .assistant-panel,
html.dark .assistant-chat {
background-color: var(--c-bg, #1b1b1f);
}
.assistant-chat,
.assistant-chat-preboot {
height: 100%;
width: 100%;
}
.assistant-chat.is-ready,
.assistant-chat-preboot.is-ready {
opacity: 1 !important;
}
</style><script>
// 为浏览器环境提供process变量的兼容性处理
if (typeof window !== 'undefined' && !window.process) {
window.process = { env: { NODE_ENV: 'production' } };
}
</script><script src="/embed/chat-ui-embed.umd.cjs" id="chat-ui-embed-script"></script><script>
window.__chatUILoadPromise = new Promise(function(resolve) {
function onReady() {
resolve(!!window.ChatUI);
}
if (window.ChatUI) {
onReady();
return;
}
var el = document.getElementById('chat-ui-embed-script');
if (!el) {
resolve(false);
return;
}
if (el.readyState === 'complete' || el.readyState === 'loaded') {
onReady();
return;
}
el.addEventListener('load', onReady);
el.addEventListener('error', function() { resolve(false); });
});
</script><script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?db74a9715180bac1ca6d22e853a90e9b";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script><title>完整实例 | 迅投知识库</title><meta name="description" content="QMT说明, QMT-Python-API, QMT用户手册。">
<link rel="preload" href="/assets/style-937c34dd.css" as="style"><link rel="stylesheet" href="/assets/style-937c34dd.css">
<link rel="modulepreload" href="/assets/app-2fe24c5e.js"><link rel="modulepreload" href="/assets/code_examples.html-84d3bae8.js"><link rel="modulepreload" href="/assets/code_examples.html-7561c6c2.js"><link rel="prefetch" href="/assets/index.html-aacedb99.js" as="script"><link rel="prefetch" href="/assets/basic_syntax.html-e393df56.js" as="script"><link rel="prefetch" href="/assets/check_sheet.html-a405c8a3.js" as="script"><link rel="prefetch" href="/assets/code_examples.html-985b4984.js" as="script"><link rel="prefetch" href="/assets/control_statement.html-bf992bd7.js" as="script"><link rel="prefetch" href="/assets/operating_mode.html-a2f39c1a.js" as="script"><link rel="prefetch" href="/assets/start_now.html-1be21f8a.js" as="script"><link rel="prefetch" href="/assets/system_function.html-feab901e.js" as="script"><link rel="prefetch" href="/assets/python调用VBA.html-1946fa92.js" as="script"><link rel="prefetch" href="/assets/全市场涨跌幅度统计.html-b8ba35f1.js" as="script"><link rel="prefetch" href="/assets/全市场资金流向.html-2357f922.js" as="script"><link rel="prefetch" href="/assets/前结_今结_持仓.html-a4436106.js" as="script"><link rel="prefetch" href="/assets/北向资金.html-e540615d.js" as="script"><link rel="prefetch" href="/assets/南向资金.html-9137d95c.js" as="script"><link rel="prefetch" href="/assets/因子获取.html-89140fd6.js" as="script"><link rel="prefetch" href="/assets/外盘_内盘.html-e7f33912.js" as="script"><link rel="prefetch" href="/assets/多空对比.html-a634bb69.js" as="script"><link rel="prefetch" href="/assets/委买价_委卖价_委买量_委卖量.html-e9c29505.js" as="script"><link rel="prefetch" href="/assets/委差_委比.html-ff3246bc.js" as="script"><link rel="prefetch" href="/assets/总股本_总市值.html-e8ba60d4.js" as="script"><link rel="prefetch" href="/assets/振幅.html-e9576d1a.js" as="script"><link rel="prefetch" href="/assets/换手.html-f2f05a67.js" as="script"><link rel="prefetch" href="/assets/最新_今开_最高_最低_总额_总手_交易状态.html-2ca89ba1.js" as="script"><link rel="prefetch" href="/assets/注册资本.html-bec636fc.js" as="script"><link rel="prefetch" href="/assets/流通值.html-f34e70d5.js" as="script"><link rel="prefetch" href="/assets/流通盘_流通值.html-50ac8dc4.js" as="script"><link rel="prefetch" href="/assets/涨停_跌停.html-ba7667b7.js" as="script"><link rel="prefetch" href="/assets/涨跌_涨幅.html-a4d004cb.js" as="script"><link rel="prefetch" href="/assets/涨跌家数变化.html-a30316a7.js" as="script"><link rel="prefetch" href="/assets/现手.html-0f4ec2e6.js" as="script"><link rel="prefetch" href="/assets/规模风向标.html-d7dc3f5e.js" as="script"><link rel="prefetch" href="/assets/量比.html-2be39bbd.js" as="script"><link rel="prefetch" href="/assets/rookie.html-90dba3b5.js" as="script"><link rel="prefetch" href="/assets/ty_rookie.html-8868ad82.js" as="script"><link rel="prefetch" href="/assets/index.html-a4665f64.js" as="script"><link rel="prefetch" href="/assets/bond.html-087de96b.js" as="script"><link rel="prefetch" href="/assets/data_browser_barra_factor.html-2740d45d.js" as="script"><link rel="prefetch" href="/assets/floorfunds.html-f1e05c44.js" as="script"><link rel="prefetch" href="/assets/future.html-3c7280d8.js" as="script"><link rel="prefetch" href="/assets/indexes.html-4c831e2f.js" as="script"><link rel="prefetch" href="/assets/industry.html-07c2d987.js" as="script"><link rel="prefetch" href="/assets/option.html-1cda80f4.js" as="script"><link rel="prefetch" href="/assets/question_answer.html-57f4a833.js" as="script"><link rel="prefetch" href="/assets/scenario_based_example.html-e840fc79.js" as="script"><link rel="prefetch" href="/assets/stock.html-d4aeb9ec.js" as="script"><link rel="prefetch" href="/assets/xuntou_factor.html-47f372c3.js" as="script"><link rel="prefetch" href="/assets/callback_function.html-ba3839f5.js" as="script"><link rel="prefetch" href="/assets/code_examples.html-28482bfc.js" as="script"><link rel="prefetch" href="/assets/data_function.html-412f8b29.js" as="script"><link rel="prefetch" href="/assets/data_structure.html-8f55b710.js" as="script"><link rel="prefetch" href="/assets/drawing_function.html-dee669df.js" as="script"><link rel="prefetch" href="/assets/enum_constants.html-42ed8cba.js" as="script"><link rel="prefetch" href="/assets/interface_operation.html-47a2cf15.js" as="script"><link rel="prefetch" href="/assets/question_answer.html-f08895ff.js" as="script"><link rel="prefetch" href="/assets/quote_function.html-d5906fa7.js" as="script"><link rel="prefetch" href="/assets/related_instructions.html-9b630c20.js" as="script"><link rel="prefetch" href="/assets/start_now.html-2cd8fc71.js" as="script"><link rel="prefetch" href="/assets/system_function.html-79f889f8.js" as="script"><link rel="prefetch" href="/assets/trading_function.html-19c5ecb8.js" as="script"><link rel="prefetch" href="/assets/user_attention.html-e0d27a96.js" as="script"><link rel="prefetch" href="/assets/variable_convention.html-92ed4d6f.js" as="script"><link rel="prefetch" href="/assets/download_xtquant.html-9de3a818.js" as="script"><link rel="prefetch" href="/assets/question_function.html-4e4bd334.js" as="script"><link rel="prefetch" href="/assets/start_now.html-b2c933ee.js" as="script"><link rel="prefetch" href="/assets/xtdata.html-312381bb.js" as="script"><link rel="prefetch" href="/assets/xtdata_new.html-2164196d.js" as="script"><link rel="prefetch" href="/assets/xttrader.html-cd097e38.js" as="script"><link rel="prefetch" href="/assets/JoinQuant2QMT.html-38cb9974.js" as="script"><link rel="prefetch" href="/assets/index.html-22b6b31a.js" as="script"><link rel="prefetch" href="/assets/daoru_daochu.html-c8cace75.js" as="script"><link rel="prefetch" href="/assets/hangqing_setting.html-1a9570b3.js" as="script"><link rel="prefetch" href="/assets/ty_add_indicator.html-1f2f4b0a.js" as="script"><link rel="prefetch" href="/assets/ty_backtest_strategy.html-3f8682bc.js" as="script"><link rel="prefetch" href="/assets/ty_code_review_backtest.html-200ceddd.js" as="script"><link rel="prefetch" href="/assets/ty_content.html-f2564dc8.js" as="script"><link rel="prefetch" href="/assets/ty_data_download.html-351b4a4f.js" as="script"><link rel="prefetch" href="/assets/ty_data_interface.html-2e32a98a.js" as="script"><link rel="prefetch" href="/assets/ty_direct_connect.html-f8b10f83.js" as="script"><link rel="prefetch" href="/assets/ty_factor_data.html-1746bcaa.js" as="script"><link rel="prefetch" href="/assets/ty_native_python.html-55154231.js" as="script"><link rel="prefetch" href="/assets/ty_register_install.html-0d2c078f.js" as="script"><link rel="prefetch" href="/assets/404.html-f9875e7b.js" as="script"><link rel="prefetch" href="/assets/index.html-ced75bd7.js" as="script"><link rel="prefetch" href="/assets/basic_syntax.html-b8abc947.js" as="script"><link rel="prefetch" href="/assets/check_sheet.html-dcf52204.js" as="script"><link rel="prefetch" href="/assets/code_examples.html-3113b68a.js" as="script"><link rel="prefetch" href="/assets/control_statement.html-00e2be67.js" as="script"><link rel="prefetch" href="/assets/operating_mode.html-61fbaed0.js" as="script"><link rel="prefetch" href="/assets/start_now.html-eaff5695.js" as="script"><link rel="prefetch" href="/assets/system_function.html-2d90b97e.js" as="script"><link rel="prefetch" href="/assets/python调用VBA.html-13606619.js" as="script"><link rel="prefetch" href="/assets/全市场涨跌幅度统计.html-233ddc7a.js" as="script"><link rel="prefetch" href="/assets/全市场资金流向.html-ecb85a96.js" as="script"><link rel="prefetch" href="/assets/前结_今结_持仓.html-837c8847.js" as="script"><link rel="prefetch" href="/assets/北向资金.html-b86e0737.js" as="script"><link rel="prefetch" href="/assets/南向资金.html-af4159d2.js" as="script"><link rel="prefetch" href="/assets/因子获取.html-96ca84cb.js" as="script"><link rel="prefetch" href="/assets/外盘_内盘.html-46442d98.js" as="script"><link rel="prefetch" href="/assets/多空对比.html-77a530ac.js" as="script"><link rel="prefetch" href="/assets/委买价_委卖价_委买量_委卖量.html-298fb634.js" as="script"><link rel="prefetch" href="/assets/委差_委比.html-8aaf6597.js" as="script"><link rel="prefetch" href="/assets/总股本_总市值.html-ed03a153.js" as="script"><link rel="prefetch" href="/assets/振幅.html-0d26176f.js" as="script"><link rel="prefetch" href="/assets/换手.html-1a803631.js" as="script"><link rel="prefetch" href="/assets/最新_今开_最高_最低_总额_总手_交易状态.html-256abaa5.js" as="script"><link rel="prefetch" href="/assets/注册资本.html-1d912787.js" as="script"><link rel="prefetch" href="/assets/流通值.html-9ba094fb.js" as="script"><link rel="prefetch" href="/assets/流通盘_流通值.html-2d754f1f.js" as="script"><link rel="prefetch" href="/assets/涨停_跌停.html-e9099f68.js" as="script"><link rel="prefetch" href="/assets/涨跌_涨幅.html-4efc9eb8.js" as="script"><link rel="prefetch" href="/assets/涨跌家数变化.html-53de94c7.js" as="script"><link rel="prefetch" href="/assets/现手.html-0ab76010.js" as="script"><link rel="prefetch" href="/assets/规模风向标.html-79312cc7.js" as="script"><link rel="prefetch" href="/assets/量比.html-9ef1d579.js" as="script"><link rel="prefetch" href="/assets/rookie.html-5fca3b77.js" as="script"><link rel="prefetch" href="/assets/ty_rookie.html-35f28c88.js" as="script"><link rel="prefetch" href="/assets/index.html-fcd652a1.js" as="script"><link rel="prefetch" href="/assets/bond.html-29897ac6.js" as="script"><link rel="prefetch" href="/assets/data_browser_barra_factor.html-e738eab1.js" as="script"><link rel="prefetch" href="/assets/floorfunds.html-0d9d6507.js" as="script"><link rel="prefetch" href="/assets/future.html-f7124802.js" as="script"><link rel="prefetch" href="/assets/indexes.html-d7b6311e.js" as="script"><link rel="prefetch" href="/assets/industry.html-16efb403.js" as="script"><link rel="prefetch" href="/assets/option.html-9f501a6a.js" as="script"><link rel="prefetch" href="/assets/question_answer.html-47cf70ab.js" as="script"><link rel="prefetch" href="/assets/scenario_based_example.html-0950e171.js" as="script"><link rel="prefetch" href="/assets/stock.html-f974aa84.js" as="script"><link rel="prefetch" href="/assets/xuntou_factor.html-8e81ea23.js" as="script"><link rel="prefetch" href="/assets/callback_function.html-a2c9d30a.js" as="script"><link rel="prefetch" href="/assets/code_examples.html-2ffd3c2b.js" as="script"><link rel="prefetch" href="/assets/data_function.html-cb5dd5ef.js" as="script"><link rel="prefetch" href="/assets/data_structure.html-2ba7501e.js" as="script"><link rel="prefetch" href="/assets/drawing_function.html-3f6a35e8.js" as="script"><link rel="prefetch" href="/assets/enum_constants.html-cc910da2.js" as="script"><link rel="prefetch" href="/assets/interface_operation.html-9afd00f4.js" as="script"><link rel="prefetch" href="/assets/question_answer.html-f50e9534.js" as="script"><link rel="prefetch" href="/assets/quote_function.html-8ec4b48e.js" as="script"><link rel="prefetch" href="/assets/related_instructions.html-b21d5ef1.js" as="script"><link rel="prefetch" href="/assets/start_now.html-5a5de085.js" as="script"><link rel="prefetch" href="/assets/system_function.html-cb9d0895.js" as="script"><link rel="prefetch" href="/assets/trading_function.html-fdb92ee0.js" as="script"><link rel="prefetch" href="/assets/user_attention.html-67276bd2.js" as="script"><link rel="prefetch" href="/assets/variable_convention.html-96cab360.js" as="script"><link rel="prefetch" href="/assets/download_xtquant.html-9bc2e654.js" as="script"><link rel="prefetch" href="/assets/question_function.html-845d97e5.js" as="script"><link rel="prefetch" href="/assets/start_now.html-9a07cd5e.js" as="script"><link rel="prefetch" href="/assets/xtdata.html-60737e81.js" as="script"><link rel="prefetch" href="/assets/xtdata_new.html-18c73eaa.js" as="script"><link rel="prefetch" href="/assets/xttrader.html-a6a0e543.js" as="script"><link rel="prefetch" href="/assets/JoinQuant2QMT.html-ace7c465.js" as="script"><link rel="prefetch" href="/assets/index.html-9d1612c5.js" as="script"><link rel="prefetch" href="/assets/daoru_daochu.html-eae2410f.js" as="script"><link rel="prefetch" href="/assets/hangqing_setting.html-0ff7ba11.js" as="script"><link rel="prefetch" href="/assets/ty_add_indicator.html-79a10fed.js" as="script"><link rel="prefetch" href="/assets/ty_backtest_strategy.html-bf683d1f.js" as="script"><link rel="prefetch" href="/assets/ty_code_review_backtest.html-3497c894.js" as="script"><link rel="prefetch" href="/assets/ty_content.html-d9354c9a.js" as="script"><link rel="prefetch" href="/assets/ty_data_download.html-d1a7795c.js" as="script"><link rel="prefetch" href="/assets/ty_data_interface.html-8f993a77.js" as="script"><link rel="prefetch" href="/assets/ty_direct_connect.html-ffc766ea.js" as="script"><link rel="prefetch" href="/assets/ty_factor_data.html-75792bc5.js" as="script"><link rel="prefetch" href="/assets/ty_native_python.html-7400d196.js" as="script"><link rel="prefetch" href="/assets/ty_register_install.html-5498913b.js" as="script"><link rel="prefetch" href="/assets/404.html-86fec5d9.js" as="script"><link rel="prefetch" href="/assets/SearchBox-625c401e.js" as="script"><link rel="prefetch" href="/assets/auto-6adc87e8.js" as="script"><link rel="prefetch" href="/assets/index-2bf332f6.js" as="script"><link rel="prefetch" href="/assets/flowchart-c441f34d.js" as="script"><link rel="prefetch" href="/assets/SignPanel-da80f282.js" as="script"><link rel="prefetch" href="/assets/SignPanel-da80f282.js" as="script">
</head>
<body>
<div id="app"><!--[--><div class="theme-container"><!--[--><div class="n-config-provider"><header class="navbar"><div><div class="toggle-sidebar-button" title="切换侧边栏" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div></div><span><a href="/" class=""><img class="logo" src="/images/logo.png" alt="迅投知识库"><span class="site-name can-hide">迅投知识库</span></a></span><span><div class="search-box" role="search" data-v-7a908cc7><div data-v-7a908cc7><input value="" aria-label="Search" class="" placeholder="搜索文档" autocomplete="off" spellcheck="false" data-v-7a908cc7><!----></div><!----><!----></div></span><div class="navbar-items-wrapper" style=""><!--[--><!--]--><nav class="navbar-items can-hide" id="customize-nav"><!--[--><div class="navbar-item"><a href="/" class="" aria-label="首页"><!--[--><!--]--> 首页 <!--[--><!--]--></a></div><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="API"><span class="title">API</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="API"><span class="title">API</span><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a href="/freshman/ty_rookie.html" class="" aria-label="投研新手教程"><!--[--><!--]--> 投研新手教程 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/freshman/rookie.html" class="" aria-label="QMT新手教程"><!--[--><!--]--> QMT新手教程 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/innerApi/start_now.html" class="" aria-label="内置Python"><!--[--><!--]--> 内置Python <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/nativeApi/start_now.html" class="" aria-label="XtQuant文档"><!--[--><!--]--> XtQuant文档 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/VBA/start_now.html" class="" aria-label="VBA"><!--[--><!--]--> VBA <!--[--><!--]--></a></li><!--]--></ul></div></div><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="数据字典"><span class="title">数据字典</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="数据字典"><span class="title">数据字典</span><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a href="/dictionary/" class="" aria-label="快速开始"><!--[--><!--]--> 快速开始 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/dictionary/stock.html" class="" aria-label="股票数据"><!--[--><!--]--> 股票数据 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/dictionary/industry.html" class="" aria-label="行业概念数据"><!--[--><!--]--> 行业概念数据 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/dictionary/indexes.html" class="" aria-label="指数数据"><!--[--><!--]--> 指数数据 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/dictionary/future.html" class="" aria-label="期货数据"><!--[--><!--]--> 期货数据 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/dictionary/option.html" class="" aria-label="期权数据"><!--[--><!--]--> 期权数据 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/dictionary/floorfunds.html" class="" aria-label="场内基金数据"><!--[--><!--]--> 场内基金数据 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/dictionary/bond.html" class="" aria-label="债券数据"><!--[--><!--]--> 债券数据 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/dictionary/question_answer.html" class="" aria-label="常见问题"><!--[--><!--]--> 常见问题 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/dictionary/scenario_based_example.html" class="" aria-label="场景化示例"><!--[--><!--]--> 场景化示例 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/dictionary/xuntou_factor.html" class="" aria-label="迅投因子"><!--[--><!--]--> 迅投因子 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/dictionary/data_browser_barra_factor.html" class="" aria-label="数据浏览器"><!--[--><!--]--> 数据浏览器 <!--[--><!--]--></a></li><!--]--></ul></div></div><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="策略迁移"><span class="title">策略迁移</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="策略迁移"><span class="title">策略迁移</span><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a href="/strategy/JoinQuant2QMT.html" class="" aria-label="聚宽策略"><!--[--><!--]--> 聚宽策略 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><!--[--><h4 class="navbar-dropdown-subtitle"><span></span></h4><ul class="navbar-dropdown-subitem-wrapper"><!--[--><li class="navbar-dropdown-subitem"><a aria-current="page" href="/nativeApi/code_examples.html" class="router-link-active router-link-exact-active router-link-active" aria-label="客服QQ: 810315303"><!--[--><!--]--> 客服QQ: 810315303 <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a aria-current="page" href="/nativeApi/code_examples.html" class="router-link-active router-link-exact-active router-link-active" aria-label="联系方式: 18309226715"><!--[--><!--]--> 联系方式: 18309226715 <!--[--><!--]--></a></li><!--]--></ul><!--]--></li><!--]--></ul></div></div><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="视频教程"><span class="title">视频教程</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="视频教程"><span class="title">视频教程</span><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a href="/videos/touyan/ty_register_install.html" class="" aria-label="投研端教程"><!--[--><!--]--> 投研端教程 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a class="external-link" href="https://www.xuntou.net/plugin.php?id=keke_video_base" rel="noopener noreferrer" target="_blank" aria-label="迅投学堂"><!--[--><!--]--> 迅投学堂 <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span><!--[--><!--]--></a></li><!--]--></ul></div></div><!--]--></nav><div class="navbar-item flexBtn fromBtn"><span> 投研平台 <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span></span></div><div class="flexBtn fromBtn"><span> 迅投社区 <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span></span></div><!-- <div class="navbar-item flexBtn fromBtn" v-if="!info.isMobile">
<span
@click="getNUrl('crowdfunding')"
>
特色众筹
<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path>
<polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg>
<span class="external-link-icon-sr-only">在新窗口打开</span>
</span>
</span>
</div> --><div class="navbar-item flexBtn"><a class="external-link" href="http://www.thinktrader.net" rel="noopener noreferrer" target="_blank" aria-label="迅投官网"> 迅投官网 <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span></a></div><!--v-if--><!--[--><!--]--><div class="ToggleColor"><button class="toggle-color-mode-button" title="切换颜色模式"><svg style="" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg style="display:none;" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button></div><div><div class="n-config-provider user"><!--v-if--></div><div role="none" class="n-space" style="display:flex;flex-direction:row;justify-content:flex-start;flex-wrap:wrap;margin-top:;margin-bottom:;gap:8px 12px;"><!-- <n-button strong secondary type="error" @click="linkTo('/signup/')" v-show="!info.isMobile">注册</n-button> --><!-- <n-button strong secondary type="info" @click="linkTo('/signin/')">登录</n-button> --><div role="none" class="" style="max-width:100%;"><button class="n-button n-button--error-type n-button--medium-type n-button--secondary" tabindex="0" type="button" style="--n-bezier:cubic-bezier(.4, 0, .2, 1);--n-bezier-ease-out:cubic-bezier(0, 0, .2, 1);--n-ripple-duration:.6s;--n-opacity-disabled:0.5;--n-wave-opacity:0.6;--n-font-weight:500;--n-color:rgba(208, 48, 80, 0.16);--n-color-hover:rgba(208, 48, 80, 0.22);--n-color-pressed:rgba(208, 48, 80, 0.28);--n-color-focus:rgba(208, 48, 80, 0.22);--n-color-disabled:rgba(46, 51, 56, .05);--n-ripple-color:#0000;--n-text-color:#d03050;--n-text-color-hover:#d03050;--n-text-color-pressed:#d03050;--n-text-color-focus:#d03050;--n-text-color-disabled:#d03050;--n-border:1px solid #d03050;--n-border-hover:1px solid #de576d;--n-border-pressed:1px solid #ab1f3f;--n-border-focus:1px solid #de576d;--n-border-disabled:1px solid #d03050;--n-width:initial;--n-height:34px;--n-font-size:14px;--n-padding:0 14px;--n-icon-size:18px;--n-icon-margin:6px;--n-border-radius:3px;"><!----><!----><span class="n-button__content">注册</span><div aria-hidden="true" class="n-base-wave"></div><!----><!----></button></div><div role="none" class="" style="max-width:100%;"><button class="n-button n-button--info-type n-button--medium-type n-button--secondary" tabindex="0" type="button" style="--n-bezier:cubic-bezier(.4, 0, .2, 1);--n-bezier-ease-out:cubic-bezier(0, 0, .2, 1);--n-ripple-duration:.6s;--n-opacity-disabled:0.5;--n-wave-opacity:0.6;--n-font-weight:500;--n-color:rgba(32, 128, 240, 0.16);--n-color-hover:rgba(32, 128, 240, 0.22);--n-color-pressed:rgba(32, 128, 240, 0.28);--n-color-focus:rgba(32, 128, 240, 0.22);--n-color-disabled:rgba(46, 51, 56, .05);--n-ripple-color:#0000;--n-text-color:#2080f0;--n-text-color-hover:#2080f0;--n-text-color-pressed:#2080f0;--n-text-color-focus:#2080f0;--n-text-color-disabled:#2080f0;--n-border:1px solid #2080f0;--n-border-hover:1px solid #4098fc;--n-border-pressed:1px solid #1060c9;--n-border-focus:1px solid #4098fc;--n-border-disabled:1px solid #2080f0;--n-width:initial;--n-height:34px;--n-font-size:14px;--n-padding:0 14px;--n-icon-size:18px;--n-icon-margin:6px;--n-border-radius:3px;"><!----><!----><span class="n-button__content">登录</span><div aria-hidden="true" class="n-base-wave"></div><!----><!----></button></div></div></div></div></header><!--[--><!-- 桌面端:微信 / 分享始终可见 --><div class="assistant-float-actions" style="right:462px;top:calc(50% + var(--navbar-height) / 2);" data-v-5b14e8e0><button type="button" class="assistant-float-btn" title="微信扫码联系客服" data-v-5b14e8e0><img src="/assets/wechat-d90fd08f.png" alt="微信扫码联系客服" data-v-5b14e8e0></button><button id="assistant-share-btn" type="button" class="assistant-float-btn" title="分享链接" data-v-5b14e8e0><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAHqADAAQAAAABAAAAHgAAAADKQTcFAAADjElEQVRIDcVXW0hVQRRdM/fce/OVpfRA8dENDckkMILsYRG9PnqQQUkg9NFfBCFEJJSFRj8R+BP4URREGEVGRNSXWEiE1odoDx+lhkoWpTe1+zrT7KPnes59ddQbDujM7D17rbNn9uzZl8FCqxaC36l1l4iAekgIFDOwDEDIP2psUEAMMoY2ZuONFVUpLdWMqVO66P9ZdBWw/ZZY9GXAfZqpolKCL4+1VtfJj/omOLuWm5VS13SC/dHloX1UYtcld5lA4Lr0MCvUyMpc7sAAg+1M78WUh5HW81ChEIKtqh6rVUXgwVxJCZNsCYOwCDOUxySgBa7LY/dkfzR04XzmjLGG3guLy2UvdByTx3J7a+JNSkSESdg6KfVBj+lMaWuMyniPObMd0c9c85iilwIpHkSZqQyudNNGBmGJg7hIoK2gKzOfQKJt27xawc41dtytSELesijEMuCISyOm5ED3lCazbXaJv6fAjvrjyShcaUPlDidy0mzoHI6eP4hL43TVjG1R/erL2ZAm2IF9ax0oW+9EWiLH0w4PSl02bMhW4PYIFF0diwnHFb5VoTQYc5VBmZrAcLDIgf2FTiQ7p+LyxQcvijO5RkpLO4cDBovIQ+JU5NkWR1bPSFekMByW3u0tcMChBC8Cmrq8yF0iU2ue3ILpZolYckoYliHzsG5n6rOWchwrdqJUAttkDjS2ll4fkuwCB9Y5jWJLHhOnMvPKmOy1yfndichNt4Up2vp9mPAEcGqbdjNM+o6hf281cUaO+2mo2ucTaB/ym4DbB/34/MMfkdQXEOgeiR7RQSAGIYnZYFAQMvj6S8XZR+Ooa5rAuFfg/bAfrX1eVO0K95RMuySpzwIvBBtS6BGXNvkhnKbps04fmrt92CivS315ImSyN+n1iZXAorXEyaly0A1j9eNeYJNLgcIjk5KtVWKJ0CrzNm+MRWjUvekP4KPcztHJyLfAMrHCH3OqkahcMRLEGguZ3uuaPWh466XnzrTUCjFxESenwoxqJBNClEnPSAA3Xk3i5msPzj2ZRPntcfR8n7o+Az9VmS6jGBrExEWc2oHRU9XXP/ppLi+UQ17zkyVOjPxWcf+dz0ARPqQ6LCc7NZ+KwGCkLEghQN9GlQEDvxL+nfGRELZefRBi0GOayGBZmGKPqkCtGoyj55qnIRVmmMck0Bud+f8s6E1brZPq/YL8hNHJqacaKd4/2v4CgdaZJ2zGqYAAAAAASUVORK5CYII=" alt="分享链接" data-v-5b14e8e0></button></div><!-- 桌面端:头部下方左右布局,助手固定右侧 --><aside class="assistant-layout" style="width:450px;" data-v-5b14e8e0><div class="assistant-resize-handle" title="拖动调整宽度,向右拖至最窄可关闭" data-v-5b14e8e0></div><div class="assistant-panel" data-v-5b14e8e0><div class="assistant-loading" data-v-5b14e8e0><div class="assistant-loading-inner" data-v-5b14e8e0><span class="assistant-spinner" aria-hidden="true" data-v-5b14e8e0></span><span class="assistant-loading-text" data-v-5b14e8e0>智能助手加载中...</span></div></div><div data-chat-ui-embedded class="assistant-chat" data-v-5b14e8e0></div><!----></div></aside><!-- 后续启用:底部输入条(展开态)
<form
v-if="showFloatingAssistant && quickBarExpanded"
class="assistant-quick-bar"
:class="{ 'assistant-quick-bar--mobile': isMobile }"
role="search"
aria-label="和 AI 开始对话"
@submit.prevent="submitFabQuery"
>
<input
v-model="fabQuery"
type="text"
class="assistant-quick-bar-input"
placeholder="和 AI 说点什么,按 Enter 直接发送..."
maxlength="500"
aria-label="向 AI 提问"
/>
<button
type="button"
class="assistant-quick-bar-submit"
:title="fabQuery.trim() ? '发送并打开智能助手' : '收起输入框'"
@click="onAiBallClick"
>
AI
</button>
</form>
--><!-- 助手收起后:可拖动悬浮球,点击打开智能助手 --><!----><!-- 移动端:保留抽屉 --><!----><!--]--><!--v-if--></div><!--]--><div class="sidebar-mask"></div><!--[--><aside class="sidebar"><div class="toggleColor" style="display:none;"><button class="toggle-color-mode-button" title="切换颜色模式"><svg style="" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg style="display:none;" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button></div><nav class="navbar-items" id="customize-sidebar"><!--[--><div class="navbar-item"><a href="/" class="" aria-label="首页"><!--[--><!--]--> 首页 <!--[--><!--]--></a></div><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="API"><span class="title">API</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="API"><span class="title">API</span><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a href="/freshman/ty_rookie.html" class="" aria-label="投研新手教程"><!--[--><!--]--> 投研新手教程 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/freshman/rookie.html" class="" aria-label="QMT新手教程"><!--[--><!--]--> QMT新手教程 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/innerApi/start_now.html" class="" aria-label="内置Python"><!--[--><!--]--> 内置Python <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/nativeApi/start_now.html" class="" aria-label="XtQuant文档"><!--[--><!--]--> XtQuant文档 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/VBA/start_now.html" class="" aria-label="VBA"><!--[--><!--]--> VBA <!--[--><!--]--></a></li><!--]--></ul></div></div><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="数据字典"><span class="title">数据字典</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="数据字典"><span class="title">数据字典</span><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a href="/dictionary/" class="" aria-label="快速开始"><!--[--><!--]--> 快速开始 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/dictionary/stock.html" class="" aria-label="股票数据"><!--[--><!--]--> 股票数据 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/dictionary/industry.html" class="" aria-label="行业概念数据"><!--[--><!--]--> 行业概念数据 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/dictionary/indexes.html" class="" aria-label="指数数据"><!--[--><!--]--> 指数数据 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/dictionary/future.html" class="" aria-label="期货数据"><!--[--><!--]--> 期货数据 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/dictionary/option.html" class="" aria-label="期权数据"><!--[--><!--]--> 期权数据 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/dictionary/floorfunds.html" class="" aria-label="场内基金数据"><!--[--><!--]--> 场内基金数据 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/dictionary/bond.html" class="" aria-label="债券数据"><!--[--><!--]--> 债券数据 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/dictionary/question_answer.html" class="" aria-label="常见问题"><!--[--><!--]--> 常见问题 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/dictionary/scenario_based_example.html" class="" aria-label="场景化示例"><!--[--><!--]--> 场景化示例 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/dictionary/xuntou_factor.html" class="" aria-label="迅投因子"><!--[--><!--]--> 迅投因子 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/dictionary/data_browser_barra_factor.html" class="" aria-label="数据浏览器"><!--[--><!--]--> 数据浏览器 <!--[--><!--]--></a></li><!--]--></ul></div></div><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="策略迁移"><span class="title">策略迁移</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="策略迁移"><span class="title">策略迁移</span><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a href="/strategy/JoinQuant2QMT.html" class="" aria-label="聚宽策略"><!--[--><!--]--> 聚宽策略 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><!--[--><h4 class="navbar-dropdown-subtitle"><span></span></h4><ul class="navbar-dropdown-subitem-wrapper"><!--[--><li class="navbar-dropdown-subitem"><a aria-current="page" href="/nativeApi/code_examples.html" class="router-link-active router-link-exact-active router-link-active" aria-label="客服QQ: 810315303"><!--[--><!--]--> 客服QQ: 810315303 <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a aria-current="page" href="/nativeApi/code_examples.html" class="router-link-active router-link-exact-active router-link-active" aria-label="联系方式: 18309226715"><!--[--><!--]--> 联系方式: 18309226715 <!--[--><!--]--></a></li><!--]--></ul><!--]--></li><!--]--></ul></div></div><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="视频教程"><span class="title">视频教程</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="视频教程"><span class="title">视频教程</span><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a href="/videos/touyan/ty_register_install.html" class="" aria-label="投研端教程"><!--[--><!--]--> 投研端教程 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a class="external-link" href="https://www.xuntou.net/plugin.php?id=keke_video_base" rel="noopener noreferrer" target="_blank" aria-label="迅投学堂"><!--[--><!--]--> 迅投学堂 <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span><!--[--><!--]--></a></li><!--]--></ul></div></div><!--]--></nav><div class="newSider" style="display:none;"><div class="fromBtn"><span> 投研平台 <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span></span></div><div class="fromBtn" style="display:none;"><span> 迅投社区 <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span></span></div><!-- <div class="navbar-item fromBtn" v-if="info.isMobile">
<span
@click="getNUrl('crowdfunding')"
>
特色众筹
<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path>
<polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg>
<span class="external-link-icon-sr-only">在新窗口打开</span>
</span>
</span>
</div> --><div class="navbar-item"><a class="external-link" href="http://www.thinktrader.net" rel="noopener noreferrer" target="_blank" aria-label="迅投官网"> 迅投官网 <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span></a></div><!----></div><!--[--><!--]--><ul class="sidebar-items"><!--[--><li><p tabindex="0" class="sidebar-item sidebar-heading active">xtquant文档 <!----></p><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nativeApi/start_now.html" class="sidebar-item" aria-label="快速开始"><!--[--><!--]--> 快速开始 <!--[--><!--]--></a><!----></li><li><a href="/nativeApi/xtdata.html" class="sidebar-item" aria-label="XtQuant.XtData 行情模块"><!--[--><!--]--> XtQuant.XtData 行情模块 <!--[--><!--]--></a><!----></li><li><a href="/nativeApi/xttrader.html" class="sidebar-item" aria-label="XtQuant.Xttrade 交易模块"><!--[--><!--]--> XtQuant.Xttrade 交易模块 <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nativeApi/code_examples.html" class="router-link-active router-link-exact-active router-link-active sidebar-item active" aria-label="完整实例"><!--[--><!--]--> 完整实例 <!--[--><!--]--></a><ul style="" class="sidebar-item-children"><!--[--><li><a aria-current="page" href="/nativeApi/code_examples.html#行情示例" class="router-link-active router-link-exact-active sidebar-item" aria-label="行情示例"><!--[--><!--]--> 行情示例 <!--[--><!--]--></a><ul style="" class="sidebar-item-children"><!--[--><li><a aria-current="page" href="/nativeApi/code_examples.html#获取行情示例" class="router-link-active router-link-exact-active sidebar-item" aria-label="获取行情示例"><!--[--><!--]--> 获取行情示例 <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nativeApi/code_examples.html#连接vip服务器" class="router-link-active router-link-exact-active sidebar-item" aria-label="连接VIP服务器"><!--[--><!--]--> 连接VIP服务器 <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nativeApi/code_examples.html#连接指定服务器" class="router-link-active router-link-exact-active sidebar-item" aria-label="连接指定服务器"><!--[--><!--]--> 连接指定服务器 <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nativeApi/code_examples.html#指定初始化行情连接范围" class="router-link-active router-link-exact-active sidebar-item" aria-label="指定初始化行情连接范围"><!--[--><!--]--> 指定初始化行情连接范围 <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nativeApi/code_examples.html#订阅全推数据-下载历史数据" class="router-link-active router-link-exact-active sidebar-item" aria-label="订阅全推数据/下载历史数据"><!--[--><!--]--> 订阅全推数据/下载历史数据 <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nativeApi/code_examples.html#获取对手价" class="router-link-active router-link-exact-active sidebar-item" aria-label="获取对手价"><!--[--><!--]--> 获取对手价 <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nativeApi/code_examples.html#复权计算方式" class="router-link-active router-link-exact-active sidebar-item" aria-label="复权计算方式"><!--[--><!--]--> 复权计算方式 <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nativeApi/code_examples.html#根据商品期货期权代码获取对应的商品期货合约代码" class="router-link-active router-link-exact-active sidebar-item" aria-label="根据商品期货期权代码获取对应的商品期货合约代码"><!--[--><!--]--> 根据商品期货期权代码获取对应的商品期货合约代码 <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nativeApi/code_examples.html#根据指数代码-返回对应的期货合约" class="router-link-active router-link-exact-active sidebar-item" aria-label="根据指数代码,返回对应的期货合约"><!--[--><!--]--> 根据指数代码,返回对应的期货合约 <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nativeApi/code_examples.html#高频因子数据创建" class="router-link-active router-link-exact-active sidebar-item" aria-label="高频因子数据创建"><!--[--><!--]--> 高频因子数据创建 <!--[--><!--]--></a><!----></li><!--]--></ul></li><li><a aria-current="page" href="/nativeApi/code_examples.html#交易示例" class="router-link-active router-link-exact-active sidebar-item" aria-label="交易示例"><!--[--><!--]--> 交易示例 <!--[--><!--]--></a><ul style="" class="sidebar-item-children"><!--[--><li><a aria-current="page" href="/nativeApi/code_examples.html#简单买卖各一笔示例" class="router-link-active router-link-exact-active sidebar-item" aria-label="简单买卖各一笔示例"><!--[--><!--]--> 简单买卖各一笔示例 <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nativeApi/code_examples.html#单股订阅实盘示例" class="router-link-active router-link-exact-active sidebar-item" aria-label="单股订阅实盘示例"><!--[--><!--]--> 单股订阅实盘示例 <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nativeApi/code_examples.html#全推订阅实盘示例" class="router-link-active router-link-exact-active sidebar-item" aria-label="全推订阅实盘示例"><!--[--><!--]--> 全推订阅实盘示例 <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nativeApi/code_examples.html#定时判断实盘示例" class="router-link-active router-link-exact-active sidebar-item" aria-label="定时判断实盘示例"><!--[--><!--]--> 定时判断实盘示例 <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nativeApi/code_examples.html#交易接口重连" class="router-link-active router-link-exact-active sidebar-item" aria-label="交易接口重连"><!--[--><!--]--> 交易接口重连 <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nativeApi/code_examples.html#指定session-id范围连接交易" class="router-link-active router-link-exact-active sidebar-item" aria-label="指定session id范围连接交易"><!--[--><!--]--> 指定session id范围连接交易 <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nativeApi/code_examples.html#信用账号执行还款" class="router-link-active router-link-exact-active sidebar-item" aria-label="信用账号执行还款"><!--[--><!--]--> 信用账号执行还款 <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nativeApi/code_examples.html#下单后通过回调撤单" class="router-link-active router-link-exact-active sidebar-item" aria-label="下单后通过回调撤单"><!--[--><!--]--> 下单后通过回调撤单 <!--[--><!--]--></a><!----></li><!--]--></ul></li><!--]--></ul></li><li><a href="/nativeApi/question_function.html" class="sidebar-item" aria-label="常见问题"><!--[--><!--]--> 常见问题 <!--[--><!--]--></a><!----></li><li><a href="/nativeApi/download_xtquant.html" class="sidebar-item" aria-label="xtquant版本下载"><!--[--><!--]--> xtquant版本下载 <!--[--><!--]--></a><!----></li><!--]--></ul></li><!--]--></ul><!--[--><!--]--></aside><!--]--><!--[--><main class="page" data-v-3c904194><!--[--><!--]--><div class="theme-default-contents" data-v-3c904194><!----><!--[--><!--]--><div class="theme-default-content" data-v-3c904194><div data-v-3c904194><h2 id="行情示例" tabindex="-1"><a class="header-anchor" href="#行情示例" aria-hidden="true">#</a> 行情示例</h2><h3 id="获取行情示例" tabindex="-1"><a class="header-anchor" href="#获取行情示例" aria-hidden="true">#</a> 获取行情示例</h3><div class="vp-tabs"><div class="vp-tabs-nav" role="tablist"><button type="button" class="vp-tab-nav active" role="tab" aria-controls="tab-6-0" aria-selected="true">新手示例</button></div><!--[--><div class="vp-tab active" id="tab-6-0" role="tabpanel" aria-expanded="true"><div class="language-python line-numbers-mode" data-ext="py"><pre class="shiki dracula" style="background-color:#282A36;" tabindex="0"><code><span class="line"><span style="color:#6272A4;"># 用前须知</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;">## xtdata提供和MiniQmt的交互接口,本质是和MiniQmt建立连接,由MiniQmt处理行情数据请求,再把结果回传返回到python层。使用的行情服务器以及能获取到的行情数据和MiniQmt是一致的,要检查数据或者切换连接时直接操作MiniQmt即可。</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;">## 对于数据获取接口,使用时需要先确保MiniQmt已有所需要的数据,如果不足可以通过补充数据接口补充,再调用数据获取接口获取。</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;">## 对于订阅接口,直接设置数据回调,数据到来时会由回调返回。订阅接收到的数据一般会保存下来,同种数据不需要再单独补充。</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 代码讲解</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 从本地python导入xtquant库,如果出现报错则说明安装失败</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtdata</span></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> time</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 设定一个标的列表</span></span>
<span class="line"><span style="color:#F8F8F2;">code_list </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> [</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">000001.SZ</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">]</span></span>
<span class="line"><span style="color:#6272A4;"># 设定获取数据的周期</span></span>
<span class="line"><span style="color:#F8F8F2;">period </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">1d</span><span style="color:#E9F284;">&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 下载标的行情数据</span></span>
<span class="line"><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">## 为了方便用户进行数据管理,xtquant的大部分历史数据都是以压缩形式存储在本地的</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">## 比如行情数据,需要通过download_history_data下载,财务数据需要通过</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">## 所以在取历史数据之前,我们需要调用数据下载接口,将数据下载到本地</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> i </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> code_list:</span></span>
<span class="line"><span style="color:#F8F8F2;"> xtdata.download_history_data(i,</span><span style="color:#FFB86C;font-style:italic;">period</span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;">period,</span><span style="color:#FFB86C;font-style:italic;">incrementally</span><span style="color:#FF79C6;">=</span><span style="color:#BD93F9;">True</span><span style="color:#F8F8F2;">) </span><span style="color:#6272A4;"># 增量下载行情数据(开高低收,等等)到本地</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span></span>
<span class="line"><span style="color:#F8F8F2;"> xtdata.download_financial_data(code_list) </span><span style="color:#6272A4;"># 下载财务数据到本地</span></span>
<span class="line"><span style="color:#F8F8F2;"> xtdata.download_sector_data() </span><span style="color:#6272A4;"># 下载板块数据到本地</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 更多数据的下载方式可以通过数据字典查询</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 读取本地历史行情数据</span></span>
<span class="line"><span style="color:#F8F8F2;">history_data </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata.get_market_data_ex([],code_list,</span><span style="color:#FFB86C;font-style:italic;">period</span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;">period,</span><span style="color:#FFB86C;font-style:italic;">count</span><span style="color:#FF79C6;">=-</span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(history_data)</span></span>
<span class="line"><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">=</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">*</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">20</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 如果需要盘中的实时行情,需要向服务器进行订阅后才能获取</span></span>
<span class="line"><span style="color:#6272A4;"># 订阅后,get_market_data函数于get_market_data_ex函数将会自动拼接本地历史行情与服务器实时行情</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 向服务器订阅数据</span></span>
<span class="line"><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> i </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> code_list:</span></span>
<span class="line"><span style="color:#F8F8F2;"> xtdata.subscribe_quote(i,</span><span style="color:#FFB86C;font-style:italic;">period</span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;">period,</span><span style="color:#FFB86C;font-style:italic;">count</span><span style="color:#FF79C6;">=-</span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">) </span><span style="color:#6272A4;"># 设置count = -1来取到当天所有实时行情</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 等待订阅完成</span></span>
<span class="line"><span style="color:#F8F8F2;">time.sleep(</span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 获取订阅后的行情</span></span>
<span class="line"><span style="color:#F8F8F2;">kline_data </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata.get_market_data_ex([],code_list,</span><span style="color:#FFB86C;font-style:italic;">period</span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;">period)</span></span>
<span class="line"><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(kline_data)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 获取订阅后的行情,并以固定间隔进行刷新,预期会循环打印10次</span></span>
<span class="line"><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> i </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">range</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;">10</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 这边做演示,就用for来循环了,实际使用中可以用while True</span></span>
<span class="line"><span style="color:#F8F8F2;"> kline_data </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata.get_market_data_ex([],code_list,</span><span style="color:#FFB86C;font-style:italic;">period</span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;">period)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(kline_data)</span></span>
<span class="line"><span style="color:#F8F8F2;"> time.sleep(</span><span style="color:#BD93F9;">3</span><span style="color:#F8F8F2;">) </span><span style="color:#6272A4;"># 三秒后再次获取行情</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 如果不想用固定间隔触发,可以以用订阅后的回调来执行</span></span>
<span class="line"><span style="color:#6272A4;"># 这种模式下当订阅的callback回调函数将会异步的执行,每当订阅的标的tick发生变化更新,callback回调函数就会被调用一次</span></span>
<span class="line"><span style="color:#6272A4;"># 本地已有的数据不会触发callback</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span></span>
<span class="line"><span style="color:#6272A4;"># 定义的回测函数</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">## 回调函数中,data是本次触发回调的数据,只有一条</span></span>
<span class="line"><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">f</span><span style="color:#F8F8F2;">(</span><span style="color:#FFB86C;font-style:italic;">data</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># print(data)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span></span>
<span class="line"><span style="color:#F8F8F2;"> code_list </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;font-style:italic;">list</span><span style="color:#F8F8F2;">(data.keys()) </span><span style="color:#6272A4;"># 获取到本次触发的标的代码</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> kline_in_callabck </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata.get_market_data_ex([],code_list,</span><span style="color:#FFB86C;font-style:italic;">period</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> period) </span><span style="color:#6272A4;"># 在回调中获取klines数据</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(kline_in_callabck)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> i </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> code_list:</span></span>
<span class="line"><span style="color:#F8F8F2;"> xtdata.subscribe_quote(i,</span><span style="color:#FFB86C;font-style:italic;">period</span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;">period,</span><span style="color:#FFB86C;font-style:italic;">count</span><span style="color:#FF79C6;">=-</span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">,</span><span style="color:#FFB86C;font-style:italic;">callback</span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;">f) </span><span style="color:#6272A4;"># 订阅时设定回调函数</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 使用回调时,必须要同时使用xtdata.run()来阻塞程序,否则程序运行到最后一行就直接结束退出了。</span></span>
<span class="line"><span style="color:#F8F8F2;">xtdata.run()</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div><!--]--></div><h3 id="连接vip服务器" tabindex="-1"><a class="header-anchor" href="#连接vip服务器" aria-hidden="true">#</a> 连接VIP服务器</h3><div class="vp-tabs"><div class="vp-tabs-nav" role="tablist"><button type="button" class="vp-tab-nav active" role="tab" aria-controls="tab-14-0" aria-selected="true">python</button></div><!--[--><div class="vp-tab active" id="tab-14-0" role="tabpanel" aria-expanded="true"><div class="language-python line-numbers-mode" data-ext="py"><pre class="shiki dracula" style="background-color:#282A36;" tabindex="0"><code><span class="line"><span style="color:#6272A4;"># 导入 xtdatacenter 模块</span></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> sys</span></span>
<span class="line"></span>
<span class="line"><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">Python 版本:</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">, sys.version)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> time</span></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> pandas </span><span style="color:#FF79C6;">as</span><span style="color:#F8F8F2;"> pd</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtdatacenter </span><span style="color:#FF79C6;">as</span><span style="color:#F8F8F2;"> xtdc</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtdata</span></span>
<span class="line"><span style="color:#6272A4;">&#39;&#39;&#39; </span></span>
<span class="line"><span style="color:#6272A4;">设置用于登录行情服务的token,此接口应该先于 init_quote 调用</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;">token可以从投研用户中心获取</span></span>
<span class="line"><span style="color:#6272A4;">https://xuntou.net/#/userInfo</span></span>
<span class="line"><span style="color:#6272A4;">&#39;&#39;&#39;</span></span>
<span class="line"><span style="color:#F8F8F2;">xtdc.set_token(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">这里输入token</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;">&#39;&#39;&#39;</span></span>
<span class="line"><span style="color:#6272A4;">设置连接池,使服务器只在连接池内优选</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;">建议将VIP服务器设为连接池</span></span>
<span class="line"><span style="color:#6272A4;">&#39;&#39;&#39;</span></span>
<span class="line"><span style="color:#F8F8F2;">addr_list </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> [</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">115.231.218.73:55310</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">115.231.218.79:55310</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">42.228.16.211:55300</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">,</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">42.228.16.210:55300</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">,</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">36.99.48.20:55300</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">,</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">36.99.48.21:55300</span><span style="color:#E9F284;">&#39;</span></span>
<span class="line"><span style="color:#F8F8F2;"> ]</span></span>
<span class="line"><span style="color:#F8F8F2;">xtdc.set_allow_optmize_address(addr_list)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">xtdc.set_kline_mirror_enabled(</span><span style="color:#BD93F9;">True</span><span style="color:#F8F8F2;">) </span><span style="color:#6272A4;"># 开启K线全推功能(vip),以获取全市场实时K线数据</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;">初始化</span></span>
<span class="line"><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;">xtdc.init()</span></span>
<span class="line"><span style="color:#6272A4;">## 监听端口</span></span>
<span class="line"><span style="color:#F8F8F2;">port </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdc.listen(</span><span style="color:#FFB86C;font-style:italic;">port</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">58621</span><span style="color:#F8F8F2;">) </span><span style="color:#6272A4;"># 指定固定端口进行连接</span></span>
<span class="line"><span style="color:#6272A4;"># port = xtdc.listen(port = (58620, 58630))[1] 通过指定port范围,可以让xtdc在范围内自动寻找可用端口</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">xtdata.connect(</span><span style="color:#FFB86C;font-style:italic;">port</span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;">port)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">-----连接上了------</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(xtdata.data_dir)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">servers </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata.get_quote_server_status()</span></span>
<span class="line"><span style="color:#6272A4;"># print(servers)</span></span>
<span class="line"><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> k, v </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> servers.items():</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(k, v)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">xtdata.run()</span></span>
<span class="line"></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div><!--]--></div><h3 id="连接指定服务器" tabindex="-1"><a class="header-anchor" href="#连接指定服务器" aria-hidden="true">#</a> 连接指定服务器</h3><div class="vp-tabs"><div class="vp-tabs-nav" role="tablist"><button type="button" class="vp-tab-nav active" role="tab" aria-controls="tab-22-0" aria-selected="true">python</button></div><!--[--><div class="vp-tab active" id="tab-22-0" role="tabpanel" aria-expanded="true"><div class="language-python line-numbers-mode" data-ext="py"><pre class="shiki dracula" style="background-color:#282A36;" tabindex="0"><code><span class="line"></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> time</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtdata</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;">#用token方式连接,不需要账号密码</span></span>
<span class="line"><span style="color:#6272A4;">#其他连接方式,需要账号密码</span></span>
<span class="line"><span style="color:#F8F8F2;">info </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> {</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">ip</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">: </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">115.231.218.73</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">port</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">: </span><span style="color:#BD93F9;">55300</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">username</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">: </span><span style="color:#E9F284;">&#39;&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">pwd</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">: </span><span style="color:#E9F284;">&#39;&#39;</span><span style="color:#F8F8F2;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">connect_success </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">0</span></span>
<span class="line"><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">func</span><span style="color:#F8F8F2;">(</span><span style="color:#FFB86C;font-style:italic;">d</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> ip </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> d.get(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">ip</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> port </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> d.get(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">port</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> status </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> d.get(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">status</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">disconnected</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">global</span><span style="color:#F8F8F2;"> connect_success</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> ip </span><span style="color:#FF79C6;">==</span><span style="color:#F8F8F2;"> info[</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">ip</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">] </span><span style="color:#FF79C6;">and</span><span style="color:#F8F8F2;"> port </span><span style="color:#FF79C6;">==</span><span style="color:#F8F8F2;"> info[</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">port</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">]:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> status </span><span style="color:#FF79C6;">==</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">connected</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> connect_success </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">1</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">else</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> connect_success </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">2</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 注册连接回调信息</span></span>
<span class="line"><span style="color:#F8F8F2;">xtdata.watch_quote_server_status(func)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 行情连接</span></span>
<span class="line"><span style="color:#F8F8F2;">qs </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata.QuoteServer(info)</span></span>
<span class="line"><span style="color:#F8F8F2;">qs.connect()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 获取当前数据连接站点</span></span>
<span class="line"><span style="color:#F8F8F2;">data_server_info </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata.get_quote_server_status()</span></span>
<span class="line"><span style="color:#6272A4;"># 显示当前数据连接站点</span></span>
<span class="line"><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> k,v </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> data_server_info.items():</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;data:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">k</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">, connect info:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">v.info</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 等待连接状态</span></span>
<span class="line"><span style="color:#FF79C6;">while</span><span style="color:#F8F8F2;"> connect_success </span><span style="color:#FF79C6;">==</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> time.sleep(</span><span style="color:#BD93F9;">0.3</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> connect_success </span><span style="color:#FF79C6;">==</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">2</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">连接失败</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div><!--]--></div><h3 id="指定初始化行情连接范围" tabindex="-1"><a class="header-anchor" href="#指定初始化行情连接范围" aria-hidden="true">#</a> 指定初始化行情连接范围</h3><div class="vp-tabs"><div class="vp-tabs-nav" role="tablist"><button type="button" class="vp-tab-nav active" role="tab" aria-controls="tab-30-0" aria-selected="true">python</button></div><!--[--><div class="vp-tab active" id="tab-30-0" role="tabpanel" aria-expanded="true"><div class="language-python line-numbers-mode" data-ext="py"><pre class="shiki dracula" style="background-color:#282A36;" tabindex="0"><code><span class="line"><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtdatacenter </span><span style="color:#FF79C6;">as</span><span style="color:#F8F8F2;"> xtdc</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">## 设置数据目录</span></span>
<span class="line"><span style="color:#F8F8F2;"> xtdc.set_data_home_dir(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">data</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">## 设置token</span></span>
<span class="line"><span style="color:#F8F8F2;"> token </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">你的token</span><span style="color:#E9F284;">&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> xtdc.set_token(token)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">## 限定行情站点的优选范围</span></span>
<span class="line"><span style="color:#F8F8F2;"> opt_list </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> [</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">115.231.218.73:55310</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">,</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">115.231.218.79:55310</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">,</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">42.228.16.210:55300</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">,</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">42.228.16.211:55300</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">,</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">36.99.48.20:55300</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">,</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">36.99.48.21:55300</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">,</span></span>
<span class="line"><span style="color:#F8F8F2;"> ]</span></span>
<span class="line"><span style="color:#F8F8F2;"> xtdc.set_allow_optmize_address(opt_list)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">## 开启指定市场的K线全推</span></span>
<span class="line"><span style="color:#F8F8F2;"> xtdc.set_kline_mirror_markets([</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">SH</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">SZ</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">BJ</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">])</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">## 设置要初始化的市场列表</span></span>
<span class="line"><span style="color:#F8F8F2;"> init_markets </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> [</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">SH</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">SZ</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">BJ</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">,</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#&#39;DF&#39;, &#39;GF&#39;, &#39;IF&#39;, &#39;SF&#39;, &#39;ZF&#39;, &#39;INE&#39;,</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#&#39;SHO&#39;, &#39;SZO&#39;,</span></span>
<span class="line"><span style="color:#F8F8F2;"> ]</span></span>
<span class="line"><span style="color:#F8F8F2;"> xtdc.set_init_markets(init_markets)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">## 初始化xtdc模块</span></span>
<span class="line"><span style="color:#F8F8F2;"> xtdc.init(</span><span style="color:#FFB86C;font-style:italic;">start_local_service</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">False</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">## 监听端口</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#xtdc.listen(port = 58620)</span></span>
<span class="line"><span style="color:#F8F8F2;"> listen_port </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdc.listen(</span><span style="color:#FFB86C;font-style:italic;">port</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> (</span><span style="color:#BD93F9;">58620</span><span style="color:#F8F8F2;">, </span><span style="color:#BD93F9;">58650</span><span style="color:#F8F8F2;">))</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#import code; code.interact(local = locals())</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtquant.xtdata </span><span style="color:#FF79C6;">as</span><span style="color:#F8F8F2;"> xtdata</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">xtdata.connect(</span><span style="color:#FFB86C;font-style:italic;">port</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> listen_port)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> code; code.interact(</span><span style="color:#FFB86C;font-style:italic;">local</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">locals</span><span style="color:#F8F8F2;">())</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p></p></div><!--]--></div><h3 id="订阅全推数据-下载历史数据" tabindex="-1"><a class="header-anchor" href="#订阅全推数据-下载历史数据" aria-hidden="true">#</a> 订阅全推数据/下载历史数据</h3><div class="vp-tabs"><div class="vp-tabs-nav" role="tablist"><button type="button" class="vp-tab-nav active" role="tab" aria-controls="tab-41-0" aria-selected="true">python</button></div><!--[--><div class="vp-tab active" id="tab-41-0" role="tabpanel" aria-expanded="true"><div class="language-python line-numbers-mode" data-ext="py"><pre class="shiki dracula" style="background-color:#282A36;" tabindex="0"><code><span class="line"></span>
<span class="line"><span style="color:#6272A4;"># coding:utf-8</span></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> time</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtdata</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">code </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">600000.SH</span><span style="color:#E9F284;">&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;">#取全推数据</span></span>
<span class="line"><span style="color:#F8F8F2;">full_tick </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata.get_full_tick([code])</span></span>
<span class="line"><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">全推数据 日线最新值</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, full_tick)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;">#下载历史数据 下载接口本身不返回数据</span></span>
<span class="line"><span style="color:#F8F8F2;">xtdata.download_history_data(code, </span><span style="color:#FFB86C;font-style:italic;">period</span><span style="color:#FF79C6;">=</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">1m</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">start_time</span><span style="color:#FF79C6;">=</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">20230701</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;">#订阅最新行情</span></span>
<span class="line"><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">callback_func</span><span style="color:#F8F8F2;">(</span><span style="color:#FFB86C;font-style:italic;">data</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">回调触发</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, data)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">xtdata.subscribe_quote(code, </span><span style="color:#FFB86C;font-style:italic;">period</span><span style="color:#FF79C6;">=</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">1m</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">count</span><span style="color:#FF79C6;">=-</span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">callback</span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> callback_func)</span></span>
<span class="line"><span style="color:#F8F8F2;">data </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata.get_market_data([</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">close</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">], [code], </span><span style="color:#FFB86C;font-style:italic;">period</span><span style="color:#FF79C6;">=</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">1m</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">start_time</span><span style="color:#FF79C6;">=</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">20230701</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">一次性取数据</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, data)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;">#死循环 阻塞主线程退出</span></span>
<span class="line"><span style="color:#F8F8F2;">xtdata.run()</span></span>
<span class="line"></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p></p></div><!--]--></div><h3 id="获取对手价" tabindex="-1"><a class="header-anchor" href="#获取对手价" aria-hidden="true">#</a> 获取对手价</h3><div class="vp-tabs"><div class="vp-tabs-nav" role="tablist"><button type="button" class="vp-tab-nav active" role="tab" aria-controls="tab-52-0" aria-selected="true">python</button><button type="button" class="vp-tab-nav" role="tab" aria-controls="tab-52-1" aria-selected="false">返回值</button></div><!--[--><div class="vp-tab active" id="tab-52-0" role="tabpanel" aria-expanded="true"><div class="language-python line-numbers-mode" data-ext="py"><pre class="shiki dracula" style="background-color:#282A36;" tabindex="0"><code><span class="line"><span style="color:#6272A4;"># 以卖出为例</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> pandas </span><span style="color:#FF79C6;">as</span><span style="color:#F8F8F2;"> pd</span></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> numpy </span><span style="color:#FF79C6;">as</span><span style="color:#F8F8F2;"> np</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtdata</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">to_do_trade_list </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> [</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">000001.SZ</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">]</span></span>
<span class="line"><span style="color:#F8F8F2;">tick </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata.get_full_tick(to_do_trade_list)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 取买一价为对手价,若买一价为0,说明已经跌停,则取最新价</span></span>
<span class="line"><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> i </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> tick:</span></span>
<span class="line"><span style="color:#F8F8F2;"> fix_price </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> tick[i][</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">bidPrice</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">][</span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;">] </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> tick[i][</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">bidPrice</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">][</span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;">] </span><span style="color:#FF79C6;">!=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">else</span><span style="color:#F8F8F2;"> tick[i][</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">lastPrice</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">]</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(fix_price)</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div><div class="vp-tab" id="tab-52-1" role="tabpanel" aria-expanded="false"><div class="language-python line-numbers-mode" data-ext="py"><pre class="shiki dracula" style="background-color:#282A36;" tabindex="0"><code><span class="line"><span style="color:#BD93F9;">10.01</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></div><!--]--></div><h3 id="复权计算方式" tabindex="-1"><a class="header-anchor" href="#复权计算方式" aria-hidden="true">#</a> 复权计算方式</h3><div class="vp-tabs"><div class="vp-tabs-nav" role="tablist"><button type="button" class="vp-tab-nav active" role="tab" aria-controls="tab-63-0" aria-selected="true">python</button></div><!--[--><div class="vp-tab active" id="tab-63-0" role="tabpanel" aria-expanded="true"><div class="language-python line-numbers-mode" data-ext="py"><pre class="shiki dracula" style="background-color:#282A36;" tabindex="0"><code><span class="line"><span style="color:#6272A4;">#coding:utf-8</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> numpy </span><span style="color:#FF79C6;">as</span><span style="color:#F8F8F2;"> np</span></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> pandas </span><span style="color:#FF79C6;">as</span><span style="color:#F8F8F2;"> pd</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtdata</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;">#def gen_divid_ratio(quote_datas, divid_datas):</span></span>
<span class="line"><span style="color:#6272A4;"># drl = []</span></span>
<span class="line"><span style="color:#6272A4;"># for qi in range(len(quote_datas)):</span></span>
<span class="line"><span style="color:#6272A4;"># q = quote_datas.iloc[qi]</span></span>
<span class="line"><span style="color:#6272A4;"># dr = 1.0</span></span>
<span class="line"><span style="color:#6272A4;"># for di in range(len(divid_datas)):</span></span>
<span class="line"><span style="color:#6272A4;"># d = divid_datas.iloc[di]</span></span>
<span class="line"><span style="color:#6272A4;"># if d.name &lt;= q.name:</span></span>
<span class="line"><span style="color:#6272A4;"># dr *= d[&#39;dr&#39;]</span></span>
<span class="line"><span style="color:#6272A4;"># drl.append(dr)</span></span>
<span class="line"><span style="color:#6272A4;"># return pd.DataFrame(drl, index = quote_datas.index, columns = quote_datas.columns)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">gen_divid_ratio</span><span style="color:#F8F8F2;">(</span><span style="color:#FFB86C;font-style:italic;">quote_datas</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">divid_datas</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> drl </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> []</span></span>
<span class="line"><span style="color:#F8F8F2;"> dr </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">1.0</span></span>
<span class="line"><span style="color:#F8F8F2;"> qi </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">0</span></span>
<span class="line"><span style="color:#F8F8F2;"> qdl </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">len</span><span style="color:#F8F8F2;">(quote_datas)</span></span>
<span class="line"><span style="color:#F8F8F2;"> di </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">0</span></span>
<span class="line"><span style="color:#F8F8F2;"> ddl </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">len</span><span style="color:#F8F8F2;">(divid_datas)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">while</span><span style="color:#F8F8F2;"> qi </span><span style="color:#FF79C6;">&lt;</span><span style="color:#F8F8F2;"> qdl </span><span style="color:#FF79C6;">and</span><span style="color:#F8F8F2;"> di </span><span style="color:#FF79C6;">&lt;</span><span style="color:#F8F8F2;"> ddl:</span></span>
<span class="line"><span style="color:#F8F8F2;"> qd </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> quote_datas.iloc[qi]</span></span>
<span class="line"><span style="color:#F8F8F2;"> dd </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> divid_datas.iloc[di]</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> qd.name </span><span style="color:#FF79C6;">&gt;=</span><span style="color:#F8F8F2;"> dd.name:</span></span>
<span class="line"><span style="color:#F8F8F2;"> dr </span><span style="color:#FF79C6;">*=</span><span style="color:#F8F8F2;"> dd[</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">dr</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">]</span></span>
<span class="line"><span style="color:#F8F8F2;"> di </span><span style="color:#FF79C6;">+=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">1</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> qd.name </span><span style="color:#FF79C6;">&lt;=</span><span style="color:#F8F8F2;"> dd.name:</span></span>
<span class="line"><span style="color:#F8F8F2;"> drl.append(dr)</span></span>
<span class="line"><span style="color:#F8F8F2;"> qi </span><span style="color:#FF79C6;">+=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">1</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">while</span><span style="color:#F8F8F2;"> qi </span><span style="color:#FF79C6;">&lt;</span><span style="color:#F8F8F2;"> qdl:</span></span>
<span class="line"><span style="color:#F8F8F2;"> drl.append(dr)</span></span>
<span class="line"><span style="color:#F8F8F2;"> qi </span><span style="color:#FF79C6;">+=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">1</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">return</span><span style="color:#F8F8F2;"> pd.DataFrame(drl, </span><span style="color:#FFB86C;font-style:italic;">index</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> quote_datas.index, </span><span style="color:#FFB86C;font-style:italic;">columns</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> quote_datas.columns)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">process_forward_ratio</span><span style="color:#F8F8F2;">(</span><span style="color:#FFB86C;font-style:italic;">quote_datas</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">divid_datas</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> drl </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> gen_divid_ratio(quote_datas, divid_datas)</span></span>
<span class="line"><span style="color:#F8F8F2;"> drlf </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> drl </span><span style="color:#FF79C6;">/</span><span style="color:#F8F8F2;"> drl.iloc[</span><span style="color:#FF79C6;">-</span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">]</span></span>
<span class="line"><span style="color:#F8F8F2;"> result </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> (quote_datas </span><span style="color:#FF79C6;">*</span><span style="color:#F8F8F2;"> drlf).apply(</span><span style="color:#FF79C6;">lambda</span><span style="color:#F8F8F2;"> </span><span style="color:#FFB86C;font-style:italic;">x</span><span style="color:#F8F8F2;">: </span><span style="color:#8BE9FD;">round</span><span style="color:#F8F8F2;">(x, </span><span style="color:#BD93F9;">2</span><span style="color:#F8F8F2;">))</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">return</span><span style="color:#F8F8F2;"> result</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">process_backward_ratio</span><span style="color:#F8F8F2;">(</span><span style="color:#FFB86C;font-style:italic;">quote_datas</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">divid_datas</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> drl </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> gen_divid_ratio(quote_datas, divid_datas)</span></span>
<span class="line"><span style="color:#F8F8F2;"> result </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> (quote_datas </span><span style="color:#FF79C6;">*</span><span style="color:#F8F8F2;"> drl).apply(</span><span style="color:#FF79C6;">lambda</span><span style="color:#F8F8F2;"> </span><span style="color:#FFB86C;font-style:italic;">x</span><span style="color:#F8F8F2;">: </span><span style="color:#8BE9FD;">round</span><span style="color:#F8F8F2;">(x, </span><span style="color:#BD93F9;">2</span><span style="color:#F8F8F2;">))</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">return</span><span style="color:#F8F8F2;"> result</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">process_forward</span><span style="color:#F8F8F2;">(</span><span style="color:#FFB86C;font-style:italic;">quote_datas1</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">divid_datas</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> quote_datas </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> quote_datas1.copy()</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">calc_front</span><span style="color:#F8F8F2;">(</span><span style="color:#FFB86C;font-style:italic;">v</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">d</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">return</span><span style="color:#F8F8F2;"> ((v </span><span style="color:#FF79C6;">-</span><span style="color:#F8F8F2;"> d[</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">interest</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">] </span><span style="color:#FF79C6;">+</span><span style="color:#F8F8F2;"> d[</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">allotPrice</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">] </span><span style="color:#FF79C6;">*</span><span style="color:#F8F8F2;"> d[</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">allotNum</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">])</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">/</span><span style="color:#F8F8F2;"> (</span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">+</span><span style="color:#F8F8F2;"> d[</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">allotNum</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">] </span><span style="color:#FF79C6;">+</span><span style="color:#F8F8F2;"> d[</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">stockBonus</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">] </span><span style="color:#FF79C6;">+</span><span style="color:#F8F8F2;"> d[</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">stockGift</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">]))</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> qi </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">range</span><span style="color:#F8F8F2;">(</span><span style="color:#8BE9FD;">len</span><span style="color:#F8F8F2;">(quote_datas)):</span></span>
<span class="line"><span style="color:#F8F8F2;"> q </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> quote_datas.iloc[qi]</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> di </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">range</span><span style="color:#F8F8F2;">(</span><span style="color:#8BE9FD;">len</span><span style="color:#F8F8F2;">(divid_datas)):</span></span>
<span class="line"><span style="color:#F8F8F2;"> d </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> divid_datas.iloc[di]</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> d.name </span><span style="color:#FF79C6;">&lt;=</span><span style="color:#F8F8F2;"> q.name:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">continue</span></span>
<span class="line"><span style="color:#F8F8F2;"> q.iloc[</span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;">] </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> calc_front(q.iloc[</span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;">], d)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">return</span><span style="color:#F8F8F2;"> quote_datas</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">process_backward</span><span style="color:#F8F8F2;">(</span><span style="color:#FFB86C;font-style:italic;">quote_datas1</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">divid_datas</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> quote_datas </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> quote_datas1.copy()</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">calc_back</span><span style="color:#F8F8F2;">(</span><span style="color:#FFB86C;font-style:italic;">v</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">d</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">return</span><span style="color:#F8F8F2;"> ((v </span><span style="color:#FF79C6;">*</span><span style="color:#F8F8F2;"> (</span><span style="color:#BD93F9;">1.0</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">+</span><span style="color:#F8F8F2;"> d[</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">stockGift</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">] </span><span style="color:#FF79C6;">+</span><span style="color:#F8F8F2;"> d[</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">stockBonus</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">] </span><span style="color:#FF79C6;">+</span><span style="color:#F8F8F2;"> d[</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">allotNum</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">])</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">+</span><span style="color:#F8F8F2;"> d[</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">interest</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">] </span><span style="color:#FF79C6;">-</span><span style="color:#F8F8F2;"> d[</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">allotNum</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">] </span><span style="color:#FF79C6;">*</span><span style="color:#F8F8F2;"> d[</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">allotPrice</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">]))</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> qi </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">range</span><span style="color:#F8F8F2;">(</span><span style="color:#8BE9FD;">len</span><span style="color:#F8F8F2;">(quote_datas)):</span></span>
<span class="line"><span style="color:#F8F8F2;"> q </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> quote_datas.iloc[qi]</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> di </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">range</span><span style="color:#F8F8F2;">(</span><span style="color:#8BE9FD;">len</span><span style="color:#F8F8F2;">(divid_datas) </span><span style="color:#FF79C6;">-</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">, </span><span style="color:#FF79C6;">-</span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">, </span><span style="color:#FF79C6;">-</span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> d </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> divid_datas.iloc[di]</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> d.name </span><span style="color:#FF79C6;">&gt;</span><span style="color:#F8F8F2;"> q.name:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">continue</span></span>
<span class="line"><span style="color:#F8F8F2;"> q.iloc[</span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;">] </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> calc_back(q.iloc[</span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;">], d)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">return</span><span style="color:#F8F8F2;"> quote_datas</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;">#--------------------------------</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">s </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">002594.SZ</span><span style="color:#E9F284;">&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;">#xtdata.download_history_data(s, &#39;1d&#39;, &#39;20100101&#39;, &#39;&#39;)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">dd </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata.get_divid_factors(s)</span></span>
<span class="line"><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(dd)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;">#复权计算用于处理价格字段</span></span>
<span class="line"><span style="color:#F8F8F2;">field_list </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> [</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">open</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">high</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">low</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">close</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">]</span></span>
<span class="line"><span style="color:#F8F8F2;">datas_ori </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata.get_market_data(field_list, [s], </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">1d</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">dividend_type</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">none</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)[</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">close</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">].T</span></span>
<span class="line"><span style="color:#6272A4;">#print(datas_ori)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;">#等比前复权</span></span>
<span class="line"><span style="color:#F8F8F2;">datas_forward_ratio </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> process_forward_ratio(datas_ori, dd)</span></span>
<span class="line"><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">datas_forward_ratio</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, datas_forward_ratio)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;">#等比后复权</span></span>
<span class="line"><span style="color:#F8F8F2;">datas_backward_ratio </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> process_backward_ratio(datas_ori, dd)</span></span>
<span class="line"><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">datas_backward_ratio</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, datas_backward_ratio)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;">#前复权</span></span>
<span class="line"><span style="color:#F8F8F2;">datas_forward </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> process_forward(datas_ori, dd)</span></span>
<span class="line"><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">datas_forward</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, datas_forward)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;">#后复权</span></span>
<span class="line"><span style="color:#F8F8F2;">datas_backward </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> process_backward(datas_ori, dd)</span></span>
<span class="line"><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">datas_backward</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, datas_backward)</span></span>
<span class="line"></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p></p></div><!--]--></div><h3 id="根据商品期货期权代码获取对应的商品期货合约代码" tabindex="-1"><a class="header-anchor" href="#根据商品期货期权代码获取对应的商品期货合约代码" aria-hidden="true">#</a> 根据商品期货期权代码获取对应的商品期货合约代码</h3><div class="vp-tabs"><div class="vp-tabs-nav" role="tablist"><button type="button" class="vp-tab-nav active" role="tab" aria-controls="tab-74-0" aria-selected="true">python</button><button type="button" class="vp-tab-nav" role="tab" aria-controls="tab-74-1" aria-selected="false">返回值</button></div><!--[--><div class="vp-tab active" id="tab-74-0" role="tabpanel" aria-expanded="true"><div class="language-python line-numbers-mode" data-ext="py"><pre class="shiki dracula" style="background-color:#282A36;" tabindex="0"><code><span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtdata</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">get_option_underline_code</span><span style="color:#F8F8F2;">(</span><span style="color:#FFB86C;font-style:italic;">code</span><span style="color:#FF79C6;">:</span><span style="color:#8BE9FD;font-style:italic;">str</span><span style="color:#F8F8F2;">) </span><span style="color:#FF79C6;">-&gt;</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;font-style:italic;">str</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 注意:该函数不适用于股指期货期权与ETF期权</span></span>
<span class="line"><span style="color:#6272A4;"> Todo: 根据商品期权代码获取对应的具体商品期货合约</span></span>
<span class="line"><span style="color:#6272A4;"> Args:</span></span>
<span class="line"><span style="color:#6272A4;"> code:str 期权代码</span></span>
<span class="line"><span style="color:#6272A4;"> Return:</span></span>
<span class="line"><span style="color:#6272A4;"> 对应的期货合约代码</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> Exchange_dict </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> {</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">SHFE</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">:</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">SF</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">,</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">CZCE</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">:</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">ZF</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">,</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">DCE</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">:</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">DF</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">,</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">INE</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">:</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">INE</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">,</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">GFEX</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">:</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">GF</span><span style="color:#E9F284;">&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> }</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> code.split(</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">.</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">)[</span><span style="color:#FF79C6;">-</span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">] </span><span style="color:#FF79C6;">not</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> [v </span><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> k,v </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> Exchange_dict.items()]:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">raise</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;font-style:italic;">KeyError</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">此函数不支持该交易所合约</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> info </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata.get_option_detail_data(code)</span></span>
<span class="line"><span style="color:#F8F8F2;"> underline_code </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> info[</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">OptUndlCode</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">] </span><span style="color:#FF79C6;">+</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">.</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">+</span><span style="color:#F8F8F2;"> Exchange_dict[info[</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">OptUndlMarket</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">]]</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">return</span><span style="color:#F8F8F2;"> underline_code</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">__name__</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">==</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">__main__</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> symbol_code </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> get_option_underline_code(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">sc2403C465.INE</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">) </span><span style="color:#6272A4;"># 获取期权合约&#39;sc2403C465.INE&#39;对应的期货合约代码</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(symbol_code)</span></span>
<span class="line"></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div><div class="vp-tab" id="tab-74-1" role="tabpanel" aria-expanded="false"><div class="language-python line-numbers-mode" data-ext="py"><pre class="shiki dracula" style="background-color:#282A36;" tabindex="0"><code><span class="line"><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">sc2403.INE</span><span style="color:#E9F284;">&#39;</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p></p></div><!--]--></div><h3 id="根据指数代码-返回对应的期货合约" tabindex="-1"><a class="header-anchor" href="#根据指数代码-返回对应的期货合约" aria-hidden="true">#</a> 根据指数代码,返回对应的期货合约</h3><div class="vp-tabs"><div class="vp-tabs-nav" role="tablist"><button type="button" class="vp-tab-nav active" role="tab" aria-controls="tab-88-0" aria-selected="true">python</button><button type="button" class="vp-tab-nav" role="tab" aria-controls="tab-88-1" aria-selected="false">返回值</button></div><!--[--><div class="vp-tab active" id="tab-88-0" role="tabpanel" aria-expanded="true"><div class="language-python line-numbers-mode" data-ext="py"><pre class="shiki dracula" style="background-color:#282A36;" tabindex="0"><code><span class="line"></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtdata</span></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> re</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">get_financial_futures_code_from_index</span><span style="color:#F8F8F2;">(</span><span style="color:#FFB86C;font-style:italic;">index_code</span><span style="color:#FF79C6;">:</span><span style="color:#8BE9FD;font-style:italic;">str</span><span style="color:#F8F8F2;">) </span><span style="color:#FF79C6;">-&gt;</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;font-style:italic;">list</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> ToDo:传入指数代码,返回对应的期货合约(当前)</span></span>
<span class="line"><span style="color:#6272A4;"> Args:</span></span>
<span class="line"><span style="color:#6272A4;"> index_code:指数代码,如&quot;000300.SH&quot;,&quot;000905.SH&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> Retuen:</span></span>
<span class="line"><span style="color:#6272A4;"> list: 对应期货合约列表</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> financial_futures </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata.get_stock_list_in_sector(</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">中金所</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> future_list </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> []</span></span>
<span class="line"><span style="color:#F8F8F2;"> pattern </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">r</span><span style="color:#FF5555;">&#39;</span><span style="color:#8BE9FD;font-style:italic;">^</span><span style="color:#BD93F9;">[a-zA-Z]</span><span style="color:#FF79C6;">{1,2}</span><span style="color:#8BE9FD;font-style:italic;">\d</span><span style="color:#FF79C6;">{3,4}\.</span><span style="color:#BD93F9;">[A-Z]</span><span style="color:#FF79C6;">{2}</span><span style="color:#8BE9FD;font-style:italic;">$</span><span style="color:#FF5555;">&#39;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> i </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> financial_futures:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> re.match(pattern,i):</span></span>
<span class="line"><span style="color:#F8F8F2;"> future_list.append(i)</span></span>
<span class="line"><span style="color:#F8F8F2;"> ls </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> []</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> i </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> future_list:</span></span>
<span class="line"><span style="color:#F8F8F2;"> _info </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata._get_instrument_detail(i)</span></span>
<span class="line"><span style="color:#F8F8F2;"> _index_code </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> _info[</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">ExtendInfo</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">][</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">OptUndlCode</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">] </span><span style="color:#FF79C6;">+</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">.</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">+</span><span style="color:#F8F8F2;"> _info[</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">ExtendInfo</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">][</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">OptUndlMarket</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">]</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> _index_code </span><span style="color:#FF79C6;">==</span><span style="color:#F8F8F2;"> index_code:</span></span>
<span class="line"><span style="color:#F8F8F2;"> ls.append(i)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">return</span><span style="color:#F8F8F2;"> ls</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">__name__</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">==</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">__main__</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> ls </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> get_financial_futures_code_from_index(</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">000905.SH</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(ls)</span></span>
<span class="line"></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div><div class="vp-tab" id="tab-88-1" role="tabpanel" aria-expanded="false"><div class="language-python line-numbers-mode" data-ext="py"><pre class="shiki dracula" style="background-color:#282A36;" tabindex="0"><code><span class="line"><span style="color:#F8F8F2;">[</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">IC2402.IF</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">IC2403.IF</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">IC2406.IF</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">IC2409.IF</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">]</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></div><!--]--></div><h3 id="高频因子数据创建" tabindex="-1"><a class="header-anchor" href="#高频因子数据创建" aria-hidden="true">#</a> 高频因子数据创建</h3><div class="vp-tabs"><div class="vp-tabs-nav" role="tablist"><button type="button" class="vp-tab-nav active" role="tab" aria-controls="tab-99-0" aria-selected="true">创建</button><button type="button" class="vp-tab-nav" role="tab" aria-controls="tab-99-1" aria-selected="false">获取</button></div><!--[--><div class="vp-tab active" id="tab-99-0" role="tabpanel" aria-expanded="true"><div class="language-python line-numbers-mode" data-ext="py"><pre class="shiki dracula" style="background-color:#282A36;" tabindex="0"><code><span class="line"><span style="color:#6272A4;">#coding:utf-8</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtquant.invadv </span><span style="color:#FF79C6;">as</span><span style="color:#F8F8F2;"> xtia</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">remote_host </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">115.231.218.7</span><span style="color:#E9F284;">&#39;</span></span>
<span class="line"><span style="color:#F8F8F2;">remote_port </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">55300</span></span>
<span class="line"><span style="color:#F8F8F2;">user_name </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">授权账号</span><span style="color:#E9F284;">&#39;</span></span>
<span class="line"><span style="color:#F8F8F2;">password </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">授权账号对应密码</span><span style="color:#E9F284;">&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 连接云服务</span></span>
<span class="line"><span style="color:#F8F8F2;">api </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtia.InvAdv()</span></span>
<span class="line"><span style="color:#F8F8F2;">api.set_remote_addr(remote_host, remote_port)</span></span>
<span class="line"><span style="color:#F8F8F2;">api.set_user(user_name, password)</span></span>
<span class="line"><span style="color:#F8F8F2;">api.connect()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 查询高频因子数据列表</span></span>
<span class="line"><span style="color:#F8F8F2;">ret_sector_dict </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> api.get_block_list()</span></span>
<span class="line"><span style="color:#F8F8F2;">new_dict </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> {v: k </span><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> k, v </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> ret_sector_dict.items()}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 创建新的因子</span></span>
<span class="line"><span style="color:#F8F8F2;">fp_name </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">盘口价差</span><span style="color:#E9F284;">&#39;</span></span>
<span class="line"><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> fp_name </span><span style="color:#FF79C6;">not</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> new_dict:</span></span>
<span class="line"><span style="color:#F8F8F2;"> api.create_block(fp_name)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&#39;创建</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">fp_name</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 格式 {股票1: 因子值, 股票2: 因子值 ...}</span></span>
<span class="line"><span style="color:#F8F8F2;">codes </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> {</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">002594.SZ</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">: </span><span style="color:#BD93F9;">0.009</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">300750.SZ</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">: </span><span style="color:#BD93F9;">0.007</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">688001.SH</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">: </span><span style="color:#BD93F9;">0.1</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">000001.SZ</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">:</span><span style="color:#BD93F9;">0.2</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">300751.SZ</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">:</span><span style="color:#BD93F9;">0.3</span><span style="color:#F8F8F2;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 查询高频因子数据列表</span></span>
<span class="line"><span style="color:#F8F8F2;">ret_sector_dict </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> api.get_block_list()</span></span>
<span class="line"><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&#39;查询高频因子数据列表:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">ret_sector_dict</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 创建高频因子内容</span></span>
<span class="line"><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> k_msg_id, v </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> ret_sector_dict.items():</span></span>
<span class="line"><span style="color:#F8F8F2;"> write_codes </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> []</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> v </span><span style="color:#FF79C6;">==</span><span style="color:#F8F8F2;"> fp_name:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> code, value </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> codes.items():</span></span>
<span class="line"><span style="color:#F8F8F2;"> write_codes.append(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&#39;</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">code</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">|</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">value</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 创建代码</span></span>
<span class="line"><span style="color:#F8F8F2;"> api.push_block(k_msg_id, write_codes)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&#39;表:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">fp_name</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> id:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">k_msg_id</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">write_codes</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&#39;创建结束!&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">====end====</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div><div class="vp-tab" id="tab-99-1" role="tabpanel" aria-expanded="false"><div class="language-python line-numbers-mode" data-ext="py"><pre class="shiki dracula" style="background-color:#282A36;" tabindex="0"><code><span class="line"><span style="color:#6272A4;">#coding:utf-8</span></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> time</span></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> json</span></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> os</span></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtquant.invadv </span><span style="color:#FF79C6;">as</span><span style="color:#F8F8F2;"> xtia</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">api </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtia.InvAdv()</span></span>
<span class="line"><span style="color:#F8F8F2;">api.set_remote_addr(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">115.231.218.7</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#BD93F9;">55300</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;">api.set_user(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">授权账号</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">授权账号对应密码</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;">api.connect()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">sector_gt_dict </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> {}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">while</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> ret_sector_dict </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> api.get_block_list()</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> mid, v </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> ret_sector_dict.items():</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> v </span><span style="color:#FF79C6;">==</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">盘口价差</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 首次获取内容</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> mid </span><span style="color:#FF79C6;">not</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> sector_gt_dict:</span></span>
<span class="line"><span style="color:#F8F8F2;"> basket_list </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> api.pull_block(mid)</span></span>
<span class="line"><span style="color:#F8F8F2;"> sector_gt_dict[mid] </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> basket_list</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&#39;首次获取:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">v</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">mid</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 长度:</span><span style="color:#BD93F9;">{</span><span style="color:#8BE9FD;">len</span><span style="color:#F8F8F2;">(basket_list)</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 内容:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">sector_gt_dict[mid]</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">else</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">try</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 监听因子变动, 如果有变化, 返回True 获取内容</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> api.check_outdated(mid):</span></span>
<span class="line"><span style="color:#F8F8F2;"> basket_list </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> api.pull_block(mid)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> basket_list </span><span style="color:#FF79C6;">==</span><span style="color:#F8F8F2;"> []:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">continue</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&#39;因子:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">v</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 有新的更新!&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> sector_gt_dict[mid] </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> basket_list</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&#39;更新获取:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">v</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">mid</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 长度:</span><span style="color:#BD93F9;">{</span><span style="color:#8BE9FD;">len</span><span style="color:#F8F8F2;">(basket_list)</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 内容:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">sector_gt_dict[mid]</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">except</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">pass</span></span>
<span class="line"><span style="color:#F8F8F2;"> time.sleep(</span><span style="color:#BD93F9;">5</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div><!--]--></div><h2 id="交易示例" tabindex="-1"><a class="header-anchor" href="#交易示例" aria-hidden="true">#</a> 交易示例</h2><h3 id="简单买卖各一笔示例" tabindex="-1"><a class="header-anchor" href="#简单买卖各一笔示例" aria-hidden="true">#</a> 简单买卖各一笔示例</h3><p><strong>需要调整的参数:</strong></p><ul><li><code>98</code>行的<code>path</code>变量需要改为本地客户端路径,券商端指定到 f&quot;{安装目录}\userdata_mini&quot;,投研端指定到f&quot;{安装目录}\userdata&quot;</li><li><code>107</code>行的资金账号需要调整为自身资金账号</li></ul><div class="vp-tabs"><div class="vp-tabs-nav" role="tablist"><button type="button" class="vp-tab-nav active" role="tab" aria-controls="tab-128-0" aria-selected="true"></button></div><!--[--><div class="vp-tab active" id="tab-128-0" role="tabpanel" aria-expanded="true"><div class="language-python line-numbers-mode" data-ext="py"><pre class="shiki dracula" style="background-color:#282A36;" tabindex="0"><code><span class="line"><span style="color:#6272A4;"># coding:utf-8</span></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> time, datetime, traceback, sys</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtdata</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant.xttrader </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> XtQuantTrader, XtQuantTraderCallback</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant.xttype </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> StockAccount</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtconstant</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 定义一个类 创建类的实例 作为状态的容器</span></span>
<span class="line"><span style="color:#FF79C6;">class</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">_a</span><span style="color:#F8F8F2;">():</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">pass</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">A </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> _a()</span></span>
<span class="line"><span style="color:#F8F8F2;">A.bought_list </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> []</span></span>
<span class="line"><span style="color:#F8F8F2;">A.hsa </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata.get_stock_list_in_sector(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">沪深A股</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">interact</span><span style="color:#F8F8F2;">():</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;执行后进入repl模式&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> code</span></span>
<span class="line"><span style="color:#F8F8F2;"> code.InteractiveConsole(</span><span style="color:#FFB86C;font-style:italic;">locals</span><span style="color:#FF79C6;">=</span><span style="color:#8BE9FD;">globals</span><span style="color:#F8F8F2;">()).interact()</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">xtdata.download_sector_data()</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">class</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">MyXtQuantTraderCallback</span><span style="color:#F8F8F2;">(</span><span style="color:#8BE9FD;font-style:italic;">XtQuantTraderCallback</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_disconnected</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 连接断开</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">连接断开回调</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_stock_order</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">order</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 委托回报推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param order: XtOrder对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">委托回调 投资备注</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, order.order_remark)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_stock_trade</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">trade</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 成交变动推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param trade: XtTrade对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">成交回调</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, trade.order_remark, </span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;委托方向(48买 49卖) </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">trade.offset_flag</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 成交价格 </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">trade.traded_price</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 成交数量 </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">trade.traded_volume</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_order_error</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">order_error</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 委托失败推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param order_error:XtOrderError 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># print(&quot;on order_error callback&quot;)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># print(order_error.order_id, order_error.error_id, order_error.error_msg)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;委托报错回调 </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order_error.order_remark</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order_error.error_msg</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_cancel_error</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">cancel_error</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 撤单失败推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param cancel_error: XtCancelError 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), sys._getframe().f_code.co_name)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_order_stock_async_response</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">response</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 异步下单回报推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param response: XtOrderResponse 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;异步委托回调 投资备注: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">response.order_remark</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_cancel_order_stock_async_response</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">response</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> :param response: XtCancelOrderResponse 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), sys._getframe().f_code.co_name)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_account_status</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">status</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> :param response: XtAccountStatus 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), sys._getframe().f_code.co_name)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">__name__</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">==</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">__main__</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">start</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 指定客户端所在路径, 券商端指定到 userdata_mini文件夹</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 注意:如果是连接投研端进行交易,文件目录需要指定到f&quot;{安装目录}\userdata&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> path </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">r</span><span style="color:#FF5555;">&#39;</span><span style="color:#F1FA8C;">D:</span><span style="color:#FF79C6;">\q</span><span style="color:#F1FA8C;">mt</span><span style="color:#FF79C6;">\投</span><span style="color:#F1FA8C;"></span><span style="color:#FF79C6;">\迅</span><span style="color:#F1FA8C;">投极速交易终端睿智融科版</span><span style="color:#FF79C6;">\u</span><span style="color:#F1FA8C;">serdata</span><span style="color:#FF5555;">&#39;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 生成session id 整数类型 同时运行的策略不能重复</span></span>
<span class="line"><span style="color:#F8F8F2;"> session_id </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;font-style:italic;">int</span><span style="color:#F8F8F2;">(time.time())</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> XtQuantTrader(path, session_id)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 开启主动请求接口的专用线程 开启后在on_stock_xxx回调函数里调用XtQuantTrader.query_xxx函数不会卡住回调线程,但是查询和推送的数据在时序上会变得不确定</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 详见: http://docs.thinktrader.net/vip/pages/ee0e9b/#开启主动请求接口的专用线程</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># xt_trader.set_relaxed_response_order_enabled(True)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 创建资金账号为 800068 的证券账号对象 股票账号为STOCK 信用CREDIT 期货FUTURE</span></span>
<span class="line"><span style="color:#F8F8F2;"> acc </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> StockAccount(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">2000128</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">STOCK</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 创建交易回调类对象,并声明接收回调</span></span>
<span class="line"><span style="color:#F8F8F2;"> callback </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> MyXtQuantTraderCallback()</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader.register_callback(callback)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 启动交易线程</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader.start()</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 建立交易连接,返回0表示连接成功</span></span>
<span class="line"><span style="color:#F8F8F2;"> connect_result </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xt_trader.connect()</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">建立交易连接,返回0表示连接成功</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, connect_result)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 对交易回调进行订阅,订阅后可以收到交易主推,返回0表示订阅成功</span></span>
<span class="line"><span style="color:#F8F8F2;"> subscribe_result </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xt_trader.subscribe(acc)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">对交易回调进行订阅,订阅后可以收到交易主推,返回0表示订阅成功</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, subscribe_result)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#取账号信息</span></span>
<span class="line"><span style="color:#F8F8F2;"> account_info </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xt_trader.query_stock_asset(acc)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#取可用资金</span></span>
<span class="line"><span style="color:#F8F8F2;"> available_cash </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> account_info.m_dCash</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(acc.account_id, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">可用资金</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, available_cash)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#查账号持仓</span></span>
<span class="line"><span style="color:#F8F8F2;"> positions </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xt_trader.query_stock_positions(acc)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#取各品种 总持仓 可用持仓</span></span>
<span class="line"><span style="color:#F8F8F2;"> position_total_dict </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> {i.stock_code : i.m_nVolume </span><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> i </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> positions}</span></span>
<span class="line"><span style="color:#F8F8F2;"> position_available_dict </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> {i.stock_code : i.m_nCanUseVolume </span><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> i </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> positions}</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(acc.account_id, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">持仓字典</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, position_total_dict)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(acc.account_id, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">可用持仓字典</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, position_available_dict)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#买入 浦发银行 最新价 两万元</span></span>
<span class="line"><span style="color:#F8F8F2;"> stock </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">600000.SH</span><span style="color:#E9F284;">&#39;</span></span>
<span class="line"><span style="color:#F8F8F2;"> target_amount </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">20000</span></span>
<span class="line"><span style="color:#F8F8F2;"> full_tick </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata.get_full_tick([stock])</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">stock</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 全推行情: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">full_tick</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> current_price </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> full_tick[stock][</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">lastPrice</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">]</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#买入金额 取目标金额 与 可用金额中较小的</span></span>
<span class="line"><span style="color:#F8F8F2;"> buy_amount </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">min</span><span style="color:#F8F8F2;">(target_amount, available_cash)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#买入数量 取整为100的整数倍</span></span>
<span class="line"><span style="color:#F8F8F2;"> buy_vol </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;font-style:italic;">int</span><span style="color:#F8F8F2;">(buy_amount </span><span style="color:#FF79C6;">/</span><span style="color:#F8F8F2;"> current_price </span><span style="color:#FF79C6;">/</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">100</span><span style="color:#F8F8F2;">) </span><span style="color:#FF79C6;">*</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">100</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;当前可用资金 </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">available_cash</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 目标买入金额 </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">target_amount</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 买入股数 </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">buy_vol</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> async_seq </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xt_trader.order_stock_async(acc, stock, xtconstant.</span><span style="color:#BD93F9;">STOCK_BUY</span><span style="color:#F8F8F2;">, buy_vol, xtconstant.</span><span style="color:#BD93F9;">FIX_PRICE</span><span style="color:#F8F8F2;">, current_price,</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">strategy_name</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, stock)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#卖出 500股</span></span>
<span class="line"><span style="color:#F8F8F2;"> stock </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">513130.SH</span><span style="color:#E9F284;">&#39;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#目标数量</span></span>
<span class="line"><span style="color:#F8F8F2;"> target_vol </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">500</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#可用数量</span></span>
<span class="line"><span style="color:#F8F8F2;"> available_vol </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> position_available_dict[stock] </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> stock </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> position_available_dict </span><span style="color:#FF79C6;">else</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">0</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#卖出量取目标量与可用量中较小的</span></span>
<span class="line"><span style="color:#F8F8F2;"> sell_vol </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">min</span><span style="color:#F8F8F2;">(target_vol, available_vol)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">stock</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 目标卖出量 </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">target_vol</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 可用数量 </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">available_vol</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 卖出 </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">sell_vol</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> sell_vol </span><span style="color:#FF79C6;">&gt;</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> async_seq </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xt_trader.order_stock_async(acc, stock, xtconstant.</span><span style="color:#BD93F9;">STOCK_SELL</span><span style="color:#F8F8F2;">, sell_vol, xtconstant.</span><span style="color:#BD93F9;">LATEST_PRICE</span><span style="color:#F8F8F2;">,</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">-</span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">,</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">strategy_name</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, stock)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;下单完成 等待回调&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 阻塞主线程退出</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader.run_forever()</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 如果使用vscode pycharm等本地编辑器 可以进入交互模式 方便调试 (把上一行的run_forever注释掉 否则不会执行到这里)</span></span>
<span class="line"><span style="color:#F8F8F2;"> interact()</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p></p></div><!--]--></div><h3 id="单股订阅实盘示例" tabindex="-1"><a class="header-anchor" href="#单股订阅实盘示例" aria-hidden="true">#</a> 单股订阅实盘示例</h3><p><strong>需要调整的参数:</strong></p><ul><li><code>113</code>行的<code>path</code>变量需要改为本地客户端路径,券商端指定到 f&quot;{安装目录}\userdata_mini&quot;,投研端指定到f&quot;{安装目录}\userdata&quot;</li><li><code>122</code>行的资金账号需要调整为自身资金账号</li></ul><div class="vp-tabs"><div class="vp-tabs-nav" role="tablist"><button type="button" class="vp-tab-nav active" role="tab" aria-controls="tab-154-0" aria-selected="true">python</button></div><!--[--><div class="vp-tab active" id="tab-154-0" role="tabpanel" aria-expanded="true"><div class="language-python line-numbers-mode" data-ext="py"><pre class="shiki dracula" style="background-color:#282A36;" tabindex="0"><code><span class="line"><span style="color:#6272A4;"># coding:utf-8</span></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> time, datetime, traceback, sys</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtdata</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant.xttrader </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> XtQuantTrader, XtQuantTraderCallback</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant.xttype </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> StockAccount</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtconstant</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 定义一个类 创建类的实例 作为状态的容器</span></span>
<span class="line"><span style="color:#FF79C6;">class</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">_a</span><span style="color:#F8F8F2;">():</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">pass</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">A </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> _a()</span></span>
<span class="line"><span style="color:#F8F8F2;">A.bought_list </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> []</span></span>
<span class="line"><span style="color:#F8F8F2;">A.hsa </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata.get_stock_list_in_sector(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">沪深A股</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">interact</span><span style="color:#F8F8F2;">():</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;执行后进入repl模式&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> code</span></span>
<span class="line"><span style="color:#F8F8F2;"> code.InteractiveConsole(</span><span style="color:#FFB86C;font-style:italic;">locals</span><span style="color:#FF79C6;">=</span><span style="color:#8BE9FD;">globals</span><span style="color:#F8F8F2;">()).interact()</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">xtdata.download_sector_data()</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">f</span><span style="color:#F8F8F2;">(</span><span style="color:#FFB86C;font-style:italic;">data</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(data)</span></span>
<span class="line"><span style="color:#F8F8F2;"> now </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> datetime.datetime.now()</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> stock </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> data:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> stock </span><span style="color:#FF79C6;">not</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> A.hsa:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">continue</span></span>
<span class="line"><span style="color:#F8F8F2;"> cuurent_price </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> data[stock][</span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;">][</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">close</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">]</span></span>
<span class="line"><span style="color:#F8F8F2;"> pre_price </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> data[stock][</span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;">][</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">preClose</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">]</span></span>
<span class="line"><span style="color:#F8F8F2;"> ratio </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> cuurent_price </span><span style="color:#FF79C6;">/</span><span style="color:#F8F8F2;"> pre_price </span><span style="color:#FF79C6;">-</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> pre_price </span><span style="color:#FF79C6;">&gt;</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">else</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">0</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> ratio </span><span style="color:#FF79C6;">&gt;</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">0.09</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">and</span><span style="color:#F8F8F2;"> stock </span><span style="color:#FF79C6;">not</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> A.bought_list:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">now</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 最新价 买入 </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">stock</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 100股&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> async_seq </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xt_trader.order_stock_async(acc, stock, xtconstant.</span><span style="color:#BD93F9;">STOCK_BUY</span><span style="color:#F8F8F2;">, </span><span style="color:#BD93F9;">100</span><span style="color:#F8F8F2;">, xtconstant.</span><span style="color:#BD93F9;">LATEST_PRICE</span><span style="color:#F8F8F2;">, </span><span style="color:#FF79C6;">-</span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">,</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">strategy_name</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, stock)</span></span>
<span class="line"><span style="color:#F8F8F2;"> A.bought_list.append(stock)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">class</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">MyXtQuantTraderCallback</span><span style="color:#F8F8F2;">(</span><span style="color:#8BE9FD;font-style:italic;">XtQuantTraderCallback</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_disconnected</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 连接断开</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">连接断开回调</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_stock_order</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">order</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 委托回报推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param order: XtOrder对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">委托回调</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, order.order_remark)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_stock_trade</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">trade</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 成交变动推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param trade: XtTrade对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">成交回调</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, trade.order_remark)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_order_error</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">order_error</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 委托失败推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param order_error:XtOrderError 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># print(&quot;on order_error callback&quot;)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># print(order_error.order_id, order_error.error_id, order_error.error_msg)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;委托报错回调 </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order_error.order_remark</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order_error.error_msg</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_cancel_error</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">cancel_error</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 撤单失败推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param cancel_error: XtCancelError 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), sys._getframe().f_code.co_name)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_order_stock_async_response</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">response</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 异步下单回报推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param response: XtOrderResponse 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;异步委托回调 </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">response.order_remark</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_cancel_order_stock_async_response</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">response</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> :param response: XtCancelOrderResponse 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), sys._getframe().f_code.co_name)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_account_status</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">status</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> :param response: XtAccountStatus 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), sys._getframe().f_code.co_name)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">__name__</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">==</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">__main__</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">start</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 指定客户端所在路径, 券商端指定到 userdata_mini文件夹</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 注意:如果是连接投研端进行交易,文件目录需要指定到f&quot;{安装目录}\userdata&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> path </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">r</span><span style="color:#FF5555;">&#39;</span><span style="color:#F1FA8C;">D:</span><span style="color:#FF79C6;">\q</span><span style="color:#F1FA8C;">mt</span><span style="color:#FF79C6;">\投</span><span style="color:#F1FA8C;"></span><span style="color:#FF79C6;">\迅</span><span style="color:#F1FA8C;">投极速交易终端睿智融科版</span><span style="color:#FF79C6;">\u</span><span style="color:#F1FA8C;">serdata</span><span style="color:#FF5555;">&#39;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 生成session id 整数类型 同时运行的策略不能重复</span></span>
<span class="line"><span style="color:#F8F8F2;"> session_id </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;font-style:italic;">int</span><span style="color:#F8F8F2;">(time.time())</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> XtQuantTrader(path, session_id)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 开启主动请求接口的专用线程 开启后在on_stock_xxx回调函数里调用XtQuantTrader.query_xxx函数不会卡住回调线程,但是查询和推送的数据在时序上会变得不确定</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 详见: http://docs.thinktrader.net/vip/pages/ee0e9b/#开启主动请求接口的专用线程</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># xt_trader.set_relaxed_response_order_enabled(True)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 创建资金账号为 800068 的证券账号对象 股票账号为STOCK 信用CREDIT 期货FUTURE</span></span>
<span class="line"><span style="color:#F8F8F2;"> acc </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> StockAccount(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">2000128</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">STOCK</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 创建交易回调类对象,并声明接收回调</span></span>
<span class="line"><span style="color:#F8F8F2;"> callback </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> MyXtQuantTraderCallback()</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader.register_callback(callback)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 启动交易线程</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader.start()</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 建立交易连接,返回0表示连接成功</span></span>
<span class="line"><span style="color:#F8F8F2;"> connect_result </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xt_trader.connect()</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">建立交易连接,返回0表示连接成功</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, connect_result)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 对交易回调进行订阅,订阅后可以收到交易主推,返回0表示订阅成功</span></span>
<span class="line"><span style="color:#F8F8F2;"> subscribe_result </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xt_trader.subscribe(acc)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">对交易回调进行订阅,订阅后可以收到交易主推,返回0表示订阅成功</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, subscribe_result)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#订阅的品种列表</span></span>
<span class="line"><span style="color:#F8F8F2;"> code_list </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> [</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">600000.SH</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">000001.SZ</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">]</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> code </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> code_list:</span></span>
<span class="line"><span style="color:#F8F8F2;"> xtdata.subscribe_quote(code, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">1d</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">callback</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> f)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 阻塞主线程退出</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader.run_forever()</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 如果使用vscode pycharm等本地编辑器 可以进入交互模式 方便调试 (把上一行的run_forever注释掉 否则不会执行到这里)</span></span>
<span class="line"><span style="color:#F8F8F2;"> interact()</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div><!--]--></div><h3 id="全推订阅实盘示例" tabindex="-1"><a class="header-anchor" href="#全推订阅实盘示例" aria-hidden="true">#</a> 全推订阅实盘示例</h3><p>本示例用于展示如何订阅上海及深圳市场全推,对于沪深A股品种策略进行判断当前涨幅超过 9 个点的买入 200 股</p><p><strong>需要调整的参数:</strong></p><ul><li><code>111</code>行的<code>path</code>变量需要改为本地客户端路径</li><li><code>116</code>行的资金账号需要调整为自身资金账号</li></ul><div class="custom-container warning"><p class="custom-container-title">注意</p><p>本策略只用于提供策略写法及参考,若您直接进行实盘下单,造成损失本网站不负担责任。</p></div><div class="vp-tabs"><div class="vp-tabs-nav" role="tablist"><button type="button" class="vp-tab-nav active" role="tab" aria-controls="tab-185-0" aria-selected="true">python</button></div><!--[--><div class="vp-tab active" id="tab-185-0" role="tabpanel" aria-expanded="true"><div class="language-python line-numbers-mode" data-ext="py"><pre class="shiki dracula" style="background-color:#282A36;" tabindex="0"><code><span class="line"><span style="color:#6272A4;">#coding:utf-8</span></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> time, datetime, traceback, sys</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtdata</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant.xttrader </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> XtQuantTrader, XtQuantTraderCallback</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant.xttype </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> StockAccount</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtconstant</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;">#定义一个类 创建类的实例 作为状态的容器</span></span>
<span class="line"><span style="color:#FF79C6;">class</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">_a</span><span style="color:#F8F8F2;">():</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">pass</span></span>
<span class="line"><span style="color:#F8F8F2;">A </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> _a()</span></span>
<span class="line"><span style="color:#F8F8F2;">A.bought_list </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> []</span></span>
<span class="line"><span style="color:#F8F8F2;">A.hsa </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata.get_stock_list_in_sector(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">沪深A股</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">interact</span><span style="color:#F8F8F2;">():</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;执行后进入repl模式&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> code</span></span>
<span class="line"><span style="color:#F8F8F2;"> code.InteractiveConsole(</span><span style="color:#FFB86C;font-style:italic;">locals</span><span style="color:#FF79C6;">=</span><span style="color:#8BE9FD;">globals</span><span style="color:#F8F8F2;">()).interact()</span></span>
<span class="line"><span style="color:#F8F8F2;">xtdata.download_sector_data()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">f</span><span style="color:#F8F8F2;">(</span><span style="color:#FFB86C;font-style:italic;">data</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> now </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> datetime.datetime.now()</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> stock </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> data:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> stock </span><span style="color:#FF79C6;">not</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> A.hsa:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">continue</span></span>
<span class="line"><span style="color:#F8F8F2;"> cuurent_price </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> data[stock][</span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;">][</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">lastPrice</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">]</span></span>
<span class="line"><span style="color:#F8F8F2;"> pre_price </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> data[stock][</span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;">][</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">lastClose</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">]</span></span>
<span class="line"><span style="color:#F8F8F2;"> ratio </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> cuurent_price </span><span style="color:#FF79C6;">/</span><span style="color:#F8F8F2;"> pre_price </span><span style="color:#FF79C6;">-</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> pre_price </span><span style="color:#FF79C6;">&gt;</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">else</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">0</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> ratio </span><span style="color:#FF79C6;">&gt;</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">0.09</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">and</span><span style="color:#F8F8F2;"> stock </span><span style="color:#FF79C6;">not</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> A.bought_list:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">now</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 最新价 买入 </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">stock</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 200股&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> async_seq </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xt_trader.order_stock_async(acc, stock, xtconstant.</span><span style="color:#BD93F9;">STOCK_BUY</span><span style="color:#F8F8F2;">, </span><span style="color:#BD93F9;">200</span><span style="color:#F8F8F2;">, xtconstant.</span><span style="color:#BD93F9;">LATEST_PRICE</span><span style="color:#F8F8F2;">, </span><span style="color:#FF79C6;">-</span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">strategy_name</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, stock)</span></span>
<span class="line"><span style="color:#F8F8F2;"> A.bought_list.append(stock)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span></span>
<span class="line"><span style="color:#FF79C6;">class</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">MyXtQuantTraderCallback</span><span style="color:#F8F8F2;">(</span><span style="color:#8BE9FD;font-style:italic;">XtQuantTraderCallback</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_disconnected</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 连接断开</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(),</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">连接断开回调</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_stock_order</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">order</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 委托回报推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param order: XtOrder对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">委托回调</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, order.order_remark)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_stock_trade</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">trade</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 成交变动推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param trade: XtTrade对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">成交回调</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, trade.order_remark)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_order_error</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">order_error</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 委托失败推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param order_error:XtOrderError 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># print(&quot;on order_error callback&quot;)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># print(order_error.order_id, order_error.error_id, order_error.error_msg)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;委托报错回调 </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order_error.order_remark</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order_error.error_msg</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_cancel_error</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">cancel_error</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 撤单失败推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param cancel_error: XtCancelError 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), sys._getframe().f_code.co_name)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_order_stock_async_response</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">response</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 异步下单回报推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param response: XtOrderResponse 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;异步委托回调 </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">response.order_remark</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_cancel_order_stock_async_response</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">response</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> :param response: XtCancelOrderResponse 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), sys._getframe().f_code.co_name)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_account_status</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">status</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> :param response: XtAccountStatus 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), sys._getframe().f_code.co_name)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">__name__</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">==</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">__main__</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">start</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#指定客户端所在路径,</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 注意:如果是连接投研端进行交易,文件目录需要指定到f&quot;{安装目录}\userdata&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> path </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">r</span><span style="color:#FF5555;">&#39;</span><span style="color:#F1FA8C;">D:</span><span style="color:#FF79C6;">\q</span><span style="color:#F1FA8C;">mt</span><span style="color:#8BE9FD;font-style:italic;">\s</span><span style="color:#F1FA8C;">p3</span><span style="color:#FF79C6;">\迅</span><span style="color:#F1FA8C;">投极速交易终端 睿智融科版</span><span style="color:#FF79C6;">\u</span><span style="color:#F1FA8C;">serdata_mini</span><span style="color:#FF5555;">&#39;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 生成session id 整数类型 同时运行的策略不能重复</span></span>
<span class="line"><span style="color:#F8F8F2;"> session_id </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;font-style:italic;">int</span><span style="color:#F8F8F2;">(time.time())</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> XtQuantTrader(path, session_id)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 开启主动请求接口的专用线程 开启后在on_stock_xxx回调函数里调用XtQuantTrader.query_xxx函数不会卡住回调线程,但是查询和推送的数据在时序上会变得不确定</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 详见: http://docs.thinktrader.net/vip/pages/ee0e9b/#开启主动请求接口的专用线程</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># xt_trader.set_relaxed_response_order_enabled(True)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 创建资金账号为 800068 的证券账号对象</span></span>
<span class="line"><span style="color:#F8F8F2;"> acc </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> StockAccount(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">800068</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">STOCK</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 创建交易回调类对象,并声明接收回调</span></span>
<span class="line"><span style="color:#F8F8F2;"> callback </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> MyXtQuantTraderCallback()</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader.register_callback(callback)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 启动交易线程</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader.start()</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 建立交易连接,返回0表示连接成功</span></span>
<span class="line"><span style="color:#F8F8F2;"> connect_result </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xt_trader.connect()</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">建立交易连接,返回0表示连接成功</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, connect_result)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 对交易回调进行订阅,订阅后可以收到交易主推,返回0表示订阅成功</span></span>
<span class="line"><span style="color:#F8F8F2;"> subscribe_result </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xt_trader.subscribe(acc)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">对交易回调进行订阅,订阅后可以收到交易主推,返回0表示订阅成功</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, subscribe_result)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#这一行是注册全推回调函数 包括下单判断 安全起见处于注释状态 确认理解效果后再放开</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># xtdata.subscribe_whole_quote([&quot;SH&quot;, &quot;SZ&quot;], callback=f)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 阻塞主线程退出</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader.run_forever()</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 如果使用vscode pycharm等本地编辑器 可以进入交互模式 方便调试 (把上一行的run_forever注释掉 否则不会执行到这里)</span></span>
<span class="line"><span style="color:#F8F8F2;"> interact()</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div><!--]--></div><h3 id="定时判断实盘示例" tabindex="-1"><a class="header-anchor" href="#定时判断实盘示例" aria-hidden="true">#</a> 定时判断实盘示例</h3><div class="vp-tabs"><div class="vp-tabs-nav" role="tablist"><button type="button" class="vp-tab-nav active" role="tab" aria-controls="tab-193-0" aria-selected="true">python</button></div><!--[--><div class="vp-tab active" id="tab-193-0" role="tabpanel" aria-expanded="true"><div class="language-python line-numbers-mode" data-ext="py"><pre class="shiki dracula" style="background-color:#282A36;" tabindex="0"><code><span class="line"><span style="color:#6272A4;"># coding:utf-8</span></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> time, datetime, traceback, sys</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtdata</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant.xttrader </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> XtQuantTrader, XtQuantTraderCallback</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant.xttype </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> StockAccount</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtconstant</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 定义一个类 创建类的实例 作为状态的容器</span></span>
<span class="line"><span style="color:#FF79C6;">class</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">_a</span><span style="color:#F8F8F2;">():</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">pass</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">A </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> _a()</span></span>
<span class="line"><span style="color:#F8F8F2;">A.bought_list </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> []</span></span>
<span class="line"><span style="color:#F8F8F2;">A.hsa </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata.get_stock_list_in_sector(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">沪深A股</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">interact</span><span style="color:#F8F8F2;">():</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;执行后进入repl模式&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> code</span></span>
<span class="line"><span style="color:#F8F8F2;"> code.InteractiveConsole(</span><span style="color:#FFB86C;font-style:italic;">locals</span><span style="color:#FF79C6;">=</span><span style="color:#8BE9FD;">globals</span><span style="color:#F8F8F2;">()).interact()</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">xtdata.download_sector_data()</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">f</span><span style="color:#F8F8F2;">(</span><span style="color:#FFB86C;font-style:italic;">data</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> now </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> datetime.datetime.now()</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># print(data)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> stock </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> data:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> stock </span><span style="color:#FF79C6;">not</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> A.hsa:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">continue</span></span>
<span class="line"><span style="color:#F8F8F2;"> cuurent_price </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> data[stock].iloc[</span><span style="color:#FF79C6;">-</span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">, </span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;">]</span></span>
<span class="line"><span style="color:#F8F8F2;"> pre_price </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> data[stock].iloc[</span><span style="color:#FF79C6;">-</span><span style="color:#BD93F9;">2</span><span style="color:#F8F8F2;">, </span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;">]</span></span>
<span class="line"><span style="color:#F8F8F2;"> ratio </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> cuurent_price </span><span style="color:#FF79C6;">/</span><span style="color:#F8F8F2;"> pre_price </span><span style="color:#FF79C6;">-</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> pre_price </span><span style="color:#FF79C6;">&gt;</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">else</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">0</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> ratio </span><span style="color:#FF79C6;">&gt;</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">0.09</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">and</span><span style="color:#F8F8F2;"> stock </span><span style="color:#FF79C6;">not</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> A.bought_list:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">now</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 最新价 买入 </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">stock</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 100股&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> async_seq </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xt_trader.order_stock_async(acc, stock, xtconstant.</span><span style="color:#BD93F9;">STOCK_BUY</span><span style="color:#F8F8F2;">, </span><span style="color:#BD93F9;">100</span><span style="color:#F8F8F2;">, xtconstant.</span><span style="color:#BD93F9;">LATEST_PRICE</span><span style="color:#F8F8F2;">, </span><span style="color:#FF79C6;">-</span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">,</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">strategy_name</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, stock)</span></span>
<span class="line"><span style="color:#F8F8F2;"> A.bought_list.append(stock)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">class</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">MyXtQuantTraderCallback</span><span style="color:#F8F8F2;">(</span><span style="color:#8BE9FD;font-style:italic;">XtQuantTraderCallback</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_disconnected</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 连接断开</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">连接断开回调</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_stock_order</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">order</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 委托回报推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param order: XtOrder对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">委托回调</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, order.order_remark)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_stock_trade</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">trade</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 成交变动推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param trade: XtTrade对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">成交回调</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, trade.order_remark)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_order_error</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">order_error</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 委托失败推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param order_error:XtOrderError 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># print(&quot;on order_error callback&quot;)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># print(order_error.order_id, order_error.error_id, order_error.error_msg)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;委托报错回调 </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order_error.order_remark</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order_error.error_msg</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_cancel_error</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">cancel_error</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 撤单失败推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param cancel_error: XtCancelError 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), sys._getframe().f_code.co_name)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_order_stock_async_response</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">response</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 异步下单回报推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param response: XtOrderResponse 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;异步委托回调 </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">response.order_remark</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_cancel_order_stock_async_response</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">response</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> :param response: XtCancelOrderResponse 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), sys._getframe().f_code.co_name)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_account_status</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">status</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> :param response: XtAccountStatus 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), sys._getframe().f_code.co_name)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">__name__</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">==</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">__main__</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">start</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 指定客户端所在路径, 券商端指定到 userdata_mini文件夹</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 注意:如果是连接投研端进行交易,文件目录需要指定到f&quot;{安装目录}\userdata&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> path </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">r</span><span style="color:#FF5555;">&#39;</span><span style="color:#F1FA8C;">D:</span><span style="color:#FF79C6;">\q</span><span style="color:#F1FA8C;">mt</span><span style="color:#FF79C6;">\投</span><span style="color:#F1FA8C;"></span><span style="color:#FF79C6;">\迅</span><span style="color:#F1FA8C;">投极速交易终端睿智融科版</span><span style="color:#FF79C6;">\u</span><span style="color:#F1FA8C;">serdata</span><span style="color:#FF5555;">&#39;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 生成session id 整数类型 同时运行的策略不能重复</span></span>
<span class="line"><span style="color:#F8F8F2;"> session_id </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;font-style:italic;">int</span><span style="color:#F8F8F2;">(time.time())</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> XtQuantTrader(path, session_id)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 开启主动请求接口的专用线程 开启后在on_stock_xxx回调函数里调用XtQuantTrader.query_xxx函数不会卡住回调线程,但是查询和推送的数据在时序上会变得不确定</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 详见: http://docs.thinktrader.net/vip/pages/ee0e9b/#开启主动请求接口的专用线程</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># xt_trader.set_relaxed_response_order_enabled(True)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 创建资金账号为 800068 的证券账号对象 股票账号为STOCK 信用CREDIT 期货FUTURE</span></span>
<span class="line"><span style="color:#F8F8F2;"> acc </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> StockAccount(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">2000128</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">STOCK</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 创建交易回调类对象,并声明接收回调</span></span>
<span class="line"><span style="color:#F8F8F2;"> callback </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> MyXtQuantTraderCallback()</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader.register_callback(callback)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 启动交易线程</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader.start()</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 建立交易连接,返回0表示连接成功</span></span>
<span class="line"><span style="color:#F8F8F2;"> connect_result </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xt_trader.connect()</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">建立交易连接,返回0表示连接成功</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, connect_result)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 对交易回调进行订阅,订阅后可以收到交易主推,返回0表示订阅成功</span></span>
<span class="line"><span style="color:#F8F8F2;"> subscribe_result </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xt_trader.subscribe(acc)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">对交易回调进行订阅,订阅后可以收到交易主推,返回0表示订阅成功</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, subscribe_result)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#订阅的品种列表</span></span>
<span class="line"><span style="color:#F8F8F2;"> code_list </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> [</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">600000.SH</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">000001.SZ</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">]</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#遍历品种 下载历史k线 订阅当日行情</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> code </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> code_list:</span></span>
<span class="line"><span style="color:#F8F8F2;"> xtdata.download_history_data(code, </span><span style="color:#FFB86C;font-style:italic;">period</span><span style="color:#FF79C6;">=</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">1d</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">start_time</span><span style="color:#FF79C6;">=</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">20200101</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> xtdata.subscribe_quote(code, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">1d</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">callback</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">None</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">while</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">True</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> now </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> datetime.datetime.now()</span></span>
<span class="line"><span style="color:#F8F8F2;"> now_time </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> now.strftime(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">%H%M%S</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">not</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">093000</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">&lt;=</span><span style="color:#F8F8F2;"> now_time </span><span style="color:#FF79C6;">&lt;</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">150000</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">now</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 非交易时间 循环退出&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">break</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#取k线数据</span></span>
<span class="line"><span style="color:#F8F8F2;"> data </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata.get_market_data_ex([</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">close</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">], code_list, </span><span style="color:#FFB86C;font-style:italic;">period</span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">1d</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">start_time</span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">20240101</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#判断交易</span></span>
<span class="line"><span style="color:#F8F8F2;"> f(data)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#每次循环 睡眠三秒后继续</span></span>
<span class="line"><span style="color:#F8F8F2;"> time.sleep(</span><span style="color:#BD93F9;">3</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 阻塞主线程退出</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader.run_forever()</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 如果使用vscode pycharm等本地编辑器 可以进入交互模式 方便调试 (把上一行的run_forever注释掉 否则不会执行到这里)</span></span>
<span class="line"><span style="color:#F8F8F2;"> interact()</span></span>
<span class="line"></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p></p></div><!--]--></div><h3 id="交易接口重连" tabindex="-1"><a class="header-anchor" href="#交易接口重连" aria-hidden="true">#</a> 交易接口重连</h3><p>该示例演示交易连接断开时重连的代码处理。</p><div class="custom-container tip"><p class="custom-container-title">提示</p><ol><li>该示例<strong>不是线程安全</strong>的,仅演示断开连接时应该怎么处理重连代码,实际使用时请注意避免潜在的问题</li><li>本策略只用于提供策略写法及参考,若您直接进行实盘下单,造成损失本网站不负担责任。</li></ol></div><div class="vp-tabs"><div class="vp-tabs-nav" role="tablist"><button type="button" class="vp-tab-nav active" role="tab" aria-controls="tab-221-0" aria-selected="true">python</button></div><!--[--><div class="vp-tab active" id="tab-221-0" role="tabpanel" aria-expanded="true"><div class="language-python line-numbers-mode" data-ext="py"><pre class="shiki dracula" style="background-color:#282A36;" tabindex="0"><code><span class="line"></span>
<span class="line"><span style="color:#6272A4;">#本文用一个均线策略演示交易连接断开时怎么处理交易接口重连</span></span>
<span class="line"><span style="color:#6272A4;"># 策略本身不严谨,不能作为实盘策略或者参考策略,本策略仅是演示重连用法</span></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> time</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant.xttrader </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> XtQuantTrader, XtQuantTraderCallback</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant.xttype </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> StockAccount</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtconstant</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtdata</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">class</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">MyXtQuantTraderCallback</span><span style="color:#F8F8F2;">(</span><span style="color:#8BE9FD;font-style:italic;">XtQuantTraderCallback</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 更多说明见 http://dict.thinktrader.net/nativeApi/xttrader.html?id=I3DJ97#%E5%A7%94%E6%89%98xtorder</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_disconnected</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 连接断开</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">connection lost, 交易接口断开,即将重连</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">global</span><span style="color:#F8F8F2;"> xt_trader</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">None</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_stock_order</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">order</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&#39;委托回报: 股票代码:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.stock_code</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 账号:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.account_id</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">, 订单编号:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.order_id</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 柜台合同编号:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.order_sysid</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> </span><span style="color:#BD93F9;">\</span></span>
<span class="line"><span style="color:#F1FA8C;"> 委托状态:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.order_status</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 成交数量:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.order_status</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 委托数量:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.order_volume</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 已成数量:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.traded_volume</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_stock_trade</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">trade</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&#39;成交回报: 股票代码:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">trade.stock_code</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 账号:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">trade.account_id</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">, 订单编号:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">trade.order_id</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 柜台合同编号:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">trade.order_sysid</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> </span><span style="color:#BD93F9;">\</span></span>
<span class="line"><span style="color:#F1FA8C;"> 成交编号:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">trade.traded_id</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 成交数量:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">trade.traded_volume</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 委托数量:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">trade.direction</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> &#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_order_error</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">order_error</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;报单失败: 订单编号:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order_error.order_id</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 下单失败具体信息:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order_error.error_msg</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 委托备注:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order_error.order_remark</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_cancel_error</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">cancel_error</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;撤单失败: 订单编号:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">cancel_error.order_id</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 失败具体信息:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">cancel_error.error_msg</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 市场:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">cancel_error.market</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_order_stock_async_response</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">response</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;异步下单的请求序号:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">response.seq</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">, 订单编号:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">response.order_id</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> &quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_account_status</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">status</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;账号状态发生变化, 账号:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">status.account_id</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> 最新状态:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">status.status</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">create_trader</span><span style="color:#F8F8F2;">(</span><span style="color:#FFB86C;font-style:italic;">xt_acc</span><span style="color:#F8F8F2;">,</span><span style="color:#FFB86C;font-style:italic;">path</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">session_id</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> trader </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> XtQuantTrader(path, session_id,</span><span style="color:#FFB86C;font-style:italic;">callback</span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;">MyXtQuantTraderCallback())</span></span>
<span class="line"><span style="color:#F8F8F2;"> trader.start()</span></span>
<span class="line"><span style="color:#F8F8F2;"> connect_result </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> trader.connect()</span></span>
<span class="line"><span style="color:#F8F8F2;"> trader.subscribe(xt_acc)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">return</span><span style="color:#F8F8F2;"> trader </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> connect_result </span><span style="color:#FF79C6;">==</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">else</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">None</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">try_connect</span><span style="color:#F8F8F2;">(</span><span style="color:#FFB86C;font-style:italic;">xt_acc</span><span style="color:#F8F8F2;">,</span><span style="color:#FFB86C;font-style:italic;">path</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> session_id_range </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> [i </span><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> i </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">range</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;">100</span><span style="color:#F8F8F2;">, </span><span style="color:#BD93F9;">120</span><span style="color:#F8F8F2;">)]</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> random</span></span>
<span class="line"><span style="color:#F8F8F2;"> random.shuffle(session_id_range)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 遍历尝试session_id列表尝试连接</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> session_id </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> session_id_range:</span></span>
<span class="line"><span style="color:#F8F8F2;"> trader </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> create_trader(xt_acc,path, session_id)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> trader:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">连接成功,session_id:</span><span style="color:#BD93F9;">{}</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, session_id)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">return</span><span style="color:#F8F8F2;"> trader</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">else</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">连接失败,session_id:</span><span style="color:#BD93F9;">{}</span><span style="color:#F1FA8C;">,继续尝试下一个id</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, session_id)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">continue</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">所有id都尝试后仍失败,放弃连接</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">return</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">None</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">get_xttrader</span><span style="color:#F8F8F2;">(</span><span style="color:#FFB86C;font-style:italic;">xt_acc</span><span style="color:#F8F8F2;">,</span><span style="color:#FFB86C;font-style:italic;">path</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">global</span><span style="color:#F8F8F2;"> xt_trader</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> xt_trader </span><span style="color:#FF79C6;">is</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">None</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> try_connect(xt_acc,path)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">return</span><span style="color:#F8F8F2;"> xt_trader</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">__name__</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">==</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">__main__</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 注意实际连接XtQuantTrader时不要写类似while True 这种无限循环的尝试,因为每次连接都会用session_id创建一个对接文件,这样就会占满硬盘导致电脑运行异常</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 要控制session_id在有限的范围内尝试,这里提供10个session_id供重连尝试</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 当所有session_id都尝试后,程序会抛出异常。实际使用过程中当session_id用完时,可以增加邮件等通知方式提醒人工处理 </span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#指定客户端所在路径</span></span>
<span class="line"><span style="color:#F8F8F2;"> path </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">E:\qmt</span><span style="color:#FF79C6;">\\</span><span style="color:#F1FA8C;">userdata_mini</span><span style="color:#E9F284;">&#39;</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">None</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_acc </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> StockAccount(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">2000204</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> get_xttrader(xt_acc,path)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">not</span><span style="color:#F8F8F2;"> xt_trader:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">raise</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;font-style:italic;">Exception</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">交易接口连接失败</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">交易接口连接成功, 策略开始</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> stock </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">513050.SH</span><span style="color:#E9F284;">&#39;</span></span>
<span class="line"><span style="color:#F8F8F2;"> xtdata.subscribe_quote(stock, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">5m</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">,</span><span style="color:#E9F284;">&#39;&#39;</span><span style="color:#F8F8F2;">,</span><span style="color:#E9F284;">&#39;&#39;</span><span style="color:#F8F8F2;">,</span><span style="color:#FFB86C;font-style:italic;">count</span><span style="color:#FF79C6;">=-</span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> time.sleep(</span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> order_record </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> []</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">while</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">093000</span><span style="color:#E9F284;">&#39;</span><span style="color:#FF79C6;">&lt;=</span><span style="color:#F8F8F2;">time.strftime(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">%H%M%S</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span><span style="color:#FF79C6;">&lt;</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">150000</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> time.sleep(</span><span style="color:#BD93F9;">3</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> get_xttrader(xt_acc,path)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span></span>
<span class="line"><span style="color:#F8F8F2;"> price </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata.get_market_data_ex([</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">close</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">],[stock],</span><span style="color:#FFB86C;font-style:italic;">period</span><span style="color:#FF79C6;">=</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">5m</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">,)[stock]</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">#计算均线</span></span>
<span class="line"><span style="color:#F8F8F2;"> ma5 </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> price[</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">close</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">].rolling(</span><span style="color:#BD93F9;">5</span><span style="color:#F8F8F2;">).mean()</span></span>
<span class="line"><span style="color:#F8F8F2;"> ma10 </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> price[</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">close</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">].rolling(</span><span style="color:#BD93F9;">10</span><span style="color:#F8F8F2;">).mean()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> ma5.iloc[</span><span style="color:#FF79C6;">-</span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">]</span><span style="color:#FF79C6;">&gt;</span><span style="color:#F8F8F2;">ma5.iloc[</span><span style="color:#FF79C6;">-</span><span style="color:#BD93F9;">10</span><span style="color:#F8F8F2;">]:</span></span>
<span class="line"><span style="color:#F8F8F2;"> t </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> price.index[</span><span style="color:#FF79C6;">-</span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">]</span></span>
<span class="line"><span style="color:#F8F8F2;"> order_flag </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> (t, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;"></span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> order_flag </span><span style="color:#FF79C6;">not</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> order_record: </span><span style="color:#6272A4;">#防止重复下单</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&#39;发起买入 </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">stock</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> k线时间:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">t</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 用最新价买100股</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader.order_stock_async(xt_acc, stock, xtconstant.</span><span style="color:#BD93F9;">STOCK_BUY</span><span style="color:#F8F8F2;">,</span><span style="color:#BD93F9;">100</span><span style="color:#F8F8F2;">,xtconstant.</span><span style="color:#BD93F9;">LATEST_PRICE</span><span style="color:#F8F8F2;">,</span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> order_record.append(order_flag)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">elif</span><span style="color:#F8F8F2;"> ma5.iloc[</span><span style="color:#FF79C6;">-</span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">]</span><span style="color:#FF79C6;">&lt;</span><span style="color:#F8F8F2;">ma5[</span><span style="color:#FF79C6;">-</span><span style="color:#BD93F9;">10</span><span style="color:#F8F8F2;">]:</span></span>
<span class="line"><span style="color:#F8F8F2;"> t </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> price.index[</span><span style="color:#FF79C6;">-</span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">]</span></span>
<span class="line"><span style="color:#F8F8F2;"> order_flag </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> (t, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;"></span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> order_flag </span><span style="color:#FF79C6;">not</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> order_record: </span><span style="color:#6272A4;">#防止重复下单</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&#39;发起卖出 </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">stock</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;"> k线时间:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">t</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 用最新价买100股</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader.order_stock_async(xt_acc, stock, xtconstant.</span><span style="color:#BD93F9;">STOCK_SELL</span><span style="color:#F8F8F2;">,</span><span style="color:#BD93F9;">100</span><span style="color:#F8F8F2;">,xtconstant.</span><span style="color:#BD93F9;">LATEST_PRICE</span><span style="color:#F8F8F2;">,</span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span></span>
<span class="line"><span style="color:#F8F8F2;"> order_record.append(order_flag)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div><!--]--></div><h3 id="指定session-id范围连接交易" tabindex="-1"><a class="header-anchor" href="#指定session-id范围连接交易" aria-hidden="true">#</a> 指定session id范围连接交易</h3><p>该示例演示指定session重试连接次数的代码处理。</p><div class="vp-tabs"><div class="vp-tabs-nav" role="tablist"><button type="button" class="vp-tab-nav active" role="tab" aria-controls="tab-232-0" aria-selected="true">python</button></div><!--[--><div class="vp-tab active" id="tab-232-0" role="tabpanel" aria-expanded="true"><div class="language-python line-numbers-mode" data-ext="py"><pre class="shiki dracula" style="background-color:#282A36;" tabindex="0"><code><span class="line"></span>
<span class="line"><span style="color:#6272A4;">#coding:utf-8</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">connect</span><span style="color:#F8F8F2;">(</span><span style="color:#FFB86C;font-style:italic;">path</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">session</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xttrader</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> trader </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xttrader.XtQuantTrader(path, session)</span></span>
<span class="line"><span style="color:#F8F8F2;"> trader.start()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> connect_result </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> trader.connect()</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">return</span><span style="color:#F8F8F2;"> trader </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> connect_result </span><span style="color:#FF79C6;">==</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">else</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">None</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">try_connect_range</span><span style="color:#F8F8F2;">():</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 随机 session_id 的待尝试列表</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 100以内的id保留</span></span>
<span class="line"><span style="color:#F8F8F2;"> ids </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> [i </span><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> i </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">range</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;">100</span><span style="color:#F8F8F2;">, </span><span style="color:#BD93F9;">200</span><span style="color:#F8F8F2;">)]</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> random</span></span>
<span class="line"><span style="color:#F8F8F2;"> random.shuffle(ids)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 要连接到的对接路径</span></span>
<span class="line"><span style="color:#F8F8F2;"> path </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">r</span><span style="color:#FF5555;">&#39;</span><span style="color:#F1FA8C;">userdata_mini</span><span style="color:#FF5555;">&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 遍历id列表尝试连接</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">for</span><span style="color:#F8F8F2;"> session_id </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> ids:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&#39;尝试id:</span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">session_id</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> trader </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> connect(path, session_id)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> trader:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">连接成功</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">return</span><span style="color:#F8F8F2;"> trader</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">else</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">连接失败,继续尝试下一个id</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">continue</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 所有id都尝试后仍失败,放弃连接</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">raise</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;font-style:italic;">Exception</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">XtQuantTrader 连接失败,请重试</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">try</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> trader </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> try_connect_range()</span></span>
<span class="line"><span style="color:#FF79C6;">except</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;font-style:italic;">Exception</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">as</span><span style="color:#F8F8F2;"> e:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> traceback</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(e, traceback.format_exc())</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> time</span></span>
<span class="line"><span style="color:#FF79C6;">while</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">True</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">.</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">end</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> time.sleep(</span><span style="color:#BD93F9;">2</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div><!--]--></div><h3 id="信用账号执行还款" tabindex="-1"><a class="header-anchor" href="#信用账号执行还款" aria-hidden="true">#</a> 信用账号执行还款</h3><p>本示例用于展示如何使用xtquant库对信用账号执行还款的操作</p><div class="custom-container tip"><p class="custom-container-title">提示</p><p>本策略只用于提供策略写法及参考,若您直接进行实盘下单,造成损失本网站不负担责任。</p></div><div class="vp-tabs"><div class="vp-tabs-nav" role="tablist"><button type="button" class="vp-tab-nav active" role="tab" aria-controls="tab-248-0" aria-selected="true">python</button></div><!--[--><div class="vp-tab active" id="tab-248-0" role="tabpanel" aria-expanded="true"><div class="language-python line-numbers-mode" data-ext="py"><pre class="shiki dracula" style="background-color:#282A36;" tabindex="0"><code><span class="line"><span style="color:#6272A4;">#coding=utf-8</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant.xttrader </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> XtQuantTrader, XtQuantTraderCallback</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant.xttype </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> StockAccount</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtconstant</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># 修改参数</span></span>
<span class="line"><span style="color:#6272A4;"># path为mini qmt客户端安装目录下userdata_mini路径</span></span>
<span class="line"><span style="color:#F8F8F2;">path </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">E:</span><span style="color:#FF79C6;">\\</span><span style="color:#F1FA8C;">qmt</span><span style="color:#FF79C6;">\\</span><span style="color:#F1FA8C;">userdata_mini</span><span style="color:#E9F284;">&#39;</span></span>
<span class="line"><span style="color:#6272A4;"># session_id为会话编号,策略使用方对于不同的Python策略需要使用不同的会话编号</span></span>
<span class="line"><span style="color:#F8F8F2;">session_id </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">1234567</span></span>
<span class="line"><span style="color:#F8F8F2;">repay_money </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">1000.51</span><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 元,需要执行还款的金额</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">class</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">MyXtQuantTraderCallback</span><span style="color:#F8F8F2;">(</span><span style="color:#8BE9FD;font-style:italic;">XtQuantTraderCallback</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_disconnected</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 连接断开</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">connection lost</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_stock_order</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">order</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 委托回报推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param order: XtOrder对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">on order callback:</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(order.stock_code, order.order_status, order.order_sysid)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_stock_asset</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">asset</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 资金变动推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param asset: XtAsset对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">on asset callback</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(asset.account_id, asset.cash, asset.total_asset)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_stock_trade</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">trade</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 成交变动推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param trade: XtTrade对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">on trade callback</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(trade.account_id, trade.stock_code, trade.order_id)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_order_error</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">order_error</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 委托失败推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param order_error:XtOrderError 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">on order_error callback</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(order_error.order_id, order_error.error_id, order_error.error_msg)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_cancel_error</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">cancel_error</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 撤单失败推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param cancel_error: XtCancelError 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">on cancel_error callback</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(cancel_error.order_id, cancel_error.error_id, cancel_error.error_msg)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_order_stock_async_response</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">response</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 异步下单回报推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param response: XtOrderResponse 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">on_order_stock_async_response</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(response.account_id, response.order_id, response.seq)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_account_status</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">status</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> :param response: XtAccountStatus 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">on_account_status</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(status.account_id, status.account_type, status.status)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">__name__</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">==</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">__main__</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">demo test</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> XtQuantTrader(path, session_id)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 创建资金账号为1000000365的证券账号对象</span></span>
<span class="line"><span style="color:#F8F8F2;"> acc </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> StockAccount(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">200035</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">CREDIT</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># StockAccount可以用第二个参数指定账号类型,如沪港通传&#39;HUGANGTONG&#39;,深港通传&#39;SHENGANGTONG&#39;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># acc = StockAccount(&#39;1000000365&#39;,&#39;STOCK&#39;)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 创建交易回调类对象,并声明接收回调</span></span>
<span class="line"><span style="color:#F8F8F2;"> callback </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> MyXtQuantTraderCallback()</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader.register_callback(callback)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 启动交易线程</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader.start()</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 建立交易连接,返回0表示连接成功</span></span>
<span class="line"><span style="color:#F8F8F2;"> connect_result </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xt_trader.connect()</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> connect_result </span><span style="color:#FF79C6;">!=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> sys</span></span>
<span class="line"><span style="color:#F8F8F2;"> sys.exit(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">连接失败,程序即将退出 </span><span style="color:#BD93F9;">%d</span><span style="color:#E9F284;">&#39;</span><span style="color:#FF79C6;">%</span><span style="color:#F8F8F2;">connect_result)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 对交易回调进行订阅,订阅后可以收到交易主推,返回0表示订阅成功</span></span>
<span class="line"><span style="color:#F8F8F2;"> subscribe_result </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xt_trader.subscribe(acc)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> subscribe_result </span><span style="color:#FF79C6;">!=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;">:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">账号订阅失败 </span><span style="color:#BD93F9;">%d</span><span style="color:#E9F284;">&#39;</span><span style="color:#FF79C6;">%</span><span style="color:#F8F8F2;">subscribe_result)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(subscribe_result)</span></span>
<span class="line"><span style="color:#F8F8F2;"> stock_code </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">600000.SH</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 参数占位用,任意股票代码都可以</span></span>
<span class="line"><span style="color:#F8F8F2;"> volume </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">200</span><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 参数占位用,任意数量</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 使用指定价下单,接口返回订单编号,后续可以用于撤单操作以及查询委托状态</span></span>
<span class="line"><span style="color:#F8F8F2;"> fix_result_order_id </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xt_trader.order_stock(acc, stock_code, xtconstant.</span><span style="color:#BD93F9;">CREDIT_DIRECT_CASH_REPAY</span><span style="color:#F8F8F2;">, repay_money, xtconstant.</span><span style="color:#BD93F9;">FIX_PRICE</span><span style="color:#F8F8F2;">, </span><span style="color:#FF79C6;">-</span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">strategy_name</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">remark</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 阻塞线程,接收交易推送</span></span>
<span class="line"><span style="color:#F8F8F2;"> xt_trader.run_forever()</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div><!--]--></div><h3 id="下单后通过回调撤单" tabindex="-1"><a class="header-anchor" href="#下单后通过回调撤单" aria-hidden="true">#</a> 下单后通过回调撤单</h3><div class="vp-tabs"><div class="vp-tabs-nav" role="tablist"><button type="button" class="vp-tab-nav active" role="tab" aria-controls="tab-256-0" aria-selected="true"></button></div><!--[--><div class="vp-tab active" id="tab-256-0" role="tabpanel" aria-expanded="true"><div class="language-python line-numbers-mode" data-ext="py"><pre class="shiki dracula" style="background-color:#282A36;" tabindex="0"><code><span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> pandas </span><span style="color:#FF79C6;">as</span><span style="color:#F8F8F2;"> pd</span></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> numpy </span><span style="color:#FF79C6;">as</span><span style="color:#F8F8F2;"> np</span></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> datetime</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtdata,xttrader</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant.xttype </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> StockAccount</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> xtconstant</span></span>
<span class="line"><span style="color:#FF79C6;">from</span><span style="color:#F8F8F2;"> xtquant.xttrader </span><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> XtQuantTraderCallback</span></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> sys</span></span>
<span class="line"><span style="color:#FF79C6;">import</span><span style="color:#F8F8F2;"> time</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;">异步下单委托流程为</span></span>
<span class="line"><span style="color:#6272A4;">1.order_stock_async发出委托</span></span>
<span class="line"><span style="color:#6272A4;">2.回调on_order_stock_async_response收到回调信息</span></span>
<span class="line"><span style="color:#6272A4;">3.回调on_stock_order收到委托信息</span></span>
<span class="line"><span style="color:#6272A4;">4.回调cancel_order_stock_sysid_async发出异步撤单指令</span></span>
<span class="line"><span style="color:#6272A4;">5.回调on_cancel_order_stock_async_response收到撤单回调信息</span></span>
<span class="line"><span style="color:#6272A4;">6.回调on_stock_order收到委托信息</span></span>
<span class="line"><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;">strategy_name </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">委托撤单测试</span><span style="color:#E9F284;">&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FF79C6;">class</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">MyXtQuantTraderCallback</span><span style="color:#F8F8F2;">(</span><span style="color:#8BE9FD;font-style:italic;">XtQuantTraderCallback</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 用于接收回调信息的类</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_stock_order</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">order</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 委托回报推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param order: XtOrder对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 属性赋值</span></span>
<span class="line"><span style="color:#F8F8F2;"> account_type </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> order.account_type </span><span style="color:#6272A4;"># 账号类型</span></span>
<span class="line"><span style="color:#F8F8F2;"> account_id </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> order.account_id </span><span style="color:#6272A4;"># 资金账号</span></span>
<span class="line"><span style="color:#F8F8F2;"> stock_code </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> order.stock_code </span><span style="color:#6272A4;"># 证券代码,例如&quot;600000.SH&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> order_id </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> order.order_id </span><span style="color:#6272A4;"># 订单编号</span></span>
<span class="line"><span style="color:#F8F8F2;"> order_sysid </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> order.order_sysid </span><span style="color:#6272A4;"># 柜台合同编号</span></span>
<span class="line"><span style="color:#F8F8F2;"> order_time </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> order.order_time </span><span style="color:#6272A4;"># 报单时间</span></span>
<span class="line"><span style="color:#F8F8F2;"> order_type </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> order.order_type </span><span style="color:#6272A4;"># 委托类型,参见数据字典</span></span>
<span class="line"><span style="color:#F8F8F2;"> order_volume </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> order.order_volume </span><span style="color:#6272A4;"># 委托数量</span></span>
<span class="line"><span style="color:#F8F8F2;"> price_type </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> order.price_type </span><span style="color:#6272A4;"># 报价类型,该字段在返回时为柜台返回类型,不等价于下单传入的price_type,枚举值不一样功能一样,参见数据字典</span></span>
<span class="line"><span style="color:#F8F8F2;"> price </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> order.price </span><span style="color:#6272A4;"># 委托价格</span></span>
<span class="line"><span style="color:#F8F8F2;"> traded_volume </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> order.traded_volume </span><span style="color:#6272A4;"># 成交数量</span></span>
<span class="line"><span style="color:#F8F8F2;"> traded_price </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> order.traded_price </span><span style="color:#6272A4;"># 成交均价</span></span>
<span class="line"><span style="color:#F8F8F2;"> order_status </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> order.order_status </span><span style="color:#6272A4;"># 委托状态,参见数据字典</span></span>
<span class="line"><span style="color:#F8F8F2;"> status_msg </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> order.status_msg </span><span style="color:#6272A4;"># 委托状态描述,如废单原因</span></span>
<span class="line"><span style="color:#F8F8F2;"> strategy_name </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> order.strategy_name </span><span style="color:#6272A4;"># 策略名称</span></span>
<span class="line"><span style="color:#F8F8F2;"> order_remark </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> order.order_remark </span><span style="color:#6272A4;"># 委托备注</span></span>
<span class="line"><span style="color:#F8F8F2;"> direction </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> order.direction </span><span style="color:#6272A4;"># 多空方向,股票不适用;参见数据字典</span></span>
<span class="line"><span style="color:#F8F8F2;"> offset_flag </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> order.offset_flag </span><span style="color:#6272A4;"># 交易操作,用此字段区分股票买卖,期货开、平仓,期权买卖等;参见数据字典</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 打印输出</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F1FA8C;"> =============================</span></span>
<span class="line"><span style="color:#F1FA8C;"> 委托信息</span></span>
<span class="line"><span style="color:#F1FA8C;"> =============================</span></span>
<span class="line"><span style="color:#F1FA8C;"> 账号类型: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.account_type</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">, </span></span>
<span class="line"><span style="color:#F1FA8C;"> 资金账号: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.account_id</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">,</span></span>
<span class="line"><span style="color:#F1FA8C;"> 证券代码: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.stock_code</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">,</span></span>
<span class="line"><span style="color:#F1FA8C;"> 订单编号: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.order_id</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">, </span></span>
<span class="line"><span style="color:#F1FA8C;"> 柜台合同编号: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.order_sysid</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">,</span></span>
<span class="line"><span style="color:#F1FA8C;"> 报单时间: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.order_time</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">,</span></span>
<span class="line"><span style="color:#F1FA8C;"> 委托类型: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.order_type</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">,</span></span>
<span class="line"><span style="color:#F1FA8C;"> 委托数量: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.order_volume</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">,</span></span>
<span class="line"><span style="color:#F1FA8C;"> 报价类型: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.price_type</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">,</span></span>
<span class="line"><span style="color:#F1FA8C;"> 委托价格: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.price</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">,</span></span>
<span class="line"><span style="color:#F1FA8C;"> 成交数量: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.traded_volume</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">,</span></span>
<span class="line"><span style="color:#F1FA8C;"> 成交均价: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.traded_price</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">,</span></span>
<span class="line"><span style="color:#F1FA8C;"> 委托状态: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.order_status</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">,</span></span>
<span class="line"><span style="color:#F1FA8C;"> 委托状态描述: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.status_msg</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">,</span></span>
<span class="line"><span style="color:#F1FA8C;"> 策略名称: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.strategy_name</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">,</span></span>
<span class="line"><span style="color:#F1FA8C;"> 委托备注: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.order_remark</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">,</span></span>
<span class="line"><span style="color:#F1FA8C;"> 多空方向: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.direction</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">,</span></span>
<span class="line"><span style="color:#F1FA8C;"> 交易操作: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">order.offset_flag</span><span style="color:#BD93F9;">}</span></span>
<span class="line"><span style="color:#F1FA8C;"> &quot;&quot;&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> order.strategy_name </span><span style="color:#FF79C6;">==</span><span style="color:#F8F8F2;"> strategy_name:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># 该委托是由本策略发出</span></span>
<span class="line"><span style="color:#F8F8F2;"> ssid </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> order.order_sysid</span></span>
<span class="line"><span style="color:#F8F8F2;"> status </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> order.order_status</span></span>
<span class="line"><span style="color:#F8F8F2;"> market </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> order.stock_code.split(</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">.</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">)[</span><span style="color:#BD93F9;">1</span><span style="color:#F8F8F2;">]</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;"># print(ssid)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">if</span><span style="color:#F8F8F2;"> ssid </span><span style="color:#FF79C6;">and</span><span style="color:#F8F8F2;"> status </span><span style="color:#FF79C6;">in</span><span style="color:#F8F8F2;"> [</span><span style="color:#BD93F9;">50</span><span style="color:#F8F8F2;">,</span><span style="color:#BD93F9;">55</span><span style="color:#F8F8F2;">]:</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">## 使用cancel_order_stock_sysid_async时,投研端market参数可以填写为0,券商端按实际情况填写</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(xt_trade.cancel_order_stock_sysid_async(account,</span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;">,ssid))</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_stock_trade</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">trade</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 成交变动推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param trade: XtTrade对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(), </span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">成交回调</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">, trade.order_remark,trade.stock_code,trade.traded_volume,trade.offset_flag)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_order_stock_async_response</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">response</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 异步下单回报推送</span></span>
<span class="line"><span style="color:#6272A4;"> :param response: XtOrderResponse 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(datetime.datetime.now(),</span><span style="color:#E9F284;">&#39;</span><span style="color:#F1FA8C;">异步下单编号为:</span><span style="color:#E9F284;">&#39;</span><span style="color:#F8F8F2;">,response.seq)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">def</span><span style="color:#F8F8F2;"> </span><span style="color:#50FA7B;">on_cancel_order_stock_async_response</span><span style="color:#F8F8F2;">(</span><span style="color:#BD93F9;font-style:italic;">self</span><span style="color:#F8F8F2;">, </span><span style="color:#FFB86C;font-style:italic;">response</span><span style="color:#F8F8F2;">):</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#6272A4;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#6272A4;"> 异步撤单回报</span></span>
<span class="line"><span style="color:#6272A4;"> :param response: XtCancelOrderResponse 对象</span></span>
<span class="line"><span style="color:#6272A4;"> :return:</span></span>
<span class="line"><span style="color:#6272A4;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F8F8F2;"> account_type </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> response.account_type </span><span style="color:#6272A4;"># 账号类型</span></span>
<span class="line"><span style="color:#F8F8F2;"> account_id </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> response.account_id </span><span style="color:#6272A4;"># 资金账号</span></span>
<span class="line"><span style="color:#F8F8F2;"> order_id </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> response.order_id </span><span style="color:#6272A4;"># 订单编号</span></span>
<span class="line"><span style="color:#F8F8F2;"> order_sysid </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> response.order_sysid </span><span style="color:#6272A4;"># 柜台委托编号</span></span>
<span class="line"><span style="color:#F8F8F2;"> cancel_result </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> response.cancel_result </span><span style="color:#6272A4;"># 撤单结果</span></span>
<span class="line"><span style="color:#F8F8F2;"> seq </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> response.seq </span><span style="color:#6272A4;"># 异步撤单的请求序号</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(</span><span style="color:#FF79C6;">f</span><span style="color:#F1FA8C;">&quot;&quot;&quot;</span></span>
<span class="line"><span style="color:#F1FA8C;"> ===========================</span></span>
<span class="line"><span style="color:#F1FA8C;"> 异步撤单回调信息</span></span>
<span class="line"><span style="color:#F1FA8C;"> ===========================</span></span>
<span class="line"><span style="color:#F1FA8C;"> 账号类型: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">response.account_type</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">, </span></span>
<span class="line"><span style="color:#F1FA8C;"> 资金账号: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">response.account_id</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">,</span></span>
<span class="line"><span style="color:#F1FA8C;"> 订单编号: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">response.order_id</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">, </span></span>
<span class="line"><span style="color:#F1FA8C;"> 柜台委托编号: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">response.order_sysid</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">,</span></span>
<span class="line"><span style="color:#F1FA8C;"> 撤单结果: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">response.cancel_result</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">,</span></span>
<span class="line"><span style="color:#F1FA8C;"> 异步撤单的请求序号: </span><span style="color:#BD93F9;">{</span><span style="color:#F8F8F2;">response.seq</span><span style="color:#BD93F9;">}</span><span style="color:#F1FA8C;">&quot;&quot;&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">pass</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">callback </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> MyXtQuantTraderCallback()</span></span>
<span class="line"><span style="color:#6272A4;"># 填投研端的期货账号</span></span>
<span class="line"><span style="color:#F8F8F2;">account </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> StockAccount(</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">1000024</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">,</span><span style="color:#FFB86C;font-style:italic;">account_type</span><span style="color:#F8F8F2;"> </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">FUTURE</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"><span style="color:#6272A4;"># 填写投研端的股票账号</span></span>
<span class="line"><span style="color:#6272A4;"># account = StockAccount(&quot;2000567&quot;)</span></span>
<span class="line"><span style="color:#6272A4;"># 填投研端的userdata路径,miniqmt指定到userdata_mini</span></span>
<span class="line"><span style="color:#F8F8F2;">xt_trade </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xttrader.XtQuantTrader(</span><span style="color:#FF79C6;">r</span><span style="color:#FF5555;">&quot;</span><span style="color:#F1FA8C;">C:</span><span style="color:#FF79C6;">\P</span><span style="color:#F1FA8C;">rogram Files</span><span style="color:#FF79C6;">\测</span><span style="color:#F1FA8C;">试1</span><span style="color:#FF79C6;">\迅</span><span style="color:#F1FA8C;">投极速交易终端睿智融科版</span><span style="color:#FF79C6;">\u</span><span style="color:#F1FA8C;">serdata</span><span style="color:#FF5555;">&quot;</span><span style="color:#F8F8F2;">,</span><span style="color:#8BE9FD;font-style:italic;">int</span><span style="color:#F8F8F2;">(time.time()))</span></span>
<span class="line"><span style="color:#6272A4;"># 注册接受回调</span></span>
<span class="line"><span style="color:#F8F8F2;">xt_trade.register_callback(callback) </span></span>
<span class="line"><span style="color:#6272A4;"># 启动交易线程</span></span>
<span class="line"><span style="color:#F8F8F2;">xt_trade.start()</span></span>
<span class="line"><span style="color:#6272A4;"># 链接交易</span></span>
<span class="line"><span style="color:#F8F8F2;">connect_result </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xt_trade.connect()</span></span>
<span class="line"><span style="color:#6272A4;"># 订阅账号信息,接受这个账号的回调,回调是账号维度的</span></span>
<span class="line"><span style="color:#F8F8F2;">subscribe_result </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xt_trade.subscribe(account)</span></span>
<span class="line"><span style="color:#8BE9FD;">print</span><span style="color:#F8F8F2;">(subscribe_result)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">code </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">rb2410.SF</span><span style="color:#E9F284;">&quot;</span></span>
<span class="line"><span style="color:#6272A4;"># code = &quot;000001.SZ&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">tick </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata.get_full_tick([code])[code]</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">last_price </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> tick[</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">lastPrice</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">] </span><span style="color:#6272A4;"># 最新价</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">ask_price </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">round</span><span style="color:#F8F8F2;">(tick[</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">askPrice</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">][</span><span style="color:#BD93F9;">0</span><span style="color:#F8F8F2;">],</span><span style="color:#BD93F9;">3</span><span style="color:#F8F8F2;">) </span><span style="color:#6272A4;"># 卖方1档价</span></span>
<span class="line"><span style="color:#F8F8F2;">bid_price </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#8BE9FD;">round</span><span style="color:#F8F8F2;">(tick[</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">bidPrice</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">][</span><span style="color:#BD93F9;">4</span><span style="color:#F8F8F2;">],</span><span style="color:#BD93F9;">3</span><span style="color:#F8F8F2;">) </span><span style="color:#6272A4;"># 买方5档价</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">symbol_info </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xtdata.get_instrument_detail(code)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">up_limit </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> symbol_info[</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">UpStopPrice</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">]</span></span>
<span class="line"><span style="color:#F8F8F2;">down_limit </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> symbol_info[</span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">DownStopPrice</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">]</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">lots </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> </span><span style="color:#BD93F9;">1</span></span>
<span class="line"><span style="color:#F8F8F2;">res_id </span><span style="color:#FF79C6;">=</span><span style="color:#F8F8F2;"> xt_trade.order_stock_async(account, code, xtconstant.</span><span style="color:#BD93F9;">FUTURE_OPEN_LONG</span><span style="color:#F8F8F2;">, lots, xtconstant.</span><span style="color:#BD93F9;">FIX_PRICE</span><span style="color:#F8F8F2;">, down_limit, strategy_name, </span><span style="color:#E9F284;">&quot;</span><span style="color:#F1FA8C;">跌停价/固定手数</span><span style="color:#E9F284;">&quot;</span><span style="color:#F8F8F2;">)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#6272A4;"># lots = 100</span></span>
<span class="line"><span style="color:#6272A4;"># res_id = xt_trade.order_stock_async(account, code, xtconstant.STOCK_BUY, lots, xtconstant.FIX_PRICE, bid_price, strategy_name, &quot;跌停价/固定手数&quot;)</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#F8F8F2;">xtdata.run()</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p></p></div><!--]--></div></div></div><!--[--><!--]--></div><footer class="page-meta pageFooter" data-v-3c904194><!----><div class="meta-item last-updated"><span class="meta-item-label">上次更新: </span><!----></div><!----><div id="myFooter"><div vertical id="content"><div class="content-title">邀请注册送VIP优惠券</div><div>分享下方的内容给好友、QQ群、微信群,好友注册您即可获得VIP优惠券</div><div class="content-body"><div class="n-input-group"><div class="tip"><div>玩转qmt,上迅投qmt知识库</div></div><button class="n-button n-button--info-type n-button--small-type n-button--secondary" tabindex="0" type="button" style="--n-bezier:cubic-bezier(.4, 0, .2, 1);--n-bezier-ease-out:cubic-bezier(0, 0, .2, 1);--n-ripple-duration:.6s;--n-opacity-disabled:0.5;--n-wave-opacity:0.6;--n-font-weight:500;--n-color:rgba(32, 128, 240, 0.16);--n-color-hover:rgba(32, 128, 240, 0.22);--n-color-pressed:rgba(32, 128, 240, 0.28);--n-color-focus:rgba(32, 128, 240, 0.22);--n-color-disabled:rgba(46, 51, 56, .05);--n-ripple-color:#0000;--n-text-color:#2080f0;--n-text-color-hover:#2080f0;--n-text-color-pressed:#2080f0;--n-text-color-focus:#2080f0;--n-text-color-disabled:#2080f0;--n-border:1px solid #2080f0;--n-border-hover:1px solid #4098fc;--n-border-pressed:1px solid #1060c9;--n-border-focus:1px solid #4098fc;--n-border-disabled:1px solid #2080f0;--n-width:initial;--n-height:28px;--n-font-size:14px;--n-padding:0 10px;--n-icon-size:18px;--n-icon-margin:6px;--n-border-radius:3px;" id="copy-btn2"><!----><!----><span class="n-button__content">登录后获取</span><div aria-hidden="true" class="n-base-wave"></div><!----><!----></button></div><!-- <n-space style="width: 100%;" vertical>
<div style="width: 100%;">
<div>玩转qmt,上迅投qmt知识库,复制分享要登录</div>
</div>
<n-space style="width: 100%;" justify="end">
</n-space>
</n-space> --></div></div></div></footer><nav class="page-nav" data-v-3c904194><p class="inner"><span class="prev"><a href="/nativeApi/xttrader.html" class="" aria-label="XtQuant.Xttrade 交易模块"><!--[--><!--]--> XtQuant.Xttrade 交易模块 <!--[--><!--]--></a></span><span class="next"><a href="/nativeApi/question_function.html" class="" aria-label="常见问题"><!--[--><!--]--> 常见问题 <!--[--><!--]--></a></span></p></nav><!--[--><!--]--></main><!--]--></div><!----><!--]--></div>
<script type="module" src="/assets/app-2fe24c5e.js" defer></script>
</body>
</html>