Exemple #1
0
 def mostrar_saldo(self):
     A.warning(
         'Stop Gain: {} | Stop Loss: {} | ' +
         Idioma.traducao('Lucro atual: $') + '{}',
         BL.instance().win_limit,
         BL.instance().stop_limit, round(BL.instance().actual_balance, 2))
     print((Idioma.traducao('Lucro atual: $') + '{0}').format(
         round(BL.instance().actual_balance, 2)))
Exemple #2
0
 def resultIQ(self, operation, id, gale):
     B = operation
     if gale == 1:
         vgale = 'Gale1'
         dhExp = B.expirationGale1
     elif gale == 2:
         vgale = 'Gale2'
         dhExp = B.expirationGale2
     else:
         vgale = ''
         dhExp = B.expirationDate
     check, win = E.D(id, B.typepair, dhExp)
     if check:
         win = round(win, 2)
         BL.instance().actual_balance = BL.instance().actual_balance + win
         if win > 0:
             msg = 'ID:{0} {1} {2} Payout {3} Cod:{4} WIN ${5}'.format(
                 B.op_id, vgale.upper(), B.pair, int(B.payout), id, win)
             A.success(msg)
             msg = 'ID:{0} {1} {2} Payout {3} WIN ${4}'.format(
                 B.op_id, vgale.upper(), B.pair, int(B.payout), win)
             print(msg)
             if gale == 0:
                 roboCtrl.instance().operContrl.calculoTotal(
                     B.op_id, 'Win', win)
             else:
                 roboCtrl.instance().operContrl.calculoTotal(
                     B.op_id, 'Win ' + vgale, 0, win)
         elif win < 0 or B.typepair == 'D':
             msg = 'ID:{0} {1} {2} Payout {3} Cod:{4} LOSS ${5}'.format(
                 B.op_id, vgale.upper(), B.pair, int(B.payout), id, win)
             A.error(msg)
             msg = 'ID:{0} {1} {2} Payout {3} LOSS ${4}'.format(
                 B.op_id, vgale.upper(), B.pair, int(B.payout), win)
             print(msg)
             if gale == 0:
                 roboCtrl.instance().operContrl.calculoTotal(
                     B.op_id, 'Loss', win)
             else:
                 roboCtrl.instance().operContrl.calculoTotal(
                     B.op_id, 'Loss ' + vgale, 0, win)
         else:
             msg = 'ID:{0} {1} {2} Payout {3} Cod:{4} DOJI ${5}'.format(
                 B.op_id, vgale.upper(), B.pair, int(B.payout), id, win)
             A.success(msg)
             msg = 'ID:{0} {1} {2} Payout {3} DOJI ${4}'.format(
                 B.op_id, vgale.upper(), B.pair, int(B.payout), win)
             print(msg)
             roboCtrl.instance().operContrl.calculoTotal(B.op_id, 'Doji')
         self.atualizarTela()
         self.mostrar_saldo()
     return (check, win)
Exemple #3
0
def createapiconnection(user: str, passw: str, tp_conta: str):
    apiconn = apiconnect(user, passw)
    if apiconn:
        apiconn.change_balance(tp_conta)
        APIConnection.instance().connection = apiconn
        APIConnection.instance().acc_type = tp_conta
        balance = apiconn.get_balance()
        log.warning(
            Idioma.traducao('Conta conectada:') + ' {} | ' +
            Idioma.traducao('Saldo Atual $') + ' {}', apiconn.email, balance)
        print(Idioma.traducao('Conta conectada:'), apiconn.email)
        Balance.instance().balance = balance
        Balance.instance().actual_balance = balance
        Balance.instance().moeda = apiconn.get_currency()
Exemple #4
0
    def process_transaction(self, card, amount: int = None):

        if amount is None:
            amount = card.amount

        Sender = self.balances.filter(Balance.account == card.sender)

        if Sender.first() is None:
            return
        if Sender.first().value >= amount:
            Receiver = self.balances.filter(Balance.account == card.receiver)
            if card.ctype == "CardBurn":
                self.process_burn(card)
                return

            elif Receiver.first() is None:
                B = Balance(card.receiver, amount, self.short_id,
                            card.blockhash)
                session.add(B)
                commit()
            else:
                Receiver = self.balances.filter(
                    Balance.account == card.receiver)
                Receiver.update({'value': Receiver.first().value + amount},
                                synchronize_session='fetch')

            Sender = self.balances.filter(Balance.account == card.sender)
            Sender.update({'value': Sender.first().value - amount},
                          synchronize_session='fetch')
            commit()

        return
Exemple #5
0
 def add_balance_record(self):
     fields = [
         'item_id',    'category_id', 'user_id',  'cost', 'qty',
         'measure_id', 'is_spending', 'place_id', 'note', 'datetime',
         'currency_id'
     ]
     try:
         data = dict(zip(fields, map(self.get_value, fields)))
         Balance.insert(data)
     except Exception as e:
         _log("Can't add a record.", e)
         return
     self.clear_fields()
     model = self.tableView.model()
     model.insertRow(0)
     model.load_data()
