Example #1
0
def simTradingEx3(cfg,
                  assets: list,
                  tsStart: int,
                  tsEnd: int,
                  lstBuy: list,
                  lstSell: list,
                  paramsBuy: trading2_pb2.BuyParams,
                  paramsSell: trading2_pb2.SellParams,
                  paramsInit: trading2_pb2.InitParams,
                  paramsAIP: trading2_pb2.AIPParams,
                  ignoreCache: bool = False) -> trading2_pb2.PNLAssetData:
    channel = grpc.insecure_channel(cfg['servaddr'])
    stub = tradingdb2_pb2_grpc.TradingDB2Stub(channel)

    lstAssets = []
    for a in assets:
        lstAssets.append(str2Asset(a))

    s0 = trading2_pb2.Strategy(
        name="normal",
        asset=str2Asset(assets[0]),
    )

    if lstBuy != None:
        s0.buy.extend(lstBuy)

    if lstSell != None:
        s0.sell.extend(lstSell)

    if paramsBuy != None:
        s0.paramsBuy.CopyFrom(paramsBuy)

    if paramsSell != None:
        s0.paramsSell.CopyFrom(paramsSell)

    if paramsInit != None:
        s0.paramsInit.CopyFrom(paramsInit)

    if paramsAIP != None:
        s0.paramsAIP.CopyFrom(paramsAIP)

    params = trading2_pb2.SimTradingParams(
        assets=lstAssets,
        startTs=tsStart,
        endTs=tsEnd,
        strategies=[s0],
    )

    response = stub.simTrading(
        tradingdb2_pb2.RequestSimTrading(
            basicRequest=trading2_pb2.BasicRequestData(token=cfg['token'], ),
            params=params,
            ignoreCache=ignoreCache,
        ))

    if len(response.pnl) > 0:
        pnl = response.pnl[0]
        return pnl.total

    return None
Example #2
0
def simTradingEx(cfg, assets: list, tsStart: int, tsEnd: int,
                 ccBuy: trading2_pb2.CtrlCondition,
                 ccSell: trading2_pb2.CtrlCondition,
                 paramsBuy: trading2_pb2.BuyParams,
                 paramsSell: trading2_pb2.SellParams,
                 paramsInit: trading2_pb2.InitParams,
                 paramsAIP: trading2_pb2.AIPParams) -> pd.DataFrame:
    channel = grpc.insecure_channel(cfg['servaddr'])
    stub = tradingdb2_pb2_grpc.TradingDB2Stub(channel)

    lstAssets = []
    for a in assets:
        lstAssets.append(str2Asset(a))

    s0 = trading2_pb2.Strategy(
        name="normal",
        asset=str2Asset(assets[0]),
    )

    if ccBuy != None:
        s0.buy.extend([ccBuy])

    if ccSell != None:
        s0.sell.extend([ccSell])

    if paramsBuy != None:
        s0.paramsBuy.CopyFrom(paramsBuy)

    if paramsSell != None:
        s0.paramsSell.CopyFrom(paramsSell)

    if paramsInit != None:
        s0.paramsInit.CopyFrom(paramsInit)

    if paramsAIP != None:
        s0.paramsAIP.CopyFrom(paramsAIP)

    params = trading2_pb2.SimTradingParams(
        assets=lstAssets,
        startTs=tsStart,
        endTs=tsEnd,
        strategies=[s0],
    )

    response = stub.simTrading(
        tradingdb2_pb2.RequestSimTrading(
            basicRequest=trading2_pb2.BasicRequestData(token=cfg['token'], ),
            params=params,
        ))

    fv0 = {'date': [], 'close': []}
    if len(response.pnl) > 0:
        pnl = response.pnl[0]
        pnlt = pnl.total
        for v in pnlt.values:
            fv0['date'].append(
                datetime.fromtimestamp(v.ts).strftime('%Y-%m-%d'))
            fv0['close'].append(v.perValue)

    return pd.DataFrame(fv0)
