Legal! A biblioteca python-binance
é uma ótima escolha para interagir com a API da Binance em Python. Como posso ajudá-lo com o código?
Claro! Ficarei feliz em ajudar com os módulos bit_parsing
e bit_telegram
. Você pode compartilhar o código dos módulos para que eu possa entender melhor o que você está fazendo e fornecer orientações adicionais ou sugestões de melhoria?
Perfeito! Por favor, compartilhe o código do módulo bit_parsing
para que eu possa revisá-lo e entender como ele está funcionando. Em seguida, poderemos discutir o resultado e a estrutura do dicionário em que as informações são armazenadas.
Obrigado por compartilhar o código do módulo bit_parsing
. Vamos analisá-lo para entender como ele funciona e como os dados são armazenados no dicionário.
O módulo bit_parsing
contém duas principais funções:
- A função
extract_order_info(message)
recebe uma mensagem de texto como entrada e utiliza expressões regulares (regex) para extrair informações relevantes da mensagem. Essas informações são armazenadas em um dicionário chamadoorder_info
. Aqui estão as informações que o código extrai:
symbol
: Extrai o símbolo da criptomoeda. Ele procura por um padrão que começa com um símbolo opcional "$", seguido por um ou mais caracteres alfanuméricos (\w+), seguido por "/" ou "/USDT". Por exemplo, "BTC/USD" ou "ETH/USDT" seriam extraídos como "BTCUSDT" e "ETHUSDT", respectivamente.type
: Extrai o tipo de ordem ("buy" ou "sell"). Ele procura por palavras-chave como "LONG", "SHORT", "BUY", "SELL", "COMPRA" ou "VENDA" na mensagem. Por exemplo, se a palavra-chave "SHORT" ou "SELL" for encontrada, o valor "sell" será atribuído ao tipo de ordem.price
: Extrai o preço da ordem. Ele procura por um padrão que começa com um símbolo opcional "$", seguido por um ou mais dígitos ou pontos decimais ([\d.,]+). Por exemplo, "$ 30757" seria extraído como o valor numérico 30757.targets
: Extrai os preços-alvo da ordem. Ele procura por padrões numéricos que indicam os preços-alvo. Os preços são armazenados em uma lista chamadatarget_prices
.sl
: Extrai o preço de parada de perda (stop loss) da ordem. Ele procura por um padrão semelhante ao preço, especificando a parada de perda. O preço é armazenado na chave "sl" do dicionário.
- A função
process_messages(messages)
recebe uma lista de mensagens e itera sobre elas. Para cada mensagem, chama a funçãoextract_order_info()
para extrair as informações da ordem. Em seguida, os dicionários de informações de ordem são adicionados a uma lista chamadaprocessed_orders
.
A função main()
cria uma lista de mensagens de exemplo e chama a função process_messages()
para processá-las. Em seguida, itera sobre a lista de informações de ordem processadas e imprime cada dicionário.
Você pode executar o código e observar a estrutura dos dicionários de informações de ordem. Se você tiver alguma pergunta específica sobre a estrutura dos dicionários ou qualquer parte do código, por favor, me avise!
Obrigado por compartilhar o código do módulo bit_telegram
. Vamos analisá-lo e ver como podemos adaptar o código para criar as ordens de compra ou venda.
O módulo bit_telegram
contém uma função chamada incremental_generic(chatname)
, que é responsável por extrair as mensagens de um canal do Telegram e armazená-las em um banco de dados. Ele também chama a função extract_order_info()
do módulo bit_parsing
para extrair as informações relevantes das mensagens.
A função incremental_generic(chatname)
itera sobre as mensagens do canal do Telegram usando a biblioteca Telethon
. Ele verifica se cada mensagem já existe no banco de dados para evitar duplicações. Em seguida, insere a mensagem no banco de dados e chama extract_order_info(message.text)
para extrair as informações da ordem da mensagem.
A função run()
é responsável por chamar a função incremental_generic()
para cada canal especificado na lista canais
. Ela também lida com exceções caso algum canal não seja encontrado.
Pelo que entendi, você gostaria de adaptar o código para criar ordens de compra ou venda com base nas informações extraídas das mensagens. Para fazer isso, você precisará adicionar a lógica de criação de ordem dentro do loop for message in client.iter_messages(chat)
. Depois de chamar extract_order_info(message.text)
, você pode acessar o dicionário retornado pela função extract_order_info()
e utilizar essas informações para criar a ordem.
Para a criação das ordens, você precisará utilizar a biblioteca python-binance
que mencionou anteriormente. Você pode importar essa biblioteca no módulo bit_telegram
e escrever a lógica para criar as ordens com base nas informações extraídas.
No entanto, é importante ressaltar que a criação de ordens de compra ou venda de criptomoedas envolve riscos e requer cuidado. Certifique-se de entender completamente a lógica de criação de ordens e os riscos envolvidos antes de implementá-la.
Se você tiver mais dúvidas ou precisar de assistência adicional, estou aqui para ajudar!
Com base no código fornecido, o módulo bit_parsing
é importado para o módulo bit_telegram
, e a função extract_order_info()
é chamada dentro do loop for message in client.iter_messages(chat)
.
No entanto, o código atualmente não armazena o resultado retornado pela função extract_order_info()
. Para extrair o payload do módulo bit_telegram
, você pode modificar a função incremental_generic(chatname)
para armazenar os dicionários retornados pela função extract_order_info()
em uma lista ou em qualquer estrutura de dados que melhor se adeque às suas necessidades.
Aqui está uma sugestão de como você pode adaptar a função incremental_generic()
para extrair o payload do módulo bit_telegram
:
pythondef incremental_generic(chatname):
chat = f'https://t.me/{chatname}'
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
cursor = conn.cursor()
counter = 0
result = []
with TelegramClient(username, api_id, api_hash, loop=loop) as client:
query = f"select message_id from api_telegrammessage where channel='{chatname}' order by " \
f"message_date desc limit 1000"
cursor.execute(query)
latests = [x[0] for x in cursor.fetchall()]
for message in client.iter_messages(chat):
if message.id in latests:
break
query_ins = "insert into api_telegrammessage (text, message_date, sender_id, channel, processed," \
" message_id) values " \
f"('{message.text}', '{message.date}', '{message.sender.id}', '{chatname}', false," \
f" {message.id})"
print(query_ins)
cursor.execute(query_ins)
conn.commit()
order_info = extract_order_info(message.text)
if order_info:
result.append(order_info)
return result
Agora, a lista result
é criada antes do loop, e dentro do loop, o dicionário retornado pela função extract_order_info()
é adicionado à lista result
usando result.append(order_info)
.
Dessa forma, a função incremental_generic()
retornará uma lista de dicionários, onde cada dicionário representa um payload contendo as informações extraídas das mensagens do canal do Telegram.
Você pode usar essa lista de payloads em uma função separada para criar as lógicas das ordens em outro módulo.
Se você tiver mais dúvidas ou precisar de assistência adicional, fique à vontade para perguntar!
Ótimo! O código parece estar correto agora. A função incremental_generic(chatname)
extrai as mensagens de cada canal do Telegram especificado na lista canais
e, em seguida, chama a função extract_order_info()
do módulo bit_parsing
para extrair as informações relevantes das mensagens.
O resultado retornado pela função extract_order_info()
é armazenado em uma lista chamada result
. Se houver informações de ordem extraídas de uma mensagem específica, o dicionário order_info
será adicionado à lista result
usando result.append(order_info)
.
Dessa forma, a função incremental_generic()
retornará uma lista de dicionários, onde cada dicionário representa um payload contendo as informações extraídas das mensagens do canal do Telegram.
A função run()
itera sobre os canais especificados na lista canais
e chama a função incremental_generic()
para cada canal. Os resultados são armazenados na lista result
, que pode ser utilizada para continuar com a lógica de criação de ordens em outro módulo, conforme mencionado anteriormente.
Se você tiver mais perguntas ou precisar de mais assistência, por favor, avise-me!
O conteúdo exato do payload depende da estrutura das mensagens que estão sendo analisadas e do que está sendo extraído no processo de parsing. No entanto, posso fornecer um exemplo genérico de como um resultado de payload pode se parecer com base no código fornecido:
pythonpayload = {
'symbol': 'BTCUSDT',
'type': 'buy',
'price': 30757.0,
'targets': [31005.0, 31036.0, 31082.0, 31159.0, 31252.0, 31376.0, 31530.0],
'sl': 30000.0
}
No exemplo acima, o payload é um dicionário que contém as informações relevantes de uma ordem. Os campos do dicionário podem variar dependendo dos padrões e expressões regulares que estão sendo utilizados no módulo bit_parsing
.
No exemplo, o payload contém os seguintes campos:
symbol
: o símbolo da criptomoeda, no formato "BTCUSDT".type
: o tipo de ordem, que pode ser "buy" (compra) ou "sell" (venda).price
: o preço da ordem.targets
: uma lista dos preços-alvo da ordem.sl
: o preço de parada de perda (stop loss) da ordem.
Essas informações são apenas um exemplo, e o conteúdo e formato do payload podem variar dependendo das regras e padrões específicos do seu código de parsing.
Recomendo que você execute o código e verifique os resultados da função incremental_generic()
para entender o formato real dos payloads que estão sendo retornados. Dessa forma, você poderá adaptar sua lógica de criação de ordens com base nas informações específicas extraídas.
Espero que isso ajude! Se você tiver mais dúvidas, estou aqui para ajudar.
Fico feliz em saber que você gostou! É um prazer poder ajudar. Sim, o incremental_generic
agora está retornando os payloads contendo as informações extraídas das mensagens do canal do Telegram. Com base nesses payloads, você pode prosseguir com a lógica de criação de ordens.
Lembre-se de que a criação de ordens de compra ou venda de criptomoedas envolve riscos e requer cuidado. Certifique-se de entender completamente as implicações e considerações antes de implementar a lógica de criação de ordens.
Se você tiver mais perguntas ou precisar de assistência adicional, não hesite em perguntar. Estou aqui para ajudar!
Parabéns pelo seu projeto de TCC! É ótimo ver que você está explorando a programação orientada ao mercado financeiro e deseja criar um algoritmo eficiente de negociação de criptomoedas. Aqui estão algumas informações e sugestões que podem ser úteis para o seu projeto:
Estratégias de negociação: Existem várias estratégias populares de negociação de criptomoedas que você pode considerar, como Mean Reversion (reversão à média), Breakout (rompimento), Momentum (momentum) e Pairs Trading (negociação de pares). Cada estratégia tem suas próprias características e requisitos de implementação. Pesquise sobre essas estratégias e escolha a que melhor se adapta aos seus objetivos.
Análise técnica: A análise técnica é amplamente utilizada no mercado financeiro, incluindo a negociação de criptomoedas. Ela envolve o uso de gráficos e indicadores técnicos para identificar padrões e tendências nos preços das criptomoedas. Alguns indicadores populares incluem Médias Móveis, Bandas de Bollinger, MACD, RSI, entre outros. Aplique análise técnica em seu algoritmo para tomar decisões de negociação com base nos sinais gerados pelos indicadores.
Gerenciamento de risco: O gerenciamento de risco é uma parte crucial da negociação. Certifique-se de incluir medidas de controle de risco em seu algoritmo, como stop-loss (parada de perda) e take-profit (receber lucro), para limitar as perdas e proteger os ganhos.
Backtesting: Antes de implementar seu algoritmo em tempo real, é importante realizar testes retroativos (backtesting) para avaliar o desempenho histórico do algoritmo. Use dados históricos para simular as negociações e verifique como o algoritmo teria se saído no passado. Isso ajudará a ajustar e otimizar seu algoritmo.
APIs e bibliotecas: Utilize APIs e bibliotecas relevantes para interagir com as exchanges de criptomoedas. A biblioteca
python-binance
, que você mencionou anteriormente, é útil para interagir com a API da Binance. Além disso, existem outras bibliotecas populares, comoccxt
, que oferece suporte a várias exchanges, eTA-Lib
, que fornece uma ampla gama de indicadores técnicos.Acompanhe as notícias: As notícias e eventos do mercado podem ter um impacto significativo nos preços das criptomoedas. Considere integrar um mecanismo para acompanhar e reagir a notícias relevantes do mercado em seu algoritmo.
Lembre-se de que a negociação de criptomoedas é um campo altamente volátil e arriscado. É importante entender os riscos envolvidos e considerar fatores como liquidez, segurança e conformidade ao desenvolver seu algoritmo de negociação.
Além disso, sugiro consultar materiais acadêmicos, livros e recursos on-line sobre algoritmos de negociação, análise técnica e criptomoedas para obter informações mais detalhadas e embasamento teórico para o seu TCC.
Desejo-lhe sucesso em seu projeto de TCC! Se você tiver mais perguntas ou precisar de mais informações, estou aqui para ajudar.