Пример #1
0
    def bindPico(UserID, group, IsTrader, accountType):
        # 连接account测试服务器
        consulAccountHost = FMCommon.consul_operater(
            host=userData['consulHost'],
            port=userData['consulPort'],
            server='followme.srv.account',
            key='ServiceAddress')
        consulAccountPort = FMCommon.consul_operater(
            host=userData['consulHost'],
            port=userData['consulPort'],
            server='followme.srv.account',
            key='ServicePort')
        accountChannel = grpc.insecure_channel(consulAccountHost + ':' +
                                               str(consulAccountPort))
        accountStub = account_pb2_grpc.AccountSrvStub(accountChannel)

        # 连接dealer测试服务器  http://10.1.0.4:8500
        consulDealerHost = FMCommon.consul_operater(
            host=userData['consulHost'],
            port=userData['consulPort'],
            server='followme.srv.copytrade.dealer.pico',
            key='ServiceAddress')
        consulDealerPort = FMCommon.consul_operater(
            host=userData['consulHost'],
            port=userData['consulPort'],
            server='followme.srv.copytrade.dealer.pico',
            key='ServicePort')
        dealerChannel = grpc.insecure_channel(consulDealerHost + ':' +
                                              str(consulDealerPort))
        dealerStub = mt4dealer_pb2_grpc.MT4DealerSrvStub(dealerChannel)

        bindPico = dealerStub.CreateAccount(
            mt4dealer_pb2.Account(Name='MAM_ACCOUNT_' + str(UserID),
                                  Password='******',
                                  BrokerID=1,
                                  Group=group,
                                  City='sz'))
        login = bindPico.Login

        # 将注册的用户提取到t_useraccount表
        accountStub.SaveUserAccount(
            account_pb2.SaveUserAccountRequest(
                User=account_pb2.User(Id=UserID),
                BrokerID=1,
                MT4Account=str(login),
                IsTrader=IsTrader,
                AccountCreateType=0,
                IsBind=2,
                AccountType=accountType))

        # pico入金
        dealerStub.DepositWithdraw(
            mt4dealer_pb2.DepositWithdrawMessage(
                Login=login, Price=10000000, Comment='Deposit With script.'))
        return bindPico
Пример #2
0
    def test_test1(self):
        # self.userID = 169204
        # self.isTrader = False      #交易员:1, 跟随者:0
        # self.accountType = 3

        for userInfo in load_dict["items"]:
            print("isTrader:", userInfo["isTrader"])
            if userInfo["accountType"] == 3:
                self.group = 'a_balance'
            elif userInfo["accountType"] == 1:
                self.group = 'ct_pico'

            bindPico = self.dealerStub.CreateAccount(
                mt4dealer_pb2.Account(Name='MAM_ACCOUNT_' +
                                      str(userInfo["UserID"]),
                                      Password='******',
                                      BrokerID=1,
                                      Group=self.group,
                                      City='sz'))
            print(bindPico)
            self.login = bindPico.Login
            self.assertEqual(bindPico.Name,
                             "MAM_ACCOUNT_" + str(userInfo["UserID"]))
            # 断言绑定的经济商为:1. 晋峰
            self.assertEqual(bindPico.BrokerID, 1)

            # 将注册的用户提取到t_useraccount表
            # accounttype:Demo = 0,Real = 1,Sam  = 2,Mam  = 3
            saveUserAccount = self.accountStub.SaveUserAccount(
                account_pb2.SaveUserAccountRequest(
                    User=account_pb2.User(Id=userInfo["UserID"]),
                    BrokerID=1,
                    MT4Account=str(self.login),
                    IsTrader=userInfo["isTrader"],
                    AccountCreateType=0,
                    IsBind=2,
                    AccountType=userInfo["accountType"]))
            self.assertEqual(saveUserAccount.Success, 0)

            # pico入金
            self.dealerStub.DepositWithdraw(
                mt4dealer_pb2.DepositWithdrawMessage(
                    Login=self.login,
                    Price=userInfo["price"],
                    Comment='Deposit With script.'))