Exemple #6
0
        def ONCE(amount: int = amount):
            ''' Set Issuer object to a query of all accounts containing the deck issuing address '''
            Issuer = self.balances.filter(
                Balance.account.contains(self.deck.issuer))

            if Issuer.first() is not None:
                ''' There is already an entry containing the deck issuing address '''

                if self.mode == 'ONCE':
                    ''' If issue mode of the deck is ONCE then only first occurence
                        of CardIssuance transaction is allowed '''

                    if Issuer.filter(Balance.account.contains(
                            c_short_id)).first() is not None:
                        ''' Here we are checking to see if this card is a part of the first issuance transaction
                            (There can be multiple with same txid)'''

                        process_sender(amount, card)
                        process_receiver(amount, card)
                        _card = session.query(Card).filter(
                            Card.txid == card.txid).filter(
                                Card.blockseq == card.blockseq).filter(
                                    Card.cardseq == card.cardseq).first()
                        _card.valid = True
                        commit()
                        return
                    else:
                        return
                else:
                    ''' Continue processing issuance since it does not contain ONCE issue mode'''

                    process_sender(amount, card)
                    process_receiver(amount, card)
                    _card = session.query(Card).filter(
                        Card.txid == card.txid).filter(
                            Card.blockseq == card.blockseq).filter(
                                Card.cardseq == card.cardseq).first()
                    _card.valid = True
                    commit()
                    return

            elif Issuer.first() is None:
                ''' Create a genesis CardIssue account then process receiver '''
                B = Balance(self.deck.issuer + c_short_id, -abs(amount),
                            self.short_id, card.blockhash)
                try:
                    session.add(B)
                    commit()
                    process_receiver(amount, card)
                    _card = session.query(Card).filter(
                        Card.txid == card.txid).filter(
                            Card.blockseq == card.blockseq).filter(
                                Card.cardseq == card.cardseq).first()
                    _card.valid = True
                    commit()
                except Exception as e:
                    print(e + '\r')
                    pass
Exemple #7
0
 def atualizaNovosValoresPosStopWin(self):
     roboCtrl.instance().robo.ultrapassoustopwin = True
     BL.instance().stop_limit = calcValorFatorReducao(
         1 - roboCtrl.instance().robo.percwinpos,
         BL.instance().win_limit)
     BL.instance().win_limit = calcValorFatorReducao(
         roboCtrl.instance().robo.percwinpos,
         BL.instance().win_limit)
     roboCtrl.instance().robo.ent_valor1 = calcValorFatorReducao(
         roboCtrl.instance().robo.percwinpos,
         roboCtrl.instance().robo.ent_valor1)
     roboCtrl.instance().robo.ent_gale1 = calcValorFatorReducao(
         roboCtrl.instance().robo.percwinpos,
         roboCtrl.instance().robo.ent_gale1)
     roboCtrl.instance().robo.ent_gale2 = calcValorFatorReducao(
         roboCtrl.instance().robo.percwinpos,
         roboCtrl.instance().robo.ent_gale2)
     roboCtrl.instance().view.janela['stopgainv'].update(
         value=(round(C.instance().win_limit, 2)))
     roboCtrl.instance().view.janela['stoplossv'].update(
         value=(round(C.instance().stop_limit, 2)))
     if not roboCtrl.instance().robo.usarsoros:
         msg = Idioma.traducao('Entradas fixas:')
         A.info(msg)
         print(msg)
         msg = (Idioma.traducao('Entrada: $') + '{0}').format(
             round(roboCtrl.instance().robo.ent_valor1, 2))
         A.info(msg)
         print(msg)
         if roboCtrl.instance().robo.ent_gale1 > 0:
             msg = (Idioma.traducao('Gale 1: $') + '{0}').format(
                 round(roboCtrl.instance().robo.ent_gale1, 2))
             A.info(msg)
             print(msg)
         if roboCtrl.instance().robo.ent_gale2 > 0:
             msg = (Idioma.traducao('Gale 2: $') + '{0}').format(
                 round(roboCtrl.instance().robo.ent_gale2, 2))
             A.info(msg)
             print(msg)
     else:
         roboCtrl.instance().sorosgale.config_ini(
             calcValorFatorReducao(roboCtrl.instance().robo.percwinpos,
                                   roboCtrl.instance().robo.valorinicial),
             roboCtrl.instance().robo.percent,
             roboCtrl.instance().robo.modelo)
