Пример #1
0
def GravaConfigTP(email, contatipo):
    contareal = False
    if contatipo == Idioma.traducao('Real'):
        contareal = True
    roboCtrl.instance().robo.saveConfigTP(email, contareal)
    cf = roboCtrl.instance().robo.loadConfig()
    roboCtrl.instance().robo.setConfig(cf)
Пример #2
0
    def cancelProxSinal(self, operation, gale=0):
        if roboCtrl.instance().robo.usarsoros:
            time.sleep(2)
            try:
                B = operation
                dhInic = operation.hourOrig
                if gale == 0:
                    dhTerm = operation.expirationDate
                elif gale == 1:
                    dhTerm = operation.expirationGale1
                else:
                    dhTerm = operation.expirationGale2
                for sinal in roboCtrl.instance().operContrl.agenda:
                    if sinal.programmedHour >= dhInic:
                        if sinal.programmedHour <= dhTerm:
                            if sinal.op_id != operation.op_id:
                                if not sinal.situacao == Idioma.traducao(
                                        'Aguardando'):
                                    if sinal.situacao == Idioma.traducao(
                                            'Agendado'):
                                        pass
                                Agenda.cancelId(sinal.op_id)
                                msg = 'ID:{0} {1} {2} Cancelado Sobreposto'.format(
                                    sinal.op_id, sinal.pair,
                                    sinal.programmedHour.strftime('%H:%M:%S'))
                                A.warning(msg)
                                print(msg)

                self.atualizarTela()
            except Exception as e:
                try:
                    A.error(e)
                finally:
                    e = None
                    del e
Пример #3
0
def validarEditsNumeros(editname: str, values):
    try:
        if len(values[editname]):
            if values[editname][(-1)] not in '0123456789.':
                roboCtrl.instance().view.janela[editname].update(
                    values[editname][:-1])
    except:
        pass
Пример #4
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)
Пример #5
0
def C(operations):
    FT = '%H:%M:%S'
    FD = '%d/%m/%y %H:%M:%S'
    roboCtrl.instance().operContrl.agenda = E.G(operations, roboCtrl.instance().robo.delay)
    B.clear()
    for A in roboCtrl.instance().operContrl.agenda:
        dhexpira = A.expirationDate - timedelta(seconds=35)
        B.every().days.at(A.programmedHour.strftime(FT)).do(G().dooperation, A).tag('agendaID' + str(A.op_id))
        D.info('ID {}: {} | {} | {} | {}M', A.op_id, A.programmedHour.strftime(FD), A.pair, A.direction.upper(), A.expirationMode)
        B.every().days.at(A.pre_order.strftime(FT)).do(F.D, roboCtrl.instance().robo.manterConta, roboCtrl.instance().robo.tendusar, roboCtrl.instance().robo.tendvelas, roboCtrl.instance().robo.tendemasma, roboCtrl.instance().robo.priorid, A).tag('agendaPreID' + str(A.op_id))
        B.every().days.at(dhexpira.strftime(FT)).do(VerifConnection).tag('agendaCnxID' + str(A.op_id))
Пример #6
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)
Пример #7
0
def VerifConnection():
    error_password = '******'
    conOK = False
    verAtivos = False
    try:
        log.debug(Idioma.traducao('Verificando conexão...'))
        conOK = APIConnection.instance().connection.check_connect()
    except Exception as e:
        try:
            log.error('Erro de conexão com a IQ:')
            log.error(e)
        finally:
            e = None
            del e

    try:
        if not conOK:
            verAtivos = True
            log.debug(Idioma.traducao('Recuperando conexão...'))
            print(Idioma.traducao('Recuperando conexão...'))
            check, reason = APIConnection.instance().connection.connect()
            if check:
                log.warning(Idioma.traducao('Conexão recuperada.'))
                print(Idioma.traducao('Conexão recuperada.'))
                conOK = True
            elif reason == '[Errno -2] Name or service not known':
                log.error(
                    Idioma.traducao(
                        'Problema na conexão, verifique sua internet.'))
                print(
                    Idioma.traducao(
                        'Problema na conexão, verifique sua internet.'))
            elif reason == error_password:
                log.error(Idioma.traducao('Login/Senha inválido.'))
                print(Idioma.traducao('Login/Senha inválido.'))
        else:
            conOK = True
    except Exception as e:
        try:
            log.error(e)
        finally:
            e = None
            del e

    if conOK:
        if roboCtrl.instance().dianoticias != datetime.now().date():
            getNoticias()
        if verAtivos:
            roboCtrl.instance().robo.pesqAtviso.start_ativos()
    return conOK
