聚宽源码19

原文策略源码如下:
#ATR自适应通道

导入函数库

from jqdata import *
import datetime
import time
import talib

‘’’
ArrayManager:
用于拼接K线的类,该策略基于不均匀的K线完成,在固定时间输出bar(日内,如早盘收盘时)
而当前平台未推出该功能,因而自定义ArrayManager类来实现
‘’’
class ArrayManager(object):

# 初始化函数,设定基准等等
def __init__(self, size=100):
    # 设定Array的缓存大小
    self.size = size  
    
    # 基本指标与基本指标的Array字典初始化(用于K线按收盘时间分割)
    # 在这里VarArrays指的是全新K线的数据,以字典的形式存放,Vars是更新K线前的缓存
    self.Vars = {'close':False,
                'open':False,
                'high':False,
                'low':False}
                
    self.VarsArrays = {'close':np.zeros(size),
                      'open':np.zeros(size),
                      'high':np.zeros(size),
                      'low':np.zeros(size)}

# 更新Array,形成新的bar数据,后续指标等都是基于该Array进行计算    
def updateBarArray(self):
    for var in self.VarsArrays.keys():
        self.VarsArrays[var][0:self.size-1] = self.VarsArrays[var][1:self.size]
        self.VarsArrays[var][-1] = self.Vars[var]

# 更新缓存(即为更新Array做准备)        
def updateBar(self,close,high,low,open):
    # 如果缓存Vars没有数据,或者被clear,则初次写入
    if self.Vars['close'] == False:
        self.Vars['close'] = close
        self.Vars['high'] = high
        self.Vars['low'] = low
        self.Vars['open'] = open
    else:
        # 如果有数据,则实时更新
        self.Vars['close'] = close
        self.Vars['high'] = max(self.Vars['high'],high)
        self.Vars['low'] = min(self.Vars['low'],low)
        

# 清除Bar数据       
def clear(self):
    self.Vars['open']= False
    self.Vars['close']= False
    self.Vars['high'] = False
    self.Vars['low']= False

# 输出当前Array
def exportArray(self,field):
    return self.VarsArrays[field]
# 输出当前缓存变量  
def exportVar(self,field):
    return self.Vars[field]

# 输出10天内的最高价    
def Highest_10(self,future):
    return self.VarsArrays['close'][-10*g.TodayBar[future]-1:-1].max()

# 输出10天内的最低价    
def Lowest_10(self,future):
    return self.VarsArrays['close'][-10*g.TodayBar[future]-1:-1].min()

def initialize(context):
# 设置参数
set_parameter(context)
# 设定基准银华日利,在多品种的回测当中基准没有参考意义
set_benchmark(‘511880.XSHG’)
# 开启动态复权模式(真实价格)
set_option(‘use_real_price’, True)
# 过滤掉order系列API产生的比error级别低的log
log.set_level(‘order’, ‘error’)
### 期货相关设定 ###
# 设定账户为金融账户
set_subportfolios([SubPortfolioConfig(cash=context.portfolio.starting_cash, type=‘futures’)])
# 期货类每笔交易时的手续费是:买入时万分之1,卖出时万分之1,平今仓为万分之1
set_order_cost(OrderCost(open_commission=0.0001, close_commission=0.0001,close_today_commission=0.0001), type=‘index_futures’)
# 设定保证金比例
set_option(‘futures_margin_rate’, 0.15)
# 设置滑点(单边万5,双边千1)
set_slippage(PriceRelatedSlippage(0.001),type=‘future’)
# 开盘前运行
run_daily( before_market_open, time=‘before_open’, reference_security=‘AG8888.XSGE’)
# 开盘时运行
run_daily( DataPrepare, time=‘every_bar’, reference_security=‘AG8888.XSGE’)
# 收盘后运行
run_daily( after_market_close, time=‘after_close’, reference_security=‘AG8888.XSGE’)
#切割函数

def set_parameter(context):
#######变量设置##

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值