07XQuant API使用说明.docx
- 文档编号:9130880
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:35
- 大小:30.90KB
07XQuant API使用说明.docx
《07XQuant API使用说明.docx》由会员分享,可在线阅读,更多相关《07XQuant API使用说明.docx(35页珍藏版)》请在冰豆网上搜索。
07XQuantAPI使用说明
XQuantAPI使用说明
目录
1获取行情类3
1.1获取tick行情3
1.2获取K线行情4
1.3获取合约信息6
2发送指令类7
2.1发送委托7
2.2发送撤单10
3查询信息类11
3.1查询持仓11
3.2查询资金13
4接收回报类14
4.1委托回报14
4.2成交回报15
4.3撤单回报16
5获取指标类17
5.1获取行情指标17
5.2获取X-Cube指标18
6数学函数类19
7其他20
7.1弹窗提示函数20
7.2设置函数20
1获取行情类
1.1获取tick行情
1.1.1描述
获取tick行情相关信息,如行情时间戳、开盘价、最新价、买一价、涨跌停板等。
1.1.2调用tick行情的方法
通过MD对象获取tick行情,MD对象可以在processMD中直接调用
publicvoidprocessMD(MDmd){
Datedate=md.getTimeStamp();//获取行情时间戳
doublelastPrice=md.latestPrice;//获取最新价
doubleupperLimitPrice=md.upperLimitPrice;//获取涨停板
}
1.1.3tick行情相关对象和方法
MD:
tick行情信息,包含行情时间戳、开盘价、最新价、买一价、涨跌停板等。
详情请参考XQuantAPI文档中com.dfitc.stp.market下的MD。
MD对象常用方法:
获取合约对象MD.getContract()
获取最新价MD.latestPrice
获取买一价MD.bidPrice1
获取买一量MD.bidVol1
获取卖一价MD.askPrice1
获取卖一量MD.askVol1
获取开盘价MD.open
获取最新成交量MD.latestVol
获取行情时间MD.getTime()
获取五档买(level2)MD.l2MDBidArray
获取五档卖(level2)MD.l2MDAskArray
获取昨结算MD.preSettlementPrice
获取涨停板MD.upperLimitPrice
获取跌停板MD.lowerLimitPrice
1.1.4其他调用tick行情的方法
除了在processMD中使用外也可以在策略的其他函数中使用。
比如可以在processOrderStatusprocessOrderDeal、processOrderCancel等回调函数中调用最新MD,详见《X-QuantAPI文档》。
在其他回调函数中,函数没有传入MD对象,此时需要通过MDBook对象调用
publicvoidotherMethod(){
MDmd=getMDBook().getLatestMD(getContractCode());
MDSeriesmds=getMDBook().getMDSeries(getContractCode());//获取某个合约的tick行情序列(默认最大容量500)
}
MDBook:
行情缓存,存储各种行情信息,如K线数据及tick行情等。
详细信息可以参考XQuantAPI文档中com.dfitc.stp.market下的MDBook。
MDBook对象调用tick行情方法:
获取最新的tick行情MDBook.getLatestMD()
获取tick行情序列MDBook.getMDSeries()
获取期权标的行情MDBook.getLatestMDByUnderlying()
设置行情序列最大容量MDBook.setBarSeriesCapacity()
是否所有合约都有行情isMDFilled()
策略中订阅行情subMD()(适用于从文件中读取交易合约)
1.2获取K线行情
1.2.1描述
获取K线行情相关信息,如K线时间戳、开盘价、收盘价、最高价、最低价、前n根的K线行情信息、收盘价序列等。
1.2.2调用K线行情的方法
通过Bar对象获取最新的K线行情,BarSeries对象获取最新的K线序列。
Bar、BarSeries对象可以在processBar中直接使用
publicvoidprocessBar(Barbar,BarSeriesbarSeries){
Datedate=bar.getBeginTime();//获取K线开始时间
doublebarClose=bar.getClose();//获取K线收盘价
BarCyclecyc=bar.getBarCycle();//获取K线周期
doubleclose1=barSeries.close
(1);//获取前一根k线的收盘价
DoubleSeriesbars=barSeries.getSubCloseSeries();//获取k线收盘价序列
}
注意:
只有在setBarCycles回调函数中设置了合约周期,才会调用processBar等相关K线回调函数
publicvoidsetBarCycles(String[]contracts){
importBarCycle(contracts[0],Unit.MINUTE,5);//设置第一个合约的周期为5分钟
}
1.2.3K线行情相关对象和方法
Bar:
K线行情信息,包含K线时间戳、开盘价、收盘价、最高价、最低价等。
详情请参考XQuantAPI文档中com.dfitc.stp.market下的Bar。
Bar对象常用方法:
获取合约对象Bar.getContract()
获取K线开始时间Bar.getBeginTime()
获取开盘价Bar.getOpen()
获取收盘价Bar.getClose()
获取最高价Bar.getHigh()
获取最低价Bar.getLow()
获取K线周期Bar.getBarCycle()
是否K线开始Bar.isBeginning()
K线是否结束Bar.isFinished()
是否历史K线Bar.isHistory()
获取K线成交量Bar.getVol()
获取涨跌幅度Bar.getPriceChange()
BarSeries:
K线序列,存储K线行情。
详细信息可以参考XQuantAPI文档中com.dfitc.stp.market下的BarSeries。
Bar对象常用方法:
获取最新K线的收盘价BarSeries.close()
获取K线收盘价序列BarSeries.getSubCloseSeries()
获取最新K线的最高价BarSeries.high()
获取K线最高价序列BarSeries.getSubHighSeries()
1.2.4其他调用K线行情的方法
1、其他回调函数中调用
除了在processBar中使用外也可以在策略的其他K线回调函数中使用。
比如可以在processBarInside回调函数中调用,使用方式与processBar中相同。
2、通过MDBook调用
在其他函数中,没有传入Bar、BarSeries对象,此时需要通过MDBook对象调用
publicvoidotherMethod(){
MDBookmdBook=getMDBook();//获取MDBook对象
BarlastBar=mdBook.getLastBar(newBarCycle(getContractCode(),Unit.MINUTE,5));//获取合约最新的5分钟K线
BarSeriesbarSeries=mdBook.getBarSeries(getContractCode(),Unit.MINUTE,5);//获取合约的5分钟K线序列(默认最大容量为500)
}
MDBook:
行情缓存,存储各种行情信息,如K线数据及tick行情等等。
详细信息可以参考XQuantAPI文档中com.dfitc.stp.market下的MDBook。
MDBook对象常用方法:
设置行情序列最大容量MDBook.setBarSeriesCapacity()
3、调用历史K线(运行可用)
以上方法都是只能获取到策略启动后的行情信息,如果需要用到历史K线,需要在initialize函数中加入setProperty(Prop.QUERY_HISTORY_BACKCOUNT,100),策略启动后,会自动查询所需的历史K线,并存储到K线序列中,参与相应指标的计算。
如果仅仅只是想要纯粹的历史数据,自己对数据进行处理,也可以使用如下方法
MHSmhs=getMHS();//获取默认历史行情源
BarCyclebarcyc=newBarCycle(getContractCode(),Unit.MINUTE,5);//周期
List
1.3获取合约信息
1.3.1描述
获取合约信息,如合约编号、合约类型、合约乘数、最小变动价位、期权执行价、期权类型、期权到期日等。
1.3.2获取合约信息的方法
通过Contract、Option对象获取合约的相关信息
ContractoContract=getContractObject();//第一个合约的合约对象
Stringcont=oContract.code;//获取合约编号
Optionoption=oContract.option;//获取合约期权对象(当合约类型为期权或股票期权时,option才不为空,否则将抛空指针)
doublestrikePrice=option.getStrikePrice();//获取期权执行价
1.3.3合约相关对象和方法
Contract:
合约信息,包含合约编号、合约类型、合约乘数、最小变动价位等。
详情请参考XQuantAPI文档中com.dfitc.stp.entity下的Contract。
Contract对象常用方法:
获取合约编号Contract.getContractCode()
获取收盘时间Contract.getCloseTime()
获取合约乘数Contract.getContractMultiplier()
获取合约类型Contract.getContractType()
获取合约最小变动价Contract.getMinMove()
获取交易所与本地时间差Contract.getTimeDiffBetweenLocalAndExchange()
获取交易所时间Contract.getExchange().getExchangeTime()
获取期权对象Contract.getOption()
是否期货合约Contract.isFutures()
是否期权合约Contract.isOptions()
是否股票合约Contract.isStock()
是否股票期权合约Contract.isStockOptions()
是否现货合约Contract.isSpot()
时间是否在交易时间内Contract.isInTradingTime()
Option:
期权合约信息,包含期权编码、开始交易日、到期日、执行价格、期权类型、标的合约等。
详情请参考XQuantAPI文档中com.dfitc.stp.entity下的Option。
Option对象常用方法:
获取期权编码Option.getTradeCode()
获取合约最小变动价Option.getMinMove()
获取开始交易日Option.getBeginTradingDay()
获取最后交易日Option.getEndTradingDay()
获取行权日Option.getExerciseDay()
获取到期日Option.getExpireDay()
获取执行价格Option.getStrikePrice()
获取期权类型Option.getOptionType()
获取标的合约Option.getUnderlying()
获取虚拟标的合约Option.getVirtualUnderlying()
1.3.4其他获取合约信息的方法
除了通过Contract、Option对象获取合约的相关信息外,也可以在策略中直接获取合约的某些信息。
如下:
获取合约编号getContractCode()
获取策略使用的所有合约getContractCodes()
获取合约对象getContractObject()
获取合约最小变动价getMinMove()
获取品种主力合约getTopContractCode()
获取主力合约系列getTopConts()
2发送指令类
2.1发送委托
2.1.1描述
可以发送的委托,有限价单、市价单、追价单、开市自动单、属性(FAK/FOK)单、做市商应价单、条件单等。
2.1.2发送委托的方法
发送委托的方法在任何函数中都能使用
OrderRelevantorder=orderInsert(getContractCode(),3000,5,Constants.BUY,Constants.OPEN);
//发送普通限价单,输入的参数包括
合约代码、
委托价格、
委托量、
委托方向、
开平方向
2.1.3委托相关对象和方法
OrderRelevant:
报单关联对象,存储报单信息及相关回报信息:
如报单合约、本地委托号、委托价、委托量、买卖、开平、成交回报列表、撤单回报等;
详情请参考XQuantAPI文档中com.dfitc.stp.trader下的OrderRelevant。
OrderRelevant对象常用方法:
报单合约OrderRelevant.contracCode()
委托价OrderRelevant.inputPrice()
委托量OrderRelevant.inputVol()
买卖方向OrderRelevant.direction()
开平状态OrderRelevant.getOffset()
定单类型OrderRelevant.orderType()
定单属性OrderRelevant.orderAttribute()
本地委托号OrderRelevant.localID()
报单编号OrderRelevant.orderSysID()
多个成交回报OrderRelevant.dealResults()
是否买方向OrderRelevant.isBuy()
是否开仓单OrderRelevant.isOpen()
是否平仓单OrderRelevant.isClose()
是否平今单OrderRelevant.isCloseToday()
成交手数OrderRelevant.dealVol()
剩余手数OrderRelevant.remainderVol()
是否已完成OrderRelevant.isFinished()
Constants:
报单属性常量类,包含买卖、开平、申报标志、订单属性、订单类型等。
详情请参考XQuantAPI文档中com.dfitc.stp.trader下的Constants。
Constants对象常用常量:
买Constants.BUY
卖Constants.SELL
投机Constants.HF_SPECULATION
套利Constants.HF_ARBITRAGE
自动单Constants.DF_AUTO
限价单Constants.OT_LMT
市价单Constants.OT_MKT
FAKConstants.OA_FAK
FOKConstants.OA_FOK
期权行权Constants.OC_TYPE_OPTIONS_STRIKE
期权履约Constants.OC_TYPE_OPTIONS_EXERCISE
期权放弃Constants.OC_TYPE_OPTIONS_ABNDON
2.1.4其他发送委托的方法
发送委托在后台有两种处理方法:
异步和同步。
异步报单:
只挂单,没有后续操作,不会阻塞程序运行,跟手动报单相同。
同步报单:
挂单后,等待报单全部成交或撤单,会阻塞程序运行。
报市价单
orderInsert(getBindAccountID(0),getContractCode(),10,Constants.BUY,Constants.OPEN);
报开市自动单
orderInsert(getContractCode(),4000,10,Constants.SELL,Constants.OPEN,nstants.HF_SPECULATION,Constants.OT_LMT,Constants.OA_NONE,0,Constants.DF_AUTO);
报FAK、FOK单
orderInsert(getContractCode(),4000,10,Constants.SELL,Constants.OPEN,Constants.HF_SPECULATION,Constants.OT_LMT,Constants.OA_FAK,0,Constants.DF_NON_AUTO);
报做市商应价单:
orderInsert(this.getBindAccountID(0),null,getContractCode(0),90,95,10,10,Constants.OPEN,Constants.OPEN);
报条件单
orderTrigger(getContractCode(0),3700,1,Constants.SELL,Constants.OPEN,3700,Constants.TRIGGER_NOT_LESS);
买开仓同步报单(追价单)
OrderRelevantListorderList=buyToOpen(5);//以对价报单,报单在收到委托回报后立即撤单,收到撤单回报后,继续按剩下的手数再重新用对价报单,如此循环,直到全部成交。
报单合约为策略所选的第一个合约。
说明:
不同参数的同名方法,报单之后的操作不同,请根据需要使用。
详情请参考XQuantAPI文档中com.dfitc.stp.strategy下的BaseStrategy中相关方法。
OrderRelevantList:
报单对象集合,封装多个报单对象,一般见于同步报单返回值。
详情请参考XQuantAPI文档中com.dfitc.stp.trader下的OrderRelevantList。
OrderRelevantList常用方法:
成交均价OrderRelevantList.getDealAvgPrice()
成交手数OrderRelevantList.getTotalDealVol()
报单对象集合OrderRelevantList.getOrders()
委托相关的方法:
检查报单的价格和量是否合法checkOrderVolPrice()
合约某方向的市价getDirMarketPrice()
2.2发送撤单
2.2.1描述
撤单有报单对象撤单、合约撤单、本地委托号撤单、报单编号撤单、买卖开平方向撤单等。
2.2.2发送撤单的方法
发送撤单的方法在任何函数中都能使用
OrderRelevantorder=orderInsert(getContractCode(),3000,5,Constants.BUY,Constants.OPEN);
orderCancelAsyn(order);//有报单对象时,根据报单对象撤单
2.2.3撤单相关对象和方法
OrderRelevant:
此次委托回报对应的报单对象,具体请见发送委托。
2.2.4其他发送撤单的方法
发送撤单在后台有两种处理方法:
异步和同步。
异步撤单:
发出撤单指令后,没有后续操作,不会阻塞程序运行,跟手动撤单相同。
同步撤单:
发出撤单指令后,等待撤单成功,会阻塞程序运行。
以异步撤单为例,介绍几种撤单方法
OrderRelevantorder=orderInsert(getContractCode(),3000,5,Constants.BUY,Constants.OPEN);
1.根据报单对象撤单
orderCancelAsyn(order);//撤此挂单
2.根据合约撤单
orderCancelAllAsyn(getContractCode());//撤合约所有挂单
3.根据本地委托号撤单
orderCancelByLocalIDAsyn("000000000001");//撤本地委托号为"000000000001"的挂单
4.撤所有挂单
orderCancelAllAsyn();//撤掉策略所有的挂单
5.定时撤单
orderCancelAsyn(order,5000L);//此指令发出5秒后撤单
6.根据报单编号撤单
cancel(getBindAccountID(0),"123",getContractCode());//撤报单编号为"123"的挂单
7.根据合约买卖(开平)方向撤单
orderCancelByDirectionAsyn(getContractCode(),Constants.BUY);//撤第一个合约的买单
orderCancelByOffsetAsyn(getContractCode(),Constants.OPEN);//撤第一个合约的开仓单
说明:
只有‘根据报单编号撤单’可以撤其他客户端的报单,其他方法只能撤XQuant本地发出的报单。
3查询信息类
3.1查询持仓
3.1.1描述
获取持仓合约、持仓量、持仓盈亏、开仓均价、净持仓、总持仓盈亏、账户持仓等
3.1.2查询持仓信息的方法
通过DirPosition对象获取持仓的相关信息
DirPositionposition=getDirPositionObject();//首先获取持仓对象
if(position!
=null){//避免出现空指针
intlongPosition=position.getDirPosition
(1);//获取多头持仓
intshortProfit=position.getDirPositionProfit(-1);//获取空头持仓盈亏
inttotalProfitMoney=position.getTotalPositionProfitMoney();//获取总持仓盈亏(金额)
}
3.1.3持仓相关对象和方法
DirPosition:
持仓信息,包含持仓合约对象、持仓量、持仓盈亏、平仓
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 07XQuant API使用说明 07 XQuant API 使用说明
![提示](https://static.bdocx.com/images/bang_tan.gif)