Пример #8
0
def cancelId(id):
    try:
        B.clear('agendaID' + str(id))
        B.clear('agendaPreID' + str(id))
        B.clear('agendaCnxID' + str(id))
        sitAceitas = [Idioma.traducao('Aguardando'), Idioma.traducao('Agendado')]
        roboCtrl.instance().operContrl.cancelAgendaId(id, Idioma.traducao('Cancelado'), sitAceitas)
        return True
    except Exception as e:
        try:
            D.error(e)
            return False
        finally:
            e = None
            del e
Пример #9
0
def WebNoticias():
    try:
        data = []
        roboCtrl.instance().__noticias = []
        url = 'https://sslecal2.forexprostools.com?columns=exc_currency,exc_importance&importance=3&countries=110,17,29,25,32,6,37,36,26,5,22,39,14,48,10,35,7,43,38,4,12,72&calType=day&timeZone=12&lang=12'
        response = requests.get(url,
                                headers={'User-Agent': 'Mozilla'},
                                timeout=5)
        if response.status_code is 200:
            soup = BeautifulSoup(response.content, 'html.parser')
            soup.prettify()
            table = soup.find_all(id='ecEventsTable')[0]
            linhas = table.find_all('tr')
            for lin in linhas:
                events = lin.find_all('td', class_='left event')
                if events:
                    times = lin.find_all('td', class_='first left time')
                    if not times:
                        times = lin.find_all('td', class_='center time')
                    flags = lin.find_all('td', class_='flagCur')
                    sents = lin.find_all('td', class_='sentiment')
                    if times:
                        if flags:
                            if sents:
                                if events:
                                    moe = flags[0].get_text().replace(
                                        '&nbsp;', '').replace('\xa0 ', '')
                                    moe.strip()
                                    if moe != '':
                                        hor = times[0].get_text().strip()
                                        des = events[0].get_text().strip()
                                        item = [hor, moe, des]
                                        data.append(item)
                try:
                    roboCtrl.instance().add_noticias = Noticia(hor, moe, des)
                except:
                    pass

            roboCtrl.instance().dianoticias = datetime.now().date()
        roboCtrl.instance().view.janela['-TABLENOTICIAS-'].update(values=data)
    except:
        pass
Пример #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
Пример #11
0
    def try_connection(self):
        while roboCtrl.instance().robo.iniciado:
            if self.first_check == 0:
                if roboCtrl.instance().dianoticias != datetime.now().date():
                    getNoticias()
                else:
                    try:
                        if not APIConnection.instance(
                        ).connection.check_connect():
                            log.debug(
                                Idioma.traducao('Recuperando conexão...'))
                            print(Idioma.traducao('Recuperando conexão...'))
                            APIConnection.instance().connection.connect()
                        server_time = APIConnection.instance(
                        ).connection.get_server_timestamp()
                        local_time = time.time()
                        diff = local_time - server_time
                        self.first_check = diff
                        log.debug(
                            Idioma.traducao('Diferenca de horario:') + ' {}s',
                            round(diff, 3))
                        roboCtrl.instance().view.janela['-status-'].update(
                            Idioma.traducao('Diferenca de horario:') +
                            ' {0}s'.format(round(diff, 3)))
                        roboCtrl.instance().view.janela.Refresh()
                    except Exception as e:
                        try:
                            log.error(e)
                        finally:
                            e = None
                            del e

                    time.sleep(0.5)
Пример #12
0
def cancelSinal(item):
    i = 0
    for sinal in roboCtrl.instance().operContrl.agenda:
        if i == item:
            Agenda.cancelId(sinal.op_id)
            msg = 'ID:{0} {1} {2} Cancelado Sobreposto'.format(
                sinal.op_id, sinal.pair,
                sinal.programmedHour.strftime('%H:%M:%S'))
            logger.warning(msg)
            print(msg)
            break
        else:
            i += 1
