Python量化交易学习笔记(0)

本文将简单回顾我的量化交易学习的历程,并给出新手学习量化交易的建议学习路线,适合于尚无稳定盈利策略的量化新手阅读,量化大神们请略过。

本文将在博客中置顶,并不定期根据我的学习、交易进行更新。

回顾学习历程

2020年初接触量化交易以来,创建了3个微信群,每个群都有400多位群友,感谢大家捧场,
与群友一同探讨开发策略,也是受益匪浅。

下面按时间顺序介绍下接触过的平台/工具。

zwPython

读书的时候就开通了股票的账户,当时就是凭感觉,一顿胡乱操作,结果可想而知。那时候也想通过历史数据分析,来做自动化的交易,苦于毕业压力,没有再深入调研。

工作以后,开始买书学习,在书上接触了zwPython(极宽量化)。加了他们的付费群(长期不发言,已经被移出群了),把书里给的例子都敲了一遍。

我把zwPython看做是集成了部分量化包的免安装版Anaconda,里面集成了Tushare,可以获取股票的部分数据,还可以自己根据需要安装卸载python的各种包。

优点
  • 下载解压即用,无需配置环境。
  • 有配套书籍,有实例可参考。
缺点
  • 新版zwPython代码更新快,配套书籍跟不上更新速度。
  • 没有独立成熟的回测框架。
  • 无法对接实盘交易。

我没有研究出zwPython的核心技术在哪里,不做推荐。如果想本地做回测分析,可以使用Anaconda,加股票数据源包(BaoStock\Tushare\AKShare),加独立的回测框架(Backtrader)等。

Backtrader

在zw的群里看到了他们开始研究Backtrader,我也跟着开始了学习。在博客里也发布了大量的Backtrader的文章,记录自己的学习过程。

优点
  • 较成熟,社区资源多。
  • 代码风格整洁,阅读源代码收获满满。
  • 可以用于A股、美股、期货等回测。
缺点
  • 需要准备数据源
  • 没有官方的A股交易接口
easytrader

这是我自动化交易用过的第一个工具,通过模拟键鼠操作,来实现对指定券商或者同花顺软件进行交易操作。

优点
  • 无资金门槛自动化交易方案。
缺点
  • 稳定性不足,交易频率稍高就会报错。
  • 需配合其他包提供数据源。
qmt

在实盘交易前,用过一小段时间的qmt,编程风格整体偏C++一些。当时用模拟交易功能遇到问题比较多,后来就没当做实盘的工具。qmt用的不多,小结下已知的特点。

特点
  • 自带数据源
  • 支持A股回测、实盘
  • 支持港股通
  • 策略本地运行
掘金

用掘金写过一些策略进行回测,掘金应该是做得最完备的交易平台了。

特点
  • 支持多种编程语言
  • 自带数据源
  • 支持A股回测、实盘
  • 支持tick级别数据回测、实盘
  • 大券商,资金门槛高,佣金高
  • 策略本地运行
PTrade

目前回测和实盘都在使用PTrade,PTrade的策略运行在券商服务器上,不需要自己每天都开着终端,策略保密性读者自己考量。

特点
  • 自带数据源
  • 支持A股回测、实盘
  • 资金门槛相对低
  • 策略运行在券商服务器上

建议学习路线

心态准备

对新手来说,没有成熟的交易策略,就先降低心理预期,先寻找能跑赢银行定期的策略,再探索高收益的策略,滚雪球。

选择工具

建议以A股实盘为目标的读者,直接使用PTrade/qmt/掘金等券商提供的工具,开始进行量化研究,原因如下:

  • 无需单独采集数据
  • 同时支持回测和实盘交易,回测和实盘代码可以保持基本一致
  • 券商提供工具,交易接口稳定,有较丰富的教程,有支撑服务团队
策略实现

如果读者已经有完整的策略思路,那么可以直接在量化工具上编写代码进行回测实盘;如果还没有,那么可以去网上找找公开的策略,选一个自己能理解、能够承载自己的资金量、收益和回撤等方面自己能够接受的策略,在此基础上进行改进,然后回测实盘。我目前实盘的策略就是和小伙伴通过后面这条路线实现的。

不断优化

策略回测和实盘之间区别还是很大的,实盘时会遇到各种回测无法遇到的问题,包括量化工具自身在实盘中会出现问题,量化工具在回测和实盘定义不同的接口,实盘中订单各种无法成交的情况等等。

