同花顺Python策略编辑器帮助文档

同花顺Python策略编辑器帮助文档


如何利用pandas对持仓、成交数据进行高级的数据处理

<h4><strong>简要说明</strong></h4> <ul> <li> <h2>可使用ths_api包中提供的order_to_dataframe函数将持仓、成交数据转化为DataFrame格式,再通过pandas对数据进行更高级的处理。例如以下三个例子: 1.计算当日委托的每笔买入成交委托的所占仓位 2.计算持仓股的总累计盈亏 3.计算当日买入委托中已成交的股票总市值</h2> </li> </ul> <h4><strong>1.计算当日委托的每笔买入成交委托的所占仓位</strong>:</h4> <p><strong>示例代码</strong></p> <pre><code>#!/usr/bin/env python # -*- coding: utf-8 -*- from ths_api import * import pandas as pd #显示所有列 pd.set_option('display.max_columns', None) #显示所有行 pd.set_option('display.max_rows', None) #设置value的显示长度为200,默认为50 pd.set_option('max_colwidth',200) df = xd.order_to_dataframe(xd.g_fullorder) #请勿直接使用pandas的DataFrame函数,可能会出错。 print('全局全量委托表:', '\n', df, '\n') zzc = xd.g_money['zzc'] print('总资产:', zzc, '\n') df['所占仓位'] = df.apply(lambda x: x['cjjj'] * x['cjsl'] / zzc, axis=1) #每笔委托的成交数量*成交均价/总资产放在新的一列中 df2 = df.loc[df['cz'] == '买入'] print('包含各买入委托单所占仓位的委托表', '\n', df2)</code></pre> <p><strong>运行结果</strong></p> <pre><code>全局全量委托表: bz cjjj cjsl cxsl cz gdzh htbh jysc wtjg wtrq \ 0 全部成交 16.41 200 0 卖出 00107220280 1242710071 深圳A股 16.41 20191023 1 全部成交 1.151 100 0 买入 A482940614 1242606557 上海A股 1.152 20191023 2 全部成交 6.96 200 0 买入 A482940614 1242707129 上海A股 6.96 20191023 3 未成交 0 0 0 买入 A482940614 1242712175 上海A股 6.28 20191023 wtsj wtsl zqdm zqmc 0 10:13:38 200 000001 平安银行 1 09:45:05 100 515000 科技ETF 2 10:13:10 200 600812 华北制药 3 10:14:58 100 600812 华北制药 总资产: 200407.79 包含各买入委托单所占仓位的委托表 bz cjjj cjsl cxsl cz gdzh htbh jysc wtjg wtrq \ 1 全部成交 1.151 100 0 买入 A482940614 1242606557 上海A股 1.152 20191023 2 全部成交 6.96 200 0 买入 A482940614 1242707129 上海A股 6.96 20191023 3 未成交 0 0 0 买入 A482940614 1242712175 上海A股 6.28 20191023 wtsj wtsl zqdm zqmc 所占仓位 1 09:45:05 100 515000 科技ETF 0.000574 2 10:13:10 200 600812 华北制药 0.006946 3 10:14:58 100 600812 华北制药 0.000000 </code></pre> <hr /> <h4><strong>2.计算持仓股的总累计盈亏(不含佣金等手续费)</strong></h4> <p><strong>示例代码</strong></p> <pre><code>#!/usr/bin/env python # -*- coding: utf-8 -*- from ths_api import * import pandas as pd #显示所有列 pd.set_option('display.max_columns', None) #显示所有行 pd.set_option('display.max_rows', None) #设置value的显示长度为200,默认为50 pd.set_option('max_colwidth',200) df = pd.DataFrame(xd.g_position) df = df.T #对df转置 print(df) df.loc['Col_sum'] = df.apply(lambda x: x.sum()) print('持仓总盈亏:', df['yk']['Col_sum'])</code></pre> <p><strong>运行结果</strong></p> <pre><code> cbj djsl gdzh gpye hbdw jksz jysc kyye sj sjsl \ 000001 16.598 0 00107220280 1400 0 深圳A股 1400 16.39 1400 002813 25.418 0 00107220280 200 0 深圳A股 200 25.2 200 002886 22.088 0 00107220280 400 0 深圳A股 400 24.48 400 300033 101.06 0 00107220280 100 0 深圳A股 100 98.37 100 515000 1.148 100 A482940614 300 0 上海A股 200 1.152 300 600812 6.959 0 A482940614 200 0 上海A股 200 6.96 200 sz yk zqdm zqmc 000001 22946 -290.96 000001 平安银行 002813 5040 -43.52 002813 路畅科技 002886 9792 956.99 002886 沃特股份 300033 9837 -269.04 300033 同花顺 515000 345.6 1.2 515000 科技ETF 600812 1392 0.19 600812 华北制药 持仓总盈亏: 354.85999999999996</code></pre> <hr /> <h4><strong>3.计算当日买入委托中已成交的股票总市值</strong>:</h4> <p><strong>示例代码</strong></p> <pre><code>#!/usr/bin/env python # -*- coding: utf-8 -*- from ths_api import * df0 = xd.order_to_dataframe(xd.g_fullorder) #请勿直接使用pandas的DataFrame函数,可能会出错。 print(df0) df = df0.loc[df0['cz'] == '买入'] api = hq.ths_hq_api() #行情实例 sum_sz = 0 for indexs in df.index: code = df.loc[indexs]['zqdm'] quote = api.get_quote(code) #获取code的最近一个分时行情数据 price = quote[code]['price'] sum_sz = sum_sz + price * float(df.loc[indexs]['cjsl']) print('%s最新价:%.2f' % (code, price)) print('当日买入委托中已成交的股票总市值:',sum_sz)</code></pre> <p><strong>运行结果</strong></p> <pre><code> bz cjjj cjsl cxsl cz gdzh htbh jysc wtjg wtrq \ 0 全部成交 16.41 200 0 卖出 00107220280 1242710071 深圳A股 16.41 20191023 1 全部成交 1.151 100 0 买入 A482940614 1242606557 上海A股 1.152 20191023 2 全部成交 6.96 200 0 买入 A482940614 1242707129 上海A股 6.96 20191023 3 未成交 0 0 0 买入 A482940614 1242712175 上海A股 6.28 20191023 wtsj wtsl zqdm zqmc 0 10:13:38 200 000001 平安银行 1 09:45:05 100 515000 科技ETF 2 10:13:10 200 600812 华北制药 3 10:14:58 100 600812 华北制药 000001最新价:16.42 515000最新价:1.15 600812最新价:6.84 600812最新价:6.84 当日买入委托中已成交的股票总市值: 4767 </code></pre>

页面列表

ITEM_HTML