Пример #13
0
def externalFunction():
    roboCtrl.instance().robo.IniciarAgendamentos()
    data = []
    for sinal in roboCtrl.instance().operContrl.agenda:
        item = [
            '{:03d}'.format(int(sinal.op_id)),
            sinal.programmedHour.strftime('%d/%m/%y'),
            sinal.programmedHour.strftime('%H:%M:%S'), sinal.pair,
            sinal.direction.upper(), sinal.expirationMode, sinal.situacao,
            '{:18.2f}'.format(float(sinal.lucro))
        ]
        data.append(item)

    roboCtrl.instance().view.janela['-TABLE-'].update(values=data)
    roboCtrl.instance().robo.ExecutaAgendamento()
Пример #14
0
def cancel(id):
    try:
        for sinal in roboCtrl.instance().operContrl.agenda:
            if not sinal.situacao == Idioma.traducao('Aguardando'):
                if sinal.situacao == Idioma.traducao('Agendado'):
                    pass
            cancelId(sinal.op_id)

        HL.atualizaView()
        return True
    except Exception as e:
        try:
            D.error(e)
            return False
        finally:
            e = None
            del e
Пример #15
0
def apiconnect(user: str, passw: str):
    error_password = '******'
    apiconn = IQ_Option(user, passw)
    check, reason = apiconn.connect()
    if check == False:
        if reason == '[Errno -2] Name or service not known':
            log.error(
                Idioma.traducao(
                    'Problema na conexão, verifique sua internet.'))
            print(
                Idioma.traducao(
                    'Problema na conexão, verifique sua internet.'))
            roboCtrl.instance().view.janela['-status-'].update(
                Idioma.traducao(
                    'Problema na conexão, verifique sua internet.'))
            roboCtrl.instance().view.janela.Refresh()
        elif reason == error_password:
            log.error(Idioma.traducao('Login/Senha inválido.'))
            print(Idioma.traducao('Login/Senha inválido.'))
            roboCtrl.instance().view.janela['-status-'].update(
                Idioma.traducao('Login/Senha inválido.'))
            roboCtrl.instance().view.janela.Refresh()
        return
    return apiconn
Пример #16
0
def atualizaView():
    try:
        roboCtrl.instance().operContrl.wins = 0
        roboCtrl.instance().operContrl.hits = 0
        data = []
        for sinal in roboCtrl.instance().operContrl.agenda:
            item = [
                '{:03d}'.format(int(sinal.op_id)),
                sinal.programmedHour.strftime('%d/%m/%y'),
                sinal.programmedHour.strftime('%H:%M:%S'), sinal.pair,
                sinal.direction.upper(), sinal.expirationMode, sinal.situacao,
                '{:18.2f}'.format(float(sinal.lucro))
            ]
            data.append(item)
            if float(sinal.lucro) > 0:
                roboCtrl.instance().operContrl.wins += 1
            else:
                if float(sinal.lucro) < 0:
                    roboCtrl.instance().operContrl.hits += 1
                elif 'win' in str(sinal.situacao).lower():
                    roboCtrl.instance().operContrl.wins += 1
            if 'loss' in str(sinal.situacao).lower():
                roboCtrl.instance().operContrl.hits += 1

        try:
            roboCtrl.instance().view.janela['-TABLE-'].update(values=data)
            roboCtrl.instance().view.janela.Refresh()
        except Exception as e:
            try:
                log.error(e)
            finally:
                e = None
                del e

        roboCtrl.instance().view.janela['placarW'].update(
            value=(roboCtrl.instance().operContrl.wins))
        roboCtrl.instance().view.janela['placarH'].update(
            value=(roboCtrl.instance().operContrl.hits))
        roboCtrl.instance().view.janela['assertividade'].update(
            value=(roboCtrl.instance().operContrl.getAssertividade()))
        roboCtrl.instance().view.janela['saldolucro'].update(
            value=(round(roboCtrl.instance().operContrl.saldo, 2)))
    except Exception as e:
        try:
            pass
        finally:
            e = None
            del e
Пример #17
0
elif obrigarTemplate:
    sys.exit(0)
Idioma.setlang(lang)
for file in glob.glob('*.thm'):
    tema = file.replace('.thm', '')

img_logo = os.path.join(os.getcwd(), 'logo.png')
if nomeApp == 'JOBsPlay':
    oimg = LogoImg(img_logo)
    img_base64 = oimg.imagembase64
if img_base64:
    img_logo = img_base64
elif not os.path.isfile(img_logo):
    img_logo = None
afiliado = 0
roboCtrl.instance().robo = RoboIQ(versaoapp)
cf = roboCtrl.instance().robo.loadConfig()
roboCtrl.instance().robo.setConfig(cf)
roboCtrl.instance().view = JobsView(nomeApp, tema, versaoapp, img_logo,
                                    img_base64, afiliado)
