新年立个Flag 学写50个QMT策略:

新建一个 Python 策略

创建方法:

我的主页-新建策略

删掉模板带的内容,输入第一个策略 01-HelloWorld:

编写 Python 策略需在开始时定义编码格式,如 gbk。

Init 方法和 handlebar 方法的定义是必须的。

上图展示了如何在 QMT 系统上用 Python 写一个输出HelloWorld 的模型。

图中的模型实现了一个Python 模型必须实现 的两个接口: init()与 handlebar() 。

输出窗口展示了这个模型的运行输出。

系统首先调用 init() 方法输出了 hello init,

随后在每根 K 线上调用一次 handlebar() ,输出一次hello handlebar。

小贴士:

print用函数,别用命令式,记得带上圆括号.

概念

1)Bar

QMT 系统的模型是根据行情驱动,逐 K 线(Bar)运行,即点击运行模型时,模型是从第 0 根 K 线开始运行到最后一根 K 线.

每根 K 线调用一次 Python 模型中的handlebar(ContextInfo) 函数。

在盘中,最后一根 K 线每变动一次,handlebar(ContextInfo) 函数被执行一次。这根 K 线的最后一个tick 判定模型信号是否成立,如果模型信号成立,交易函数被调用,则在下一根 K 线的第一个 tick 发出下单信号,生成下单任务。

根据选择的运行周期不同,handlebar(ContextInfo) 函数的运行次数也不同。

如选择在日线上运行策略,则 handlebar(ContextInfo) 函数每天被调用一次

快速计算: 如想加快模型运行速度,可以策略编辑器 - 基本信息中设置快速计算,限制计算范围,只计算最新的指定数量的 K 线范围.限制计算范围,默认为 0 时模型运行会从模型设置的默认品种(主图)的第一根 K 线开始计算,设置为 n 则从当前 K 线再往前 n 个 K 线开始计算.

2)Init

init是一个Python模型的初始化方法。会在模型加载策略时调用一次,负责初始化模型运行所需的初始变量,初始化资金账号、初始化全局变量、对于基准 benchmark 和设定股票池universe等。

ContextInfo.accID = '3037834' #初始化资金账号
ContextInfo.order=10 #初始化设置也写全局变量,例如设定买入的手数

如果用户的模型无需做初始化,可以在方法体中写pass,但方法的定义必须存在,否则模型的运行会报错。

3)Handlebar

handlebar 是整个 Python 模型中的核心执行函数。当模型从数据层获取到运行所需要的数据之后,会对数据集上的每一根 bar,调用一次 handlebar 函数,处理当前这根 bar 上的数据。也就是说,用户模型的核心逻辑都是写在该函数中的,如获取数据,设置下单条件等。在 handlebar 中处理完数据后,用户可以通过 print 方法将需要绘图输出的结果返回给界面。界面会将输出结果如实的展示出来。

可在 handlebar 中使用 ContextInfo.barpos 来获取当前的 bar 索引位置。

def handlebar(ContextInfo):print ('hello handlebar')if ContextInfo.is_last_bar(): #判断是否为最后一根K线,跳过历史K线,用最新K线运行策略index=ContextInfo.barpos #返回当前运行到的K线索引号t=ContextInfo.get_bar_timetag(index)  #获取当前K线对应的时间戳date=timetag_to_datetime(t,"%Y%m%d") #将当前的时间戳转化成日期的格式print(index,t,date)

4)ContextInfo

ContextInfo 是整个 框架中的一个核心对象。它包含了各种与 Python 底层框架交互的 API 方法,也是一个全局的上下文环境,可以在 init 以及 handlebar 这两个函数中自由地传递用户创建的各种自定义数据。

ContextInfo 是 Python 模型中的全局对象,其中封装了 benchmark,universe 等变量,也封装了get_history_data 等重要函数,是 init 与 handlebar 之间,以及各个 handlebar 之间进行信息传递的重要载体。用户也可以在其中封装自己想要定义的全局变量或函数,但注意不要与原有的重名。

5) 设定股票池

方法一:取板块的成分股作为股票池,例如取"上证50"成分股,

ContextInfo.trade_code_list=ContextInfo.get_stock_list_in_sector("上证50")

方法二:可以自定义列表,将股票代码加到列表里

ContextInfo.trade_code_list=['600000.SH','300462.SZ','000697.SZ','300008.SZ']
ContextInfo.set_universe(ContextInfo.trade_code_list)

