Hai Feng Future Trading Platform with SE
Project description
海风py
一款开源的策略开发平台.为用户提供方便易用的策略开发工具.
有问题反馈
在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流
- 邮件(hubert28@qq.com)
- QQ: 24918700
- Q群:65164336
海风AT的功能
- 策略编写
- 提供常用指标
- 采用HLOC调用K线数据
- 历史数据
- 提供每日数据
- 提供实时数据分钟级服务
提供分笔数据(内网)
运行环境
talab 指标库
https://www.ta-lib.org/function.html
docker运行
docker-compose.yml
version: "3.7"
services:
hfpy:
image: haifengat/hfpy
container_name: hfpy
restart: always
environment:
# config.yml所在目录
config_path: /home/config/
volumes:
# 个人策略文件夹
- ./strategies:/home/strategies
# hfpy配置文件
- ./config.yml:/home/config/config.yml
运行
docker-compose up -d
配置docker-compose.yml
- 修改config.yml
- 修改zmq_config,配置对应的数据源
- 修改stra_path,配置自己的策略
本地部署
hfpy 安装
pip install hfpy
使用
- 安装python组件
pip install -r requirements.txt
- 新建目录
- 创建main.py并复制粘贴下面示例中main的内容
- 创建strategies子目录
- 在strategies目录下,创建SMACross.py和SMACross.yml文件【注意大小写】,并复制粘贴示例中对应的代码.
- 执行 python main.py
测试报告
因报告使用了pandas所以被注释掉了,如需要则可以自行安装pandas并注释掉atp.py的5行和252行。
配置说明
- 项目配置 config.yml
- 当前工作目录下无此文件时, 会产生默认配置
- stra_path 策略路径[],可多个
- 按此配置读取相应策略,按ID加载对应的参数
- 策略配置
- 与策略文件名同名的.yml文件
- 配置参数组
- 必须有ID标识(int)
- TickTest: true
- 分笔数据回测,需处理数据源及格式
- 执行
- 配置 config.yml 中的登录信息,数据源
- python main.py
策略编写
- 策略文件名与文件内的类名要一致(区分大小写)
- 示例
- strategies/SMACross.py
- strategies/Test.py
- 接口调用示例
示例
main.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__title__ = '主程序'
__author__ = 'HaiFeng'
__mtime__ = '20180822'
from hfpy.atp import ATP
from time import sleep
if __name__ == '__main__':
ATP().Run()
while True:
sleep(60*10)
config.yml
---
ctp_config:
# 为空时不登录接口
ctp_front: 'sim_now'
investor: '008107'
password: '1'
product_info: ''
app_id: 'simnow_client_test'
auth_code: '0000000000000000'
# 追单设置
chasing:
# n秒后不成交则撤单重发[0-不追单]
wait_seconds: 3
# 超价重发n个pricetick
offset_ticks: 2
# 重发次数,n次重发后仍未成交则[板价发单]
resend_times: 3
# ctp前置配置
fronts:
sim_now:
trade: tcp://180.168.146.187:10000
quote: tcp://180.168.146.187:10010
broker: '9999'
# 数据源 - zmq配置
zmq_config: tcp://私有化部署数据服务:15555
# 开关
onoff:
# 是否7*24
running_as_server: true
# 是否发送委托
real_order_enable: false
# 一根K线只发送一次指令
single_order_one_bar: true
# 是否打印行情时间
show_tick_time: true
# 策略路径配置
stra_path:
# 路径
strategies:
# 策略文件名
SMACross:
# 策略配置参数ID
- 119
SMACross.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
__title__ = ''
__author__ = 'HaiFeng'
__mtime__ = '2016/8/16'
"""
# import talib._ta_lib as talib
from hfpy.data import Data
from hfpy.bar import Bar
from hfpy.strategy import Strategy
import numpy as np
import talib as ta
class SMACross(Strategy):
def __init__(self, jsonfile):
super().__init__(jsonfile)
self.p_ma1 = self.Params['MA1']
self.p_ma2 = self.Params['MA2']
self.p_lots = self.Params['Lots']
def OnBarUpdate(self, data=Data, bar=Bar):
if len(self.C) < self.p_ma2:
return
# if len(data.Instrument) > 0:
# print(f'{data.Tick.Instrument},{data.Tick.Volume}')
# print('{0}-{1}'.format(self.D[-1], self.C[-1]))
ma1 = ta.SMA(np.array(self.C, dtype=float), self.p_ma1)
ma2 = ta.SMA(np.array(self.C, dtype=float), self.p_ma2)
self.IndexDict['ma5'] = ma1
self.IndexDict['ma10'] = ma2
if len(ma2) < 2 or len(ma1) < 2:
return
if self.PositionLong == 0:
if ma1[-1] >= ma2[-1] and ma1[-2] < ma2[-2]:
if self.PositionShort > 0:
self.BuyToCover(self.O[-1], self.p_lots, '买平')
self.Buy(self.O[-1], self.p_lots, '买开')
elif self.PositionShort == 0:
if ma1[-1] <= ma2[-1] and ma1[-2] > ma2[-2]:
if self.PositionLong > 0:
self.Sell(self.O[-1], self.p_lots, '卖平')
self.SellShort(self.O[-1], self.p_lots, '卖开')
SMACross.yml
---
# ID用于区分不同策略实例的委托
-
ID: 119
BeginDate: 20191101
TickTest: false
# 可通过增加Data实现多合约多周期引用
Datas:
-
Instrument: p2105
IntervalType: Minute
Interval: 5
-
Instrument: rb2105
IntervalType: Minute
Interval: 5
Params:
Lots: 1
MA1: 10
MA2: 20
-
ID: 120
BeginDate: 20180901
Datas:
-
Instrument: rb2105
IntervalType: Minute
Interval: 5
Params:
Lots: 1
MA1: 5
MA2: 60
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
hfpy-0.2.2.tar.gz
(32.2 kB
view details)
File details
Details for the file hfpy-0.2.2.tar.gz
.
File metadata
- Download URL: hfpy-0.2.2.tar.gz
- Upload date:
- Size: 32.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 83cb39ce1e3eaf68ce753a6bdbb7fd255bcd1f1d807e93a052ba404c7f4d9e39 |
|
MD5 | c358586e38c0f85c3db6490c39802f72 |
|
BLAKE2b-256 | dab0f3a64b69fd9bf54bc64887e86339ecc81100fdc0fc927696ce21ea54df36 |