roboCtrl.instance().robo.View = roboCtrl.instance().view


def externalFunction():
    roboCtrl.instance().robo.IniciarAgendamentos()
    data = []
    for sinal in roboCtrl.instance().operContrl.agenda:
        item = [
            '{:03d}'.format(int(sinal.op_id)),
            sinal.programmedHour.strftime('%d/%m/%y'),
            sinal.programmedHour.strftime('%H:%M:%S'), sinal.pair,
Пример #18
0
 def atualizarTela(self):
     B = ThreadOper(target=(self.atualView))
     roboCtrl.instance().add_listThread = B
     B.start()
Пример #19
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)
Пример #20
0
def LeConfig():
    roboCtrl.instance().view.janela['email'].update(
        roboCtrl.instance().robo.email)
    if roboCtrl.instance().robo.contareal:
        roboCtrl.instance().view.janela['contatipo'].update(
            value=(Idioma.traducao('Real')))
    else:
        roboCtrl.instance().view.janela['contatipo'].update(
            value=(Idioma.traducao('Treinamento')))
    roboCtrl.instance().view.janela['usarsoros'].update(
        value=(roboCtrl.instance().robo.usarsoros))
    roboCtrl.instance().view.janela['prestop'].update(
        value=(roboCtrl.instance().robo.prestop))
    if roboCtrl.instance().robo.esperarIQ:
        roboCtrl.instance().view.janela['esperarIQ'].update(
            value=(Idioma.traducao('Resultado Resp. IQ')))
    else:
        roboCtrl.instance().view.janela['esperarIQ'].update(
            value=(Idioma.traducao('Resultado por Taxas')))
    roboCtrl.instance().view.janela['naonoticia'].update(
        value=(roboCtrl.instance().robo.naonoticia))
    roboCtrl.instance().view.janela['notminantes'].update(
        value=(roboCtrl.instance().robo.notminantes))
    roboCtrl.instance().view.janela['notminapos'].update(
        value=(roboCtrl.instance().robo.notminapos))
    roboCtrl.instance().view.janela['delay'].update(
        value=(roboCtrl.instance().robo.delay))
    if roboCtrl.instance().robo.priorid == 0:
        roboCtrl.instance().view.janela['priorid'].update(
            value=(Idioma.traducao('Maior Payout')))
    elif roboCtrl.instance().robo.priorid == 1:
        roboCtrl.instance().view.janela['priorid'].update(
            value=(Idioma.traducao('Digital')))
    elif roboCtrl.instance().robo.priorid == 2:
        roboCtrl.instance().view.janela['priorid'].update(
            value=(Idioma.traducao('Binárias')))
    roboCtrl.instance().view.janela['tendusar'].update(
        value=(roboCtrl.instance().robo.tendusar))
    roboCtrl.instance().view.janela['tendvelas'].update(
        value=(roboCtrl.instance().robo.tendvelas))
    roboCtrl.instance().view.janela['valinic'].update(
        value=(roboCtrl.instance().robo.valorinicial))
    roboCtrl.instance().view.janela['payout'].update(
        value=(roboCtrl.instance().robo.payoutmin))
    roboCtrl.instance().view.janela['qtdgale'].update(
        value=(roboCtrl.instance().robo.qtdgales))
    if roboCtrl.instance().robo.ent_tipo == 'P':
        roboCtrl.instance().view.janela['percent'].update(
            value=(Idioma.traducao('Percentual')))
    else:
        roboCtrl.instance().view.janela['percent'].update(
            value=(Idioma.traducao('Valor')))
    roboCtrl.instance().view.janela['valor1'].update(
        value=(roboCtrl.instance().robo.ent_valor1))
    roboCtrl.instance().view.janela['gale1'].update(
        value=(roboCtrl.instance().robo.ent_gale1))
    roboCtrl.instance().view.janela['gale2'].update(
        value=(roboCtrl.instance().robo.ent_gale2))
    roboCtrl.instance().view.janela['percentsoros'].update(
        value=(roboCtrl.instance().robo.percent))
    if roboCtrl.instance().robo.modelo == 'A':
        roboCtrl.instance().view.janela['modelo'].update(
            value=(Idioma.traducao('Agressivo')))
    elif roboCtrl.instance().robo.modelo == 'M':
        roboCtrl.instance().view.janela['modelo'].update(
            value=(Idioma.traducao('Moderado')))
    elif roboCtrl.instance().robo.modelo == 'C':
        roboCtrl.instance().view.janela['modelo'].update(
            value=(Idioma.traducao('Conservador')))
    if roboCtrl.instance().robo.tipostop == 'P':
        roboCtrl.instance().view.janela['tipostop'].update(
            value=(Idioma.traducao('Percentual')))
    else:
        roboCtrl.instance().view.janela['tipostop'].update(
            value=(Idioma.traducao('Valor')))
    roboCtrl.instance().view.janela['stopgain'].update(
        value=(roboCtrl.instance().robo.stopgain))
    roboCtrl.instance().view.janela['stoploss'].update(
        value=(roboCtrl.instance().robo.stoploss))
    ZeraPlacarTotal()
    roboCtrl.instance().view.janela['-Parar-'].update(disabled=True)
    getNoticias()
    roboCtrl.instance().view.janela.Refresh()
