VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 187
声望: 55

作者:爱茶语 ;来源:维恩的派论坛

 

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%仓位

Administrator
avatar
加入于:
帖子: 4502
声望: 321

尽管这么干在技术上是可行的,但是实盘交易中强烈反对机器自动调仓,这么重要的工作必须经过交易员的人工确认。

Member
加入于:
帖子: 132
声望: 0

把资金写入csv文件时,加上你这段代码,报这个错DictWriter TypeError: a bytes-like object is required, not 'str'你是怎么解决的?

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】