Exemple #8
0
 def buy_gale2(self, operation, loopgale: bool = False):
     B = operation
     if P(B.gale2.replace(Q, K).replace(R, K)) == 0:
         A.warning('ID:{} GALE2 Desligado {}', B.op_id, B.pair)
         return
     valor = B.gale2
     if loopgale:
         if roboCtrl.instance().robo.usarsoros:
             valor = BL.instance().sorosgale.valor_entrada
     else:
         if roboCtrl.instance().robo.usarsoros:
             BL.instance().sorosgale.calcValorEntrada(B.payout)
         if BL.instance().sorosgale.valor_entrada > 0:
             if roboCtrl.instance().robo.qtdgales < 2:
                 A.warning('ID:{} GALE2 Desligado {}', B.op_id, B.pair)
                 return
             valor = BL.instance().sorosgale.valor_entrada
         if roboCtrl.instance().robo.percwinpos > 0:
             if roboCtrl.instance().robo.ultrapassoustopwin:
                 valor = calcValorFatorReducao(
                     roboCtrl.instance().robo.percwinpos, valor)
     if self.stop_operation(B, float(valor)):
         return
     if B.idIQgale2 > 0:
         A.error('ID:{} GALE2 Entrada Repetida Cancelada Cod: {}', B.op_id,
                 B.idIQgale1)
         return
     S, C, tx = E.C(B, valor)
     if S:
         B.idIQgale2 = C
         if B.typepair == 'D':
             tipoent = 'Digital'
         else:
             tipoent = 'Binaria'
         A.debug(
             'ID:{} GALE2 {} {}M Payout {} {} {} ${} Cod: {} criada com sucesso',
             B.op_id, B.pair, B.expirationMode, B.payout, tipoent,
             B.direction, round(float(valor), 2), C)
         roboCtrl.instance().operContrl.calculoTotal(B.op_id, 'Gale 2')
         self.atualizarTela()
         self.docancelProxSinal(B, 2)
         check, vret2 = self.resultIQ(B, C, 2)
         if check:
             if roboCtrl.instance().robo.usarsoros:
                 BL.instance().sorosgale.execute(vret2)
             if not vret2 == 0 or B.typepair != 'D':
                 self.buy_gale2(B)
     else:
         if roboCtrl.instance().robo.usarsoros:
             BL.instance().sorosgale.valor_lucro = 0
         msg = 'ID:{0} GALE2 {1} ${2} - {3} {4}'.format(
             B.op_id, B.pair, round(float(valor), 2),
             Idioma.traducao('Resposta IQ:'), C)
         A.error(msg)
         print(msg)
Exemple #9
0
    def __balance_for_user(session, currency, user_id):
        balance = session.query(Balance).\
            filter(Balance.currency == currency).\
            filter(Balance.user_id == user_id).with_for_update().first()

        if balance is None:
            return Balance(currency=currency,
                           amount=Decimal(0),
                           user_id=user_id)

        return balance
Exemple #10
0
 def stop_operation(self, operation, valorProxEntrada: float):
     B = operation
     if BL.instance().actual_balance <= BL.instance().stop_limit:
         msg = ('ID:{0} [STOP LOSS] ' + Idioma.traducao('Lucro atual: $') +
                '{1}').format(B.op_id, round(BL.instance().actual_balance,
                                             2))
         A.info(msg)
         print(msg)
         Agenda.cancel(B.op_id)
         return True
     if BL.instance().actual_balance - valorProxEntrada <= BL.instance(
     ).stop_limit:
         if BL.instance().actual_balance != 0:
             if roboCtrl.instance().robo.prestop:
                 msg = ('ID:{0} [PRE-STOP LOSS] ' +
                        Idioma.traducao('Entrada: $') + '{1} ' +
                        Idioma.traducao('Lucro previsto: $') +
                        '{2}').format(
                            B.op_id, valorProxEntrada,
                            round(
                                BL.instance().actual_balance -
                                valorProxEntrada, 2))
                 A.info(msg)
                 print(msg)
                 Agenda.cancel(B.op_id)
                 return True
     if BL.instance().actual_balance >= BL.instance().win_limit:
         msg = ('ID:{0} [STOP WIN] ' + Idioma.traducao('Lucro atual: $') +
                '{1}').format(B.op_id, round(BL.instance().actual_balance,
                                             2))
         A.info(msg)
         print(msg)
         if roboCtrl.instance().robo.percwinpos > 0:
             if not roboCtrl.instance().robo.ultrapassoustopwin:
                 self.atualizaNovosValoresPosStopWin()
                 return False
             Agenda.cancel(B.op_id)
             return True
     else:
         return False
Exemple #11
0
    def counter(self):
        ''' Get the block number that the balances for this account were last updated'''
        Blocknum = self.balances.filter(Balance.account == 'blocknum')

        if Blocknum.first() is None:
            ''' If this deck does not have a 'blocknum' account in database then create one '''
            B = Balance('blocknum', 0, self.short_id, '')
            session.add(B)
            commit()
            Blocknum = self.balances.filter(Balance.account == 'blocknum')

        if Blocknum.first() is not None:
            ''' Only concerned with cards that are before the last update to balances of this deck '''
            self.cards = self.cards.filter(
                Card.blocknum > Blocknum.first().value)
Exemple #12
0
        def process_receiver(amount, card):
            ''' Add receiver to db if the account doesn't exist and update receiver balance '''
            Receiver = self.balances.filter(Balance.account == card.receiver)

            if Receiver.first() is not None:
                Receiver.update(
                    {
                        "value": Receiver.first().value + amount,
                        "checkpoint": card.blockhash
                    },
                    synchronize_session='fetch')

            if Receiver.first() is None:
                B = Balance(card.receiver, amount, self.short_id,
                            card.blockhash)
                session.add(B)
                commit()
