Exemple #1
0
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
Exemple #2
0
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.')
Exemple #4
0
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
Exemple #6
0
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)
Exemple #7
0
 def __init__(self, code, option=SymbolOption()):
     self.Code = code
     self.Option = option