Exemplo n.º 1
0
            stockNum = 0.0
            state = False
            execList.append((date, "sell", cap))

    if state:
        cap = stockData.iloc[-1].adjclose * stockNum
    roi = (cap - oriCap) / oriCap
    result = {str(executeDict.keys()[0]): (roi, execList)}
    return result


if __name__ == "__main__":
    # 由于这个QueueManager只从网络上获取Queue,所以注册时只提供名字:
    QueueManager.register('get_task_queue')
    QueueManager.register('get_result_queue')
    stockData = utils.getStockDataTrain('2018', False)
    stockData = stockData.set_index("datetime")
    stockData.index = stockData.index.map(unicode)
    # 连接到服务器,也就是运行taskmanager.py的机器:
    server_addr = '127.0.0.1'
    print('Connect to server %s...' % server_addr)
    # 端口和验证码注意保持与taskmanager.py设置的完全一致:
    m = QueueManager(address=(server_addr, 5000), authkey='abc')
    # 从网络连接:
    m.connect()
    # 获取Queue的对象:
    task = m.get_task_queue()
    result = m.get_result_queue()

    while (1):
        try:
Exemplo n.º 2
0
        os = kwargs.get('os')
        for i in n:
            aveU = pd.Series(stockData['adjclose'].rolling(i).apply(
                self.calcUp, raw=True).values,
                             index=stockData['datetime'])
            # print aveU
            aveD = pd.Series(stockData['adjclose'].rolling(i).apply(
                self.calcDown, raw=True).values,
                             index=stockData['datetime'])
            # print aveU, aveD
            rsi = 100 - 100 / (1 + (aveU.values / aveD.values))
            stockData['rsi'] = rsi
            # print i

            for b in ob:
                for s in os:
                    scoreRes[str(i) + '_' + str(b) + '_' +
                             str(s)] = stockData.apply(
                                 lambda row: self.score(row, b, s), axis=1)
                    cnt = cnt + 1
            # print stockData
        scoreRes['datetime'] = stockData['datetime']
        scoreRes = scoreRes.set_index('datetime')
        return scoreRes, cnt


if __name__ == "__main__":
    stockDataTrain = utils.getStockDataTrain("0005", True)
    rsi = RelativeStrengthIndex()
    params = rsi.defaultParam()
    rsi.run(stockDataTrain, **params)
Exemplo n.º 3
0
        })
        i = i + 1
    # log.debug( "runtimes: " + str(i))
    #if allRate = True, then there is only 1 result use to get the SharpeRatio.
    # calculate buy-and-hold roi
    buyAndHold = (stockData.iloc[-1].adjclose -
                  stockData.iloc[0].adjclose) / stockData.iloc[0].adjclose
    bestRes = (bestParam, bestRoi, buyAndHold)
    # bestRes = (bestParam, bestRoi)
    return strategyResList, bestRes


if __name__ == "__main__":
    module = importlib.import_module("BollingerBandsStrategy")
    class_ = getattr(module, "BollingerBandsStrategy")
    strategy = class_()

    params = strategy.defaultParam()

    print(params)
    # params['stockData'] = stockData
    isTrain = True
    stockDataTrain = utils.getStockDataTrain("0005", isTrain)
    bStratRes, bBstRes = runbackTest(stockDataTrain, strategy, **params)
    print(bStratRes, bBstRes)
    bParam = strategy.parseparams(bBstRes[0])
    print(bParam)
    stockDataTest = utils.getStockDataTrain("0005", not isTrain)
    print(runbackTest(stockDataTest, strategy, **bParam))
    # runbackTest('0005', "BollingerBands", False, **params)