def __init__(self, portfolio, vtSymbol): self.type = 'multi' # 策略参数 self.fixedSize = 1 # 每次交易的数量 self.initBars = 60 # 初始化数据所用的天数 self.minx = 'min5' self.atrValue = 0 self.atrWindow = 20 self.atr_x = 8 self.dual = 10 self.gap = 30 self.gap_base = self.gap self.gap_min = 15 self.gap_max = 40 self.price_duo_list = [] self.price_kong_list = [] self.duo_adjust_price = 0 self.kong_adjust_price = 0 # 策略临时变量 self.can_buy = False self.can_short = False self.pnl = 0 self.first = True Signal.__init__(self, portfolio, vtSymbol) self.backtest = True if self.portfolio.engine.type == 'backtest' else False
def __init__(self, portfolio, vtSymbol): self.type = 'kong' self.fixedSize = 1 # 每次交易的数量 self.initBars = 20 # 初始化数据所用的天数 self.minx = 'day' # 策略参数 self.bollWindow = 10 # 布林通道窗口数 self.bollDev = 2.4 # 布林通道的偏差 self.atrValue = None self.atrWindow = 10 self.slMultiplier = 1.5 # CF self.hard_stop_ratio = 0.005 # 策略临时变量 self.bollUp = 0 # 布林通道上轨 self.bollDown = 0 # 布林通道下轨 self.stop = 0 # 多头止损 self.hard_stop = 100E4 # 硬止损 self.intraTradeHigh = 0 self.intraTradeLow = 100E4 self.can_short = False self.can_cover = False # 需要持久化保存的变量 self.cost = 0 Signal.__init__(self, portfolio, vtSymbol)
def __init__(self, portfolio, vtSymbol): self.type = 'multi' # 策略参数 self.fixedSize = 1 # 每次交易的数量 self.initBars = 60 # 初始化数据所用的天数 self.minx = 'min5' self.atrValue = 0 self.atrWindow = 30 self.atr_x = 8 self.gap = 30 self.gap_base = self.gap self.gap_min = 15 self.gap_max = 40 self.price_min = 2600 self.price_max = 3100 self.price_duo_list = [] self.price_kong_list = [] # 策略临时变量 self.can_buy = False self.can_short = False self.pnl = 0 Signal.__init__(self, portfolio, vtSymbol)
def __init__(self, portfolio, vtSymbol): self.type = 'kong' self.fixedSize = 1 # 每次交易的数量 self.initBars = 50 # 初始化数据所用的天数 self.minx = 'day' # 策略参数 self.er_length = 20 self.filter_ratio = 0.45 self.atrWindow = 10 self.slMultiplier = 0.5 # CF # 策略临时变量 self.stop = 0 # 多头止损 self.intraTradeHigh = 0 self.intraTradeLow = 100E4 self.can_short = False self.can_cover = False # 需要持久化保存的变量 self.cost = 0 Signal.__init__(self, portfolio, vtSymbol)
def __init__(self, portfolio, vtSymbol): Signal.__init__(self, portfolio, vtSymbol) # 策略参数 self.initBars = 90 # 初始化am所用的数目 self.fixedSize = 1 # 每次交易的数量 self.singlePosition = 3E4 # 策略参数 self.bollWindow = 20 # 布林通道窗口数 self.bollDev = 2 # 布林通道的偏差 # 策略变量 self.bollUp = None # 布林通道上轨 self.bollDown = None # 布林通道下轨 # 需要持久化保存的参数 self.buyPrice = 0 self.intraTradeLow = 100E4 # 持仓期内的最低点 self.longStop = 100E4 # 多头止损 # 载入历史数据,并采用回放计算的方式初始化策略数值 initData = self.portfolio.engine._backcall_loadInitBar( self.vtSymbol, self.initBars) for bar in initData: if not self.am.inited: self.onBar(bar)
def __init__(self, portfolio, vtSymbol): Signal.__init__(self, portfolio, vtSymbol) # 策略参数 self.atrLength = 22 # 计算ATR指标的窗口数 self.atrMaLength = 10 # 计算ATR均线的窗口数 self.rsiLength = 5 # 计算RSI的窗口数 self.rsiEntry = 16 # RSI的开仓信号 self.trailingPercent = 0.3 # 百分比移动止损 self.initBars = 90 # 初始化数据所用的天数 self.fixedSize = 1 # 每次交易的数量 # 策略变量 self.atrValue = 0 # 最新的ATR指标数值 self.atrMa = 0 # ATR移动平均的数值 self.rsiValue = 0 # RSI指标的数值 # 需要持久化保存的参数 self.buyPrice = 0 self.intraTradeHigh = 0 # 移动止损用的持仓期内最高价 self.intraTradeLow = 100E4 # 持仓期内的最低点 self.longStop = 100E4 # 多头止损 self.cost = 0 # 初始化RSI入场阈值 self.rsiBuy = 50 + self.rsiEntry self.rsiSell = 50 - self.rsiEntry # 载入历史数据,并采用回放计算的方式初始化策略数值 initData = self.portfolio.engine._bc_loadInitBar( self.vtSymbol, self.initBars) for bar in initData: self.bar = bar self.am.updateBar(bar)
def __init__(self, portfolio, vtSymbol): self.type = 'one' # 策略参数 self.fixedSize = 1 # 每次交易的数量 self.initBars = 100 # 初始化数据所用的天数 self.minx = 'min5' self.atrValue = 0 self.atrWindow = 30 self.atr_x = 8 self.gap = 30 self.gap_min = 15 self.gap_max = 40 self.price_min_1 = 2600 self.price_min_2 = 2730 self.price_max_2 = 3000 self.price_max_1 = 3100 self.price_duo_list = [] self.price_kong_list = [] # 策略临时变量 self.can_buy = False self.can_short = False self.pnl = 0 # 需要持久化保存的变量 Signal.__init__(self, portfolio, vtSymbol)
def __init__(self, portfolio, vtSymbol): self.type = 'mix' # 策略参数 self.entryWindow = 100 # 入场通道周期数 self.exitWindow = 50 # 出场通道周期数 self.atrWindow = 20 # 计算ATR周期数 self.profitCheck = True # 是否检查上一笔盈利 self.initBars = 100 # 初始化数据所用的天数 self.minx = 'min15' # 策略临时变量 self.atrVolatility = 0 # ATR波动率 self.entryUp = 0 # 入场通道 self.entryDown = 0 self.exitUp = 0 # 出场通道 self.exitDown = 0 self.longEntry1 = 0 # 多头入场位 self.longEntry2 = 0 self.longEntry3 = 0 self.longEntry4 = 0 self.longStop = 0 # 多头止损位 self.shortEntry1 = 0 # 空头入场位 self.shortEntry2 = 0 self.shortEntry3 = 0 self.shortEntry4 = 0 self.shortStop = 0 # 空头止损位 self.result_list = [] Signal.__init__(self, portfolio, vtSymbol)
def __init__(self, portfolio, vtSymbol): self.type = 'kong' # 策略参数 self.bollWindow = 20 # 布林通道窗口数 self.bollDev = 3.1 # 布林通道的偏差 self.cciWindow = 10 # CCI窗口数 self.atrWindow = 30 # ATR窗口数 self.slMultiplier = 3 # 计算止损距离的乘数 self.fixedSize = 1 # 每次交易的数量 self.initBars = 100 # 初始化数据所用的天数 self.minx = 'min15' # 策略临时变量 self.cciValue = 0 # CCI指标数值 self.atrValue = 0 # ATR指标数值 self.bollUp = 0 self.bollDown = 0 self.can_buy = False self.can_short = False # 需要持久化保存的变量 self.cost = 0 self.intraTradeHigh = 0 # 移动止损用的持仓期内最高价 self.intraTradeLow = 0 # 持仓期内的最低点 self.stop = 0 # 多头止损 Signal.__init__(self, portfolio, vtSymbol)
def __init__(self, portfolio, vtSymbol): self.type = 'kong' # 策略参数 self.atrLength = 1 # 计算ATR指标的窗口数 self.atrMaLength = 14 # 计算ATR均线的窗口数 self.rsiLength = 5 # 计算RSI的窗口数 self.rsiEntry = 16 # RSI的开仓信号 self.trailingPercent = 0.7 # 百分比移动止损 self.victoryPercent = 0.3 self.fixedSize = 1 # 每次交易的数量 self.ratio_atrMa = 0.8 self.initBars = 60 # 初始化数据所用的天数 self.minx = 'min5' # 初始化RSI入场阈值 self.rsiBuy = 50 + self.rsiEntry self.rsiSell = 50 - self.rsiEntry # 策略临时变量 self.atrValue = 0 # 最新的ATR指标数值 self.atrMa = 0 # ATR移动平均的数值 self.rsiValue = 0 # RSI指标的数值 self.iswave = True self.can_buy = False self.can_short = False # 需要持久化保存的变量 self.cost = 0 self.intraTradeHigh = 0 # 移动止损用的持仓期内最高价 self.intraTradeLow = 0 # 持仓期内的最低点 self.stop = 0 # 多头止损 Signal.__init__(self, portfolio, vtSymbol)
def __init__(self, portfolio, vtSymbol): self.type = 'kong' # 策略参数 self.trailingPercent = 0.3 # 百分比移动止损 self.victoryPercent = 0.3 self.fixedSize = 1 # 每次交易的数量 self.initBars = 90 # 初始化数据所用的天数 self.minx = 'min5' # 策略临时变量 self.can_buy = False self.can_short = False self.channel_up = 0 self.channel_down = 0 # 需要持久化保存的变量 self.cost = 0 self.intraTradeHigh = 0 # 移动止损用的持仓期内最高价 self.intraTradeLow = 0 # 持仓期内的最低点 self.stop = 0 # 多头止损 Signal.__init__(self, portfolio, vtSymbol)
def __init__(self, portfolio, vtSymbol): self.type = 'kong' # 策略参数 self.fixedSize = 1 # 每次交易的数量 self.initBars = 100 # 初始化数据所用的天数 self.minx = 'min5' self.bollWindow = 60 self.bollDev = 3 self.atrValue = None self.atrWindow = 10 self.slMultiplier = 1.5 self.hard_stop_ratio = 0.001 # 策略临时变量 self.can_buy = False self.can_short = False self.bollUp = 0 self.bollDown = 0 # 需要持久化保存的变量 self.cost = 0 self.intraTradeHigh = 0 # 移动止损用的持仓期内最高价 self.intraTradeLow = 100E4 # 持仓期内的最低点 self.stop = 0 # 多头止损 self.hard_stop = 100E4 # 硬止损 self.dida = 0 Signal.__init__(self, portfolio, vtSymbol)
def __init__(self, portfolio, vtSymbol): Signal.__init__(self, portfolio, vtSymbol) # 策略参数 self.bollWindow = 18 # 布林通道窗口数 self.bollDev = 3.4 # 布林通道的偏差 self.cciWindow = 10 # CCI窗口数 self.atrWindow = 30 # ATR窗口数 self.slMultiplier = 5.2 # 计算止损距离的乘数 self.initBars = 90 # 初始化数据所用的天数 self.fixedSize = 1 # 每次交易的数量 # 策略变量 self.bollUp = 0 # 布林通道上轨 self.bollDown = 0 # 布林通道下轨 self.cciValue = 0 # CCI指标数值 self.atrValue = 0 # ATR指标数值 # 需要持久化保存的参数 self.counter = 0 self.buyPrice = 0 self.intraTradeHigh = 0 # 移动止损用的持仓期内最高价 self.intraTradeLow = 100E4 # 持仓期内的最低点 self.longStop = 100E4 # 多头止损 self.shortStop = 0 # 空头止损 # 载入历史数据,并采用回放计算的方式初始化策略数值 initData = self.portfolio.engine._bc_loadInitBar( self.vtSymbol, self.initBars) for bar in initData: self.bar = bar self.am.updateBar(bar)
def __init__(self, portfolio, vtSymbol): Signal.__init__(self, portfolio, vtSymbol) # 策略参数 self.initBars = 90 # 初始化数据所用的天数 self.fixedSize = 1 # 每次交易的数量 # 策略变量 self.cciWindow = 20 self.cciLong = 100 self.cciShort = -100 self.cciValue = None # 需要持久化保存的参数 self.counter = 0 self.buyPrice = 0 self.intraTradeHigh = 0 # 移动止损用的持仓期内最高价 self.intraTradeLow = 100E4 # 持仓期内的最低点 self.longStop = 100E4 # 多头止损 # 载入历史数据,并采用回放计算的方式初始化策略数值 initData = self.portfolio.engine._bc_loadInitBar( self.vtSymbol, self.initBars) for bar in initData: self.bar = bar self.am.updateBar(bar)
def __init__(self, portfolio, vtSymbol): self.type = 'kong' self.fixedSize = 1 # 每次交易的数量 self.initBars = 100 # 初始化数据所用的天数 self.minx = 'day' # 策略参数 self.cciWindow = 100 # CCI窗口数 self.atrWindow = 10 self.slMultiplier = 1.5 # CF self.hard_stop_ratio = 0.01 # 策略临时变量 self.cciValue = 0 self.atrValue = None self.stop = 0 # 多头止损 self.hard_stop = 100E4 self.intraTradeHigh = 0 self.intraTradeLow = 100E4 self.can_short = False self.can_cover = False # 需要持久化保存的变量 self.cost = 0 Signal.__init__(self, portfolio, vtSymbol)
def __init__(self, portfolio, vtSymbol): self.type = 'mix' # 策略参数 self.fixedSize = 1 # 每次交易的数量 self.initBars = 0 # 初始化数据所用的天数 self.minx = 'min15' # 策略临时变量 self.can_buy = False self.can_short = False # 需要持久化保存的变量 Signal.__init__(self, portfolio, vtSymbol)
def __init__(self, portfolio, vtSymbol): # 策略参数 self.bollWindow = 80 # 布林通道窗口数 self.bollDev = 2 # 布林通道的偏差 self.fixedSize = 1 # 每次交易的数量 self.initBars = 90 # 初始化数据所用的天数 self.minx = 'min5' # 策略临时变量 self.bollUp = 0 # 布林通道上轨 self.bollDown = 0 # 布林通道下轨 # 需要持久化保存的变量 self.stop = 0 # 多头止损 Signal.__init__(self, portfolio, vtSymbol)
def __init__(self, portfolio, vtSymbol): self.type = 'duo' # 策略参数 self.bollWindow = 10 # 布林通道窗口数 self.bollDev = 2.4 # 布林通道的偏差 self.fixedSize = 1 # 每次交易的数量 self.initBars = 20 # 初始化数据所用的天数 self.minx = 'day' # 策略临时变量 self.bollUp = 0 # 布林通道上轨 self.bollDown = 0 # 布林通道下轨 self.stop = 0 # 多头止损 # 需要持久化保存的变量 Signal.__init__(self, portfolio, vtSymbol)
def __init__(self, portfolio, vtSymbol): self.type = 'mix' # 策略参数 self.fixedSize = 1 # 每次交易的数量 self.initBars = 10 # 初始化数据所用的天数 self.minx = 'min5' # 策略临时变量 self.can_buy = False self.can_sell = False self.can_short = False self.can_cover = False # 需要持久化保存的变量 self.cost = 0 self.ins_list = [] Signal.__init__(self, portfolio, vtSymbol)
def __init__(self, portfolio, vtSymbol, entryWindow, exitWindow, atrWindow, profitCheck=False): """Constructor""" Signal.__init__(self, portfolio, vtSymbol) # 策略参数 self.initBars = 60 # 初始化数据所用的天数 self.entryWindow = entryWindow # 入场通道周期数 self.exitWindow = exitWindow # 出场通道周期数 self.atrWindow = atrWindow # 计算ATR周期数 self.profitCheck = profitCheck # 是否检查上一笔盈利 # 策略变量 self.atrVolatility = 0 # ATR波动率 self.entryUp = 0 # 入场通道 self.entryDown = 0 self.exitUp = 0 # 出场通道 self.exitDown = 0 self.longEntry1 = 0 # 多头入场位 self.longEntry2 = 0 self.longEntry3 = 0 self.longEntry4 = 0 self.longStop = 0 # 多头止损位 self.shortEntry1 = 0 # 空头入场位 self.shortEntry2 = 0 self.shortEntry3 = 0 self.shortEntry4 = 0 self.shortStop = 0 # 空头止损位 # 需要持久化保存的参数 self.unit = 0 # 信号持仓 self.result = None # 当前的交易 self.resultList = [] # 交易列表 # 载入历史数据,并采用回放计算的方式初始化策略数值 initData = self.portfolio.engine._bc_loadInitBar(self.vtSymbol, self.initBars) for bar in initData: self.bar = bar self.am.updateBar(bar)
def __init__(self, portfolio, vtSymbol): self.type = 'kong' # 策略参数 self.fixedSize = 10 # 每次交易的数量 self.initBars = 60 # 初始化数据所用的天数 self.minx = 'day' # 策略临时变量 self.can_buy = False self.can_sell = False self.can_short = False self.can_cover = False # 需要持久化保存的变量 self.cost = 0 size_am = 100 assert self.initBars <= size_am Signal.__init__(self, portfolio, vtSymbol)
def __init__(self, portfolio, vtSymbol): self.type = 'duo' # 策略参数 self.fixedSize = 1 # 每次交易的数量 self.initBars = 240 # 初始化数据所用的天数 self.minx = 'min30' # 策略临时变量 self.can_short = False self.can_cover = False self.target = '' self.opt = True # 需要持久化保存的变量 self.cost = 0 size_am = 300 assert self.initBars <= size_am Signal.__init__(self, portfolio, vtSymbol, size_am)
def __init__(self, portfolio, vtSymbol): Signal.__init__(self, portfolio, vtSymbol) # 策略变量 self.bollUp = None # 布林通道上轨 self.bollDown = None # 布林通道下轨 # 需要持久化保存的参数 self.buyPrice = 0 self.intraTradeLow = 100E4 # 持仓期内的最低点 self.longStop = 100E4 # 多头止损 # 初始化RSI入场阈值 self.rsiBuy = 50 + self.rsiEntry self.rsiSell = 50 - self.rsiEntry # 载入历史数据,并采用回放计算的方式初始化策略数值 initData = self.portfolio.engine.loadInitBar(self.vtSymbol, self.initBars) for bar in initData: if not self.am.inited: self.onBar(bar)
def __init__(self, portfolio, vtSymbol): self.type = 'duo' # 策略参数 self.bollWindow = 80 # 布林通道窗口数 self.bollDev = 2 # 布林通道的偏差 self.fixedSize = 1 # 每次交易的数量 self.initBars = 90 # 初始化数据所用的天数 self.minx = 'min5' # 策略临时变量 self.bollUp = 0 # 布林通道上轨 self.bollDown = 0 # 布林通道下轨 # 需要持久化保存的变量 self.stop = 0 # 多头止损 self.intraTradeHigh = 0 self.trailingPercent = 0.8 Signal.__init__(self, portfolio, vtSymbol)
def __init__(self, portfolio, vtSymbol): self.type = 'multi' # 策略参数 self.fixed_size_dict = {10:1, 20:2, 30:3} # 每次交易的数量 self.initBars = 60 # 初始化数据所用的天数 self.minx = 'min5' self.atrValue = 0 self.atrWindow = 20 self.atr_x = 8 self.dual = 10 self.atr_h = 5 self.adjust_bp = 0 self.price_tick = get_contract(vtSymbol).price_tick self.gap = 30 self.gap_base = self.gap self.gap_min = 15 self.gap_max = 40 self.price_duo_list = [] self.price_kong_list = [] self.duo_adjust_price = 0 self.kong_adjust_price = 0 self.size_duo_list = [] self.size_kong_list = [] # 策略临时变量 self.can_buy = False self.can_short = False self.pnl = 0 self.first = True self.counter = 0 Signal.__init__(self, portfolio, vtSymbol) self.backtest = True if self.portfolio.engine.type == 'backtest' else False
def __init__(self, portfolio, vtSymbol): self.type = 'one' # 策略参数 self.fixedSize = 6 # 每次交易的数量 self.initBars = 100 # 初始化数据所用的天数 self.minx = 'min30' # 策略临时变量 self.can_buy = False self.can_sell = False self.can_short = False self.can_cover = False self.ma_short_arr = None self.ma_mid_arr = None self.ma_long = None # 需要持久化保存的变量 self.cost = 0 Signal.__init__(self, portfolio, vtSymbol)
def __init__(self, portfolio, vtSymbol): # 策略参数 self.fixedSize = 1 # 每次交易的数量 self.initBars = 100 # 初始化数据所用的天数 self.minx = 'min5' self.atrValue = 0 self.atrWindow = 30 self.gap = 30 self.price_duo_list = [] self.price_kong_list = [] # 策略临时变量 self.can_buy = False self.can_short = False self.pnl = 0 # 需要持久化保存的变量 Signal.__init__(self, portfolio, vtSymbol)
def __init__(self, portfolio, vtSymbol): self.type = 'duo' # 策略参数 self.rsiLength = 5 # 计算RSI的窗口数 self.rsiEntry = 16 # RSI的开仓信号 self.trailingPercent = 0.7 # 百分比移动止损 self.victoryPercent = 0.3 self.fixedSize = 1 # 每次交易的数量 self.initBars = 100 # 初始化数据所用的天数 self.minx = 'min5' # 初始化RSI入场阈值 self.rsiBuy = 50 + self.rsiEntry self.rsiSell = 50 - self.rsiEntry # 策略临时变量 self.atr_short = 0 self.atr_mid = 0 self.atr_long = 0 self.rsi_value = 0 # RSI指标的数值 self.rsi_ma = 0 self.can_buy = False self.can_short = False self.bollUp = 0 self.bollDown = 0 self.gap = 100 self.dida = 0 # 需要持久化保存的变量 self.cost = 0 self.intraTradeHigh = 0 # 移动止损用的持仓期内最高价 self.intraTradeLow = 0 # 持仓期内的最低点 self.stop = 0 # 多头止损 Signal.__init__(self, portfolio, vtSymbol)
def __init__(self, portfolio, vtSymbol): self.type = 'kong' # 策略参数 self.fixedSize = 1 # 每次交易的数量 self.initBars = 100 # 初始化数据所用的天数 self.minx = 'min30' # 策略临时变量 self.can_buy = False self.can_sell = False self.can_short = False self.can_cover = False # 需要持久化保存的变量 self.cost = 0 size_am = 100 assert self.initBars <= size_am Signal.__init__(self, portfolio, vtSymbol) self.bm_bar = None self.bm = ArrayManager(60) self.init_bm()
def __init__(self, portfolio, vtSymbol): Signal.__init__(self, portfolio, vtSymbol)