量化系统--开源强大的qmt交易系统,提供源代码

经过的3天终于写完了qmt_trader的文档了开源直接使用我开源了全部源代码

文档地址 https://gitee.com/li-xingguo11111/qmt_trader

图片

图片

图片

图片

图片

源代码from qmt_trader.qmt_trader import qmt_trader

from qmt_trader.xtquant.xttype import StockAccountfrom qmt_trader.xtquant import xtconstanttrader=qmt_trader(path= r'D:/国金QMT交易端模拟/userdata_mini',                  session_id = 123456,account='55011917',account_type='STOCK',                  is_slippage=True,slippage=0.01)#链接trader.connect()position=trader.position()print(position)account=trader.balance()print(account)

输出的结果

链接qmt0持仓数量: 9   账号类型      资金账号    证券代码   股票余额   可用余额     成本价   参考成本价        市值0     2  55011917  513100  26600  26600   1.441   1.441   38889.21     2  55011917  513400    100    100   1.050   1.050      99.92     2  55011917  513850   7800   7800   1.279   1.279    9991.83     2  55011917  600031    400    400  19.165  19.165    6328.04     2  55011917  159655   6800   6800   1.462   1.462   10077.65     2  55011917  159687    100    100   1.300   1.300     125.56     2  55011917  159937    300    300   5.418   5.418    1590.37     2  55011917  161128  24600  24600  48.988  48.988  130183.28     2  55011917  164824  28900  28900  12.689  12.689   46066.6   账号类型      资金账户         可用金额  冻结金额      持仓市值          总资产0     2  55011917  18356536.56   0.0  243352.1  18599859.76

图片

实盘交易框架模板

from qmt_trader.qmt_trader import qmt_traderfrom qmt_trader.qmt_data import qmt_datafrom qmt_trader.trader_tool import tdx_indicatorimport schedulefrom datetime import datetimeimport timeimport pandas as pdclass my_trader:    def __init__(self,path= r'D:/国金QMT交易端模拟/userdata_mini',                  session_id = 123456,account='55011917',account_type='STOCK',                  is_slippage=True,slippage=0.01,test=True):        '''        实时分钟T0策略利用实盘交易框架2.0        均线金叉买入死差卖出        '''        self.path=path        self.session_id=session_id        self.account=account        self.account_type=account_type        self.is_slippage=is_slippage        self.slippage=slippage        self.test=test        #买入的目标金额        self.buy_max_value=10000        #卖出的目标金额        self.sell_max_value=0        #股票列表        self.code_list=['159937','159980','159985','159981']        #5分,特别提醒这个参数和获取数据的速度有关系默认是3秒一次数据,        # 如果是3秒5分钟就等于3*20*5,short_line=100,这个我后面检验一下        self.short_line=5        #10分钟        self.long_line=10        self.trader=qmt_trader(path=self.path,account=self.account,account_type=self.account_type,                            is_slippage=self.is_slippage,slippage=self.slippage)        self.data=qmt_data()        #调整股票代码        self.stock_list=[]        for stock in self.code_list:            self.stock_list.append(self.trader.adjust_stock(stock=stock))        #订阅一分钟的数据,需要更快的话可以订阅tick数据        for stock in self.stock_list:            self.data.subscribe_quote(stock_code=stock,period='1m',start_time='20240101',                                      end_time='20500101',count=-1)    def connact(self):        '''        链接qmt        '''        try:            self.trader.connect()            print(self.trader.balance())            print(self.trader.position())            return True        except Exception as e:            print("运行错误:",e)            print('{}连接失败'.format('qmt'))            return False    def trader_func(self):        '''        交易函数        '''        #检查是否是交易时间        if self.trader.check_is_trader_date_1(trader_time=4,start_date=9,end_date=14,start_mi=0,jhjj='否'):            #读取订阅数据            df=self.data.get_market_data_ex(stock_list=self.stock_list,period='1m',                                            start_time='20240101',end_time='20500101',count=-1)            #解析数据            for stock in self.stock_list:                data=pd.DataFrame()                hist=df[stock]                data['date']=hist.index                data['close']=hist['close'].tolist()                data['short_line']=data['close'].rolling(self.short_line).mean()                data['long_line']=data['close'].rolling(self.long_line).mean()                #测试函数                data['test']=data['short_line']>data['long_line']                #金叉                if self.test:                    #测试交易                    gold_fork=data['test'].tolist()[-1]                else:                    gold_fork=tdx_indicator.CROSS_UP(S1=data['short_line'],S2=data['long_line'])[-1]                                #死叉                if self.test:                    dead_fork=data['test'].tolist()[-1]                else:                    dead_fork=tdx_indicator.CROSS_DOWN(S1=data['short_line'],S2=data['long_line'])[-1]                                #买入                if gold_fork==True:                    #买入                    stock=self.trader.adjust_stock(stock=stock)                    price=self.data.get_full_tick(code_list=[stock])[stock]['lastPrice']                    stock=stock[:6]                    trader_type,trader_amount,price=self.trader.order_target_value(stock=stock,price=price,value=self.buy_max_value)                    if trader_type=='buy' and trader_amount>=10:                        self.trader.buy(security=stock,amount=trader_amount,price=price)                        print('{} 死叉 买入 股票{} 数量{} 价格{}'.format(datetime.now(),stock,trader_amount,price))                    elif trader_type=='sell' and trader_amount>=10:                        self.trader.sell(security=stock,amount=trader_amount,price=price)                        print('持有买多了平部分{} 卖出 股票{} 数量{} 价格{}'.format(datetime.now(),stock,trader_amount,price))                    else:                        print('{} 触发金叉{}执行买入不了'.format(datetime.now(),stock))                else:                    print('{} 没有触发金叉{}'.format(datetime.now(),stock))                if dead_fork==True:                    #卖出                    stock=self.trader.adjust_stock(stock=stock)                    price=self.data.get_full_tick(code_list=[stock])[stock]['lastPrice']                    stock=stock[:6]                    trader_type,trader_amount,price=self.trader.order_target_value(stock=stock,price=price,value=self.sell_max_value)                    if trader_type=='sell' and trader_amount>=10:                        self.trader.sell(security=stock,amount=trader_amount,price=price)                        print('{} 死叉 卖出 股票{} 数量{} 价格{}'.format(datetime.now(),stock,trader_amount,price))                    else:                        print('{} 触发死叉{}执行卖出不了'.format(datetime.now(),stock))                else:                    print('{} 没有触发死叉{}'.format(datetime.now(),stock))        else:            print('{}目前不少交易时间'.format(datetime.now()))if __name__=='__main__':    trader=my_trader(path= r'D:/国金QMT交易端模拟/userdata_mini',                  session_id = 123456,account='55011917',account_type='STOCK',                  is_slippage=True,slippage=0.01,test=False)    trader.connact()    #3秒    schedule.every(0.05).minutes.do(trader.trader_func)    while True:        schedule.run_pending()        time.sleep(1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/730299.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

