在股票量化策略的初始化函數(shù)中缎罢,要進(jìn)行一些初始化的設(shè)置伊群,例如:設(shè)置參考基準(zhǔn)考杉、設(shè)置交易費(fèi)用、設(shè)置成交比例等舰始,JoinQuant平臺(tái)提供了一些寫好的方法崇棠,可以幫助我們直接使用,并且提供相關(guān)API文檔
設(shè)置基準(zhǔn)函數(shù)set_benchmark(security)
set_benchamark
函數(shù)接受一個(gè)標(biāo)的參數(shù)蔽午,security可以是股票代碼易茬、指數(shù)代碼或者ETF代碼酬蹋,默認(rèn)情況下是以滬深300為基準(zhǔn)的及老;沒有返回值
該函數(shù)只能在initialize
函數(shù)中使用
所謂設(shè)置基準(zhǔn),即設(shè)置一個(gè)參考線范抓,比如:如果以滬深300為基準(zhǔn)骄恶,則可以滬深300的價(jià)格線作為是否跑贏市場的參考
示例:
# 設(shè)定招商銀行股票為基準(zhǔn)
set_benchmark('60036.XSHG')
# 設(shè)定深證指數(shù)為基準(zhǔn)
set_benchmark('399001.XSHG')
# 設(shè)定50ETF基金指數(shù)為基準(zhǔn)
set_benchmark('510050.XSHG')
設(shè)置傭金/印花稅函數(shù)set_order_cost(cost, type, ref=None)
指定每筆交易要收取的手續(xù)費(fèi), 系統(tǒng)會(huì)根據(jù)用戶指定的費(fèi)率計(jì)算每筆交易的手續(xù)費(fèi)
先看一個(gè)使用示例:
# 股票類每筆交易時(shí)的手續(xù)費(fèi)是:買入時(shí)傭金萬分之三,賣出時(shí)傭金萬分之三加千分之一印花稅, 每筆交易傭金最低扣5塊錢
set_order_cost(OrderCost(open_tax=0, close_tax=0.001, open_commission=0.0003, close_commission=0.0003, close_today_commission=0, min_commission=5), type='stock')
參數(shù)解析
cost是OrderCost對象
- open_tax匕垫,買入時(shí)印花稅 (只股票類標(biāo)的收取僧鲁,基金與期貨不收)
- close_tax,賣出時(shí)印花稅 (只股票類標(biāo)的收取象泵,基金與期貨不收)
- open_commission寞秃,買入時(shí)傭金
- close_commission, 賣出時(shí)傭金
- close_today_commission, 平今倉傭金
- min_commission, 最低傭金,不包含印花稅
type是參考代碼
對應(yīng)的實(shí)參:stock 股票偶惠、fund 基金春寿、index_futures 金融期貨、futures 期貨忽孽、bond_fund 債券基金绑改、stock_fund 股票基金、QDII_fund QDII基金兄一、money_market_fund 貨幣基金厘线、mixture_fund 混合基金
ref
參考代碼,支持股票代碼/基金代碼/期貨合約代碼出革,以及期貨的品種造壮,如 ‘000001.XSHE’/’511188’/’IF1709’/’IF’
示例:
股票類每筆交易時(shí)的手續(xù)費(fèi)是:買入時(shí)傭金萬分之三,賣出時(shí)傭金萬之三加千分之一的印花稅骂束,每筆交易傭金最低扣5元錢
set_order_cost(OrderCost(open_tax=0, close_tax=0.001, open_commission=0.0003, colse_commission=0.0003, close_today_commission=0, min_commission=5), type='stock')
期貨類每筆交易時(shí)的手續(xù)費(fèi)是:買入時(shí)傭金萬分之0.23费薄,賣出時(shí)傭金萬分之0.23,平今倉為萬分之23
set_order_cost(OrderCost(open_tax=0, close_tax=0, open_commission=0.000023, close_commission=0.000023, close_today_commission=0.0023, min_commission=0), type='index_futures')
單獨(dú)設(shè)置某標(biāo)的的費(fèi)用栖雾,這里設(shè)置000300.XSHG的費(fèi)用
set_order_cost(OrderCost(open_tax=0, close_tax=0.001, open_commission=0.0003, close_commission=0.0003, close_today_commission=0, min_commission=5), type='stock', ref='000300.XSHG')
設(shè)置所有期貨(包括金融指數(shù)期貨)的費(fèi)用
set_order_cost(OrderCost(open_tax=0, close_tax=0.001, open_commission=0.0003, close_commission=0.0003, close_today_commission=0, min_commission=5), type='futures')
對股指期貨的IF楞抡、IH、IC三個(gè)品種有效的設(shè)置
set_order_cost(OrderCost(open_tax=0, close_tax=0.001, open_commission=0.0003, close_commission=0.0003, close_today_commission=0, min_commission=0), type='index_futures')
單獨(dú)設(shè)置黃金期貨(AU)品種的費(fèi)用
set_order_cost(OrderCost(open_tax=0, close_tax=0.001, open_commission=0.0003, close_commission=0.0003, close_today_commission=0, min_commission=5), type='futures', ref='AU')
單獨(dú)設(shè)置黃金期貨AU1709合約的費(fèi)用
set_order_cost(OrderCost(open_tax=0, close_tax=0.001, open_commission=0.0003, close_commission=0.0003, close_today_commission=0, min_commission=5), type='futures', ref='AU1709')
設(shè)置滑點(diǎn)函數(shù)set_slippage(object)
在回測或模擬時(shí)析藕,投資者下單后召廷,真實(shí)的成交價(jià)格與下單時(shí)預(yù)期的價(jià)格總會(huì)有一定偏差,因此在這里加入了滑點(diǎn)模式,可以更好的模擬真實(shí)的市場表現(xiàn)
需要注意的是竞慢,JoinQuant平臺(tái)目前只支持固定滑點(diǎn)設(shè)置
因此先紫,滑點(diǎn)只在回測與模擬時(shí)才有效,實(shí)盤時(shí)無效
當(dāng)使用固定滑點(diǎn)時(shí)筹煮,下單的多少并不會(huì)影響最后的成交價(jià)格遮精,只需要指定一個(gè)價(jià)差。當(dāng)下達(dá)一個(gè)買單指令時(shí)败潦,成交的價(jià)格等于當(dāng)時(shí)(執(zhí)行 order 函數(shù)所在的單位時(shí)間)的平均價(jià)格加上價(jià)差的一半本冲;當(dāng)下達(dá)一個(gè)賣出指令時(shí),賣出的價(jià)格等于當(dāng)時(shí)的平均價(jià)格減去價(jià)差的一半
價(jià)差可以設(shè)定為一個(gè)固定值或者按照百分比設(shè)定
固定值:是指這個(gè)價(jià)差可以是一個(gè)固定值(比如0.02元劫扒,交易時(shí)加減0.01元)檬洞,設(shè)定方式為:FixedSlippage(0.02)
百分比:是指這個(gè)價(jià)差可以是當(dāng)時(shí)價(jià)格的一個(gè)百分比(比如0.2%,交易時(shí)加減當(dāng)時(shí)價(jià)格的0.1%)沟饥,設(shè)定方式為:PriceRelatedSlippage(0.002)
示例代碼:
設(shè)定滑點(diǎn)為固定值
set_slippage(FixedSlippage(0.02))
設(shè)定滑點(diǎn)為百分比
set_slippage(PriceRelatedSlippage(0.02))
如果在初始化函數(shù)中沒有調(diào)用set_silppage()
函數(shù)添怔,系統(tǒng)默認(rèn)會(huì)設(shè)置滑點(diǎn)為PriceRelatedSlippage(0.00246)
,即按0.246%計(jì)算
設(shè)置動(dòng)態(tài)復(fù)權(quán)(真實(shí)價(jià)格)模式函數(shù)set_option('use_real_price', value)
該設(shè)定必須在initialize中調(diào)用
參數(shù)use_real_price
是個(gè)實(shí)參贤旷,value
的值可以選擇True
或False
广料,前者表示開啟動(dòng)態(tài)復(fù)權(quán),后者表示不開啟
示例代碼:
開啟動(dòng)態(tài)復(fù)權(quán)
set_option('use_real_price', True)
關(guān)閉動(dòng)態(tài)復(fù)權(quán)
set_option('use_real_price', False)
在實(shí)盤的時(shí)候幼驶,此設(shè)置會(huì)強(qiáng)行設(shè)置成True
設(shè)置成交比例set_option('order_volume_ratio', value)
參數(shù)order_volume_ratio
是個(gè)實(shí)參艾杏,value
是float類型,可根據(jù)實(shí)際行情限制每筆訂單的成交量县遣;對于每一筆訂單糜颠,如果是市價(jià)單,成交量不超過:每日成交量 * value萧求;如果是限價(jià)單其兴,限價(jià)單撮合時(shí)設(shè)定分價(jià)表中每一個(gè)價(jià)格的成交量的比率
示例:
設(shè)置成交量比例函數(shù)的實(shí)例代碼
set_option('order_volume_ratio', 0.25) # 即設(shè)定成交量不超過總成交量的四分之一
設(shè)置是否開啟盤口撮合模式函數(shù)set_option('match_with_order_book', value)
參數(shù)match_with_order_book
是個(gè)實(shí)參,value
為布爾值類型
設(shè)置是否開啟盤口撮合模式只對模擬盤生效夸政,默認(rèn)是開啟的元旬;如果關(guān)閉盤口撮合模式,使用Bar進(jìn)行撮合
示例:
盤口撮合模式
set_option('match_with_order_book', True)
盤口使用Bar進(jìn)行撮合
set_option('match_with_order_book', False)
設(shè)置要操作的股票池函數(shù)set_universe(security_list)
該函數(shù)只用于設(shè)定history函數(shù)的默認(rèn)security_list守问,除此之外并無其他用處
security_list
是股票列表
示例:
set_universe(['000001.XSHG', '600000.XSHG'])
就目前來說匀归,有些概念還是不清楚的,比如盤口撮合概念耗帕、history函數(shù)等穆端,不過這些都是后面需要學(xué)習(xí)的,知識(shí)嘛仿便,需要理解体啰、相關(guān)聯(lián)攒巍,并不能分割而談,本章節(jié)的主要目標(biāo)是記住這些個(gè)常用的策略設(shè)置函數(shù)荒勇,在寫策略的時(shí)候柒莉,靈活使用
注:本文章為個(gè)人學(xué)習(xí)筆記,參考了一些書籍與官方教程沽翔,不作任何商業(yè)用途兢孝!