Пример #1
0
    def OnTick(self,Tick):
	print repr(Tick)
	if self.tsData.has_key(Tick.InstrumentID):	
	    self.tsData[Tick.InstrumentID].append(Tick.LastPrice)
	    self.askData[Tick.InstrumentID].append(Tick.AskPrice1)  
	    self.bidData[Tick.InstrumentID].append(Tick.BidPrice1)  
	
	for i in range(len(self.tradingOrder)):
	    if self.tsData[self.tradingOrder[i][0]]!=[] and self.tsData[self.tradingOrder[i][1]]!=[]:
		if self.tsData[self.tradingOrder[i][0]][-1]-self.tsData[self.tradingOrder[i][1]][-1]*self.tradingOrder[i][2]>self.tradingOrder[i][4] or self.tsData[self.tradingOrder[i][0]][-1]-self.tsData[self.tradingOrder[i][1]][-1]*self.tradingOrder[i][2]<self.tradingOrder[i][3]:    
		    #定义买单下单参数
		    strategyName="spreadTrading"
		    instrument_id=self.tradingOrder[i][0]
		    limitPrice=self.askData[self.tradingOrder[i][0]][-1]
		    volume=Ygg.dataOperation().findMulti(self.tradingOrder[i][2])
		    orderPriceType='2'
		    direction='0'
		    combOffSetFlag='0'
		    combHedgeFlag='1'
		    #定义下单结构体
		    dataBuy=tradingData(self.TD.spi,strategyName).inputOrderField(self.TD.broker_id,self.TD.investor_id,instrument_id,volume,limitPrice,orderPriceType,direction,combOffSetFlag,combHedgeFlag)
		    
		    #定义卖单下单参数
		    instrument_id=self.tradingOrder[i][1]
		    limitPrice=self.bidData[self.tradingOrder[i][1]][-1]
		    volume=round(self.tradingOrder[i][2]*Ygg.dataOperation().findMulti(self.tradingOrder[i][2]))
		    orderPriceType='2'
		    direction='1'
		    combOffSetFlag='0'
		    combHedgeFlag='1'		
		    #定义下单结构体
		    dataSell=tradingData(self.TD.spi,strategyName).inputOrderField(self.TD.broker_id,self.TD.investor_id,instrument_id,volume,limitPrice,orderPriceType,direction,combOffSetFlag,combHedgeFlag)
		    #下单
		    self.TD.user.ReqOrderInsert(dataBuy,self.TD.spi.requestid)
		    self.TD.user.ReqOrderInsert(dataSell,self.TD.spi.requestid)
Пример #2
0
    def OnTick(self, Tick):
        print repr(Tick)
        if self.tsData.has_key(Tick.InstrumentID):
            self.tsData[Tick.InstrumentID].append(Tick.LastPrice)
            self.askData[Tick.InstrumentID].append(Tick.AskPrice1)
            self.bidData[Tick.InstrumentID].append(Tick.BidPrice1)

        for i in range(len(self.tradingOrder)):
            if self.tsData[self.tradingOrder[i][0]] != [] and self.tsData[
                    self.tradingOrder[i][1]] != []:
                if self.tsData[self.tradingOrder[i][0]][-1] - self.tsData[
                        self.tradingOrder[i]
                    [1]][-1] * self.tradingOrder[i][2] > self.tradingOrder[i][
                        4] or self.tsData[self.tradingOrder[i][0]][
                            -1] - self.tsData[self.tradingOrder[i]
                                              [1]][-1] * self.tradingOrder[i][
                                                  2] < self.tradingOrder[i][3]:
                    #定义买单下单参数
                    strategyName = "spreadTrading"
                    instrument_id = self.tradingOrder[i][0]
                    limitPrice = self.askData[self.tradingOrder[i][0]][-1]
                    volume = Ygg.dataOperation().findMulti(
                        self.tradingOrder[i][2])
                    orderPriceType = '2'
                    direction = '0'
                    combOffSetFlag = '0'
                    combHedgeFlag = '1'
                    #定义下单结构体
                    dataBuy = tradingData(
                        self.TD.spi, strategyName).inputOrderField(
                            self.TD.broker_id, self.TD.investor_id,
                            instrument_id, volume, limitPrice, orderPriceType,
                            direction, combOffSetFlag, combHedgeFlag)

                    #定义卖单下单参数
                    instrument_id = self.tradingOrder[i][1]
                    limitPrice = self.bidData[self.tradingOrder[i][1]][-1]
                    volume = round(
                        self.tradingOrder[i][2] *
                        Ygg.dataOperation().findMulti(self.tradingOrder[i][2]))
                    orderPriceType = '2'
                    direction = '1'
                    combOffSetFlag = '0'
                    combHedgeFlag = '1'
                    #定义下单结构体
                    dataSell = tradingData(
                        self.TD.spi, strategyName).inputOrderField(
                            self.TD.broker_id, self.TD.investor_id,
                            instrument_id, volume, limitPrice, orderPriceType,
                            direction, combOffSetFlag, combHedgeFlag)
                    #下单
                    self.TD.user.ReqOrderInsert(dataBuy, self.TD.spi.requestid)
                    self.TD.user.ReqOrderInsert(dataSell,
                                                self.TD.spi.requestid)
