MATLAB股票策略示例.docx_第1頁(yè)
MATLAB股票策略示例.docx_第2頁(yè)
MATLAB股票策略示例.docx_第3頁(yè)
MATLAB股票策略示例.docx_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

function = Initial(sdk) 整個(gè)回測(cè)開(kāi)始前操作,本策略無(wú)回測(cè)開(kāi)始前操作endfunction = PreparePerDay(sdk) 每日回測(cè)開(kāi)始前進(jìn)行的操作 date = sdk.getNowDate(); 讀入當(dāng)前日期 調(diào)用sdk函數(shù)getNowDate,獲取當(dāng)前日期 getNowDate() 參數(shù):無(wú) 返回值:double類(lèi)型。當(dāng)前策略回放至的時(shí)間,格式為YYYYMMDD time = sdk.getNowTime(); 讀入當(dāng)前時(shí)間 調(diào)用sdk函數(shù)getNowTime,獲取當(dāng)前時(shí)間 getNowTime() 參數(shù):無(wú) 返回值:double類(lèi)型。當(dāng)前策略回放至的時(shí)間,格式為hhmmss。當(dāng)做日線(xiàn)回測(cè)時(shí),返回值為None disp(num2str(date);endclear allclcconfig.initial = Test.Initial; 調(diào)用Initial函數(shù)config.preparePerDay = Test.PreparePerDay; 調(diào)用PreparePerDay函數(shù)config.strategy = TestStrategy_Stock.TestStrategy_Stock; 調(diào)用TestStrategy_Stock函數(shù)config.rootpath = D:cStrategy; 客戶(hù)端所在路徑config.username = 訪問(wèn)SDK所使用的用戶(hù)名,即云寬客的登錄名config.password = Langnadepcz62!; 訪問(wèn)SDK所使用的用戶(hù)名對(duì)應(yīng)的密碼config.strategyName = TestStrategy_Test; 自定義策略名config.strategyID = 123456; 自定義策略IDconfig.initCapitalStock = 10000000; 回測(cè)開(kāi)始時(shí)的初始資金config.startDate = 20160101; 回測(cè)開(kāi)始時(shí)的日期config.endDate = 20170101; 回測(cè)結(jié)束時(shí)的日期config.cycle = CloudQuant.QuoteCycle.D; 進(jìn)行回測(cè)前的時(shí)間粒度,int類(lèi)型,定義在枚舉QuoteCycle中config.executeMode = CloudQuant.ExecuteMode.BackTest; 測(cè)試類(lèi)型,回測(cè)config.feeRate = 0.001; 手續(xù)費(fèi)率config.feeLimit = 5; 最低手續(xù)費(fèi)config.dealByVolume = true; 撮合是否考慮實(shí)際交易量config.logfile = testMatlab; 在策略中調(diào)用log方法所生成的日志文件名config.assetType = CloudQuant.AssetType.Stock; 資產(chǎn)類(lèi)型config.allowForTodayFactors = LZ_GPA_SLCIND_STOP_FLAG;CloudQuant.Run(config); 啟動(dòng)SDK 交易策略 每20個(gè)交易日交易一次,按照市值排序,買(mǎi)入市值最小的前100支股票,賣(mài)出上個(gè)月持有的股票 策略應(yīng)用場(chǎng)景:偏好小市值股票且打算長(zhǎng)期持有、一個(gè)月交易一次的投資者,市場(chǎng)行情持續(xù)上漲時(shí)預(yù)計(jì)收益較高function = TestStrategy_Stock(sdk)persistent tradeDateFlag 聲明持久性變量if isempty(tradeDateFlag) tradeDateFlag=0;endtradeDateFlag = tradeDateFlag + 1;if mod(tradeDateFlag,20) = 1 設(shè)置執(zhí)行買(mǎi)入、賣(mài)出操作的條件,每20個(gè)交易日交易一次 returnendpositions = sdk.getPositions(CloudQuant.AssetType.Stock); 獲取當(dāng)前賬戶(hù)信息 調(diào)用sdk函數(shù)getPositions,查詢(xún)賬戶(hù)的所有持倉(cāng)信息 getPositions(tsInd, code) 參數(shù):1.tsInd:ClounQuant.AssetType類(lèi)型??蛇x項(xiàng),默認(rèn)為股票(1)。指定進(jìn)行此操作的市場(chǎng),定義在AssetTYpe中??蛇x值為:Stock=1,Future=2,OnsiteFund=4,OTCFund=8,Bond=16,ReverseRepo=32,Option=64 2.code:char類(lèi)型??蛇x項(xiàng),默認(rèn)為,查詢(xún)的標(biāo)的代碼。 返回值:PositionRecord array類(lèi)型。返回指定市場(chǎng)指定標(biāo)的的持倉(cāng),如果沒(méi)有指定標(biāo)的,返回指定市場(chǎng)的所有持倉(cāng)列表。PositionRecord對(duì)象包含今日和昨日的總持倉(cāng)量,可平量,市場(chǎng)均價(jià)。ticStart=tic; 保存當(dāng)前時(shí)間if isempty(positions)=false 持有倉(cāng)位 for i=1:size(positions,1) sellOrders(i).code=positions(i).code; 待賣(mài)出股票代碼 quote=sdk.getQuote(positions(i).code); 調(diào)用sdk函數(shù)getQuote,獲取股票的盤(pán)口信息。未上市、退市、錯(cuò)誤的股票代碼會(huì)返回None,使用前需要判斷,否則會(huì)導(dǎo)致程序崩潰 getQuote(code, tsInd) 參數(shù):1.code:char類(lèi)型,標(biāo)的代碼;2.tsInd:ClounQuant.AssetType類(lèi)型。可選項(xiàng),默認(rèn)為股票(1)。指定進(jìn)行此操作的市場(chǎng),定義在AssetType中??蛇x值為:Stock=1,Future=2,OnsiteFund=4,OTCFund=8,Bond=16,ReverseRepo=32,Option=64 返回值:返回值類(lèi)型由回測(cè)時(shí)間粒度決定,有StockDKLine,StockMKLine,StockTick等。返回?cái)?shù)據(jù)包含當(dāng)前價(jià)格,委托價(jià)格,委托交易量等。 sellOrders(i).price=quote.open; 委托價(jià)格 sellOrders(i).volume=positions(i).optPosition; 委托執(zhí)行賣(mài)出操作交易量 sellOrders(i).type=-1; 委托交易類(lèi)型,此處為賣(mài)出操作 end sellOrdered = sdk.makeOrders(sellOrders,CloudQuant.AssetType.Stock); 執(zhí)行賣(mài)出操作 調(diào)用sdk函數(shù)makeOrders,進(jìn)行批量下單操作 makeOrders(orders, tsInd) 參數(shù):1.orders:struct array類(lèi)型的訂單信息,與MakeOrder參數(shù)相同的順序存儲(chǔ)(具體為code,price,volume,ordrtype,tsInd) 2.tsInd:ClounQuant.AssetType類(lèi)型。可選項(xiàng),默認(rèn)為股票(1)。指定進(jìn)行此操作的市場(chǎng),定義在AssetType中??蛇x值為:Stock=1,Future=2,OnsiteFund=4,OTCFund=8,Bond=16,ReverseRepo=32,Option=64endtocEnd=toc(ticStart); 記錄程序完成時(shí)間disp(getQuote+makeOrders:,num2str(tocEnd)ticStart=tic; 保存當(dāng)前時(shí)間tCap = sdk.getFactorData(LZ_GPA_VAL_A_TCAP); 讀入當(dāng)日總市值數(shù)據(jù) 調(diào)用sdk函數(shù)getFactorData,獲取因子矩陣。 可能返回None getFactorData(factorName) 參數(shù):factorName:char類(lèi)型,因子名稱(chēng),具體因子名稱(chēng)可查閱因子字典,或從客戶(hù)端因子文件列表獲得。 返回值:matrix類(lèi)型。返回到上一交易日為止的因子數(shù)據(jù)矩陣。如果因子名在回測(cè)參數(shù)allowForTodayFactors中指定了,則返回到當(dāng)前交易日為止的因子數(shù)據(jù)矩陣tocEnd=toc(ticStart); 記錄程序完成時(shí)間disp(getFactorData(tCap):,num2str(tocEnd)ticStart=tic; 保存當(dāng)前時(shí)間stopData = sdk.getFactorData(LZ_GPA_SLCIND_STOP_FLAG); 讀入停牌標(biāo)志數(shù)據(jù)tocEnd=toc(ticStart); 記錄程序完成時(shí)間disp(getFactorData(stop):,num2str(tocEnd)for i=1:size(stopData,2) stop(1,i)=str2double(stopDataend,i);endtCap(end,or(isnan(tCap(end,:),isnan(stop)=false)=10e+10; 篩選股票,將取不到市值或停牌的股票的市值設(shè)置的很大,通過(guò)接下來(lái)的步驟去除,tCapSite=sort(tCap(end,:);stockList = sdk.getStockList(); 調(diào)用sdk函數(shù)getStockList函數(shù),獲取A股股票列表 getStockList() 參數(shù):無(wú) 返回值:char cell類(lèi)型。返回A股股票代碼列表,所有股票相關(guān)因子矩陣的列都是按照這個(gè)股票列表排列的。stockToBuyList = stockList(tCapSite(1:100); 取出市值最小的100個(gè)股票作為買(mǎi)入股票池ticStart=tic;quotes = sdk.getQuotes(stockToBuyList); 調(diào)用sdk函數(shù)getQuotes,獲取股票列表的盤(pán)口信息。 未上市、退市、錯(cuò)誤的股票代碼會(huì)返回空matrix,使用前需要判斷,否則會(huì)導(dǎo)致程序崩潰 getQuotes(codes, tsInd) 參數(shù):1.codes:char cell類(lèi)型,查詢(xún)的標(biāo)的代碼的列表; 2.tsInd:ClounQuant.AssetType類(lèi)型??蛇x項(xiàng),默認(rèn)為股票(1)。指定進(jìn)行此操作的市場(chǎng),定義在AssetType中。可選值為:Stock=1,Future=2,OnsiteFund=4,OTCFund=8,Bond=16,ReverseRepo=32,Option=64 返回值:container.Map類(lèi)型。key為標(biāo)的代碼,value為StockTick類(lèi)型的行情信息。包含當(dāng)前價(jià)格,委托價(jià)格,委托交易量等。tocEnd=toc(ticStart);disp(getQuotes:,num2str(tocEnd)availableCash = sdk.getAccountInfo().availableCash; 獲取當(dāng)前賬戶(hù)可用現(xiàn)金 調(diào)用sdk函數(shù)getAccountInfo,查詢(xún)資產(chǎn)明細(xì),可能返回None getAccountInfo(tsInd=AssetType.Stock) 參數(shù):tsInd:ClounQuant.AssetType類(lèi)型??蛇x項(xiàng),默認(rèn)為股票(1)。指定進(jìn)行此操作的市場(chǎng),定義在AssetType中。可選值為:Stock=1,Future=2,OnsiteFund=4,OTCFund=8,Bond=16,ReverseRepo=32,Option=64 返回值:AccountInfo類(lèi)型。 包含帳戶(hù)的前日權(quán)益(previousAsset)、前日市值(previousMarketValue)、前日資金(previousBalance)、當(dāng)前資金(balance)、凍結(jié)資金(frozenValue)、可用資金(availableCash)、保證金(margin)budget = 0.995 * availableCash / length(stockToBuyList); 使用現(xiàn)有資金的99.5入市,每支待買(mǎi)股票平均分配資金for i=1:length(stockToBuyList) buyOrders(i).code=stockToBuyListi; 帶買(mǎi)入股票代碼 quote=quotes1,2(i); buyOrders(i).price=quote1.open; 按開(kāi)盤(pán)價(jià)買(mǎi)入 buyOrders(i).volume=floor(budge

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論