def Test_SUMBARS(): code = [ 'VAR3:SUMBARS(C,O)', 'VAR2:C;', ] option = SymbolOption() option.Symbol = '000001.sz' option.HQDataType = HQ_DATA_TYPE.MINUTE_ID result = JSComplier.Execute(code[0] + code[1], option) return True if result else False
def Test_INDEX(): code = [ 'VAR3:INDEXA;', 'VAR2:INDEXC;', 'VAR2:INDEXO;', ] option = SymbolOption() option.Period = 5 result = JSComplier.Execute(code[0] + code[1] + code[2], option) return True if result else False
def Test_ScriptIndexConsole(): # 创建脚本, 及参数 scpritInfo = ScriptIndexItem( name='测试脚本', id=888888, script='MA1:MA(CLOSE,M1);\n' # 指标脚本代码 'MA2:MA(CLOSE,M2);\n' 'MA3:MA(CLOSE,M3);', args=[ ArgumentItem(name='M1', value=5), ArgumentItem(name='M2', value=10), ArgumentItem(name='M3', value=20) ] # 参数 ) indexConsole = ScriptIndexConsole(scpritInfo) option = SymbolOption( symbol='000001.sz', right=1, # 复权 0 不复权 1 前复权 2 后复权 period=0 # 周期 0=日线 1=周线 2=月线 3=年线 4=1分钟 5=5分钟 6=15分钟 7=30分钟 8=60分钟 ) result = indexConsole.ExecuteScript(option) if not result.Error: print('run successfully.')
def Test_COUNT(): code = [ 'VAR3:COUNT(C,5);', 'VAR2:COUNT(O,10);', 'VAR2:COUNT(H,20);', ] option = SymbolOption() result = JSComplier.Execute(code[0] + code[1] + code[2], option) return True if result else False
def RunTestCase(): SymbolDataCache.LoadCallback=CacheData.LoadCacheData # 设置第3放数据加载回调 name='测试脚本' # 指标脚本代码 script=TEST_INDEX # 参数 args=[ ArgumentItem(name='M1', value=5), ArgumentItem(name='M2', value=10), ArgumentItem(name='M3', value=20)] scpritInfo=ScriptIndexItem(name=name, id=888888, script=script, args=args) indexConsole = ScriptIndexConsole(scpritInfo) arySymbol=['600000.sh','000001.sz'] # 要执行策略的股票池 aryResult=[] # 结果数据 runTime=time.time() for item in arySymbol : startTime = time.time() option = SymbolOption( symbol=item, right=1, # 复权 0 不复权 1 前复权 2 后复权 period=PERIOD_ID.DAY, # 周期 request=RequestOption(maxDataCount=500,maxMinuteDayCount=3) ) # 替换成自己的数据类 option.ProcCreateSymbolData=SymbolDataCache.Create result=indexConsole.ExecuteScript(option,False) # 使用缓存的AST执行 endTime = time.time() print("[RunTestCase] 股票:{0} 耗时:{1}".format(item, endTime - startTime)) aryResult.append(result) print("[RunTestCase] 股票个数:{0} 耗时:{1}".format(len(arySymbol), time.time() - runTime)) return aryResult
def Test_ScriptIndexConsole(): # 创建脚本, 及参数 scpritInfo = ScriptIndexItem( name='我的MA指标', id=888888, script='MA1:MA(CLOSE,M1);\n' # 指标脚本代码 'MA2:MA(CLOSE,M2);\n' 'MA3:MA(CLOSE,M3);', args=[ ArgumentItem(name='M1', value=5), ArgumentItem(name='M2', value=10), ArgumentItem(name='M3', value=20) ] # 参数 ) indexConsole = ScriptIndexConsole(scpritInfo) option = SymbolOption( symbol='000001.sz', right=1, # 复权 0 不复权 1 前复权 2 后复权 period=0, # 周期 0=日线 1=周线 2=月线 3=年线 4=1分钟 5=5分钟 6=15分钟 7=30分钟 8=60分钟 request=RequestOption(maxDataCount=500, maxMinuteDayCount=3)) result = indexConsole.ExecuteScript(option) if result.Error: return print('run successfully.') JSComplierPandasHelper.ToDateTimeSeries(result) # 转化为pandas Series 数据格式 JSComplierPandasHelper.ToDataFrame(result) # 转化为pandas DataFrame 数据格式 jsonData = result.ToJson() varName = 'jsonData' # 数据变量名字 HQChartOption = """g_KLineOption={ Symbol:'%(symbol)s', //股票代码 Right:%(right)d, //复权 Period:%(period)d, //周期 Windows: [ { Modify:false,Change:false, Local: { Data:%(varName)s, //py执行以后的json数据 Type:'LocalJsonDataIndex' , Name:'%(name)s', //指标名字 Args:[ //指标参数 { Name: '%(arg1)s', Value: %(argvalue1)d }, { Name: '%(arg2)s', Value: %(argvalue2)d }, { Name: '%(arg3)s', Value: %(argvalue3)d }] } }, //{Index:"VOL", Modify:false,Change:false}, ] } """ % { "symbol": option.Symbol, 'right': option.Right, 'period': option.Period, 'varName': varName, 'name': scpritInfo.Name, 'arg1': scpritInfo.Arguments[0].Name, 'argvalue1': scpritInfo.Arguments[0].Value, 'arg2': scpritInfo.Arguments[1].Name, 'argvalue2': scpritInfo.Arguments[1].Value, 'arg3': scpritInfo.Arguments[2].Name, 'argvalue3': scpritInfo.Arguments[2].Value } localJsonData = varName + '=' + jsonData + '\n' filePath = 'data.html' # 生成图形化页面 with codecs.open(filePath, 'w', "utf-8") as file: file.write(HTML_PART1) file.write(localJsonData) file.write(HQChartOption) file.write(HTML_PART_END) file.close() webbrowser.open(filePath, new=1)
def __init__(self, code, option=SymbolOption()): self.Code = code self.Option = option