Пример #3
0
 def strategySpread(self,startDate,endDate,assetCode,sigmaMultiplier,tableName):
     startDate=Ygg.dataOperation().strToDate(startDate)
     endDate=Ygg.dataOperation().strToDate(endDate)
     folderPath=os.getcwd()
     #提取期货数据 
     data=Ygg.dataOperation().retrieveData(assetCode,startDate,endDate)
      #进行价差分析运算
     [res0,startDate,endDate]=Ygg.strategy().spreadSpeculation(data,folderPath,sigmaMultiplier)
      #写入数据库
     Ygg.dataOperation().backtestDBInsert(res0,startDate,endDate,tableName)     
Пример #4
0
 def strategySpread(self, startDate, endDate, assetCode, sigmaMultiplier,
                    tableName):
     startDate = Ygg.dataOperation().strToDate(startDate)
     endDate = Ygg.dataOperation().strToDate(endDate)
     folderPath = os.getcwd()
     #提取期货数据
     data = Ygg.dataOperation().retrieveData(assetCode, startDate, endDate)
     #进行价差分析运算
     [res0, startDate,
      endDate] = Ygg.strategy().spreadSpeculation(data, folderPath,
                                                  sigmaMultiplier)
     #写入数据库
     Ygg.dataOperation().backtestDBInsert(res0, startDate, endDate,
                                          tableName)
Пример #5
0
futureAccount = config.get("Trading", "futureAccount")
startDate = config.get("Date", "startDate")
endDate = config.get("Date", "endDate")
commodityCode = config.get("Data", "commodityIndex").split(",")
securityMarginCode = config.get("Data", "securityMargin").split(",")

#提取wind行情参数
quoteStartDate = '1995-01-01'
quoteEndDate = '2013-11-01'
fields = config.get("Data", "fields")
commodityName = "commodityIndex"
securityMarginName = "securityMargin"

#提取wind行情并写入数据库
#Ygg.dataOperation().getLowFreData(commodityName,quoteStartDate,quoteEndDate,fields,commodityCode)
Ygg.dataOperation().getLowFreData(securityMarginName, quoteStartDate,
                                  quoteEndDate, fields, securityMarginCode)
'''
#主力合同位置
#C:\Users\Skywalker\Documents\Python\quantsTrading\configurationFile
path='%s/configurationFile/commodityContract.xlsx'%(os.getcwd()[0:-8])

#价差参数
sigmaMultiplier=config.get("Assumption","sigmaMultiplier").split(",")

#价差策略计算
strategyName='spread'
#strategy=cloud.strategy()
#strategy.strategySpread(startDate,endDate,commodityCode,sigmaMultiplier,strategyName)

#策略选择规则参数
BetaADF=0.1