In addition to Weibo, there is also WeChat
Please pay attention
WeChat public account
Shulou
2025-02-22 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Internet Technology >
Share
Shulou(Shulou.com)06/01 Report--
Today, the editor will take you to understand what the excel output of VNPY batch strategy backtest and statistical results is like. The knowledge points in this article are introduced in great detail. Friends who think it is helpful can browse the content of the article together with the editor, hoping to help more friends who want to solve this problem to find the answer to the problem. Let's follow the editor to learn more about "VNPY batch strategy test and excel output of statistical results".
During this period of time doing VNPY, it is found that it is mainly back-testing and strategy optimization, and then there are batch testing and parameter set effects to export excel analysis requirements. There is also a strategy to verify the effect of different varieties.
Then think about it, I wrote a BatchBackTest class, which is actually a very simple answer, which is to enter the variety queue and the policy queue, and then loop out the result and output it to the specified path excel. In addition, the policy is a tuple, which is a combination of a policy and the corresponding parameters.
The code is as follows. The way to use it is to put a py in Xinjiang under the vnpy/example/CtaBacktesting path and put it in the following code.
# encoding: UTF-8
From vnpy.trader.app.ctaStrategy.ctaBacktesting import BacktestingEngine, MINUTE_DB_NAME
Import pandas as pd
From vnpy.trader.app.ctaStrategy.strategy.strategyAtrRsi import AtrRsiStrategy
From vnpy.trader.app.ctaStrategy.strategy.strategyBollChannel import BollChannelStrategy
From vnpy.trader.app.ctaStrategy.strategy.strategyDoubleMa import DoubleMaStrategy
From vnpy.trader.app.ctaStrategy.strategy.strategyDualThrust import DualThrustStrategy
From vnpy.trader.app.ctaStrategy.strategy.strategyKingKeltner import KkStrategy
From vnpy.trader.app.ctaStrategy.strategy.strategyMultiSignal import MultiSignalStrategy
From vnpy.trader.app.ctaStrategy.strategy.strategyMultiTimeframe import MultiTimeframeStrategy
Class BatchBackTest (object):
Def _ init__ (self):
"
Def calculateBacktesting (self,symbollist,strategylist):
# enter the variety queue and policy queue, return the result resultlist, and add the variety name, policy name and policy parameters in order to output for easy retrieval
Resultlist = []
For symbol in symbollist:
For strategy in strategylist:
Result = self.runBacktesting (symbol,strategy)
# add variety name, policy name and policy parameters
Result ["Symbolname"] = str (symbol ["vtSymbol"])
Result ["strategyname"] = str (strategy [0])
Result ["strategysetting"] = str (strategy [1])
Resultlist.append (result)
Return resultlist
Def runBacktesting (self, symbol, strategy):
# write the test variety and parameters, and return the test data set including the test results
# create a policy object in the engine
# create a backtest engine
Engine = BacktestingEngine ()
# set the backtest mode of the engine to K line
Engine.setBacktestingMode (engine.BAR_MODE)
# set the data start date for back testing
Engine.setStartDate (symbol ["StartDate"])
Engine.setSlippage (symbol ["Slippage"]) # 1 Hop
Engine.setRate (symbol ["Rate"]) # Commission size
Engine.setSize (symbol ["Size"]) # contract size
Engine.setPriceTick (symbol ["Slippage"]) # minimum price change
Engine.setCapital (symbol ["Capital"])
# set the history database used
Engine.setDatabase (MINUTE_DB_NAME, symbol ["vtSymbol"])
# set policy. The first one in the policy tuple is the policy, and the second parameter
Engine.initStrategy (strategy [0], strategy [1])
Engine.runBacktesting ()
Df = engine.calculateDailyResult ()
Result = []
Dfp,result = engine.calculateDailyStatistics (df)
Engine.output (u' output statistics')
# engine.showDailyResult (dfp, result)
Return result
Def toExcel (self, resultlist, path = "C:\ data\ datframe.xlsx"):
# output excel according to input statistics queue and path. No new mode is provided here. If you want, you can change it.
# dft.to_csv (path,index=False,header=True, mode ='a')
SummayKey = resultlist [0] .keys ()
# summayValue = result.values ()
Dft = pd.DataFrame (columns=summayKey)
For result in resultlist:
New = pd.DataFrame (result, index= ["0"])
Dft = dft.append (new,ignore_index=True)
Dft.to_excel (path,index=False,header=True)
Print "output statistical results of back test to" + path "
If _ name__ = = "_ _ main__":
# create a variety queue. Here you can import it with json, and write it directly for ease of use.
Symbollist = [{
"vtSymbol": 'm1809'
"StartDate": "20180101"
"Slippage": 1
"Size": 10
"Rate": 2 / 10000
"Capital": 10000
}
{
"vtSymbol": 'rb0000'
"StartDate": "20180101"
"Slippage": 1
"Size": 10
"Rate": 2 / 10000
"Capital": 10000
}]
# the policy is defined here, and the policy parameter is empty first; the policy plus parameter is a tuple
Setting = {}
Strategylist = [(AtrRsiStrategy, setting)
(BollChannelStrategy, setting)
(DoubleMaStrategy, setting)
(DualThrustStrategy, setting)
(KkStrategy, setting)
(MultiSignalStrategy, setting)
(MultiTimeframeStrategy, setting)]
# here is the case of the same policy and different parameters, of course, there can be multiple policies and multiple parameter combinations
Strategylist2 = []
# Policy list
Settinglist = [
{'kdlimit': 40,' barmins': 9, 'cciWindow': 22}
{'kdlimit': 30,' barmins': 13, 'cciWindow': 20}]
# merge a tuple
If settinglist! = []:
For para1 in settinglist:
Strategylist2.append ((BollChannelStrategy, para1))
NT = BatchBackTest ()
Resultlist = NT.calculateBacktesting (symbollist,Strategylist)
# define the path
Path = "C:\ Project\ BackTestResult.xlsx"
NT.toExcel (resultlist,path)
Thank you for your reading, the above is the whole content of "VNPY batch strategy back test and excel output of statistical results", learn friends to hurry up to operate it. I believe that the editor will certainly bring you better quality articles. Thank you for your support to the website!
Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.
Views: 0
*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.
Continue with the installation of the previous hadoop.First, install zookooper1. Decompress zookoope
"Every 5-10 years, there's a rare product, a really special, very unusual product that's the most un
© 2024 shulou.com SLNews company. All rights reserved.