Example #3
0
def simTradingAIP(servAddr: str, token: str, assets: list, baselines: list,
                  tsStart: int, tsEnd: int, tt: str, val: int) -> list:
    channel = grpc.insecure_channel(servAddr)
    stub = tradingdb2_pb2_grpc.TradingDB2Stub(channel)

    lstAssets = []
    for a in assets:
        lstAssets.append(str2Asset(a))

    lstBaselines = []
    for b in baselines:
        lstBaselines.append(str2Asset(b))

    buy0 = trading2_pb2.CtrlCondition(
        indicator=tt,
        vals=[val],
    )

    paramsbuy = trading2_pb2.BuyParams(aipMoney=10000, )

    s0 = trading2_pb2.Strategy(
        name="aip",
        asset=str2Asset(assets[0]),
        buy=[buy0],
        paramsBuy=paramsbuy,
    )

    params = trading2_pb2.SimTradingParams(
        assets=lstAssets,
        baselines=lstBaselines,
        startTs=tsStart,
        endTs=tsEnd,
        strategies=[s0],
    )

    response = stub.simTrading(
        tradingdb2_pb2.RequestSimTrading(
            basicRequest=trading2_pb2.BasicRequestData(token=token, ),
            params=params,
        ))

    fv0 = {'date': [], 'close': []}
    if len(response.pnl) > 0:
        pnl = response.pnl[0]
        pnlt = pnl.total
        for v in pnlt.values:
            fv0['date'].append(
                datetime.fromtimestamp(v.ts).strftime('%Y-%m-%d'))
            fv0['close'].append(v.perValue)

    fv1 = {'date': [], 'close': []}
    if len(response.baseline) > 0:
        pnl = response.baseline[0]
        pnlt = pnl.total
        for v in pnlt.values:
            fv1['date'].append(
                datetime.fromtimestamp(v.ts).strftime('%Y-%m-%d'))
            fv1['close'].append(v.perValue)

    return [pd.DataFrame(fv0), pd.DataFrame(fv1)]
Example #4
0
def simTradings(cfg, lstParams: list, ignoreCache: bool = False) -> list:
    channel = grpc.insecure_channel(cfg['servaddr'])
    stub = tradingdb2_pb2_grpc.TradingDB2Stub(channel)

    lstRes = []
    responses = stub.simTrading2(
        genSimTradingParams(cfg, lstParams, ignoreCache))
    for response in responses:
        if len(response.pnl) > 0:
            pnl = response.pnl[0]
            lstRes.append({'title': pnl.title, 'pnl': pnl.total})

    return lstRes
Example #5
0
def getFundValues(servAddr: str, token: str, market: str, symbol: str,
                  tsStart: int, tsEnd: int) -> pd.DataFrame:
    channel = grpc.insecure_channel(servAddr)
    stub = tradingdb2_pb2_grpc.TradingDB2Stub(channel)

    response = stub.getCandles(
        tradingdb2_pb2.RequestGetCandles(
            # token=token,
            market=market,
            symbol=symbol,
            tsStart=tsStart,
            tsEnd=tsEnd,
            basicRequest=trading2_pb2.BasicRequestData(token=token, ),
        ))

    fv = {'date': [], 'close': []}
    for curres in response:
        for candle in curres.candles.candles:
            fv['date'].append(
                datetime.fromtimestamp(candle.ts).strftime('%Y-%m-%d'))
            fv['close'].append(candle.close / 10000.0)

    return pd.DataFrame(fv)
Example #6
0
def simTrading(servAddr: str, token: str, assets: list, baselines: list,
               tsStart: int, tsEnd: int) -> pd.DataFrame:
    channel = grpc.insecure_channel(servAddr)
    stub = tradingdb2_pb2_grpc.TradingDB2Stub(channel)

    lstAssets = []
    for a in assets:
        lstAssets.append(str2Asset(a))

    lstBaselines = []
    for b in baselines:
        lstBaselines.append(str2Asset(b))

    params = trading2_pb2.SimTradingParams(
        assets=lstAssets,
        baselines=lstBaselines,
        startTs=tsStart,
        endTs=tsEnd,
    )

    response = stub.simTrading(
        tradingdb2_pb2.RequestSimTrading(
            basicRequest=trading2_pb2.BasicRequestData(token=token, ),
            params=params,
        ))

    fv = {'date': [], 'close': []}
    if len(response.pnl) > 0:
        pnl = response.pnl[0]
        pnlt = pnl.total
        for v in pnlt.values:
            fv['date'].append(
                datetime.fromtimestamp(v.ts).strftime('%Y-%m-%d'))
            fv['close'].append(v.perValue)
            # fv['close'].append(v.perValue)

    return pd.DataFrame(fv)