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