Exemple #13
0
    def process_burn(self, card, amount: int = None):

        if amount is None:
            amount = card.amount

        Receiver = self.balances.filter(Balance.account == 'CardBurn')
        Sender = self.balances.filter(Balance.account == card.sender)

        if Receiver.first() is not None:
            Receiver.update({'value': Receiver.first().value + amount},
                            synchronize_session='fetch')
        else:
            B = Balance('CardBurn', amount, self.short_id, card.blockhash)
            session.add(B)
            commit()

        Sender.update({'value': Sender.first().value - amount},
                      synchronize_session='fetch')
        return
Exemple #14
0
        def process_sender(amount, card):
            ''' Add sender to db if the account doesn't exist and update sender balance '''

            Sender = self.balances.filter(
                Balance.account.contains(card.sender + c_short_id))

            if Sender.first() is not None:
                ''' If there is already an existing address for the sender '''
                Sender.update(
                    {
                        "value": Sender.first().value - abs(amount),
                        "checkpoint": card.blockhash
                    },
                    synchronize_session='fetch')

            elif Sender.first() is None:
                B = Balance(card.sender + c_short_id, -abs(amount),
                            self.short_id, card.blockhash)
                session.add(B)
                commit()
Exemple #15
0
 def Conectar(self):
     T = str(M.b64encode(self.email.encode()))
     self.arqInit = str(R.logs_path) + '/' + T + '_init.conf'
     if os.path.exists(self.arqInit):
         os.remove(self.arqInit)
     if self.contareal:
         self.tipoconta = 'REAL'
     else:
         self.tipoconta = 'PRACTICE'
     if self.ent_tipo == 'P':
         self.ent_valor1 = round(self.valorinicial * self.ent_valor1 / 100,
                                 2)
         self.ent_gale1 = round(self.valorinicial * self.ent_gale1 / 100, 2)
         self.ent_gale2 = round(self.valorinicial * self.ent_gale2 / 100, 2)
     if self.usarsoros:
         self.ent_valor1 = round(self.valorinicial * self.percent / 100, 2)
         self.ent_gale1 = 0
         self.ent_gale2 = 0
         if self.qtdgales > 0:
             self.ent_gale1 = 2
         if self.qtdgales > 1:
             self.ent_gale2 = 2
     else:
         if self.qtdgales < 1:
             self.ent_gale1 = 0
         if self.qtdgales < 2:
             self.ent_gale2 = 0
     if self.loadLista() == 0:
         A.info(
             Idioma.traducao('Lista vazia ou com dia/horário expirados.'))
     A.info(Idioma.traducao('Aguarde, conectando a IQ...'))
     print(Idioma.traducao('Aguarde, conectando a IQ...'))
     self.View.janela.Refresh()
     N.createapiconnection(self.email, self.senha, self.tipoconta)
     conect = API.instance().connection
     if conect:
         if self.VerificarLicenca():
             C.instance().actual_balance = 0
             if self.tipostop == 'P':
                 X = self.stopgain / 100
                 Z = self.stoploss / 100
                 C.instance().win_limit = self.valorinicial * X
                 C.instance().stop_limit = self.valorinicial * Z * -1
             else:
                 C.instance().win_limit = self.stopgain
                 C.instance().stop_limit = self.stoploss * -1
             A.info('Versão: ' + self.versaoapp)
             A.success(
                 Idioma.traducao('Tipo de conta:') + ' {}', self.tipoconta)
             A.info(Idioma.traducao('Parâmetros iniciais:'))
             A.success(
                 Idioma.traducao('Valor inicial: $') + '{}',
                 round(self.valorinicial, 2))
             A.success(
                 Idioma.traducao('Quantidade de gales:') + ' {}',
                 self.qtdgales)
             A.success(
                 Idioma.traducao('Payout mínimo:') + ' {}', self.payoutmin)
             if self.prestop:
                 A.success(Idioma.traducao('Pré-Stop Loss: Ligado'))
             if self.esperarIQ:
                 A.success(Idioma.traducao('Resultado Resp. IQ'))
             else:
                 A.success(Idioma.traducao('Resultado por Taxas'))
             A.success('Delay: {}', self.delay)
             if self.priorid == 0:
                 A.success(
                     Idioma.traducao('Prioridade') + ': ' +
                     Idioma.traducao('Maior Payout'))
             elif self.priorid == 1:
                 A.success(
                     Idioma.traducao('Prioridade') + ': ' +
                     Idioma.traducao('Digital'))
             elif self.priorid == 2:
                 A.success(
                     Idioma.traducao('Prioridade') + ': ' +
                     Idioma.traducao('Binárias'))
             if self.naonoticia:
                 A.success(Idioma.traducao('Não operar em notícia'))
             if self.tendusar:
                 if self.tendemasma:
                     A.success(
                         Idioma.traducao('Não Operar Contra') + ': ' +
                         Idioma.traducao('Usar EMA5 + SMA20'))
                 else:
                     A.success(
                         Idioma.traducao('Não Operar Contra') + ': ' +
                         Idioma.traducao('Quant. Velas') + ': ' +
                         str(self.tendvelas))
             if not self.usarsoros:
                 A.info(Idioma.traducao('Entradas fixas:'))
                 A.success(
                     Idioma.traducao('Entrada: $') + '{}',
                     round(self.ent_valor1, 2))
                 if self.ent_gale1 > 0:
                     A.success(
                         Idioma.traducao('Gale 1: $') + '{}',
                         round(self.ent_gale1, 2))
                 if self.ent_gale2 > 0:
                     A.success(
                         Idioma.traducao('Gale 2: $') + '{}',
                         round(self.ent_gale2, 2))
             else:
                 A.info('Soros:')
                 if self.modelo == 'A':
                     A.success(Idioma.traducao('Modelo: Agressivo'))
                 elif self.modelo == 'M':
                     A.success(Idioma.traducao('Modelo: Moderado'))
                 else:
                     A.success(Idioma.traducao('Modelo: Conservador'))
                 A.success(
                     Idioma.traducao('1ª entrada: %') + '{} | ' +
                     Idioma.traducao('Valor: $') + '{}', self.percent,
                     round(self.ent_valor1, 2))
             A.warning(
                 'WIN %{} - ' +
                 Idioma.traducao('Parar de operar quando atingir: $') +
                 '{}', self.stopgain, round(C.instance().win_limit, 2))
             A.warning(
                 'LOSS %{} - ' +
                 Idioma.traducao('Parar de operar quando atingir: $') +
                 '{}', self.stoploss, round(C.instance().stop_limit, 2))
             print('Versão: ' + self.versaoapp)
             print(Idioma.traducao('Tipo de conta:'), self.tipoconta)
             print(Idioma.traducao('Parâmetros iniciais:'))
             print(Idioma.traducao('Quantidade de gales:'), self.qtdgales)
             print(Idioma.traducao('Payout mínimo:'), self.payoutmin)
             if self.prestop:
                 print(Idioma.traducao('Pré-Stop Loss: Ligado'))
             if self.esperarIQ:
                 print(Idioma.traducao('Resultado Resp. IQ'))
             else:
                 print(Idioma.traducao('Resultado por Taxas'))
             print('Delay: ', self.delay)
             if self.priorid == 0:
                 print(
                     Idioma.traducao('Prioridade') + ': ' +
                     Idioma.traducao('Maior Payout'))
             elif self.priorid == 1:
                 print(
                     Idioma.traducao('Prioridade') + ': ' +
                     Idioma.traducao('Digital'))
             elif self.priorid == 2:
                 print(
                     Idioma.traducao('Prioridade') + ': ' +
                     Idioma.traducao('Binárias'))
             if self.naonoticia:
                 print(Idioma.traducao('Não operar em notícia'))
             if self.tendusar:
                 if self.tendemasma:
                     print(
                         Idioma.traducao('Não Operar Contra') + ': ' +
                         Idioma.traducao('Usar EMA5 + SMA20'))
                 else:
                     print(
                         Idioma.traducao('Não Operar Contra') + ': ' +
                         Idioma.traducao('Quant. Velas') + ': ' +
                         str(self.tendvelas))
             if not self.usarsoros:
                 print(Idioma.traducao('Entradas fixas:'))
                 print(Idioma.traducao('Entrada: $'),
                       round(self.ent_valor1, 2))
                 if self.ent_gale1 > 0:
                     print(Idioma.traducao('Gale 1: $'),
                           round(self.ent_gale1, 2))
                 if self.ent_gale2 > 0:
                     print(Idioma.traducao('Gale 2: $'),
                           round(self.ent_gale2, 2))
             else:
                 print('Soros:')
                 if self.modelo == 'A':
                     print(Idioma.traducao('Modelo: Agressivo'))
                 elif self.modelo == 'M':
                     print(Idioma.traducao('Modelo: Moderado'))
                 else:
                     print(Idioma.traducao('Modelo: Conservador'))
                 print((Idioma.traducao('1ª entrada: %') + '{0} | ' +
                        Idioma.traducao('Valor: $') + '{1}').format(
                            self.percent, round(self.ent_valor1, 2)))
             self.View.janela['valorinic'].update(
                 value=(round(self.valorinicial, 2)))
             self.View.janela['saldoatual'].update(
                 value=(C.instance().balance))
             self.View.janela['stopgainp'].update(value=(self.stopgain))
             self.View.janela['stopgainv'].update(
                 value=(round(C.instance().win_limit, 2)))
             self.View.janela['stoplossp'].update(value=(self.stoploss))
             self.View.janela['stoplossv'].update(
                 value=(round(C.instance().stop_limit, 2)))
             self.View.janela.Refresh()
             if not self.usarsoros:
                 self.valorinicial = 0
             C.instance().sorosgale.config_ini(self.valorinicial,
                                               self.percent, self.modelo)
             return True
     return False
