python选股并导入通达信自选股

"""
关注公众号: Ctp接口量化
"""
import time
from 手机版选股 import *
ths_user = Wencai() 
# ths_user.login(Config["userid"],Config["password"])# 登陆交易账号 
def 选股():   
    # # # 交投活跃股    
    # 条件 = '(成交额/总市值)>5%,成交额>10亿'
    # 条件 = '连续三天量比>2,成交额>10亿'
    条件 = '周平均换手率>10%,成交额>10亿'    
    # # # 超跌选股    
    # 条件 = '周rsi(rsi24值)上穿30'  
    # 条件 = '周rsi(rsi24值)上穿30,涨幅<3%'
    # 条件 = '周rsi(rsi24值)上穿30,涨幅<3%,量比>3'
    # 条件 = '周rsi(rsi24值)上穿30,涨幅<3%,量比>3,换手率大于3%'
    # 条件 = '周rsi(rsi24值)上穿30,涨幅<3%,量比>3,换手率大于3%,成交额>10亿'
     
    # 条件 = '周rsi(rsi24值)小于30,日kdj金叉,量比大于1'
    # 条件 = '周rsi(rsi24值)小于30,日k上穿30,量比大于2'
    # 条件 = '周rsi(rsi24值)小于30,日kdj金叉,量比大于1'
    # 条件 = '周rsi(rsi24值)小于30,日rsi(rsi24值)上移,量比大于1'
    # 条件 = '周rsi(rsi24值)小于30,日rsi(rsi24值)上穿30,量比大于1'    
    # # # 财务选股
    # 条件 = '连续三年毛利率率大于50%'  
    # 条件 = '连续三年净利润同比增长率大于10%'  
    # 条件 = '连续三年净利润同比增长率大于10%,连续三年净资产同比增长率大于10%'
    # 条件 = '连续三年净利润同比增长率大于10%,连续三年净资产同比增长率大于10%,连续三年营业收入同比增长率大于50%'
    # 条件 = '连续三年净利润同比增长率大于10%,连续三年净利润同比增长率大于10%,连续三年毛利率同比增长率大于10%,连续三年净资产同比增长率大于10%,连续三年营业收入同比增长率大于10%'
    # 条件 = '基金重仓'
    # 条件 = '基金重仓,基金连续3个季度增仓'
    # 条件 = '基金重仓,基金连续3个季度增仓,机构持股占总股本大于30%'
    # 条件 = '贸易战受益股'
    
    # 条件 = '60分钟周期MACD底背离,涨幅<3%'
    # 条件 = '60分钟周期MACD底背离,涨幅<3%,量比>1.5'    
    Data_list = ths_user.Xuangu(条件) #调用选股函数 传入选股条件
    for i in Data_list:
        print(i["代码"][:-3])
        # print(i)      
        # 开仓 = ths_user.buy(stock_code=i["代码"][:-3],price=i["价格"],amount=1000)      #同花顺
        # print(开仓)
        保存(i["代码"][:-3])       
def 保存(stock_code):
    stock_code = str(stock_code)
    if stock_code.startswith(('50', '51', '60', '688', '73', '90', '110', '113', '132', '204', '78')):
        code = '1'+stock_code
    if stock_code.startswith(('00', '13', '18', '15', '16', '18', '20', '30', '39', '115', '1318')):
        code = '0'+stock_code
    F = open("E:\\TDX\\T0002\\blocknew\\ZXG.blk","a")#添加到通达信自选股
    F.write(code+'\n')
    F.close  

def 止损止盈(止损=-300,止盈=1500):
    ths_user.qryChedan()    # 撤销全部委托
    全部持仓 = ths_user.qryChicang()    # 全部持仓
    for pos in 全部持仓:
        print("="*30)
        print("编号",pos["d_3001"])
        print("证券代码",pos["d_2102"])
        print("证券名称",pos["d_2103"])
        print("可用余额",pos["d_2121"])
        print("成本价",pos["d_2122"])
        print("市价",pos["d_2124"])
        print("市值",pos["d_2125"])
        print("浮动盈亏",pos["d_2147"])
        if float(pos["d_2147"]) <= float(止损) or float(pos["d_2147"]) > float(止盈):
            stock = ths_user.sell( stock_code=pos["d_2102"], price=pos["d_2124"], amount=pos["d_2121"], volume=0, entrust_prop='limit')
            print("平仓")
def 定时():
    while True:
        time.sleep(6)
        _time = time.strftime('%H%M%S')
        if _time == '100100':
            选股()
        # if _time == '102500' or _time == '112500' or _time == '132600' or _time == '142500':
            # 止损止盈() 
        止损止盈()        
if __name__ == '__main__':
    选股()
    
    

在这里插入图片描述

### 使用 Python 实现通达信自选股的读取和写入 #### 一、准备工作 为了能够通过 Python通达信自选股进行读取和写入操作,需要了解通达信自选股文件的存储路径以及其格式。 通常情况下,通达信自选股保存在一个特定目录下的 `.blk` 文件中。这些文件位于用户的个人资料夹内,具体位置可能因操作系统和个人设置而异[^2]。 对于 Windows 用户而言,默认路径可能是类似于 `C:\Users\用户名\.tdx\blocknew\` 或者其他由安装过程指定的位置。Linux 和 macOS 的用户则需查找相应环境中的配置说明来定位该文件所在之处。 #### 二、读取通达信自选股列表 要读取通达信自选股的数据,可以采用如下方法: ```python def read_tdx_stock_list(file_path): stock_codes = [] try: with open(file_path, 'r', encoding='gbk') as file: lines = file.readlines() for line in lines: code = line.strip().split('|')[1].strip()[:6] if not (code.startswith('0') or code.startswith('3')): continue stock_codes.append(code) return stock_codes except Exception as e: print(f'Error reading TDX block file: {e}') return [] file_path = r'C:\path_to_your_file.blk' stock_list = read_tdx_stock_list(file_path) print(stock_list) ``` 此函数会打开给定路径处的一个 .blk 文件,解析其中每一行的内容以提取股票代码。这里假设每条记录是以竖杠分隔开来的字符串形式存在的;实际应用时应根据实际情况调整正则表达式的匹配逻辑。 #### 三、向通达信添加新的自选股项 当想要往现有的自选股集合里增加新成员时,则可以通过追加的方式修改对应的 .blk 文件: ```python import os def add_stocks_to_block(block_name, stocks, tdx_dir=r"C:\Users\YourName\.tdx"): blk_filename = f"{block_name}.blk" full_blk_path = os.path.join(tdx_dir, "blocknew", blk_filename) existing_lines = set() if os.path.exists(full_blk_path): with open(full_blk_path, 'rb') as fp: content = fp.read().decode('GBK') existing_lines.update(content.split('\n')) new_entries = [ f"1|{s}|{''.join([' ']*8)}|0\n".encode('GBK') for s in stocks if all([ isinstance(s, str), len(s) >= 6, any([c.isdigit() for c in s]), f"1|{s}" not in ''.join(existing_lines) ]) ] if new_entries: mode = 'ab+' if os.path.isfile(full_blk_path) else 'wb' with open(full_blk_path, mode) as fp: fp.writelines(new_entries) add_stocks_to_block("我的自选", ["000001"]) ``` 上述脚本定义了一个名为 `add_stocks_to_block()` 的功能,它接受三个参数:板块名称 (`block_name`)、待加入的新股列表(`stocks`) 及通达信根目录(`tdx_dir`) 。如果目标区块已经存在同名项目,则仅新增那些尚未存在于当前区块内的证券编号。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

投图匠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值