Пример #21
0
 def dooperation(self, operation):
     B = ThreadOper(target=(self.start_operation), args=(operation, ))
     roboCtrl.instance().add_listThread = B
     B.start()
Пример #22
0
def main():
    global afiliado
    roboCtrl.instance().view.Show()
    logging.basicConfig(level=(logging.DEBUG))
    log_queue = queue.Queue()
    queue_handler = QueueHandler(log_queue)
    logger.addHandler(queue_handler)
    LeConfig()
    janelaDown = False
    while 1:
        event, values = roboCtrl.instance().view.janela.Read()
        if event == None:
            break
        else:
            if event == 'valinic':
                validarEditsNumeros('valinic', values)
            if event == 'delay':
                validarEditsNumeros('delay', values)
            if event == 'payout':
                validarEditsNumeros('payout', values)
            if event == 'qtdgale':
                validarEditsNumeros('qtdgale', values)
            if event == 'valor1':
                validarEditsNumeros('valor1', values)
            if event == 'gale1':
                validarEditsNumeros('gale1', values)
            if event == 'gale2':
                validarEditsNumeros('gale2', values)
            if event == 'percentsoros':
                validarEditsNumeros('percentsoros', values)
            if event == 'stopgain':
                validarEditsNumeros('stopgain', values)
            if event == 'stoploss':
                validarEditsNumeros('stoploss', values)
            if event == '-Iniciar-' and not roboCtrl.instance(
            ).view.appStarted:
                try:
                    valido = True
                    if values['senha'] == '':
                        sg.popup((Idioma.traducao('Informe sua senha.')),
                                 no_titlebar=True,
                                 keep_on_top=True,
                                 text_color='black',
                                 background_color='#DFDDDD')
                        valido = False
                    if not os.path.isfile(values['arqlista']):
                        if valido:
                            sg.popup((Idioma.traducao(
                                'Arquivo da lista não foi localizado.')),
                                     no_titlebar=True,
                                     keep_on_top=True,
                                     text_color='black',
                                     background_color='#DFDDDD')
                            valido = False
                    if valido:
                        GravaConfigTP(values['email'], values['contatipo'])
                        roboCtrl.instance().robo.senha = values['senha']
                        ZeraPlacarTotal()
                        threadedApp = ThreadOper(target=externalFunction)
                        roboCtrl.instance().add_listThread = threadedApp
                        appStarted = True
                        roboCtrl.instance().robo.arqLista = values['arqlista']
                        if roboCtrl.instance().robo.Conectar():
                            Habilitar(True)
                            if not threadedApp.is_alive():
                                threadedApp.start()
                except Exception as inst:
                    try:
                        print(inst)
                        sg.popup_error((str(inst)),
                                       no_titlebar=True,
                                       keep_on_top=True,
                                       text_color='black',
                                       background_color='#DFDDDD')
                    finally:
                        inst = None
                        del inst

            if event == '-Gravar-':
                try:
                    GravaConfig(values)
                    sg.popup(
                        (Idioma.traducao('Atenção')),
                        (Idioma.traducao('Parâmetros gravados com sucesso!')),
                        no_titlebar=True,
                        keep_on_top=True,
                        text_color='black',
                        background_color='#DFDDDD')
                except Exception as inst:
                    try:
                        sg.popup_error((str(inst)),
                                       no_titlebar=True,
                                       keep_on_top=True,
                                       text_color='black',
                                       background_color='#DFDDDD')
                    finally:
                        inst = None
                        del inst

                if event == '-Ajuda-':
                    Leiame = Idioma.traducaoLeiame()
                    sg.popup_scrolled((Idioma.traducao('Leiame')),
                                      Leiame,
                                      size=(120, 20),
                                      font=('Helvetica', 8),
                                      no_titlebar=True,
                                      keep_on_top=True,
                                      text_color='black',
                                      background_color='#DFDDDD')
                if event == '-TABLE-':
                    try:
                        item = int(values['-TABLE-'][0])
                        cancelitem = sg.popup_yes_no(
                            (Idioma.traducao('Cancelar este sinal?')),
                            no_titlebar=True,
                            keep_on_top=True,
                            text_color='black',
                            background_color='#DFDDDD')
                        if cancelitem == 'Yes':
                            cancelSinal(item)
                    except:
                        pass

        if event == '-Download-':
            if not janelaDown:
                janelaDown = True
                roboCtrl.instance().view.janela['-Iniciar-'].update(
                    disabled=True)
                roboCtrl.instance().view.janela['-Parar-'].update(
                    disabled=True)
                roboCtrl.instance().view.janela['-abrirlista-'].update(
                    disabled=True)
                viewDown = JobsViewDownload()
                viewDown.Show()
                wslista = ListaSinais()
                wslista.getLista(afiliado)
                viewDown.atualizaGrid(wslista.lista)
            if janelaDown:
                ev2, vals2 = viewDown.janela.read()
                if ev2 is None or ev2 == '-CancLista-':
                    janelaDown = False
                    roboCtrl.instance().view.janela['-Iniciar-'].update(
                        disabled=False)
                    roboCtrl.instance().view.janela['-Parar-'].update(
                        disabled=True)
                    roboCtrl.instance().view.janela['-abrirlista-'].update(
                        disabled=False)
                    viewDown.janela.close()
                if ev2 == '-ConfLista-':
                    janelaDown = False
                    try:
                        idx = int(vals2['-TABLELISTA-'][0])
                        nomelista = os.path.join(os.getcwd(), 'downloads')
                        PathLogs.create_dir(nomelista)
                        arq = wslista.lista[idx]['id'] + '_' + wslista.lista[
                            idx]['data'] + '_' + wslista.lista[idx][
                                'nome'] + '.txt'
                        arq = arq.replace('-', '_')
                        arq = arq.replace(' ', '_')
                        nomelista = os.path.join(nomelista, arq)
                        arqlista = wslista.getArquivo(
                            int(wslista.lista[idx]['id']))
                        if arqlista:
                            with open(nomelista, 'wb') as f:
                                f.write(arqlista)
                            roboCtrl.instance().view.janela['arqlista'].update(
                                value=nomelista)
                    except Exception as inst:
                        try:
                            print(inst)
                            sg.popup_error((str(inst)),
                                           no_titlebar=True,
                                           keep_on_top=True,
                                           text_color='black',
                                           background_color='#DFDDDD')
                        finally:
                            inst = None
                            del inst

                    roboCtrl.instance().view.janela['-Iniciar-'].update(
                        disabled=False)
                    roboCtrl.instance().view.janela['-Parar-'].update(
                        disabled=True)
                    roboCtrl.instance().view.janela['-abrirlista-'].update(
                        disabled=False)
                    viewDown.janela.close()
            if event in ('-Parar-', '-Fechar-'):
                if Agenda.cancel(0):
                    appStarted = False
                    roboCtrl.instance().robo.PararTudo()
                    for th in roboCtrl.instance().add_listThread:
                        if th.isAlive():
                            th.stop()

                    if event == '-Parar-':
                        print(
                            Idioma.traducao(
                                'Agendamentos cancelados com sucesso!'))
                        print('====================================')
                        Habilitar(False)
                if event == '-Fechar-':
                    break
            try:
                record = log_queue.get(block=False)
            except queue.Empty:
                pass
            else:
                msg = queue_handler.format(record)

    roboCtrl.instance().view.janela.close()
    del roboCtrl.instance().view.janela