Exemple #16
0
 def start_operation(self, operation):
     H = '0'
     B = operation
     dhmax = B.programmedHour + timedelta(seconds=20)
     if C(date.today().day) == C(B.day):
         if datetime.now() >= B.programmedHour:
             if datetime.now() <= dhmax:
                 if int(B.payout) < int(roboCtrl.instance().robo.payoutmin):
                     if int(B.payout) > 0:
                         if int(B.payout) == 0:
                             msg = (
                                 'ID:{0} ' +
                                 Idioma.traducao('Expiração Indisponível') +
                                 ' ' + Idioma.traducao('Payout inferior:') +
                                 ' {1} ' + Idioma.traducao('atual:') +
                                 ' {2}'
                             ).format(
                                 B.op_id,
                                 int(roboCtrl.instance().robo.payoutmin),
                                 int(B.payout))
                             A.warning(msg)
                             print(msg)
                             roboCtrl.instance().operContrl.calculoTotal(
                                 B.op_id,
                                 Idioma.traducao('Expiração Indisponível'))
                         else:
                             msg = ('ID:{0} ' +
                                    Idioma.traducao('Payout inferior:') +
                                    ' {1} ' + Idioma.traducao('atual:') +
                                    ' {2}').format(
                                        B.op_id,
                                        int(roboCtrl.instance().robo.
                                            payoutmin), int(B.payout))
                             A.warning(msg)
                             print(msg)
                             roboCtrl.instance().operContrl.calculoTotal(
                                 B.op_id,
                                 'Payout {0}'.format(int(B.payout)))
                         self.atualizarTela()
                         return
                 if BL.instance().moeda == 'BRL':
                     if float(B.money) < 2:
                         msg = ('ID:{0} ' + Idioma.traducao('Entrada: $') +
                                '{1} ' +
                                Idioma.traducao('inválido para a moeda') +
                                ' [{2}] ' + Idioma.traducao('mínimo de $') +
                                '2.00').format(B.op_id, float(B.money),
                                               BL.instance().moeda)
                         A.info(msg)
                         print(msg)
                         return
                 if BL.instance().moeda == 'USD':
                     if float(B.money) < 1:
                         msg = ('ID:{0} ' + Idioma.traducao('Entrada: $') +
                                '{1} ' +
                                Idioma.traducao('inválido para a moeda') +
                                ' [{2}] ' + Idioma.traducao('mínimo de $') +
                                '1.00').format(B.op_id, float(B.money),
                                               BL.instance().moeda)
                         A.info(msg)
                         print(msg)
                         return
                 if B.direction != B.trend:
                     if B.trend != '':
                         msg = ('ID:{0} {1} {2} ' +
                                Idioma.traducao('Contra Têndencia') +
                                ' {3}').format(B.op_id, B.pair, B.direction,
                                               B.trend)
                         A.warning(msg)
                         print(msg)
                         roboCtrl.instance().operContrl.calculoTotal(
                             B.op_id, Idioma.traducao('Contra Têndencia'))
                         self.atualizarTela()
                         return
                 if roboCtrl.instance().robo.naonoticia:
                     tem, noticia = PesquisaNoticia(
                         B.programmedHour.strftime('%H:%M:%S'), B.pair)
                     if tem:
                         msg = (
                             'ID:{0} {1} {2} ' +
                             Idioma.traducao('Existe notícia de 3 touros') +
                             '\n{3} {4} {5}').format(
                                 B.op_id, B.pair,
                                 B.programmedHour.strftime('%H:%M:%S'),
                                 noticia.hora, noticia.moeda, noticia.texto)
                         A.warning(msg)
                         print(msg)
                         roboCtrl.instance().operContrl.calculoTotal(
                             B.op_id, Idioma.traducao('Notícia'))
                         self.atualizarTela()
                         return
                 self.buy(B)
                 D.sleep(1)
