交易例子----qmt实盘分钟交易例子,提供交易源代码

今天给大家一个利用qmt_trader交易策略,我现在实盘使用的系统是自己开发的,只需要把qmt_trader当中第三方库使用就可以,源代码开源开源直接下载 量化系统--开源强大的qmt交易系统,提供源代码

参考教程使用,下载当第三方库使用就开源

第一步登录qmt选择选择极简模式,独立交易也可以

图片

把文件qmt_trader当中第三方库使用就可以

图片

修改去qmt路径账户,参数就可以,在源代码后面修改

图片

这个当然只是简单例子,实盘才是真的复杂,实盘很多源代码

图片

图片

我们测试改成True,测试一下程序,不然可能没有符合的

图片

运行策略

图片

图片

测试程序没有问题test改成False进入实盘模式

图片

运行程序

图片

图片

这里改成14和交易是一模一样的时间

图片

进入24小时交易,3秒检查一次可以自己该

图片

下单结果,当前时间不能委托

图片

不懂的可以直接问我,备注入群可以家人我的量化学习群

图片

当然也可以找我开qmt,我提供专业的服务

源代码

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_stock_log=[]        #卖出记录        self.sell_stock_log=[]        #买入的目标金额        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:                        if stock not in self.buy_stock_log:                            self.trader.buy(security=stock,amount=trader_amount,price=price)                            print('{} 金叉 买入 股票{} 数量{} 价格{}'.format(datetime.now(),stock,trader_amount,price))                            self.buy_stock_log.append(stock)                        else:                            print('{}已经买入'.format(stock))                    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:                        if stock not in self.sell_stock_log:                            self.trader.sell(security=stock,amount=trader_amount,price=price)                            print('{} 死叉 卖出 股票{} 数量{} 价格{}'.format(datetime.now(),stock,trader_amount,price))                            self.sell_stock_log.append(stock)                        else:                            print('{}已经卖出'.format(stock))                    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)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ONLYOFFICE桌面编辑器8.1版:个性化编辑和功能强化的全面升级

