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)))
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)
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()
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
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()
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
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)
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)
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
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
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)
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()
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
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()
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
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)
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)
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)
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()