JoinQuant-PM 发布于2016-05-25
回复 85
浏览 16997
197
社区中很多朋友除了想要接受微信信息之外,还想收取邮件,现就为大家介绍一下如何在JoinQuant的回测及研究中发送邮件!
**(注:记得请先开启邮箱的SMTP服务哦,下面以163邮箱为例)**
### 163邮箱函数形式如下:
```
def send_163_email(subject,message):
import smtplib
from email.mime.text import MIMEText
from email.header import Header
'''
记得请先开启邮箱的SMTP服务
'''
## 发送邮件
sender = '量化模拟盘' #发送的邮箱
receiver = 'XX@163.com' #要接受的邮箱(注:测试中发送其他邮箱会提示错误)
smtpserver = 'smtp.163.com'
username = 'XX@163.com' #你的邮箱账号
password = '**********' #你的邮箱密码
msg = MIMEText(str(message),'plain','utf-8') #中文需参数‘utf-8',单字节字符不需要
msg['Subject'] = Header(subject, 'utf-8') #邮件主题
msg['to'] = receiver
msg['from'] = sender #自己的邮件地址
smtp = smtplib.SMTP()
try :
smtp.connect('smtp.163.com') # 链接
smtp.login(username, password) # 登陆
smtp.sendmail(sender, receiver, msg.as_string()) #发送
print '邮件发送成功'
except:
print '邮件发送失败'
smtp.quit() # 结束
```
```
df = get_price('000001.XSHE', start_date='2015-06-01', end_date='2015-06-05', frequency='daily', fields=['close','low'])
z = df['close']
send_163_email(subject='Hi,JoinQuant!',message=z)
```
### 结果如下:
![3.png][1]
![2.png][2]
#### 由于QQ邮箱的smtp服务用了ssl认证,发往QQ邮箱函数形式如下:
```
def send_qq_email(subject,message):
import smtplib
from email.mime.text import MIMEText
from email.header import Header
## 发送邮件
sender = '量化模拟盘<12345678@qq.com>' #发送的邮箱
receiver = '12345678@qq.com' #要接受的邮箱(注:测试中发送其他邮箱会提示错误)
smtpserver = 'smtp.qq.com'
username = '12345678@qq.com' #你的邮箱账号
password = 'abcdefghijklmnop' #你的邮箱授权码。一个16位字符串
msg = MIMEText(str(message),'plain','utf-8') #中文需参数‘utf-8',单字节字符不需要
msg['Subject'] = Header(subject, 'utf-8') #邮件主题
msg['to'] = receiver
msg['from'] = sender #自己的邮件地址
server = smtplib.SMTP_SSL('smtp.qq.com')
try :
#server.connect() # ssl无需这条
server.login(username, password) # 登陆
server.sendmail(sender, receiver, msg.as_string()) #发送
print '邮件发送成功'
except:
print '邮件发送失败'
server.quit() # 结束
```
```
send_qq_email(subject='Info from JoinQuant', message="test mail")
```
![QQ截图20170221150957.png][3]
## 希望对你有用,祝好!
[1]: https://image.joinquant.com/892a899cb11b6ac597b50e83af2ab0e7
[2]: https://image.joinquant.com/175611fd605d61b90c57d3cc298036fb
[3]: https://image.joinquant.com/247b1ea76465cbf56c43339215dbf167
评论
太赞了。那个有戏了。马上去研究可行性。
2016-05-25
是否可以做到提交模拟交易之后非交易时间比如晚上选完股分好仓位之后邮件形式收到通知?
2016-05-25
非常快!高手们有没有快速接收邮件方法呢?
2016-05-25
@股灾入场
手机QQ邮箱,延时不超过1分钟
2016-05-26
可以定时自动运行回测及研究的程序吗?
2016-05-26
回测也支持email了吗,赞!!
2016-05-29
一段时间没来,又出了这么好的功能了 大赞~
2016-05-29
由于QQ邮箱的smtp服务用了ssl认证,所以,顶楼的代码不好用。
我来贡献一个发往QQ邮箱的代码片段吧
如下:
```
def sendemail():
## 发送邮件
sender = '12345678@QQ.com' #发送的邮箱
receiver = '12345678@QQ.com' #要接受的邮箱(注:测试中发送其他邮箱会提示错误)
subject = 'Info from JoinQuant' #邮件主题
smtpserver = 'smtp.qq.com'
username = '12345678@qq.com' #你的邮箱账号
password = 'abcdefghijklmnop' #你的邮箱授权码。一个16位字符串
msg = MIMEText("test mail",'plain','utf-8') #中文需参数‘utf-8',单字节字符不需要
msg['Subject'] = Header(subject, 'utf-8')
server = smtplib.SMTP_SSL('smtp.qq.com')
#server.set_debuglevel(1) #打印调试信息
try :
#server.connect() # ssl无需这条
server.login(username, password) # 登陆
server.sendmail(sender, receiver, msg.as_string()) #发送
print '邮件发送成功'
except:
print '邮件发送失败'
server.quit() # 结束
```
2016-05-31
太有用了,这个必须手工赞!!
2016-05-31
赞! 感谢乐于分享的大神!!
2016-07-03
@陈小米。 理论上看你主动触发的控制情况。
我能想到的是目前条件下两种场景:
1.可以按信号发送邮件
2.可以按时间定时发送邮件(run_daily)。
但都是用户级的触发,就是用户自己来触发。平台级目前不知道JoinQuant有没有支持,至少目前文档里没有。
2016-07-05
@Kyd
多谢。感觉放在after_trading里应该是可以的。现在是下单动态可以发邮件接收了。
2016-07-05