Fala galera beleza seja bem-vindo aqui a mais um vídeo do canal para quem não conhece eu ensino aqui sobre programação e as aulas iniciais a gente tá mostrando como cria robôs na ik option tá estamos seguindo uma série de aulas onde eu ensino a criar o robô de mhi tá adicionando novas funções a cada vídeo e nesse vídeo de hoje eu vou ensinar uma função nova que muita gente pediu tanto aqui no canal quanto lá no nosso grupo do telegram inclusive se você ainda não está no canal do telegram Entra lá lá a gente tira
bastante dúvidas é e é uma comunidade ali onde a galera pode se ajudar também beleza e nesse vídeo então eu vou ensinar a criar a função automática do catalogador nos vídeos passados a gente já criou um catalogador onde mostra qual a melhor estratégia né o melhor par na estratégia de mhi e agora a gente vai fazer ele operar de forma automática então assim que você iniciar o robô ele cataloga e você pode colocar para ele é escolher o par automaticamente de acordo com a estratégia Beleza então sem enrolação vamos lá pro vídeo Então eu estou
com o código aberto da aula 12 que eu renomeei para boot tá esse essa aula aqui é a aula de médias móveis tá que a gente incluiu as médias móveis no robô e também tô com o código do catalogador aberto eu renomeei também tá nós vamos precisar deixar esses dois arquivos na mesma pasta e e antes de iniciar vocês T que entender bem a lógica tá em todo código que você for fazer toda a função que você for adicionar você tem que estudar a lógica para depois colocar no robô eh então a lógica disso aqui
seria o seguinte o robô vai iniciar normalmente e antes de iniciar a estratégia ele precisa fazer uma catalogação escolher o melhor par automático e começar a operar certo então para isso dentro do código principal a gente precisa importar no começo do robô a função do catalogador e lá embaixo antes de iniciar a estratégia chamar essa função né que vai rodar dentro de outro arquivo tá aqui só que eu preciso colocar esse todo esse esse código dentro de uma função certo então para isso a gente vai fazer o seguinte vamos criar aqui dentro uma função chamada
catag pode colocar o nome que você quiser tá catag E ela tem que ser uma função Então a gente vai colocar ali Def certo seleciona todo o código que tá aqui embaixo e aperta a tecla Tab daí ela vai pra frente e fica fica tudo dentro dessa função aqui ó certo mas tem um detalhe é repara que aqui dentro dessa função ele tá chamando a função de login e lá no início do robô também tem a função de login aqui a gente só precisa chamar isso uma vez então para isso Ó vou colocar aqui Import
aliás vou colocar aqui ó from catalogador port tag que é a função que eu acabei de criar lá dentro aqui vai o nome que você escolher lá dentro tá Para que o nome do arquivo tem que tá bem certinho também eu coloquei aqui catalogador porque o nome que eu deixei o arquivo é é catalogador eh e aqui na hora de chamar eu vou enviar a variável api que como ele já faz o login dentro do arquivo do robô na hora de eu enviar lá pra função do catalogador eu já envio com a variável api então
ó vamos supor que eu vou chamar ela aqui ó catag e aqui eu já vou estar enviando a variável api fazendo isso ele vai chamar a função lá de dentro a gente só tem que fazer umas alterações aqui ó Então dentro da função ela vai receber a variável api e a gente não precisa mais dessa parte aqui ó e-mail senha conectando até aqui então a gente vai tirar isso porque dentro dessa variável já está toda a conexão da e option então o resto vai funcionar normalmente ó ele vai repara que ele chama a função de
api né que vem lá do nosso código principal no robô certo então fazendo isso o login aqui já vai estar tudo certo e aqui a gente vai ter que mudar algumas coisas ó então a gente chama a função no catalogador Mas precisamos mudar algumas coisas ali para ele reconhecer isso de forma automática tá nessa parte aqui ó a gente retorna O resultado at o Gale 2 mas a função de assertividade ela já só calcula com o Gale 2 A gente precisa ter a assertividade sem Gale Gale 1 e Gale 2 não só do dois tá
então eu vou apagar essa parte aqui então aqui a gente tem a variável que soma todas as entradas e agora a gente precisa somar também somente a entrada de Win Então vou colocar aqui quantidade de Win vai receber a variável Win quantidade de gale um vai receber as entradas que deram Win mais a entrada de gale 1 a quantidade de gale 2 vai receber Win Gale 1 e Gale 2 fazendo isso a gente tem o total de entrada o total que deu in total que deu Gil um e o total que deu G 2 tá
fora isso ele é o resultado do L né então agora a gente precisa calcular a assertividade de cada um ó Então vamos colocar lá assertividade de Win a gente vai abrir um parênteses aqui ó então ele vai ser a quantidade de Win divididos pelo total de entrada Total entrada e aqui a gente tem que antes de fechar o último parênteses fazer aqui vezes 100 certo então isso aqui é uma fórmula que vai calcular a atividade ele pega o tanto de entrada dividido pelo quanto de Wing teve e multiplica por 100 só que ele vai dar
um número todo quebrado então a gente precisa arredondar ó h e aqui a gente coloca vírgula do para ser duas casas decimais Então feito isso tá pronto A nossa fórmula do Wind de primeira então agora vou duplicar ele aqui e vamos colocar é Gale um aqui a gente precisa colocar outra variável que a gente criou al em cima de quantidade de gale 1 vamos duplicar novamente Gale dois quantidade de gale dois então fazendo isso a gente já tem a assertividade de Win de primeira assertividade com Gale 1 e assertividade com Gale 2 agora a gente
precisa colocar isso dentro de um dicionário Então vamos lá ó a gente já tinha criado lá nas aulas anteriores a variável resultado Então resultado ponto aend e aqui nós vamos colocar par e agora todas as variáveis que a gente criou ali em cima da assertividade então ela vai ser a Win a gale 1 e Gale 2 então a gente vai ter uma tabelinha com o par e assertividade das três formas ali e antes de finalizar o código aqui preciso é ordenar essa lista do resultado pela linha que a gente definiu aqui em cima para isso
eu vou criar uma nova variável lista catalogada e ela vai receber uma função Nativa do Python de ordenação tá então el vai a gente vai colocar aqui ó sorted e dentro da dessa função a gente tem que passar a nossa lista resultado aqui né que a gente criou lá em cima mas aqui entra uma função bem avançada tá e eu não vou explicar ela com detalhes Mas ela é tipo uma fórmula pra gente definir ali Por que parâmetro ela vai fazer essa ordenação então ela vai receber aqui uma chave que a gente chama de i
e uma função lambda eu não vou entrar muito em detalhes dessa função aqui nesse vídeo para não ficar muito longo mas se você quiser saber mais deixa aqui nos comentários que eu posso estar gravando aqui um novo vídeo falando só sobre essa função e explicando melhor para vocês tá então dentro daqui a gente vai chamar uma função lambda com a seguinte fórmula x 2 pontos x e ela vai receber a linha tá é esse x seria como se fosse a planilha do resultado tá e aqui a gente vai chamar o x com a coluna né
que a gente definiu aqui em cima coluna um coluna dois ou três que seria referente à assertividade e a gente vai colocar então aqui uma vírgula para ela a gente colocar de forma reversa Tá então vamos colocar aqui ó reverse é igual true que deu erro Ah tá a gente só tem que tirar esse parênteses aqui que a gente não fechou a função ali ainda e ele ordena sempre do menor para maior se a gente deixar sem o reverse ele vai ordenar ali pelo com a menor assertividade e subindo e a gente quer que ele
primeiro mostre o maior certo então fazendo isso agora a gente pode fazer ele retornar essa lista aqui ó turn lista tá log e eu vou retornar também a linha lá dentro do robô a gente vai precisar saber qual é a linha que ele fez a ordenação para mostrar o melhor resultado também certo posso tirar essa parte de input e eu vou copiar essa função aqui de print porque daí eu vou colocar isso lá dentro do robô tá então a parte do catalogador já tá certinho vou salvar aqui e vamos voltar aqui pro robô então aqui
na parte onde a gente chamou a função da do catalogador preciso criar duas variáveis que é aquela lista catalog e a linha são as duas variáveis que a gente retorna lá dentro então eu vou colocar um print Cadê eu vou colocar um print aqui ó iniciando catalogação é sempre importante vocês organizarem o teu código mostrando tudo o que tá acontecendo para quando ele travar ou acontecer algum erro você saber em que parte ele travou se você não não identifica ali várias partes do teu código na hora que trava você tem muito mais trabalho em descobrir
Em que parte ele travou sabe então é bem importante vocês colocarem tudo bem documentado então iniciando catalogação seguida disso ele já vai entrar chamar toda a função e aqui a gente pode colar aquele código que copiamos lá do catalogador Ó é ele vai printar com a função tabulate eu preciso importar ela lá em cima a gente já faz isso em vez de resultado vai ser lista catalog e os headers aqui não tem mais todos esses esses headers a gente só tem par aqui vou deixar Win Gale 1 e Gale 2 vamos apagar isso aqui vou
importar tabulate lá em cima então ele vai ficar aqui ó from Tate portate se você não sabe o que que eu tô fazendo aqui volta na aula do catalogador que a gente criou lá atrás que lá tem explicadinho toda essa função que eu criei aqui dentro do catalogador tá aqui só tem que fechar o cetes de novo aí então fazendo isso ele vai me retornar aquela lista de forma já ordenada pelo Gale que você está utilizando a gente precisa Então definir qual é o ativo e a assertividade melhor então a gente vai colocar aqui ó
ativo é igual lista catalogada e a gente vai puxar a linha zero que é a primeira linha com a primeira coluna é como ele é uma lista a gente consegue fazer essa identação por números então a linha zero com a coluna zero ele vai retornar então o par da primeira linha certo e agora a gente vai colocar aqui a assertividade Vista catalogada vai receber da linha zero né e a coluna A gente vai usar aquela variável que veio lá do catalogador chamada linha certo então aqui ó dentro do catalogador ele vai retornar essa variável linha
que é referente ali ao Win de primeira Gale 1 ou Gale 2 ele vai retornar o valor da assertividade e agora a gente pode printar aqui embaixo ó é vou pular uma linha colocar aqui qual é o melhor par ó Então vamos lá melhor par dois pontos vírgula ele vai mostrar o ativo vírgula Vamos colocar uma barrinha para separar assertividade dois pontos colocar uma vírgula e a variável que a gente criou ali em cima então ele primeiro mostra a tabela depois mostra qual o melhor par e assertividade então aqui a gente já está puxando o
par de forma automática Mas você ainda pode fazer uma opção aqui de você é operar automaticamente ou definir manualmente Então vamos colocar aqui ó tipo do par vai ser um input para você definir e vamos fazer uma pergunta aqui ó deseja opar no melhor par ponto de interrogação e a pessoa pode preencher sim ou não é eu vou colocar aqui um ponto per isso vai fazer a resposta sempre ficar com letra maiúscula tá e embaixo Aqui a gente coloca aqui ó se o tipo do par for igual a não significa que a pessoa não quer
operar de forma automática ela quer definir um par e manualmente Então a gente vai criar de novo a variável ativo eu até posso copiar aqui de cima ó lembra que aqui no início a gente perguntava Qual é o ativo que a pessoa deseja operar eu vou copiar isso aqui e vou até tirar daqui que a gente não precisa mais dela e vou colar aqui embaixo ó então caso a pessoa não queira operar no melhor par automaticamente ele pergunta qual é o ativo que ela deseja operar é eu vou até colocar vou pular umas linhas aqui
ó para ficar mais organizado Então pula a linha ali e pula a linha também depois da pergunta aqui também certo então vamos rodar aqui para ver se tá tudo certinho se não ficou com nenhum erro na digitação eh rodar o arquivo boot pergunta então se quer na demo ou real demo conectou e começou a catalogação ó deu tudo certo Então veja aqui que ele mostrou a tabela na minha configuração eu tô com o Gale 2 ativado tá então você veja aqui que Ele ordenou aqui ó toda a linha do Gale 2 do maior pro menor
e aqui embaixo ele mostrou que o gbpjpy tá com a maior assertividade e ele perguntou ali ó deseja operar no melhor par Se eu colocar aqui sim ele já vai começar a operar nesse par que ele definiu aqui em cima se eu colocar não ele tem que perguntar de novo qual é o par vamos vamos ver ele ó não e perguntou ali ó Qual é o ativo que você deseja operar Euro USD ó então ele começou a operar no euros SD agora vamos religar e ver se ele dá algum erro aqui então vamos demo então
ele já mostrou ali agora vou colocar não aliás vou colocar sim que eu desejo operar no melhor par beleza ele começou a operar dessa forma aqui ele vai operar então no gbp jpy eu vou até ligar a min option aqui pra gente ver se ele entra da forma correta aqui ó então ele já vai dar já até deu o horário da entrada aqui ó e fez a entrada Então no gbpjpy que ele está com maior assertividade bem certinho ó virou a vela fez a entrada Lembrando aqui galera que vocês conseguem a aperfeiçoar muito isso aqui
a o intuito do desse vídeo é ensinar vocês como faz mas daí cabe a vocês melhorar o código é colocar funções um pouco mais avançadas também essa aqui é uma base para vocês terem uma ideia de como funciona eu fiz toda a catalogação no início do robô na sequência ele já chama a estratégia vai ficar operando sempre naquele par Mas se vocês quiserem dá para fazer ele mudar é a cada entrada ou por exemplo a cada cinco entradas ele fazer uma nova catalogação basta dentro da Estratégia vocês criarem uma variável conte as entradas por exemplo
então aqui ó assim que ele faz a entrada cadê ó assim que ele manda pra função de compra vocês podem colocar aqui uma variável chamada quantidade de entradas e você soma uma entrada e quando ele volta da função de compra aqui né então por exemplo aqui vocês fariam aqui ó quantidade de entrada mais igual a 1 tomaria uma entrada e assim que voltar da compra você pode fazer assim ó if quantidade de entrada por maior que cinco ele chama a função de catalogação novamente então você pode criar uma função chamada e nova catalogação né e
chamar ela aqui certo então quando ele rodar essa nova função ele vai mudar os parâmetros de par né e continuar operando no no par que você definir ali certo galera Então esse foi o vídeo de hoje se você ficou com qualquer dúvida aqui sobre essa aula ou tem alguma sugestão deixa aqui nos comentários ou pode deixar também lá no nosso canal do telegram Eu sempre tô olhando sempre tô olhando os comentários respondendo dúvidas aqui e a gente se for um assunto importante um assunto relevante para um próximo vídeo eu posso estar montando esse vídeo aí
para vocês beleza galera Valeu então até a [Música] próxima