Пример #23
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)
Пример #24
0
 def docancelProxSinal(self, operation, gale=0):
     B = ThreadOper(target=(self.cancelProxSinal), args=(operation, gale))
     roboCtrl.instance().add_listThread = B
     B.start()
Пример #25
0
def Habilitar(iniciado: bool):
    roboCtrl.instance().view.janela['-Iniciar-'].update(disabled=iniciado)
    roboCtrl.instance().view.janela['-Parar-'].update(disabled=(not iniciado))
    roboCtrl.instance().view.janela['-Gravar-'].update(disabled=iniciado)
    roboCtrl.instance().view.janela['-Download-'].update(disabled=iniciado)
    roboCtrl.instance().view.janela['-abrirlista-'].update(disabled=iniciado)
    roboCtrl.instance().view.janela['email'].update(disabled=iniciado)
    roboCtrl.instance().view.janela['senha'].update(disabled=iniciado)
    roboCtrl.instance().view.janela['contatipo'].update(disabled=iniciado)
Пример #26
0
 def doresultIQ(self, operation, id, gale):
     B = ThreadOper(target=(self.resultIQ), args=(operation, id, gale))
     roboCtrl.instance().add_listThread = B
     B.start()
Пример #27
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)
Пример #28
0
def GravaConfig(values):
    def tratarFloat(value: str):
        try:
            return float(value)
        except:
            return 0

    if values['usarsoros'] == True:
        roboCtrl.instance().robo.usarsoros = True
    else:
        roboCtrl.instance().robo.usarsoros = False
    if values['prestop'] == True:
        roboCtrl.instance().robo.prestop = True
    else:
        roboCtrl.instance().robo.prestop = False
    if values['esperarIQ'] == Idioma.traducao('Resultado por Taxas'):
        roboCtrl.instance().robo.esperarIQ = False
    elif values['esperarIQ'] == Idioma.traducao('Resultado Resp. IQ'):
        roboCtrl.instance().robo.esperarIQ = True
    if values['naonoticia'] == True:
        roboCtrl.instance().robo.naonoticia = True
    else:
        roboCtrl.instance().robo.naonoticia = False
    roboCtrl.instance().robo.notminantes = int(
        tratarFloat(values['notminantes']))
    roboCtrl.instance().robo.notminapos = int(tratarFloat(
        values['notminapos']))
    roboCtrl.instance().robo.delay = int(tratarFloat(values['delay']))
    if values['priorid'] == Idioma.traducao('Maior Payout'):
        roboCtrl.instance().robo.priorid = 0
    elif values['priorid'] == Idioma.traducao('Digital'):
        roboCtrl.instance().robo.priorid = 1
    elif values['priorid'] == Idioma.traducao('Binárias'):
        roboCtrl.instance().robo.priorid = 2
    if values['tendusar'] == True:
        roboCtrl.instance().robo.tendusar = True
    else:
        roboCtrl.instance().robo.tendusar = False
    roboCtrl.instance().robo.tendvelas = int(tratarFloat(values['tendvelas']))
    if tratarFloat(values['valinic']) == 0:
        raise Exception(Idioma.traducao('Saldo Inicial não pode ser zero.'))
    if tratarFloat(values['payout']) == 0:
        raise Exception(Idioma.traducao('Payout não pode ser zero.'))
    roboCtrl.instance().robo.valorinicial = tratarFloat(values['valinic'])
    roboCtrl.instance().robo.payoutmin = int(tratarFloat(values['payout']))
    roboCtrl.instance().robo.qtdgales = int(tratarFloat(values['qtdgale']))
    if values['percent'] == Idioma.traducao('Percentual'):
        roboCtrl.instance().robo.ent_tipo = 'P'
    else:
        roboCtrl.instance().robo.ent_tipo = 'V'
    roboCtrl.instance().robo.ent_valor1 = tratarFloat(values['valor1'])
    roboCtrl.instance().robo.ent_gale1 = tratarFloat(values['gale1'])
    roboCtrl.instance().robo.ent_gale2 = tratarFloat(values['gale2'])
    roboCtrl.instance().robo.percent = tratarFloat(values['percentsoros'])
    if values['modelo'] == Idioma.traducao('Agressivo'):
        roboCtrl.instance().robo.modelo = 'A'
    elif values['modelo'] == Idioma.traducao('Moderado'):
        roboCtrl.instance().robo.modelo = 'M'
    if values['modelo'] == Idioma.traducao('Conservador'):
        roboCtrl.instance().robo.modelo = 'C'
    if values['tipostop'] == Idioma.traducao('Percentual'):
        roboCtrl.instance().robo.tipostop = 'P'
    else:
        roboCtrl.instance().robo.tipostop = 'V'
    if tratarFloat(values['stopgain']) == 0:
        raise Exception(
            Idioma.traducao('Valor do Stop Gain não pode ser zero.'))
    if tratarFloat(values['stoploss']) == 0:
        raise Exception(
            Idioma.traducao('Valor do Stop Loss não pode ser zero.'))
    if tratarFloat(values['stoploss']) > 100:
        if roboCtrl.instance().robo.tipostop == 'P':
            raise Exception(
                Idioma.traducao(
                    'Valor do Stop Loss não pode ser maior do que 100%.'))
    if tratarFloat(values['stoploss']) > tratarFloat(values['valinic']):
        if roboCtrl.instance().robo.tipostop == 'V':
            raise Exception(
                Idioma.traducao(
                    'Valor do Stop Loss não pode ser maior do que o Saldo Inicial.'
                ))
    roboCtrl.instance().robo.stopgain = tratarFloat(values['stopgain'])
    roboCtrl.instance().robo.stoploss = tratarFloat(values['stoploss'])
    roboCtrl.instance().robo.saveConfig()
    cf = roboCtrl.instance().robo.loadConfig()
    roboCtrl.instance().robo.setConfig(cf)