ONLYOFFICE是一款全面的办公套件,由Ascensio System SIA开发。该软件提供了一系列与微软Office系列产品相似的办公工具,包括处理文档(ONLYOFFICE Document Editor)、电子表格(ONLYOFFICE Spreadsheet Editor&#xff0…

Ubuntu Nvidia GPU驱动安装和故障排除

去官网 菜单列表下载,或者直接下载驱动 wget https://cn.download.nvidia.com/XFree86/Linux-x86_64/550.54.14/NVIDIA-Linux-x86_64-550.54.14.run 安装驱动 /data/install/NVIDIA-Linux-x86_64-550.54.14.run 执行命令,显示GPU情况 出错处理&…

【深度学习】tensorboard的使用

目前正在写一个训练框架,需要有以下几个功能: 1.保存模型 2.断点继续训练 3.加载模型 4.tensorboard 查询训练记录的功能 命令: tensorboard --logdirruns --host192.168.112.5 效果: import torch import torch.nn as nn impor…

java 利用poi读取wps嵌入式图片,自测

代码 主要工具类 需要引入依赖&#xff1a; mvn install:install-file -DfileC:\Users\18151\Downloads\apache-xmlbeans-bin-5.2.1-20240522\apache-xmlbeans-5.2.1\bin\xmltypes.jar -DgroupIdcn.wps -DartifactIdofficeDocument -Dversion1.0 -Dpackagingjar<dependen…

视频网站系统

摘 要 随着互联网的快速发展和人们对视频内容的需求增加&#xff0c;视频网站成为了人们获取信息和娱乐的重要平台。本论文基于SpringBoot框架&#xff0c;设计与实现了一个视频网站系统。首先&#xff0c;通过对国内外视频网站发展现状的调研&#xff0c;分析了视频网站的背景…

React@16.x(41)路由v5.x(6)常见应用场景(3)- 实现导航守卫

目录 1&#xff0c;简单实现1.1&#xff0c;监听1.2&#xff0c;控制跳转 2&#xff0c;全局封装3&#xff0c;阻止跳转 vue-router 中的导航守卫 router.beforeEach 有2个作用&#xff1a; 监听路由跳转&#xff1b;控制路由是否可以跳转。 在 React 中可以模拟实现。 1&am…

一站式uniapp优质源码项目模版交易平台的崛起与影响

一、引言 随着信息技术的飞速发展&#xff0c;软件源码已成为推动行业进步的重要力量。源码的获取、交易和流通&#xff0c;对于开发者、企业以及项目团队而言&#xff0c;具有极其重要的意义。为满足市场对高质量源码资源的迫切需求&#xff0c;一站式uniapp优质源码项目模版…

STM32开发实战:SPI接口在W25Q64 Flash存储器中的应用

摘要 本文将深入探讨STM32微控制器如何利用SPI接口与W25Q64 Flash存储器进行通信。W25Q64是一款常用的SPI串行Flash存储器&#xff0c;具有8Mbit的存储容量。本教程将指导读者完成硬件连接、SPI配置、读写操作&#xff0c;并提供实际的代码实现。 1. SPI接口概述 SPI是一种串…

激光雷达数据处理

激光雷达技术以其高精度、高效率的特点&#xff0c;已经成为地表特征获取、地形建模、环境监测等领域的重要工具。掌握激光雷达数据处理技能&#xff0c;不仅可以提升工作效率&#xff0c;还能够有效提高数据的质量和准确性&#xff0c;为决策提供可靠的数据支持。 第一章、激…

【论文解读】STUDY ON CODING TOOLS BEYOND AV1

论文下载地址:STUDY ON CODING TOOLS BEYOND AV1 摘要 开放媒体联盟最近启动了针对超越AV1的下一代视频编码工具的探索活动。 在这方面,本文介绍了一套在称为libaom的代码库之上经过研究、实施和测试的编码工具包,该代码库用于探索下一代视频压缩工具。 所提出的工具涵盖了…

Spring自带的持久层模板类:JdbcTemplate+Spring框架声明式事务管理实战

模板技术 Spring框架中提供了很多模板类来简化编程&#xff0c;使用模板类编写程序会变的简单 持久层模板JdbcTemplate JdbcTemplate是什么 JDBCTemplate是Spring Framework中的一个核心类&#xff0c;用于简化JDBC&#xff08;Java数据库连接&#xff09;代码的编写。它提供…

Gazebo给机器人添加碰撞检测属性bumper

参考&#xff1a;GAZEBO探索——给机器人加上bumper_gazebo bumper-CSDN博客 gazebo的bumper使用_gazebo bumper-CSDN博客使用URDF在Gazebo中搭建碰撞仿真(bumper)_gazebo bumper-CSDN博客 gazebo官网中bumper插件介绍 Gazebo : Tutorial : Gazebo plugins in ROS 添加的到.…

SQLite、MySQL、PostgreSQL 3个关系数据库之间优缺点对比

引言 关系数据模型以行和列的表格形式组织数据&#xff0c;在数据库管理工具中占主导地位。今天还有其他数据模型&#xff0c;包括NoSQL和NewSQL&#xff0c;但是关系数据库管理系统&#xff08;RDBMS&#xff09;仍然占主导地位用于存储和管理全球数据。 本文比较了三种实现最…

关于几种熵的计算(MATLAB)

Shannon在1948年定义了信息熵&#xff0c;并用信息熵来衡量一个事件的不确定程度。作为信息论中一个重要的基本概念&#xff0c;信息就是一种客观存在和能动的过程&#xff0c;它可以减少或者消除事件的不确定因素。一切客观事物的属性中都包含着不确定性&#xff0c;人们在没有…

mac菜单栏应用管理软件:Bartender 4 for Mac 中文激活版

Bartender 4 是一款由Bearded Men Games开发的适用于Mac操作系统的应用程序&#xff0c;它被设计用来优化和美化Mac菜单栏的功能。自从macOS Big Sur开始&#xff0c;Mac的菜单栏可以自定义&#xff0c;用户可以添加和移除各种图标。Bartender 4就是在这个背景下应运而生&#…

Redis高可用(主从复制、哨兵模式)详解

Redis高可用&#xff08;主从复制、哨兵模式&#xff09;详解 Redis是一种高性能的键值存储系统&#xff0c;能够通过多种机制来实现高可用性&#xff0c;这些机制主要包括主从复制&#xff08;Replication&#xff09;和哨兵模式&#xff08;Sentinel&#xff09;。 Redis 主…

js,uni 自定义 时间选择器 vue2

<template><view class"reserve-time-box"><view class"title">选择时间</view><view class"date-box"><view class"date-scroll-box" :style"{ width : ${dataTimeWidth}rpx }"><v…

contenteditable——html5新增的一个允许用户直接在页面中编辑文本内容的属性

一、定义与功能 contenteditable是HTML5中的一个属性&#xff0c;它的主要功能是允许用户直接在页面中编辑文本内容。当将contenteditable属性设置为"true"时&#xff0c;用户可以点击、选择、编辑和删除元素中的文本内容。这使得网页成为一个可编辑的区域&#xff…

Node.js下载及安装详细教程

目录 Node.js安装详细教程 下载安装环境变量配置文件结构配置npm在安装全局模块时的路径和缓存cache的路径测试常见命令 Node.js安装详细教程 &#x1f441;官网下载地址:Download | Node.js (nodejs.org) 下载速度慢的话 可以使用网盘下载&#xff1a; https://pan.quark.…

自然语言处理基本知识(1)

一 分词基础 NLP:搭建了计算机语言和人类语言之间的转换 1 精确分词&#xff0c;试图将句子最精确的分开&#xff0c;适合文本分析 >>> import jieba >>> content "工信处女干事每月经过下属科室" >>> jieba.cut(content,cut_all …