opencascade AIS_InteractiveContext源码学习2

AIS_InteractiveContext 前言 交互上下文(Interactive Context)允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是,对于已经被交互上下文识别的交互对象,必须使用上下文方法进行…

C语言练习03-字符串

一、遍历字符 #include<stdio.h>int main() {char str[100];//录入字符串printf("请输入一串字符&#xff1a;\n");scanf("%s",str);//遍历字符串char* p str;while(1){char c *p;if(c \0){//如果遍历到结束标记&#xff0c;则循环结束break;}//…

雷池社区版自动SSL

正常安装雷池&#xff0c;并配置站点&#xff0c;暂时不配置ssl 不使用雷池自带的证书申请。 安装&#xff08;acme.sh&#xff09;&#xff0c;使用域名验证方式生成证书 先安装git yum install git 或者 apt-get install git 安装完成后使用 git clone https://gitee.com/n…

应用案例 | 冷藏集装箱基于云的WiFi无线温度监测系统COMET Cloud

一、集装箱的作用和分类 集装箱运输是国际贸易货物多式联运过程中的重要运输方式。由于集装箱运输具有标准化高、密封性好&#xff0c;破损率低、集约化、规模化、班轮化、成本低、质量好等优点&#xff0c;大大提高了货物运输的安全和效率。 集装箱种类很多&#xff0c;按所…

C++类基本常识

文章目录 一、类的默认方法二、类的成员变量初始化1 类的成员变量有三种初始化方法&#xff1a;2 成员变量初始化顺序3 const和static的初始化 三、C内存区域四、const和static 一、类的默认方法 C的类都会有8个默认方法 默认构造函数默认拷贝构造函数默认析构函数默认重载赋…

mongodb嵌套聚合

