前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何根据账户资金比例下单?

如何根据账户资金比例下单?

作者头像
用Python的交易员
发布2018-07-26 11:58:41
7090
发布2018-07-26 11:58:41
举报
文章被收录于专栏:维恩的派VNPIE维恩的派VNPIE

目前vn.py所提供的示例代码都是按照固定数量下单,本文将介绍‘如何根据账户资金情况计算交易数量进而下单’。感谢‘爱茶语’以及‘王玥’在「维恩的派」论坛内的分享!

设计思路

  1. 从接口查询账户资金情况;
  2. 每次下单前根据账户资金情况来计算交易数量;

代码

1. 查询账户资金

以CTP接口为例,其他接口类似。

修改 ctpGateway.py 里面的查询账户资金函数 onRspQryTradingAccount,每60s查询一次,将查询到资金情况保存至文件。(可修改查询频率,修改sleep函数的时间即可。)

代码:

import csv

import os

import datetime

from time import sleep

#路径

vnTrader_dir = '***\\AccountInfo'

today = datetime.datetime.now().strftime("%Y-%m-%d")

#文件名设为当天日期,每天只保存一个文件

path = vnTrader_dir + '\\AccountInfo_' + today + '.csv'

# 如果文件不存在,需要写header

if not os.path.exists(path):

# 用wb读不会产生\r\n的换行问题

with open(path, 'wb') as f:

w = csv.DictWriter(f, data.keys())

w.writeheader()

w.writerow(data)

# 文件存在,不需要写header

else:

#二进制追加形式写入

with open(path,'ab') as f:

w = csv.DictWriter(f, data.keys())

w.writerow(data)

sleep(60)

2. 在策略里面加上 ‘通过csv读取账户可用资金’。

import csv import datetime import time

today = datetime.datetime.now().strftime("%Y-%m-%d")

#之前文件的生成路径

csv_file = file(r'***\\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.close*10*0.15)*0.1)

#螺纹钢为例,每手乘数10,保证金按15%算,10%仓位

基于python的开源交易平台开发框架。截止目前,vn.py项目在Github上的Star已经达到5563,量化交易类开源项目第1,量化类项目第3(1、2依旧分别是Zipline和TuShare)。

项目官网:http://www.vnpy.org

论坛地址:www.vnpie.com

知乎专栏:https://zhuanlan.zhihu.com/vn-py

Developed by Traders,

for Traders

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 维恩的派VNPIE 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档