Exemple #17
0
    def buy_gale1(self, operation, loopgale: bool = False):
        B = operation

        def resultado_candle(valorent, taxa):
            try:
                candle = E.getCandles(B.pair, int(B.expirationMode), 1)
                txclose = 0
                velaPeq = False
                if candle:
                    chkres = True
                    if taxa <= 0:
                        taxa = candle[0]['open']
                    txclose = candle[0]['close']
                    if txclose > taxa:
                        cor = 'G'
                    elif txclose < taxa:
                        cor = 'R'
                    else:
                        cor = 'C'
                    lucro = 0
                    if not (cor == 'G' and B.direction == 'call'):
                        if not cor == 'R' or B.direction == 'put':
                            lucro = round(
                                float(valorent) * (int(B.payout) / 100), 2)
                        else:
                            lucro = float(valorent) * -1
                        velaPeq = self.tamanhoVela(taxa, txclose)
                else:
                    chkres = False
                    lucro = 0
            except:
                chkres = False

            return (chkres, float(lucro), txclose, velaPeq)

        if P(B.gale1.replace(Q, K).replace(R, K)) == 0:
            A.warning('ID:{} GALE1 Desligado {}', B.op_id, B.pair)
            return
        valor = B.gale1
        if loopgale:
            if roboCtrl.instance().robo.usarsoros:
                valor = BL.instance().sorosgale.valor_entrada
        else:
            if roboCtrl.instance().robo.usarsoros:
                BL.instance().sorosgale.calcValorEntrada(B.payout)
            if BL.instance().sorosgale.valor_entrada > 0:
                if roboCtrl.instance().robo.qtdgales < 1:
                    A.warning('ID:{} GALE1 Desligado {}', B.op_id, B.pair)
                    return
                valor = BL.instance().sorosgale.valor_entrada
            if roboCtrl.instance().robo.percwinpos > 0:
                if roboCtrl.instance().robo.ultrapassoustopwin:
                    valor = calcValorFatorReducao(
                        roboCtrl.instance().robo.percwinpos, valor)
        if self.stop_operation(B, float(valor)):
            return
        if B.idIQgale1 > 0:
            A.error('ID:{} GALE1 Entrada Repetida Cancelada Cod: {}', B.op_id,
                    B.idIQgale1)
            return
        S, C, tx = E.C(B, valor)
        if S:
            B.idIQgale1 = C
            if B.typepair == 'D':
                tipoent = 'Digital'
            else:
                tipoent = 'Binaria'
            A.debug(
                'ID:{} GALE1 {} {}M Payout {} {} {} ${} Cod: {} criada com sucesso',
                B.op_id, B.pair, B.expirationMode, B.payout, tipoent,
                B.direction, round(float(valor), 2), C)
            roboCtrl.instance().operContrl.calculoTotal(B.op_id, 'Gale 1')
            self.atualizarTela()
            self.docancelProxSinal(B, 1)
            if not roboCtrl.instance().robo.esperarIQ:
                check = False
                dhexpira = B.expirationGale1 - timedelta(
                    seconds=(self.SECOND_RESULT))
                while not check:
                    if datetime.now() >= dhexpira:
                        vchkres1, vret1, vtxclose, vtamPeq = resultado_candle(
                            float(valor), tx)
                        check = True
                    else:
                        time.sleep(1)

                if not (check and vtamPeq or vchkres1):
                    if vtamPeq:
                        A.info(
                            'ID:{} GALE1 {} Tx({} x {}) Vela pequena, aguardar resultado IQ...',
                            B.op_id, B.pair, tx, vtxclose)
                    else:
                        A.info(
                            'ID:{} GALE1 {} Não houve retorno de taxas, aguardar resultado IQ...',
                            B.op_id, B.pair, tx, vtxclose)
                    check, vret = self.resultIQ(B, C, 1)
                else:
                    self.doresultIQ(B, C, 1)
            else:
                check, vret1 = self.resultIQ(B, C, 1)
                vtamPeq = False
            if check:
                if not roboCtrl.instance().robo.esperarIQ:
                    if not vtamPeq:
                        msg = 'ID:{0} GALE1 {1} Tx({2} x {3})'.format(
                            B.op_id, B.pair, tx, vtxclose)
                        A.info(msg)
                        print(msg)
                if roboCtrl.instance().robo.usarsoros:
                    BL.instance().sorosgale.execute(vret1)
                if vret1 < 0:
                    self.buy_gale2(B)
                elif not vret1 == 0 or B.typepair != 'D':
                    self.buy_gale1(B)
        else:
            if roboCtrl.instance().robo.usarsoros:
                BL.instance().sorosgale.valor_lucro = 0
            msg = 'ID:{0} GALE1 {1} ${2} - {3} {4}'.format(
                B.op_id, B.pair, round(float(valor), 2),
                Idioma.traducao('Resposta IQ:'), C)
            A.error(msg)
            print(msg)
