作者:爱茶语 ;来源:维恩的派论坛
1:在ctpGateway.py里面的def onRspQryTradingAccount(self, data, error, n, last):下面加上
import csv
import os
import datetime
from time import sleep
#通过CTP接口查询账户资金
vnTrader_dir = 'C:\ProgramData\\Anaconda2\\Lib\\site-packages\\vnpy-1.7.1-py2.7.egg\\vnpy\\trader\\app\\ctaStrategy\\AccountInfo'# AccountInfo 所在路径(这是我放CSV的路径,大家自行修改)
today = datetime.datetime.now().strftime("%Y-%m-%d")
# 文件名称设置为今天名称, 每次只推送一条合约信息
path = vnTrader_dir + '\\AccountInfo_' + today + '.csv'
if not os.path.exists(path): # 如果文件不存在,需要写header
with open(path, 'wb') as f: # 用wb读不会产生\r\n的换行问题
w = csv.DictWriter(f, data.keys())
w.writeheader()
w.writerow(data)
else: # 文件存在,不需要写header
with open(path,'ab') as f: #二进制追加形式写入
w = csv.DictWriter(f, data.keys())
w.writerow(data)
sleep(60)
#return #每天只查询一次,文件存在不写入
2.在策略里面加上 """通过csv读取账户可用资金"""
import csv
import datetime
import time
today = datetime.datetime.now().strftime("%Y-%m-%d")
csv_file = file(r'C:\\ProgramData\\Anaconda2\\Lib\\site-packages\\vnpy-1.7.1- py2.7.egg\\vnpy\\trader\\app\\ctaStrategy\\AccountInfo\\AccountInfo_'+today+'.csv', 'rb')
reader = csv.DictReader(csv_file)
Available = float([row['Available'] for row in reader ][-1])
3.在需要调仓的XBAR周期下面加上self.open_pos = int(self.Available/(self.bar.close100.15)*0.1) #螺纹钢为例,每手乘数10,保证金按15%算,10%仓位