db.order.aggregate([{$match: {// 下单时间"createTime": {$gte: ISODate("2024-05-01T00:00:00Z"),$lte: ISODate("2024-05-31T23:59:59Z")}// 商品名称,"goods.productName": /美国皓齿/,//订单状态 2:待发货 3:已发货 4:交易成功…

最火AI角色扮演流量已达谷歌搜索20%!每秒处理2万推理请求,Transformer作者公开优化秘诀

卡奥斯智能交互引擎是卡奥斯基于海尔近40年工业生产经验积累和卡奥斯7年工业互联网平台建设的最佳实践&#xff0c;基于大语言模型和RAG技术&#xff0c;集合海量工业领域生态资源方优质产品和知识服务&#xff0c;旨在通过智能搜索、连续交互&#xff0c;实时生成个性化的内容…

springboot3 连接 oceanbase + logproxy数据同步到redis

我这用的是 社区版的 单机&#xff0c; rocky liunx 安装oceanbase 注意事项&#xff1a; logproxy 是 CDC 模式 &#xff0c; springboot 可以直接订阅 canal 是 binlog模式&#xff0c; canal 订阅 logproxy&#xff0c; springboot 订阅 canal logproxy 也可以转 bi…

何在 Vue3 中使用 Cytoscape 创建交互式网络图

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 Vue.js 中加载 Cytoscape.js 的技术实现 应用场景 Cytoscape.js 是一个用于创建交互式网络的可视化库。在生物信息学、社会网络分析和药物发现等领域中得到了广泛应用。 基本功能 本代码片段演示了如何在 V…

python测试工程师 之 unittest框架总结

unittest 学习目标unittest 框架的基本使⽤⽅法(组成)断⾔的使⽤ (让程序⾃动的判断预期结果和实际结果是否相符)参数化(多个测试数据, 测试代码写⼀份 传参)⽣成测试报告 复习pythonunittest 框架的介绍核⼼要素(组成)1. TestCase 测试⽤例, 这个测试⽤例是 unittest 的组成部…

LeetCode题练习与总结:克隆图--133

一、题目描述 给你无向 连通 图中一个节点的引用&#xff0c;请你返回该图的 深拷贝&#xff08;克隆&#xff09;。 图中的每个节点都包含它的值 val&#xff08;int&#xff09; 和其邻居的列表&#xff08;list[Node]&#xff09;。 class Node {public int val;public L…

【案例分析:基于 Python 的几种神经网络构建 一维的和二维的全介质和金属SPR 材料的光谱预测与逆向设计】

案例分析&#xff1a;传播相位与几何相位超构单元仿真与器件库提取与二维超构透镜设计与传播光场仿真 案例分析&#xff1a; 片上的超构单元仿真与光学参数提取 案例分析&#xff1a;基于粒子群方法的耦合器设计 案例分析&#xff1a;基于 Python 的几种神经网络构建 一维的和二…

【大分享06】收、治、用、安“四管齐下”, 做好多业务系统电子文件归档与管理

关注我们 - 数字罗塞塔计划 - 本篇是参加由电子文件管理推进联盟联合数字罗塞塔计划发起的“大分享”活动投稿文章&#xff0c;来自上海泰宇信息技术股份有限公司&#xff0c;作者&#xff1a;金靓。 随着数字政府建设的深入推进以及“互联网政务服务”的快速发展&#xff0c…

canal 服务安装

简介&#xff1a;Canal 是阿里巴巴开源的一个基于 MySQL 数据库增量日志解析的中间件&#xff0c;用于提供准实时的数据同步功能。 准备工作 1.修改配置文件 ,需要先开启 Binlog 写入功能&#xff0c;配置 binlog-format 为 ROW 模式&#xff0c;my.cnf 中配置如下&#xf…

sqlmap使用以及GUI安装

下载 GUI版地址: GitHub - honmashironeko/sqlmap-gui: 基于官版本 SQLMAP 进行人工汉化&#xff0c;并提供GUI界面及多个自动化脚本 GUI使用 可以点击.bat启动 如果点击.bat启动不了就在这里打开cmd,输入对应的.bat来启动 linux安装 地址:sqlmap: automatic SQL injection…

最新评测:2024年13款国内外缺陷跟踪管理工具(含免费/开源)

文章中介横向对比了11款主流缺陷管理工具&#xff1a;1. PingCode&#xff1b;2. Worktile&#xff1b;3. Jira&#xff1b;4. ZenTao&#xff08;禅道&#xff09;&#xff1b;5. Bugzilla&#xff1b;6. Redmine&#xff1b;7. Tapd&#xff1b;8. MantisBT&#xff1b;9. Tr…

【变量与常量】

1.基本程序 容器用来存放物品 声明变量 num 是个用来装整数的变量 &#xff01; 一 个整数变量需要 4 个 byte 存储&#xff0c; 计算机 在内存里为你分配了 4 个 byte 。int num;在代码中&#xff0c;声明一个变量。 常用变量类型 存储不同类型的数据需要声明不同类型的变…

MacOS - ToDesk 无法远程操控鼠标键盘解决方案

问题描述 远程后发现画面显示正常&#xff0c;但是键盘和鼠标的操作没有响应。 原因分析 可能是辅助功能没有勾选ToDesk_Session的权限。 解决方案 系统设置 - 隐私与安全性 - 辅助功能 进去后找到 ToDesk&#xff0c;开关打开&#xff0c;输入系统密码&#xff0c;重启 App …

Swift Combine — Notification、URLSession、Timer等Publisher的理解与使用

Notification Publisher 在Swift的Combine框架中&#xff0c;可以使用NotificationCenter.Publisher来创建一个能够订阅和接收通知的Publisher。 // 创建一个订阅通知的Publisher let notificationPublisher NotificationCenter.default.publisher(for: Notification.Name(&…

【阿里云服务器】【弹性云服务ECS】通过ssh登录远程服务器

一、操作系统 使用Windows11主机上的Ubuntu子系统&#xff0c;如下图所示&#xff1a; 二、云服务器登录方法 需知道&#xff1a;服务器ip地址、登录名和自己设置的登录密码&#xff1a; 上述系统用户名为root&#xff0c;需要在Ubuntu子系统中同样切换至root用户&#xff…