Пример #3
0
    def test_RegisterByEmail(self):
        #发布微博
        self.userId = '169202'
        self.body = '开心就好hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh'
        addBlog = self.socailStub.BlogAdd(social3Message_pb2.BlogAddInput(UserId = int(self.userId),Body = self.body))

        # self.userId = '169202'
        # self.accountEmail = '*****@*****.**'
        # self.userPassword = '******'
        # self.nickName = 'fsa005555'
        print(self.nickName)
        # 注册一个测试账号
        register = self.accountStub.RegisterByEmail(account_pb2.RegisterUserRequest(User = account_pb2.User(AccountEmail = self.accountEmail ,UserPassword = self.userPassword)))
        # print(register)
        # #断言帐号状态为5,未激活
        # #AccountStatus: 0 新申请, 1 审核中, 2 正常, 3 锁定(此时交易员才可提取服务费), 4 注销, 5 未激活,6 注销
        self.assertEqual(register.AccountStatus, 5)
        self.assertEqual(register.AccountEmail, self.accountEmail)
        self.userID = register.Id

        #新注册的账号需要先激活才能登录
        #发送验证码邮件到邮箱
        sendActivationEmail = self.accountStub.SendActivationEmail(account_pb2.SendActivationEmailRequest(UserId = self.userID,
            ActivationCode = 'thisisactivationcode',Email = '*****@*****.**' ,Subject = '注册followme验证码' ))
        #断言验证码邮件发送成功,返回0
        self.assertEqual(sendActivationEmail.Success, 0)
        #获取验证码
        getActivationByObj = self.accountStub.GetActivationByObj(account_pb2.ActivationRequest(ObjectId = self.userID))
        vercode = getActivationByObj.VerCode
        activationCode = getActivationByObj.ActivationCode
        #激活账号。
        #AccountStatus: 0 新申请, 1 审核中, 2 正常, 3 锁定(此时交易员才可提取服务费), 4 注销, 5 未激活,6 注销
        validateEmailLink = self.accountStub.ValidateEmailLink(account_pb2.ValidateEmailLinkRequest(UserId = self.userID, VerCode = vercode,
            ActivationCode = activationCode,Token = str(uuid.uuid1())))
        self.assertEqual(validateEmailLink.Success, 0)

        #设置用户昵称
        setNickName = self.accountStub.SetNickName(account_pb2.User(Id = self.userID,NickName = self.nickName))
        #检查设置成功后,返回值为:0
        self.assertEqual(setNickName.Success, 0)

        #绑定pico帐号
        bindPico = self.dealerStub.CreateAccount(mt4dealer_pb2.Account(Name = 'DEMO_ACCOUNT_' + str(self.userID),
            Password = '******', BrokerID = 1, Group = 'ct_pico', City = 'sz'))
        print(bindPico)
        self.login = bindPico.Login
        self.assertEqual(bindPico.Name, "DEMO_ACCOUNT_" + str(self.userID))
        #断言绑定的经济商为:1. 晋峰
        self.assertEqual(bindPico.BrokerID, 1)

        #将注册的用户提取到t_useraccount表
        #accounttype:Demo = 0,Real = 1,Sam  = 2,Mam  = 3
        saveUserAccount = self.accountStub.SaveUserAccount(account_pb2.SaveUserAccountRequest(User = account_pb2.User(Id = self.userID),
            BrokerID = 1, MT4Account = str(self.login), IsTrader = 0, AccountCreateType = 0, IsBind = 2,AccountType = 1))
        self.assertEqual(saveUserAccount.Success, 0)

        #pico入金
        self.dealerStub.DepositWithdraw(mt4dealer_pb2.DepositWithdrawMessage(Login = self.login,
            Price = 9999999, Comment = 'Deposit With script.'))

        #登录
        self.signinToken = str(uuid.uuid1())
        signin = self.accountStub.Login(account_pb2.LoginRequest(User = account_pb2.User(AccountEmail = self.accountEmail,
            UserPassword = self.userPassword) ,Token = self.signinToken))
        self.assertEqual(signin.Id, self.userID)
        print("signin:>>>>>>>", signin)