Exemple #18
0
def replace_balance(value, currency):
    balance = Balance.order_by_raw('created_at DESC NULLS LAST').first()
    if balance:
        Balance.create(value=balance.value + value, currency=currency)
    else:
        Balance.create(value=value, currency=currency)
Exemple #19
0
def process_order(request):
    if request.method == 'POST':
        #Pull all data out of POST (some of it mightn't  be there)
        if request.POST.get('tickets'):
            tickets = int(request.POST.get('tickets', ''))
        if request.POST.get('deposits', ''):
            deposits = int(request.POST.get('deposits', ''))
        first_name = request.POST['first_name']
        last_name = request.POST['last_name']
        email = request.POST['email']
        phone = request.POST['phone']
        referring_ambassador_code = request.POST.get('referring_ambassador_code', '')
        deposit_code_one = request.POST.get('deposit_code_one', '')
        deposit_code_two = request.POST.get('deposit_code_two', '')
        deposit_code_three = request.POST.get('deposit_code_three', '')
        deposit_code_four = request.POST.get('deposit_code_four', '')
        deposit_code_five = request.POST.get('deposit_code_five', '')
        
        #First build the order
        order = Order(fname=first_name,
                      lname=last_name,
                      email=email,
                      phone=phone)
        order.save()
        
        #Initialise the lists to hold the possible ordered items
        ordered_tickets = []
        ordered_deposits = []
        ordered_balances = []
        
        
        if referring_ambassador_code: #Purchasing tickets and/or deposits
            referring_ambassador = Ambassador.objects.get(code=referring_ambassador_code)
            
            #Then generate tickets and deposits
            while tickets > 0:
                ticket = Ticket(order=order, ambassador=referring_ambassador)
                ticket.save()
                ordered_tickets.append(ticket)
                tickets -= 1
            
            while deposits > 0:
                deposit = Deposit(order=order, ambassador=referring_ambassador)
                deposit.save()
                ordered_deposits.append(deposit)
                deposits -= 1
        
        else: #Purchasing balances for paid deposits 
            if deposit_code_one != 'None':
                balance = Balance(order=order, deposit=Deposit.objects.get(code=deposit_code_one))
                balance.save()
                ordered_balances.append(balance)
            if deposit_code_two != 'None':
                balance = Balance(order=order, deposit=Deposit.objects.get(code=deposit_code_two))
                balance.save()
                ordered_balances.append(balance)
            if deposit_code_three != 'None':
                balance = Balance(order=order, deposit=Deposit.objects.get(code=deposit_code_three))
                balance.save()
                ordered_balances.append(balance)
            if deposit_code_four != 'None':
                balance = Balance(order=order, deposit=Deposit.objects.get(code=deposit_code_four))
                balance.save()
                ordered_balances.append(balance)
            if deposit_code_five != 'None':
                balance = Balance(order=order, deposit=Deposit.objects.get(code=deposit_code_five))
                balance.save()
                ordered_balances.append(balance)
            
        #Build the XML request for Google Checkout
        data = {"_type": "checkout-shopping-cart",
                "_charset_":""}
        itemcount = 0
        for ticket in ordered_tickets:
            itemcount += 1
            data['item_name_'+ str(itemcount)] = "1 x Summer Saturnalia 2011 Ticket"
            data['item_description_'+str(itemcount)] = 'One ticket including £2.50 booking fee. Unique ticket code: ' + str(ticket.code)
            data['item_price_'+str(itemcount)] = "57.50"
            data['item_currency_'+str(itemcount)] = "GBP"
            data['item_quantity_'+str(itemcount)] = "1"
            data['item_merchant_id_'+str(itemcount)] = ticket.code
            data['shopping-cart.items.item-'+str(itemcount)+'.digital-content.display-disposition'] = "OPTIMISTIC"
            data['shopping-cart.items.item-'+str(itemcount)+'.digital-content.description'] = "After your payment has been processed your printable ticket will be emailed to you; this normally takes less than a day."
        
        for deposit in ordered_deposits:
            itemcount += 1
            data['item_name_'+str(itemcount)] = "1 x Summer Saturnalia 2011 Deposit"
            data['item_description_'+str(itemcount)] = "One deposit including £2.50 booking fee. Unique deposit code: " + str(deposit.code)
            data['item_price_'+str(itemcount)] = "8"
            data['item_currency_'+str(itemcount)] = "GBP"
            data['item_quantity_'+str(itemcount)] = "1"
            data['item_merchant_id_'+str(itemcount)] = deposit.code
            data['shopping-cart.items.item-'+str(itemcount)+'.digital-content.display-disposition'] = "OPTIMISTIC"
            data['shopping-cart.items.item-'+str(itemcount)+'.digital-content.description'] = "Your deposit code is " + str(deposit.code) +".  You can use this code to pay the balance and obtain your ticket when payment has been processed.  This normally takes less than a day, after which a copy of this code will be emailed to you. "
        
        for balance in ordered_balances:
            itemcount += 1
            data['item_name_'+str(itemcount)] = "1 x Summer Saturnalia 2011 Balance Payment (Ticket)"
            data['item_description_'+str(itemcount)] = "The final payment for deposit number " + str(balance.deposit.code) + " - Booking already included in deposit."
            data['item_price_'+str(itemcount)] = "49.50"
            data['item_currency_'+str(itemcount)] = "GBP"
            data['item_quantity_'+str(itemcount)] = "1"
            data['item_merchant_id_'+str(itemcount)] = balance.deposit.code
            data['shopping-cart.items.item-'+str(itemcount)+'.digital-content.display-disposition'] = "OPTIMISTIC"
            data['shopping-cart.items.item-'+str(itemcount)+'.digital-content.description'] = "After your payment has been processed your printable ticket will be emailed to you; this normally takes less than a day."
        
        #Build the rest of the request and send to Google
        headers = {"Content-Type": 'application/xml; charset=UTF-8',
                   "Accpt": 'application/xml; charset=UTF-8'}

        h = Http()
        h.add_credentials('210280845590798', 'qqnL2K9V76aNWEVVXAoLtQ')

        resp, content = h.request("https://checkout.google.com/api/checkout/v2/checkoutForm/Merchant/210280845590798", 
                                  "POST",
                                  urlencode(data),
                                  headers=headers)
        #If everything worked, we can redirect the user to Google Checkout to complete payment
        
        location = resp['location']
        return redirect(location)
 def load_data(self):
     self.table_data = Balance.all()