我们可以在策略编写时尽量让回测代码与实盘代码保持一致,并且尽量考虑到实盘中可能遇到的各种异常情况,来缩小回测和实盘间的差别。但实际上确实很难做到一锤定音,还是要不断修改优化。我的策略已实盘了6个月,才算基本稳定。

探索新策略

单个策略的资金最大容量往往有限,需要不断探索新策略充实我们的策略兵器库,来承载更大容量的资金。

插播小AD

需要开户获取交易平台的读者可以加文末微信留言。
想要合作的券商经理也可微信联系。

近期计划

目前我的策略是运行在PTrade上的,积累了一些PTrade的实战经验,所以近期还是计划使用PTrade优化现有策略和探索新策略。

计划新建一个PTrade交流群,大家一起探索新的策略,构建PTrade兵器库,玩转PTrade。

近期(2023年9月)行情不好,给大家打打气,量化交易是可以努力的方向。从2023年3月份部署了新策略,期间一边实盘一边优化,截止9月份,只有3月份是亏损的,其余月份都实现了盈利,最大回撤是8%左右。如果策略代码能够一步优化到现在的程度,策略应该能表现的更好一些。

在这里插入图片描述
终身学习,一起加油吧!!!


博客内容只用于交流学习,不构成投资建议,盈亏自负!

欢迎大家转发、留言。有微信群用于学习交流,感兴趣的读者请扫码加微信!

如果认为博客对您有帮助,可以扫码进行捐赠,感谢!

微信二维码微信捐赠二维码
在这里插入图片描述在这里插入图片描述

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

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

相关文章

使用爬虫批量下载图片链接并去重

设置timeout(20, 20), verifyFalse避免超时和校验问题jpeg以jpg格式保存获取图片编码的md5并存为文件名,以避免重复 import pandas as pd import requests import os import hashlib from tqdm import tqdm file_path xiaofang.xlsx save_dir xiaofang df pd.re…

SpringMVC初级

文章目录 一、SpringMVC 概述二、springMVC步骤1、新建maven的web项目2、导入maven依赖3、创建controller4、创建spring-mvc.xml配置文件(本质就是spring的配置件)5、web.xml中配置前端控制器6、新建a.jsp文件7、配置tomcat8、启动测试 三、工作流程分析…

C# ComboBox 和 枚举类型(Enum)相互关联

C# ComboBox 和 枚举类型(Enum)相互关联 目的 在C# Winform面板上的ComboBox选择项,由程序填写某个Enum的各个枚举项目。 在运行中读取ComboBox的选择项,返回Enum数值。 非编程方法 低阶做法可以在winform设计窗口手动填写,但是不会自动跟…

pytorch环境搭建到pycharm项目映射配置(成功后回顾性记录/自用)

利用Anaconda创建pytorch虚拟环境 前提:成功安装Anaconda,确保可以打开NVIDIA控制面板 开始-》搜索“Anaconda Prompt” 打开后输入:conda create -n 你的虚拟环境名 python3.9。输入y,继续安装,完成。 输入&#…

合肥综合性国家科学中心人工智能研究院-机器学习作业(一)

1.试析min-max规范化和z-score规范化的优缺点 可参考博客:https://wenku.csdn.net/answer/fdbf30eb204644e5b69fc533a3757268 2.试分析损失函数与性能度量的关系 损失函数和性能度量之间的关系可以根据优化目标来理解。损失函数的优化目标是最小化预测值与实际值之…

C语言 cortex-A7核 点LED灯 (附 汇编实现、使用C语言 循环实现、使用C语言 封装函数实现【重要、常用】)

1 汇编实现 text global _start start: ************** LED1点灯 ---> PE10 **************/ ************** RCC章节初始化 **************/ CC_INIT:1.使能GPIOE组控制器,通过RCC_MP_AHB4ENSETR寄存器设置GPIOE组使能0x50000A28[4] 1ldr r0,0x50000A28 准…

力扣刷题-链表-两两交换链表中的节点

24.两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 解题思路 采用正常模拟的方法。 建议使用虚拟头结点,这样会方便很多&am…

算法训练第六十五天|螺旋遍历二维数组

LCR 146. 螺旋遍历二维数组 - 力扣(LeetCode) 总结:本质是模拟一个螺旋的过程,其中关键是如何限制边界条件或者说是循环结束条件。题目要求是按从左到右、从上到下、从右到左、从下到上的顺序,所以可以设置循环来完成…

面向面试知识-Redis

面向面试知识-Redis 什么是Redis 运行于内存的基于key-value的非关系型数据库。 一款开源的内存数据结构存储,用作数据库、缓存、消息代理等。(可以基于Redis实现分布式锁、以及消息队列) 发布订阅?? 对数据类型的操…

