我最成功的一笔投资!
大家好,我是 Jack。
上篇教程,给大家讲解了一个 ETF 动量轮动的策略。
一些小伙伴,看到高收益,表示自己也要实战试一试。
真可谓是对我充满信心:
这里,必须要提醒下风险,先好好学技术,学透之后,再下手不迟。不要盲目跟!
市场一直都在,真不用着急。
我最成功的一笔投资,不是买了哪支股票!而是自学了很多有趣的技术!
最好的投资,就是投资自己。
github 代码提交起来!等有了一定技术的积累,才能顺利采摘成功的“果实”。
OK,接下来,给大家讲解下。
如何做到视频中的,后台运行策略,定时给 QQ 邮箱发送操作邮件。
每天开盘前,看看微信就行了。
部署交易策略
想要实现这个功能,主要用到两个库 smtplib
和 apscheduler
,前者负责发送邮件,后者负责定时。
发送邮件
发送邮件,需要使用电子邮件发送协议STMP
。
放到我们的场景,就是我们部署好策略的服务器,发送邮件到,我们的 QQ 邮箱。
而python
的smtplib
提供了一种很方便的途径发送电子邮件,它对STMP
协议进行了简单的封装。
这里可以使用第三方 STMP 服务发送,我用的是阿里云的邮件服务。
更简单一些的,可以直接用 QQ 邮箱。
这里使用了 QQ 邮箱(你也可以使用 163,Gmail等)的 SMTP 服务,需要做以下配置:
QQ 邮箱通过生成授权码来设置密码:
QQ 邮箱 SMTP 服务器地址:smtp.qq.com,ssl 端口:465。
以下实例你需要修改:
发件人邮箱(你的QQ邮箱) 密码(生成的授权码) 收件人邮箱(可发给自己)
这些都准备好,按照这个模版,配置下就行了,创建 sendemail.py 文件,编写如下代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
from datetime import datetime
import time
my_sender = '***@qq.com' # 发件人邮箱账号
my_pass = '**' # 发件人邮箱密码
my_user = '***@qq.com' # 收件人邮箱账号(这里发自己)
def mail(message):
ret = True
try:
current_dt = time.strftime("%Y-%m-%d", time.localtime())
# current_dt = datetime.strptime(current_dt, '%Y-%m-%d')
title = current_dt.split(" ")[0] + "投资操作"
msg = MIMEText(message,'plain','utf-8')
msg['From'] = formataddr(["**", my_sender]) # 发件人昵称
msg['To'] = formataddr(["**", my_user]) # 接收人昵称
msg['Subject'] = title # 邮件的主题
server = smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器,端口是465
server.login(my_sender, my_pass) # 发件人邮箱账号、邮箱密码
server.sendmail(my_sender, [my_user,], msg.as_string()) # 发件人邮箱账号、收件人邮箱账号、发送邮件
server.quit() # 关闭连接
except Exception as e: # 如果 try 中的语句没有执行,则会执行下面的 ret = False
ret = False
print(e)
return ret
if __name__ == "__main__":
ret = mail("Test")
if ret:
print("邮件发送成功")
else:
print("邮件发送失败")
修改好配置,使用如下指令运行:
python sendemail.py
如果成功,你会收到一封内容为 Test 的邮件。
定时发送
这个就更简单了,直接用apscheduler
即可。
#-*- coding:utf-8 -*-
import time
from job import run_today
from apscheduler.schedulers.blocking import BlockingScheduler
sched = BlockingScheduler()
# 时间: 周一到周五每天早上9点25, 执行run_today
sched.add_job(run_today, 'cron', day_of_week='mon-fri', hour=9, minute=25)
sched.start()
上述代码的意思就是,周一到周五,每天早上9
点25
运行下,run_today 这个函数。
run_today 就是封装好的,量化交易策略,执行这个函数就是运行一次量化交易策略,并发送结果邮件。
整体代码
代码有点长,这里就不全贴了,我将所有代码放到了 github 上。
一共 4 个文件:
run.sh 运行脚本,直接启动这个即可运行程序 main.py 定时任务主函数 sendmail.py 邮件配置 job.py 例行运行的任务
代码地址:
https://github.com/Jack-Cherish/quantitative/tree/main/lesson2
修改好 job.py 和 sendmail.py 文件,运行脚本即可。
sh run.sh
可以将代码放到服务器上运行,比如阿里云服务器,腾讯云服务器。
用最便宜的配置就行。
然后配置个 Anaconda 环境,就行了,环境配置可以参考这篇文章。
总结
量化交易策略和服务部署,教程都写完了。
后面有机会,我会分享更多的量化交易策略,欢迎持续关注。
股市有风险,入市需谨慎!
我是 Jack,我们下期见!