Пример #29
0
def ZeraPlacarTotal():
    roboCtrl.instance().operContrl.zerar()
    roboCtrl.instance().view.janela['saldoatual'].update(value=0.0)
    roboCtrl.instance().view.janela['stopgainp'].update(value=0)
    roboCtrl.instance().view.janela['stopgainv'].update(value=0.0)
    roboCtrl.instance().view.janela['stoplossp'].update(value=0)
    roboCtrl.instance().view.janela['stoplossv'].update(value=0.0)
    roboCtrl.instance().view.janela['valorinic'].update(value=0.0)
    roboCtrl.instance().view.janela['placarW'].update(value=0)
    roboCtrl.instance().view.janela['placarH'].update(value=0)
    roboCtrl.instance().view.janela['assertividade'].update(value=0.0)
    roboCtrl.instance().view.janela['saldolucro'].update(value=0.0)
    roboCtrl.instance().view.janela.Refresh()
Пример #30
0
def geralista(arq, ent_valor1, ent_gale1, ent_gale2):
    W = []
    tmp = []
    cnt = 0
    b = None
    try:
        with open(arq) as csv_file:
            csv_reader = csv.reader(csv_file, delimiter=';')
            cnt = 0
            line_count = 0
            for B in csv_reader:
                if B:
                    if str(B[0]) != 'Moeda':
                        if str(B[0]) != 'Ativo':
                            if str(B[0]) != '':
                                A = X()
                                hr = B[2].split(H)
                                F = '{:02d}'.format(int(hr[0]))
                                G = '{:02d}'.format(int(hr[1]))
                                try:
                                    I = str(hr[2])
                                except:
                                    I = str('00')

                                cnt += 1
                                try:
                                    A[K] = int(cnt)
                                    A[N] = remove_carespeciais(str(B[0]).strip())
                                    A[O] = int(B[1].strip())
                                    A[J] = str(F) + H + str(G) + H + str(I)
                                    A[P] = remove_carespeciais(str(B[3]).strip())
                                    A[Q] = B[4].strip()
                                    A[R] = B[5].strip()
                                    A[S] = B[6].strip()
                                    A[T] = int(B[7])
                                    A[U] = V
                                except:
                                    A[K] = int(cnt)
                                    A[N] = remove_carespeciais(str(B[0]).strip())
                                    A[O] = int(B[1].strip())
                                    A[J] = str(F) + H + str(G) + H + str(I)
                                    A[P] = remove_carespeciais(str(B[3]).strip())
                                    A[Q] = ent_valor1
                                    A[R] = ent_gale1
                                    A[S] = ent_gale2
                                    A[T] = int(B[4].strip())
                                    A[U] = V

                                if roboCtrl.instance().robo.usarsoros:
                                    pesq = str(F) + H + str(G)
                                    if pesq in tmp:
                                        valid = False
                                    else:
                                        tmp.append(pesq)
                                        valid = True
                                else:
                                    valid = True
                                if valid:
                                    W.append(A)
                    line_count += 1

        WS = sorted(W, key=(lambda i: (i[O], i[J])))
        b = Y.dumps(WS)
    except:
        raise Exception(Idioma.traducao('Layout inválido.\nLayout correto: ATIVO;DIA;HORARIO;DIRECAO;DURACAO'))

    return (cnt, b)