python 网格交易源码_【宽客策略源码】网格交易(期货)
# coding=utf-8
from __future__ import print_function, absolute_import, unicode_literals
import numpy as np
import pandas as pd
from gm.api import *
'''
'''
def init(context):
context.symbol = 'SHFE.rb1801'
# 订阅SHFE.rb1801, bar频率为1min
subscribe(symbols=context.symbol, frequency='60s')
# 获取过去300个价格数据
timeseries = history_n(symbol=context.symbol, frequency='60s', count=300, fields='close', fill_missing='Last',
end_time='2017-07-01 08:00:00', df=True)['close'].values
# 获取网格区间分界线
context.band = np.mean(timeseries) + np.array([-40, -3, -2, 2, 3, 40]) * np.std(timeseries)
# 设置网格的仓位
context.weight = [0.5, 0.3, 0.0, 0.3, 0.5]
def on_bar(context, bars):
bar = bars[0]
# 根据价格落在(-40,-3],(-3,-2],(-2,2],(2,3],(3,40]的区间范围来获取最新收盘价所在的价格区间
grid = pd.cut([bar.close], context.band, labels=[0, 1, 2, 3, 4])[0]
# 获取多仓仓位
position_long = context.account().position(symbol=context.symbol, side=PositionSide_Long)
# 获取空仓仓位
position_short = context.account().position(symbol=context.symbol, side=PositionSide_Short)
# 若无仓位且价格突破则按照设置好的区间开仓
if not position_long and not position_short and grid != 2:
# 大于3为在中间网格的上方,做多
if grid >= 3:
order_target_percent(symbol=context.symbol, percent=context.weight[grid], order_type=OrderType_Market,
position_side=PositionSide_Long)
print(context.symbol, '以市价单开多仓到仓位', context.weight[grid])
if grid <= 1:
order_target_percent(symbol=context.symbol, percent=context.weight[grid], order_type=OrderType_Market,
position_side=PositionSide_Short)
print(context.symbol, '以市价单开空仓到仓位', context.weight[grid])
# 持有多仓的处理
elif position_long:
if grid >= 3:
order_target_percent(symbol=context.symbol, percent=context.weight[grid], order_type=OrderType_Market,
position_side=PositionSide_Long)
print(context.symbol, '以市价单调多仓到仓位', context.weight[grid])
# 等于2为在中间网格,平仓
elif grid == 2:
order_target_percent(symbol=context.symbol, percent=0, order_type=OrderType_Market,
position_side=PositionSide_Long)
print(context.symbol, '以市价单全平多仓')
# 小于1为在中间网格的下方,做空
elif grid <= 1:
order_target_percent(symbol=context.symbol, percent=0, order_type=OrderType_Market,
position_side=PositionSide_Long)
print(context.symbol, '以市价单全平多仓')
order_target_percent(symbol=context.symbol, percent=context.weight[grid], order_type=OrderType_Market,
position_side=PositionSide_Short)
print(context.symbol, '以市价单开空仓到仓位', context.weight[grid])
# 持有空仓的处理
elif position_short:
# 小于1为在中间网格的下方,做空
if grid <= 1:
order_target_percent(symbol=context.symbol, percent=context.weight[grid], order_type=OrderType_Market,
position_side=PositionSide_Short)
print(context.symbol, '以市价单调空仓到仓位', context.weight[grid])
# 等于2为在中间网格,平仓
elif grid == 2:
order_target_percent(symbol=context.symbol, percent=0, order_type=OrderType_Market,
position_side=PositionSide_Short)
print(context.symbol, '以市价单全平空仓')
# 大于3为在中间网格的上方,做多
elif grid >= 3:
order_target_percent(symbol=context.symbol, percent=0, order_type=OrderType_Market,
position_side=PositionSide_Short)
print(context.symbol, '以市价单全平空仓')
order_target_percent(symbol=context.symbol, percent=context.weight[grid], order_type=OrderType_Market,
position_side=PositionSide_Long)
print(context.symbol, '以市价单开多仓到仓位', context.weight[grid])
if __name__ == '__main__':
'''
strategy_id策略ID,由系统生成
filename文件名,请与本文件名保持一致
mode实时模式:MODE_LIVE回测模式:MODE_BACKTEST
token绑定计算机的ID,可在系统设置-密钥管理中生成
backtest_start_time回测开始时间
backtest_end_time回测结束时间
backtest_adjust股票复权方式不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST
backtest_initial_cash回测初始资金
backtest_commission_ratio回测佣金比例
backtest_slippage_ratio回测滑点比例
'''
run(strategy_id='strategy_id',
filename='main.py',
mode=MODE_BACKTEST,
token='token_id',
backtest_start_time='2017-07-01 08:00:00',
backtest_end_time='2017-10-01 16:00:00',
backtest_adjust=ADJUST_PREV,
backtest_initial_cash=10000000,
backtest_commission_ratio=0.0001,
backtest_slippage_ratio=0.0001)
python 网格交易源码_【宽客策略源码】网格交易(期货)相关推荐
- 羊了个羊游戏网站源码_带前后端源码,带教程
羊了个羊游戏源码_带前后端源码_及配置教程说明 这是啥游戏?据悉,这是一款卡通背景的消除闯关游戏.玩家们需要点击上方卡牌,被选中的卡牌会下移到底部的木框中,框内最多可以储存7张卡牌,当有3张相同的卡牌 ...
- 社会管理网格化 源码_全县首家镇域网格妇联——“和大王”社会治理网格化服务管理中心妇联正式成立!...
11月15日下午,大王镇社会治理网格化服务管理中心妇女第一次代表大会召开.镇党委组织委员刘传元出席会议,镇社会治理网格化服务管理中心主任孙波涛宣读大王镇网格妇联第一届执委人事安排说明,镇党性教育基地管 ...
- JAVA要不要看源码_为什么要看源码、如何看源码,高手进阶必看
作者:xybaby www.cnblogs.com/xybaby/p/10794700.html 由于项目的需求,最近花了较多的时间来看开源项目的代码,在本文中,简单总结一下对为什么要看源码.如何看源 ...
- 虚拟商品帐号交易平台源码_支持个人二维码收款
精仿淘手游马上有号账号交易平台源码支持个人二维码收款,安装非常简单,支持个人二维码收款,可以运营精仿马上有号账号交易平台源码 支持个人二维码收款 安装教程: PHP版本一定要选择5.2 1.先修改配置 ...
- java中字节码_聊聊Java的字节码
本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 巴山楚水凄凉地,二十三年弃置身. 怀旧空吟闻笛赋,到乡翻似烂柯人. 沉舟侧畔千帆过,病树前头万 ...
- 微信创建二维码_如何创建二维码
微信创建二维码 QR codes aren't everyone's cup of tea but I quite like them. If I see something I want to re ...
- python自动交易源码_【硬核福利】量化交易神器talib中28个技术指标的Python实现(附全部源码)...
内容首发 乐学偶得(http://lexueoude.com) 公众号: 乐学Fintech 用代码理解分析解决金融问题 之前跟大家分享过用Python调用talib实现技术指标分析,但是许多小伙伴有 ...
- python量化策略源码_【硬核福利】量化交易神器talib中28个技术指标的Python实现(附全部源码)...
内容首发 乐学偶得(http://lexueoude.com) 公众号: 乐学Fintech 用代码理解分析解决金融问题 之前跟大家分享过用Python调用talib实现技术指标分析,但是许多小伙伴有 ...
- 开源版-在线客服系统源码_网页聊天室源码_webim
2019独角兽企业重金招聘Python工程师标准>>> WoLive是一款在线客服系统源码,支持PC Web和移动端,只需嵌入一段js代码即可快速接入.购买后可私有化部署,WoLiv ...
最新文章
- javascript DOM 编程艺术----笔记
- 在.m中的@interface (原创)
- python 类 实例id递增_Python Django 模板类中 系统默认的主键ID自增,不会随着模板实例的删除而重置问题...
- Java虚拟机专题之内存分配(读书笔记)
- SQL Server 何时将“脏页”回写到硬盘
- github webhook php,github 利用webhook配置代码自动发布
- Leetcode刷题-707:设计链表
- 《曹云社》论道中国企业管理 剖析八家企业落地中台实践
- 当成人网站遇上机器学习
- 关于51单片机驱动DS18B20代码的感想
- Fiddler原理+雷电模拟器进行APP抓包
- 未来十年人工智能和机器学习,主要造就了哪些新职位?
- P6091 【模板】原根
- MATLAB工具学习:cftool(曲线拟合工具)
- springcloud + oauth2
- 1949-2020年全国31省铁路里程数据
- js中的回调函数,什么是回调函数?
- 计算机表演赛学前组游戏,第十七届计算机表演赛总决赛获奖名单公布
- 2020年Android面试题整理
- MVD(三-视图加入动画)
热门文章
- 江工网:报到证过期对公务员有影响吗
- 2022G1工业锅炉司炉考试题库及模拟考试
- 男人“杀死”女人的30句话(zt)
- 微信小程序汽车租赁平台+后台管理系统
- scrapy间歇性响应为空/降速/缓存
- 玩转无线网络 分享在win 7系统下无线网络的设置方法——xinfanqie.com
- JZOJ5996. 【WC2019模拟2019.1.12】回文后缀
- 使用日历热图进行时序数据可视化
- 典型环节matlab仿真,典型环节的模拟及参数测试
- 数字孪生的思考 01 - 简述一下数字孪生项目的实现路线