Пример #4
0
    def test_Accountfunds(self):
        '''验证没有持仓单时,账户资金信息:总收益,余额,净值,持仓总手数,浮动收益,可以用保证金,已用保证金'''
        userData['headers'] = dict(
            userData['headers'],
            **{'Authorization': userData['Bearer'] + self.token})

        # 获取交易员的accountindex
        self.tradeAccountIndex = Account.getSpecialAccountIndex(
            headers=userData['headers'], brokerID=5)

        # 切换到MT4账号
        switchAccountRes = Account.switchAccount(
            userData['hostName'] + userDataAccount['switchAccount'],
            userData['headers'], self.tradeAccountIndex[0])
        self.assertEqual(switchAccountRes.status_code,
                         userData['status_code_200'])

        # 获取交易token
        getTokenRes = Trade.getToken(
            userData['hostName'] + userDataAccount["getToken_url"],
            userData['headers'])
        FMCommon.printLog('getTokenRes: ' + getTokenRes.text)
        self.assertEqual(getTokenRes.status_code, userData['status_code_200'])
        tradeToken = str(json.loads(
            getTokenRes.content)["data"]["Token"]).replace("=", "@")
        MT4Account = json.loads(getTokenRes.content)["data"]["MT4Account"]

        # 获取当前用户的交易订单
        params = {userData['orderStatus']: userData['orderStatus_open']}
        getOrders = Order.getOrders(userData['hostName'] +
                                    order['getOrders_url'],
                                    userData['headers'],
                                    params=params)
        self.assertEqual(getOrders.status_code, userData['status_code_200'])
        ordersIDList = Order.getOrdersID(getOrders)

        # 平掉当前用户所有订单
        closeParam = {
            userDataWebSocket['orderParam_code']:
            userDataWebSocket['ws_code_219'],
            userDataWebSocket['orderParam_tickets']: ordersIDList
        }
        closePositionRes = TradeOnline.OnlineTradeEvent.tradeEvent(
            self, userDataWebSocket['ws_host'], userDataWebSocket['ws_port'],
            {'token': tradeToken}, closeParam)
        self.assertEqual(closePositionRes["code"],
                         userDataWebSocket['ws_code_0'])
        self.assertEqual(closePositionRes["rcmd"],
                         userDataWebSocket['ws_code_219'])
        self.assertEqual(closePositionRes['success_tickets'], ordersIDList)

        time.sleep(3)

        # 获取当前用户的交易订单
        params = {userData['orderStatus']: userData['orderStatus_open']}
        getOrders = Order.getOrders(userData['hostName'] +
                                    order['getOrders_url'],
                                    userData['headers'],
                                    params=params)
        self.assertEqual(getOrders.status_code, userData['status_code_200'])
        self.assertEqual(
            json.loads(getOrders.text)['data']['total'], 0, "持仓总手数不对")

        #获取当前用户的账户资产getProperty
        params = {"accountIndex": str(self.tradeAccountIndex[0])}
        getPropertyRES = Trade.getProperty(userData['hostName'] +
                                           userDataTrade["getProperty_url"],
                                           userData['headers'],
                                           params=params)
        FMCommon.printLog('getPropertyRES:', getPropertyRES.text)
        self.assertEqual(getPropertyRES.status_code,
                         userData['status_code_200'])
        #总收益
        TotalProfit = json.loads(getPropertyRES.text)['data']['TotalProfit']
        #余额
        Balance = round(json.loads(getPropertyRES.text)['data']['Balance'], 2)
        print("Balance:", Balance)
        #净值
        NetValue = round(
            json.loads(getPropertyRES.text)['data']['NetValue'], 2)
        print("NetValue:", NetValue)
        #浮动收益
        FloatProfit = round(
            json.loads(getPropertyRES.text)['data']['FloatProfit'], 2)
        #入金
        InMoney = round(json.loads(getPropertyRES.text)['data']['InMoney'], 2)
        #出金
        OutMoney = round(
            json.loads(getPropertyRES.text)['data']['OutMoney'], 2)
        #杠杆
        Leverage = round(
            json.loads(getPropertyRES.text)['data']['Leverage'], 2)
        #已用保证金
        MARGIN = round(json.loads(getPropertyRES.text)['data']['MARGIN'], 2)
        #可用保证金
        MARGIN_FREE = round(
            json.loads(getPropertyRES.text)['data']['MARGIN_FREE'], 2)
        print("MARGIN_FREE:", MARGIN_FREE)
        #信用
        Credit = round(json.loads(getPropertyRES.text)['data']['Credit'], 2)

        #获取grpc账户信息rpc GetAccount(Account) returns (Account) {}
        GetAccount = self.dealerStub.GetAccount(
            mt4dealer_pb2.Account(Login=int(MT4Account), BrokerID=1))
        print("GetAccount:", GetAccount)

        sql = "select BALANCE,CREDIT,EQUITY,MARGIN,MARGIN_FREE,Leverage FROM T_MT4Users WHERE LOGIN='******'" % (
            MT4Account)
        row = FollowOperation.Operation.operationV3DB(sql)
        print("row:", row)

        # self.assertEqual(GetAccount.Login, int(MT4Account), "账户不相同")
        # self.assertEqual(GetAccount.Leverage, Leverage, "杠杆不相同")
        # self.assertEqual(GetAccount.Balance, Balance,"余额不相同")
        # self.assertEqual(GetAccount.Equity, NetValue, "净值不相同")
        # self.assertEqual(GetAccount.FreeMargin, NetValue, "可用保证金不相同")
        # self.assertEqual(GetAccount.Credit, row[0][1], "信用额度不相同")
        # self.assertEqual(GetAccount.Margin, 0, "已用保证金不相同")
        # self.assertEqual(GetAccount.Profit, 0, "浮动收益不相同")
        # self.assertEqual(FloatProfit, 0, "浮动收益不相同")

        #result
        tpspParam = {
            userDataWebSocket['orderParam_code']:
            userDataWebSocket['ws_code_222']
        }
        tpspParamRes = TradeOnline.OnlineTradeEvent.tradeEvent(
            self, userDataWebSocket['ws_host'], userDataWebSocket['ws_port'],
            {'token': "" + tradeToken}, tpspParam)
        print("tpspParamRes:", tpspParamRes)
        self.assertEqual(tpspParamRes["code"], userDataWebSocket['ws_code_0'])
        login = tpspParamRes['account']["login"]
        balance = tpspParamRes['account']["balance"]
        credit = tpspParamRes['account']["credit"]
        margin = tpspParamRes['account']["margin"]
        free_margin = tpspParamRes['account']["free_margin"]
        margin_level = tpspParamRes['account']["margin_level"]
        equity = tpspParamRes['account']["equity"]

        self.assertEqual(GetAccount.Login, int(MT4Account), "账户不相同")
        self.assertEqual(GetAccount.Login, login, "账户不相同")
        self.assertEqual(GetAccount.Leverage, Leverage, "杠杆不相同")
        self.assertEqual(GetAccount.Balance, balance, "余额不相同")
        self.assertEqual(GetAccount.Equity, equity, "净值不相同")
        self.assertEqual(GetAccount.FreeMargin, free_margin, "可用保证金不相同")
        self.assertEqual(GetAccount.Credit, credit, "信用额度不相同")
        self.assertEqual(GetAccount.Margin, margin, "已用保证金不相同")
        self.assertEqual(GetAccount.Profit, 0, "浮动收益不相同")
        self.assertEqual(FloatProfit, 0, "浮动收益不相同")