def __init__(self, ctaEngine, setting): # 首先找到策略的父类(就是类CtaTemplate),然后把DoubleMaStrategy的对象转换为类CtaTemplate的对象 super(MultiFrameMaStrategy, self).__init__(ctaEngine, setting) # 生成仓位记录的字典 symbol = self.symbolList[0] self.Longpos = symbol.replace('.','_')+"_LONG" self.Shortpos = symbol.replace('.','_')+"_SHORT" self.bg60 = BarGenerator(self.onBar, 60, self.on60MinBar) self.bg60Dict = { sym: self.bg60 for sym in self.symbolList } self.bg15 = BarGenerator(self.onBar, 15, self.on15MinBar) self.bg15Dict = { sym: self.bg15 for sym in self.symbolList } # 生成Bar数组 self.am60Dict = { sym: ArrayManager(size=self.slowWindow+10) for sym in self.symbolList } self.am15Dict = { sym: ArrayManager(size=self.slowWindow+10) for sym in self.symbolList }
def __init__(self, ctaEngine, setting): """Constructor""" super(BollChannelStrategy, self).__init__(ctaEngine, setting) self.bg = BarGenerator(self.onBar, 15, self.onXminBar) # 创建K线合成器对象 self.bg30 = BarGenerator(self.onBar, 30, self.on30minBar) self.am = ArrayManager()
def __init__(self, ctaEngine, setting): """Constructor""" super(DoubleMaStrategy, self).__init__(ctaEngine, setting) self.bg = BarGenerator(self.onBar) self.am = ArrayManager() self.bg15 = BarGenerator(self.onBar, 15, self.on15MinBar) self.am15 = ArrayManager()
def __init__(self, ctaEngine, setting): """Constructor""" super(SARKELStrategy, self).__init__(ctaEngine, setting) self.bg = BarGenerator(self.onBar, self.barMins, self.onXminBar) # 创建K线合成器对象 self.am = ArrayManager() self.bgclose = BarGenerator(self.onBar, self.barMinsClose, self.onminBarClose) self.amClose = ArrayManager()
def __init__(self, ctaEngine, setting): """Constructor""" super(MultiTimeframeStrategy, self).__init__(ctaEngine, setting) self.rsiLong = 50 + self.rsiSignal self.rsiShort = 50 - self.rsiSignal # 创建K线合成器对象 self.bg5 = BarGenerator(self.onBar, 5, self.on5MinBar) self.am5 = ArrayManager() self.bg15 = BarGenerator(self.onBar, 15, self.on15MinBar) self.am15 = ArrayManager()
def __init__(self, ctaEngine, setting): """Constructor""" super(M60M5MacdStrategy, self).__init__(ctaEngine, setting) self.rsiLong = 50 + self.rsiSignal self.rsiShort = 50 - self.rsiSignal # 创建K线合成器对象 self.bg5 = BarGenerator(self.onBar, 5, self.on5MinBar) self.am5 = ArrayManager() self.bg60 = BarGenerator(self.onBar, 60, self.on60MinBar) self.am60 = ArrayManager()
def __init__(self, ctaEngine, setting): """Constructor""" super(DualThrustMultiContractStrategy, self).__init__(ctaEngine, setting) self.bg = BarGenerator(self.onBar) self.barList = [] #self.syncList = if 'strParams' in setting: params = setting['strParams'] if len(params) >= 3: for p in params: if p[0] == 'unit': self.unitno = p[1] if p[0] == 'p1': self.p1 = p[1] if p[0] == 'p2': self.p2 = p[1] print(self.unitno, self.p1, self.p2) self.pos = 0 self.dayOpen = EMPTY_FLOAT self.dayHigh = EMPTY_FLOAT self.dayLow = EMPTY_FLOAT self.range = EMPTY_FLOAT self.longEntry = EMPTY_FLOAT self.shortEntry = EMPTY_FLOAT self.exitTime = time(hour=14, minute=55) self.longEntered = False self.shortEntered = False
def __init__(self, ctaEngine, setting): """Constructor""" super(strategy_Volatility_RB, self).__init__(ctaEngine, setting) self.initDays = max(self.BK_BEFORE_DAY, self.SK_BEFORE_DAY) # 初始化数据所用的天数 self.bg = BarGenerator(self.onBar) self.am = ArrayManager(self.initDays) self.strategyStartpos = 1890 self.strategyEndpos = 2358 self.all_bar = [] self.SP_style = 0000 self.BP_style = 0000 self.BKPRICE = EMPTY_FLOAT_WH self.BKDATE = EMPTY_FLOAT_WH self.SKPRICE = EMPTY_FLOAT_WH self.SKDATE = EMPTY_FLOAT_WH self.tradeday = 0 # 注意策略类中的可变对象属性(通常是list和dict等),在策略初始化时需要重新创建, # 否则会出现多个策略实例之间数据共享的情况,有可能导致潜在的策略逻辑错误风险, # 策略类中的这些可变对象属性可以选择不写,全都放在__init__下面,写主要是为了阅读 # 策略时方便(更多是个编程习惯的选择) self.BKWeekProfit = [0, 0, 0, 0, 0, 0, 0] self.SKWeekProfit = [0, 0, 0, 0, 0, 0, 0] self.LongBestday = [0, 1, 2, 3] #[0,1,2] 20190627 self.ShortBestday = [1, 2, 3]
def __init__(self, ctaEngine, setting): """Constructor""" super(TripleMAStrategy02, self).__init__(ctaEngine, setting) self.bm = BarGenerator(self.onBar, 5, self.onFiveBar) # 由于maWindow3的长度是120,所以ArrayManager的size要增加至150 self.am = ArrayManager(size=150)
def onInit(self): """初始化策略(必须由用户继承实现)""" self.activeSymbol = self.symbolList[0] # 主动品种 self.passiveSymbol = self.symbolList[1] # 被动品种 # 构造K线合成器对象 self.bgDict = { sym: BarGenerator(self.onBar) for sym in self.symbolList } self.amDict = {sym: ArrayManager() for sym in self.symbolList} # 载入1分钟历史数据,并采用回放计算的方式初始化策略参数 # 可选参数:["1min","5min","15min","30min","60min","4hour","1day","1week","1month"] pastbar1 = self.loadHistoryBar(self.activeSymbol, type_="1min", size=self.initbars) pastbar2 = self.loadHistoryBar(self.passiveSymbol, type_="1min", size=self.initbars) for bar1, bar2 in zip(pastbar1, pastbar2): self.amDict[self.activeSymbol].updateBar(bar1) # 更新数据矩阵(optional) self.amDict[self.passiveSymbol].updateBar(bar2) # self.onBar(bar) # 是否直接推送到onBar self.putEvent() # putEvent 能刷新UI界面的信息 '''
def __init__(self, ctaEngine, setting): """Constructor""" super(Turtle01Strategy, self).__init__(ctaEngine, setting) self.bg = BarGenerator(self.onBar,onDayBar = self.ondayBar) self.am = ArrayManager(max(self.longDays,self.shortDays,self.atrDays)+1) self.barList = []
def __init__(self, ctaEngine, setting): """Constructor""" super(AtrRsiStrategy, self).__init__(ctaEngine, setting) # 创建K线合成器对象 self.bg = BarGenerator(self.onBar) self.am = ArrayManager()
def __init__(self, ctaEngine, setting): """Constructor""" super(DualThrust_IntraDayStrategy, self).__init__(ctaEngine, setting) self.bg = BarGenerator(self.onBar, onDayBar=self.ondayBar) self.am = ArrayManager() self.barList = []
def __init__(self, ctaEngine, setting): """Constructor""" super(DoubleMaStrategyWh, self).__init__(ctaEngine, setting) self.initDays = self.SK_E_LONG + self.SK_E_DAYS_LONG self.bg = BarGenerator(self.onBar) self.am = ArrayManager(self.initDays) self.strategyStartpos = 1891 self.strategyEndpos = 2357 self.all_bar = [] # 注意策略类中的可变对象属性(通常是list和dict等),在策略初始化时需要重新创建, # 否则会出现多个策略实例之间数据共享的情况,有可能导致潜在的策略逻辑错误风险, # 策略类中的这些可变对象属性可以选择不写,全都放在__init__下面,写主要是为了阅读 # 策略时方便(更多是个编程习惯的选择) self.SK_A_ma0 = EMPTY_FLOAT self.SK_A_ma1 = EMPTY_FLOAT self.SK_A_close1 = EMPTY_FLOAT self.BARSLAST_CR_UP_SK_A_LONG = EMPTY_INT_WH self.BARSLAST_CR_DOWN_SK_A_LONG = EMPTY_INT_WH self.BARSLAST_CR_UP_SK_E_LONG = EMPTY_INT_WH self.BARSLAST_CR_DOWN_SK_E_LONG = EMPTY_INT_WH self.BKPRICE = EMPTY_FLOAT_WH self.SKPRICE = EMPTY_FLOAT_WH self.SK_E_ma0 = EMPTY_FLOAT self.SK_E_ma1 = EMPTY_FLOAT self.BP_style = 0000
def __init__(self, ctaEngine, setting): """Constructor""" super(Turtle01Strategy1M, self).__init__(ctaEngine, setting) self.bg = BarGenerator(self.onBar, xmin=3, onXminBar=self.on3MBar, onDayBar=self.ondayBar) self.am = ArrayManager( max(self.longDays, self.shortDays, self.atrDays) + 1) self.barList = [] if len(Turtle01Strategy1M.cust_Setting) > 0: for cust in Turtle01Strategy1M.cust_Setting: if cust["StrategyGroup"] == "Turtle": capAmtTurtle = float(cust["CaptialAmt"]) minBarTypeTurtle = cust["MinuteBarGen"] break elif cust["StrategyGroup"] == "Default": capAmtDefault = float(cust["CaptialAmt"]) minBarTypeDefault = cust["MinuteBarGen"] if capAmtTurtle > 0: self.capAmount = capAmtTurtle self.minBarType = minBarTypeTurtle self.unitCalcMethod = "custsetting" elif capAmtDefault > 0: self.capAmount = capAmtDefault self.minBarType = minBarTypeDefault self.unitCalcMethod = "custsetting" else: self.unitCalcMethod = "ctasetting"
def __init__(self, ctaEngine, setting): """Constructor""" super(tempStrategy, self).__init__(ctaEngine, setting) self.bg = BarGenerator(self.onBar) self.am = ArrayManager() self.lastzhibiao = zhibiao(0, 0, 0) self.celve0 = zerocelve() # self.celve1 = ceshi() self.tickCelvezu = [self.celve0] self.barCelvezu = [self.celve0] self.tickadd = 1 #断网恢复变量 self.stopcount = None #交易时间和监控联网状态变量 self.yepan = False self.yepanhour = None self.yepanminute = None self.lastbardatetime = None self.tradetime = None #控制开仓和平仓稳定变量 self.tradecount = 0 self.tradingcelve = [self.celve0]
def __init__(self, ctaEngine, setting): """Constructor""" super(strategyDemo, self).__init__(ctaEngine, setting) self.contractMode = 'Double' #主力合约与次主力合约模式 # self.contractMode='Dominant' #主力合约模式 self.lastOrder = None self.lastTrade = None self.tickList = [] #初始一个tick列表 self.tickListAdd = [] #初始第二个tick列表 self.bType = 0 #买的状态,1表示买开委托状态,0表示非买开委托状态.目的是判断当前委托的状态,不要发生重复发单的事情 self.sType = 0 #买的状态,1表示卖开委托状态,0表示非卖开委托状态 self.orderType = '' self.contractname = '' self.contractnameAdd = '' self.initialFlag = True self.PositionCodeList = [] self.signalGroupList = [] self.rollingDays = 0 #开单条件:远-近 价差大于10,开仓 self.isBuySign = False self.isShortSign = False self.isBuyCoverSign = False self.isShortCoverSign = False #记录价格序列 self.tickListPrice = [] self.tickListAddPrice = [] self.bg = BarGenerator(self.onBar, 5, self.onXminBar) self.am = ArrayManager()
def __init__(self, ctaEngine, setting): """Constructor""" super(DoubleMaStrategy, self).__init__(ctaEngine, setting) # self.bg = BarGenerator(self.onBar) self.bg = BarGenerator(self.onBar, 5, self.onFiveBar) # 创建K线合成器对象 self.am = ArrayManager(10)
def __init__(self, ctaEngine, setting): """Constructor""" super(ShortTermStrategy, self).__init__(ctaEngine, setting) # 注意策略类中的可变对象属性(通常是list和dict等),在策略初始化时需要重新创建, # 否则会出现多个策略实例之间数据共享的情况,有可能导致潜在的策略逻辑错误风险, # 策略类中的这些可变对象属性可以选择不写,全都放在__init__下面,写主要是为了阅读 # 策略时方便(更多是个编程习惯的选择) self.short_term_list_first = [] self.short_term_list_all = [] self.short_term_last_three_first_index = [] self.short_term_last_two_low_all_index = [] self.short_term_last_two_high_all_index = [] self.short_term_open_last_three_first_index = [] self.short_term_open_last_two_all_index = [] self.all_bar = [] self.BK_style = EMPTY_INT_WH # 2-->所有的低点 21利用低点 22利用高点 self.SK_style = EMPTY_INT_WH # 2-->所有的高点 21利用高点 22利用低点 self.BKPRICE = EMPTY_FLOAT_WH self.SKPRICE = EMPTY_FLOAT_WH self.initDays = self.E_LONG_ALL if self.LongOrShort == True else self.SK_E_LONG_ALL self.MAXCLOSE_AFTER_OPEN = EMPTY_FLOAT_WH #建仓后close的最大值 self.strategyStartpos = 1343 self.strategyEndpos = 1826 self.SP_style = 0000 self.tradeday = 0 self.bg = BarGenerator(self.onBar) self.am = ArrayManager(self.initDays)
def __init__(self, ctaEngine, setting): """Constructor""" super(TestStrategy, self).__init__(ctaEngine, setting) vtSymbolset=setting['vtSymbol'] # 读取交易品种 vtSymbolList=vtSymbolset.split(',') self.activeSymbol = vtSymbolList[0] # 主动品种 self.passiveSymbol = vtSymbolList[1] # 被动品种 self.symbolList = [self.activeSymbol, self.passiveSymbol] # 给持仓字典设置名称,为了方便调用 # MONGO数据库不支持字段名含有 "." ,需特别处理) self.asLongpos = self.activeSymbol.replace(".","_")+"_LONG" self.asShortpos = self.activeSymbol.replace(".","_")+"_SHORT" self.psLongpos = self.passiveSymbol.replace(".","_")+"_LONG" self.psShortpos = self.passiveSymbol.replace(".","_")+"_SHORT" # 构造K线合成器对象 self.bgDict = { sym: BarGenerator(self.onBar) for sym in self.symbolList } self.amDict = { sym: ArrayManager() for sym in self.symbolList } # 价差缓存列表 self.spreadBuffer = []
def __init__(self): """Constructor""" super(AtrSignal, self).__init__() self.atrWindow = 30 self.bg = BarGenerator(self.onBar, 15, self.on15Bar) self.am = ArrayManager() self.atrValue = 0.0
def __init__(self, ctaEngine, setting): super(MutilEMaStrategy, self).__init__(ctaEngine, setting) self.bg = BarGenerator(self.onBar) self.am = ArrayManager() self.frequency = mtm.frequency self.pricePosi_top = 0 self.pricePosi_bot = 4 self.status = Status() self.tick = None self.locking = False self.lockActionToken = False self.unlockActionToken = False self.controlRisk = ControlRisk(security=mtm.jqdata_security, ctaEngine=self) self.strategyBase = MutilEMaStrategyBase(security=mtm.jqdata_security, status=self.status, frequency=mtm.frequency, ctaTemplate=self, enableTrade=mtm.enableTrade, enableBuy=mtm.enableBuy, enableShort=mtm.enableShort, controlRisk=self.controlRisk)
def __init__(self, ctaEngine, setting): """Constructor""" super(DoubleMaStrategyWh, self).__init__(ctaEngine, setting) #self.initDays= self.bg = BarGenerator(self.onBar) self.am = ArrayManager(self.initDays)
def __init__(self, ctaEngine, setting): """Constructor""" super(strategy_AttackDay_RB, self).__init__(ctaEngine, setting) #self.initDays= self.bg = BarGenerator(self.onBar) self.am = ArrayManager(self.initDays)
def __init__(self, ctaEngine, setting): """Constructor""" super(BollingerBotStrategy01, self).__init__(ctaEngine, setting) self.bm = BarGenerator(self.onBar, 5, self.onFiveBar) self.am = ArrayManager(30) self.orderList = [] self.entryPriceList = []
def __init__(self, ctaEngine, setting): """Constructor""" super(BollChannelStrategy01, self).__init__(ctaEngine, setting) self.bm = BarGenerator(self.onBar, 15, self.on5minBar) # 创建K线合成器对象 self.am = ArrayManager() self.entryPriceList = [] self.orderList = []
def __init__(self, ctaEngine, setting): """Constructor""" super(WHMikeStrategy, self).__init__(ctaEngine, setting) self.bg = BarGenerator(self.onBar, 15, self.onXminBar) # 创建K线合成器对象 self.bg30 = BarGenerator(self.onBar, 30, self.on30minBar) self.am = ArrayManager() gg = os.path.exists(self.future_code + self.csvfile) gg = False if gg: with open(self.future_code + self.csvfile) as cf: lines = csv.reader(cf) for line in lines: vv = (float(line[4]) + float(line[1])) / 2 self.coarray.insert(0, vv) self.line143.insert(0, line[4]) self.writeCtaLog(u'%s装载历史数据成功' % self.name) print(self.coarray) else: # os.remove(self.future_code + self.csvfile) #self.future_code = 'M0' url_str = ( 'http://stock2.finance.sina.com.cn/futures/api/json.php/IndexService.getInnerFuturesMiniKLine15m?symbol=' + self.future_code) r = requests.get(url_str) # http://stock2.finance.sina.com.cn/futures/api/json.php/IndexService.getInnerFuturesMiniKLine15m?symbol=M0 r_json = r.json() r_lists = list(r_json) f = open(self.future_code + self.csvfile, 'a+') wf = csv.writer(f) wf.writerows(r_lists) f.close() self.writeCtaLog(u'%s装载历史数据失败重新拉取数据' % self.name) #get history data with open(self.future_code + self.csvfile) as cf: lines = csv.reader(cf) for line in lines: vv = (float(line[4]) + float(line[1])) / 2 #self.coarray.insert(0, vv) #self.line143.insert(0, line[4]) #self.hisbar.insert(0, line) self.writeCtaLog(u'%s装载历史数据成功' % self.name) print(self.coarray.__len__())
def __init__(self, ctaEngine, setting): """Constructor""" super(DualThrustStrategy, self).__init__(ctaEngine, setting) self.bg = BarGenerator(self.onBar) self.barList = [] self.am = ArrayManager() self.baselinetime = None
def __init__(self): """Constructor""" super(MaSignal, self).__init__() self.fastWindow = 5 self.slowWindow = 20 self.bg = BarGenerator(self.onBar, 5, self.onFiveBar) self.am = ArrayManager()
def __init__(self): """Constructor""" super(BollSignal, self).__init__() self.bollWindow = 18 self.bollDev = 5 # self.bollUp, self.bollDown = 0.0,0.0 self.bg = BarGenerator(self.onBar, 15, self.on15Bar) self.am = ArrayManager()