[QMT]01-我的第一个Python策略相关推荐

  1. 使用python写一个选股策略

    好的,写一个选股策略需要以下步骤: 数据准备:收集股票的历史数据,如价格.收益率.市盈率等,可以使用各种金融数据源,例如Yahoo Finance等. 策略构建:根据投资理念和目标,构建选股策略,例如 ...

  2. 每周一个 Python 模块 | time

    专栏地址:每周一个 Python 模块 几乎所有的正式代码中,我们都需要与时间打交道.在Python中,与时间处理有关的模块包括time,datetime以及calendar,本节主要讲解time模块 ...

  3. python k线合成_手把手教你写一个Python版的K线合成函数

    手把手教你写一个Python版的K线合成函数 在编写.使用策略时,经常会使用一些不常用的K线周期数据.然而交易所.数据源又没有提供这些周期的数据.只能通过使用已有周期的数据进行合成.合成算法已经有一个 ...

  4. 推荐一个Python终身学习者

    今天给大家推荐一个Python终身学习者:老表,他是开源学习组织Datawhale终身成员,有一年半的Python编程学习经验,热爱爬虫与数据分析,掌握了Python Web开发框架 Flask,虽然 ...

  5. python源码提取_Python|第一个python程序(获取音乐下载地址,附源码)

    至少我们曾经在一起过. 来自:一言 软件截图 软件说明: 刚刚开始接触python,做出一个这样的软件,很low.附上源码, 希望大佬可以指点指点,正在琢磨怎么把音乐下载下来... 软件源码 impo ...

  6. Python 开篇及第一个Python程序

    本节内容 python 简单介绍 python 2.x 或者python 3.x python 安装 第一个python程序 一.python简单介绍 python的创始人为吉多.范罗苏姆(Guido ...

  7. Python基础班---第一部分(基础)---Python基础知识---第一个Python程序

    01. 第一个 HelloPython 程序 1.1 Python 源程序的基本概念 Python 源程序就是一个特殊格式的文本文件,可以使用任意文本编辑软件做 Python 的开发 Python 程 ...

  8. python策略模式包含角色_详解Python设计模式之策略模式

    虽然设计模式与语言无关,但这并不意味着每一个模式都能在每一门语言中使用.<设计模式:可复用面向对象软件的基础>一书中有 23 个模式,其中有 16 个在动态语言中"不见了,或者简 ...

  9. 人生苦短之---第一个Python程序

    第一个 Python 程序 目标 第一个 HelloPython 程序 Python 2.x 与 3​​.x 版本简介 执行 Python 程序的三种方式 解释器 -- python / python ...

最新文章

  1. 手撕 leetcode 中难题 第一天
  2. Containers vs Serverless:怎么选择?
  3. CentOS中Jenkins的下载、安装、配置与启动(图文教程)
  4. 火山引擎端云一体化服务:打造面向体验的视频云
  5. WTMPlus 低代码平台来了
  6. power bi函数_在Power BI中的行上使用聚合函数
  7. fprom预测结果内容_预测模型之机器学习 Machine Learning结果解读篇
  8. 检测浏览器是否支持WebSocket
  9. jsp网页上实现计算圆面积小程序
  10. 第2次预习课-0704
  11. php多维数组key交换,php 根据key计算多维数组的和功能实例
  12. 问题三十八:C++中bad alloc问题(2)——使用“引用”避免该问题
  13. python editor_Python+Weditor
  14. 让FineUI数据绑定支持dynamic对象
  15. 读取FBX文件踩坑清单
  16. 关于linux系统安装zabbix报错的解决方案
  17. 您需要计算机管理员提供的权限才能更改,您需要管理员权限才能删除此文件夹...
  18. 常识——手机当作无线网卡,通过usb与电脑共享网络,让电脑网卡支持5g网络
  19. 人脸识别闸机系统解决方案
  20. 修复win7更新服务器失败,win7的windows update无法启动,手动在服务里启动提示“错误2:系统找不到指定文件...

热门文章

  1. Spring Security 配置 Remember Me
  2. python判断字符串是字母 数字 大小写
  3. 代码格式化脚本CodeFormat
  4. Autofac依赖注入
  5. 【QTdesigner】课时36.使用QTextEdit控件输入多行文本【pyqt5+QTdesigner模式】
  6. 多智能体系统的概念与结构
  7. MySQL之——函数
  8. 深入分析AMM恒定乘积模型的滑点与无常损失
  9. wifi 802.11 kvr 漫游
  10. rasa算法_使用 Rasa 构建天气查询机器人