[Firefox/快捷键] 禁用Ctrl-W快捷键

最近给Firefox这一快捷键坑了几次。恰好发现在CMU也有人遇到类似的烦恼,找到一篇基于Linux的教程。 我使用的是Windows,所以根据自己的情况做了些修改,成功了。小众需求就犯懒直接将笔记贴上了,如果有谁用得上的话,我写…

消息队列中,如何保证消息的顺序性?

本文选自:advanced-java 作者:yanglbme 问:如何保证消息的顺序性? 面试官心理分析 其实这个也是用 MQ 的时候必问的话题,第一看看你了不了解顺序这个事儿?第二看看你有没有办法保证消息是有顺序的&#xf…

聊聊jedis连接池参数配置

序 本文主要研究一下jedis连接池的参数配置 JedisConfig redis/clients/jedis/JedisPoolConfig.java public class JedisPoolConfig extends GenericObjectPoolConfig<Jedis> {public JedisPoolConfig() {// defaults to make your life with connection pool easier…

STL map,插入和查找的一些注意事项

01、前言&#xff08;废话&#xff09; C 的 std::map 容器中插入键值对主要有myMap(std::make_pair(key value)) &#xff0c;它们的区别你了解吗&#xff1f; auto it myMap,find(key) 和 auto value myMap[key] 都可以用于在 C 的 std::map 容器中查找键对应的值&#xff…

Spring Boot的新篇章:探索2.0版的创新功能

文章目录 引言1. Spring Boot 2.0的响应式编程2. 自动配置的改进3. Spring Boot 2.0的嵌入式Web服务器4. Spring Boot 2.0的Actuator端点5. Spring Boot 2.0的Spring Data改进6. Spring Boot 2.0的安全性增强7. Spring Boot 2.0的监控和追踪8. Spring Boot 2.0的测试改进结论 &…

6、SpringBoot_项目的打包与运行

七、SpringBoot项目的打包与运行 1.目前项目怎么运行的 通过浏览器访问idea 将jar部署到服务器 2.maven 打包项目 命令 mvn package使用命令后会得到如下的jar 3.程序运行 命令 java -jar 项目.jar启动如下 4.springboot打包需要插件 插件 <plugin><group…

c++源码编译过程(翻译阶段)的若干细节概要

c程序的编译主要包含两个阶段&#xff1a;源码编译(翻译阶段)和目标文件链接。 源码编译过程主要有如下这些阶段&#xff1a; 阶段1: 翻译源码文本字符 阶段2: 逻辑源码行标准化处理 阶段3: 文法处理&#xff0c;分解为不同的源码文本类型序列。例如分解为注释、预处理指…

从零学习开发一个RISC-V操作系统(二)丨GCC编译器和ELF格式

本篇文章的内容 一、GCC&#xff08;GUN Compiler Collection&#xff09;1.1 GCC的命令格式1.2 GCC的主要执行步骤1.3 GCC涉及的文件类型 二、ELF简介2.1 ELF文件格式图2.2 ELF文件处理的相关工具2.3 练习 本系列是博主参考B站课程学习开发一个RISC-V的操作系统的学习笔记&…

机器学习第十四课--神经网络

总结起来&#xff0c;对于深度学习的发展跟以下几点是离不开的: 大量的数据(大数据)计算资源(如GPU)训练方法(如预训练) 很多时候&#xff0c;我们也可以认为真正让深度学习爆发起来的是数据和算力&#xff0c;这并不是没道理的。 由于神经网络是深度学习的基础&#xff0c;学…

debug过程中,矩阵左乘右乘相关概念梳理

1. 变换点或者变换向量 1.1左乘 矩阵左乘通常是指对”目标点“进行左乘&#xff0c;即: A ′ R ∗ A AR*A A′R∗A 其中&#xff0c;A为原始3维点&#xff0c;表示一个3*1的列向量&#xff0c;R为33的旋转矩阵&#xff0c;A‘为变换后的点 B ′ T ∗ B BT*B B′T∗B 其中…

uniapp存值和取值方法

在UniApp中&#xff0c;可以使用全局变量、本地缓存和Vuex状态管理等方式来进行存值和取值。 全局变量&#xff1a;可以在App.vue文件的data中定义一个全局变量&#xff0c;在其他页面或组件中通过uni.$emit方法修改其值&#xff0c;并通过uni.$on方法监听值的变化。 // App.…