示例#1
0
    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)
示例#2
0
    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
示例#3
0
 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"
示例#4
0
    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()
示例#5
0
    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)
示例#6
0
 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 = []
示例#7
0
    def __init__(self, ctaEngine, setting):
        """Constructor"""
        super(AtrRsiStrategy, self).__init__(ctaEngine, setting)

        # 创建K线合成器对象
        self.bg = BarGenerator(self.onBar)
        self.am = ArrayManager()
示例#8
0
    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界面的信息
        '''
示例#9
0
    def __init__(self, ctaEngine, setting):
        """Constructor"""
        super(HLBeatStrategy, self).__init__(ctaEngine, setting)
        self.bm = MyBarGenerator(self.onBar, self.xMinBar, self.onFiveBar)
        self.am = ArrayManager()

        self.ctaEngine.eventEngine.register(EVENT_TIMER, self.onTimeFunc)
示例#10
0
    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(BollChannelStrategy, self).__init__(ctaEngine, setting)

        self.bg15 = BarGenerator(self.onBar, 15, self.onXminBar)  # 创建K线合成器对象
        self.bg30 = BarGenerator(self.onBar, 30, self.on30minBar)
        self.am = ArrayManager()
示例#12
0
    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 = []        
示例#13
0
 def addSymbolFreq(self, symbol, freq, size = 50):
     key = symbol + '_' + freq
     self.symbolFreqData[key] = ArrayManager(size=size)
     data_list=[]
     if freq == '1MIN':
         data_list = self.mainEngine.dbQuery( MINUTE_DB_NAME, symbol, d={}, sortKey='datetime', sortDirection=ASCENDING)
     elif freq == '5MIN':
         data_list = self.mainEngine.dbQuery( MINUTE_5_DB_NAME, symbol, d={}, sortKey='datetime', sortDirection=ASCENDING)
     elif freq == '15MIN':
         data_list = self.mainEngine.dbQuery( MINUTE_15_DB_NAME, symbol, d={}, sortKey='datetime', sortDirection=ASCENDING)
     elif freq == '30MIN':
         data_list = self.mainEngine.dbQuery( MINUTE_30_DB_NAME, symbol, d={}, sortKey='datetime', sortDirection=ASCENDING)
     elif freq == '60MIN':
         data_list = self.mainEngine.dbQuery( MINUTE_60_DB_NAME, symbol, d={}, sortKey='datetime', sortDirection=ASCENDING)
     elif freq == 'D':
         data_list = self.mainEngine.dbQuery( DAILY_DB_NAME, symbol, d={}, sortKey='datetime', sortDirection=ASCENDING)
     elif freq == 'W':
         data_list = self.mainEngine.dbQuery( WEEKLY_DB_NAME, symbol, d={}, sortKey='datetime', sortDirection=ASCENDING)
                                    
     if np.size(data_list) >= size:
         data_list = data_list[-1*size:]
         
     for data in data_list:
         bar = VtBarData()
         bar.close = data['close']
         bar.open = data['open']
         bar.high = data['high']
         bar.low = data['low']
         self.symbolFreqData[key].updateBar(bar)
示例#14
0
    def __init__(self, ctaEngine, setting):

        # 策略参数
        self.contract_size = 100
        self.MaxTolerate = 0
        self.maxHold = 0
        self.Ticks = 4  #追单数量
        self.stopping = False
        self.stoppingdt = None  # 止损后最小开仓时间
        self.stoppPeriods = 15  # 止损后15分钟不能开仓
        self.ShortSignalSpread = None
        self.LongSignalSpread = None
        self.short_enter_price = None
        self.short_exit_price = None
        self.long_enter_price = None
        self.long_exit_price = None
        self.maxHold = 0
        self.maxWin = 0
        self.minLose = 0
        self.mutiple = 0
        self.minEnterPrice = 0
        self.volume = 0
        self.init_asset = 0
        """Constructor"""
        super(tick_strategy, self).__init__(ctaEngine, setting)

        # 策略变量
        self.bm = BarManager(self.onBar, 1)  # 创建K线合成器对象
        self.am = ArrayManager()
示例#15
0
    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]
示例#16
0
    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]
示例#17
0
    def __init__(self, ctaEngine, setting):
        """Constructor"""
        super(Base_DT_IntraDayStrategy, self).__init__(ctaEngine, setting)

        self.bg = BarGenerator(self.onBar, onDayBar=self.ondayBar)
        self.am = ArrayManager()
        self.barList = []
示例#18
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)
示例#19
0
    def __init__(self, ctaEngine, setting):
        """Constructor"""
        super(DoubleMaStrategyWh, self).__init__(ctaEngine, setting)

        #self.initDays=

        self.bg = BarGenerator(self.onBar)
        self.am = ArrayManager(self.initDays)
示例#20
0
    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)
示例#21
0
    def __init__(self, ctaEngine, setting):
        """Constructor"""
        super(AppleStartStrategy, self).__init__(ctaEngine, setting)

        self.bm = BarManager(self.onBar)  # 创建K线合成器对象
        self.am = ArrayManager(size=100)

        self.pre_zhongxin = None  # 上一个bar的重心
    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 = []
示例#23
0
    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 = []
示例#24
0
    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()
示例#25
0
    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()
示例#26
0
    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
示例#27
0
    def __init__(self, ctaEngine, setting):
        super(WfftStrategy, self).__init__(ctaEngine, setting)

        self.bg = BarGenerator(self.onBar, 5)  
        self.am = ArrayManager()

        self.wfft = WFFT.pythonToCpp()
        self.wfft.setWfftSetting(self.N, self.len_, self.q, self.Tq, self.Length, self.Dq,
                                 int(self.TrailingStart), int(self.TrailingStop), float(self.MinPoint), int(self.StopLossSet))
示例#28
0
    def __init__(self, ctaEngine, setting):
        """Constructor"""
        super(KeltnerCommonStrategy, self).__init__(ctaEngine, setting)

        self.bg = BarGenerator(self.onBar,
                               onDayBar=self.ondayBar,
                               vtSymbol=self.vtSymbol)
        self.am = ArrayManager()
        self.barList = []
        # Read Parameters from Setting files
        if 'strParams' in setting:
            self.params = setting['strParams']
            if len(self.params) >= 3:
                for p in self.params:
                    if p[0] == 'unit':
                        self.fixedSize = p[1]
                    if p[0] == 'p1':
                        self.kUpper = p[1]
                    if p[0] == 'p2':
                        self.kLower = p[1]
                    if p[0] == 'p3':
                        self.maDays = p[1]
                    if p[0] == 'p4':
                        self.atrDays = p[1]
                    if p[0] == 'p5':
                        self.initDays = p[1]
                    if p[0] == 'p6':
                        self.rsilen = p[1]
                    if p[0] == 'p7':
                        self.rsiconfig = p[1]
        else:
            # 策略参数
            self.fixedSize = 1
            self.kUpper = 2
            self.kLower = 2

            self.maDays = 13
            self.atrDays = 20
            self.initDays = 55  # original value is 10
            self.rsiconfig = 50
            self.rsilen = 21
        #print(self.fixedSize,self.kUpper,self.kLower,self.maDays,self.initDays)
        self.atrAvg = 0
        self.maHigh = 0
        self.maLow = 0
        self.longEntry = 0
        self.shortEntry = 0
        self.longExit = 0
        self.shortExit = 0

        #exitTime = time(hour=15, minute=20) #will not cover position when day close

        self.longEntered = False
        self.shortEntered = False

        self.loginterval = 15
        self.logcountdown = 0
示例#29
0
    def __init__(self, ctaEngine, setting):
        """Constructor"""
        super(DoubleMaStrategy, self).__init__(ctaEngine, setting)

        self.bg = BarGenerator(self.onBar)
        self.am = ArrayManager()
        self.lastzhibiao = zhibiao()
        self.celve0 = zerocelve()
        self.tickCelvezu = [celve0]
        self.barCelvezu = [celve0]
示例#30
0
    def __init__(self, ctaEngine, setting):
        """Constructor"""
        super(KkStrategy, self).__init__(ctaEngine, setting)

        self.bm = BarManager(self.onBar, 5, self.onFiveBar)  # 创建K线合成器对象
        self.am = ArrayManager()

        self.buyOrderIDList = []
        self.shortOrderIDList = []
        self.orderList = []