Como criar um cBot através do ChatGPT
A IA generativa está em ascensão e criar um cBot sem ter de escrever uma única linha de código já não é um sonho, é realidade. Neste artigo e no vídeo correspondente, mostraremos como pode criar um cBot usando o ChatGPT. Também vamos demonstrar como, em apenas alguns minutos, pode avaliar o código do cBot fornecido pelo ChatGPT e garantir que o seu bot gerado por IA está operacional.
Criar o prompt correto
Para os fins deste vídeo, usaremos o modelo GPT-3.5. É gratuito para todos e, apesar de ter menos funcionalidades em comparação com os modelos GPT mais recentes, produz ótimos resultados.
A primeira parte da criação de um ótimo cBot com o ChatGPT é escrever o prompt correto. Aqui estão algumas regras para o que faz um bom prompt:
1. Incentive o ChatGPT a tentar agir como um programador profissional de cBot.
Pode conseguir isto digitando um prompt inicial com as palavras "Vamos jogar um jogo onde você é um programador de algoritmos qualificado para o cTrader..." ou algo como "Finja ser um programador profissional de cBots para o cTrader..."
2. Seja específico.
Quanto mais detalhes fornecer ao ChatGPT, melhor. Prompts como "Crie um cBot lucrativo para mim..." resultariam em muita confusão por parte da IA.
Recomendamos especificar cada parte do seu cBot com a maior precisão possível. Considere quais parâmetros deve ter, a que condições deve reagir e quais operações de negociação deve realizar. Se estiver a criar um painel de negociação personalizado, considere quais elementos de UI deve ter e onde devem ser colocados.
3. Seja educado e respeitoso.
Isto pode parecer surpreendente, mas pesquisas mostraram que ser educado com o ChatGPT realmente melhora a qualidade do resultado. Inclua frases como "Eu agradeceria se...", "Seria bom se..." ou algo semelhante.
Criar um cBot de negociação por cores
Para começar, queremos apenas criar um cBot simples que coloque uma nova ordem de mercado em cada abertura de barra. A direção da ordem depende se a barra anterior foi verde ou vermelha. Se a barra foi vermelha, queremos colocar uma ordem de venda e se foi verde, queremos colocar uma ordem de compra.
Aqui está como podemos fazer isso fornecendo os prompts corretos.
- Frase inicial: "Finja ser um programador profissional de cBots para o cTrader, escreva código muito simples e compreensível."
- Requisitos específicos: "Crie um cBot. Em cada barra, deve colocar uma nova ordem de mercado sem mecanismos de proteção. O volume da ordem (em unidades) deve ser um parâmetro personalizável. Uma ordem de compra deve ser colocada se a barra anterior foi verde. Uma ordem de venda deve ser colocada se a barra anterior foi vermelha."
- Educação: "Eu realmente agradeceria se fizesse esta tarefa, obrigado!"
O código exato que o ChatGPT produz pode variar, mas em qualquer caso, podemos simplesmente copiar e colar na janela do editor de código para ver se está correto e se implementa a lógica desejada.
Geralmente, há apenas alguns erros não críticos que precisam ser corrigidos. No nosso caso, a única coisa que precisava de correção era mudar o objeto Symbol no método ExecuteMarketOrder para a string SymbolName. Aqui está o código final que obtivemos depois de fazer tudo isso.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | |
Como de costume, guardamos e compilamos o bot. Na aplicação Trade, anexamos a instância do bot a um gráfico e vemos se funciona como pretendido. O bot funciona perfeitamente e reage à cor das barras passadas, colocando novas ordens. O volume da ordem também é um parâmetro personalizável.
Nota
Note que nem sequer tivemos de ler o código produzido pelo ChatGPT. Simplesmente corrigimos todos os avisos exibidos no editor de código e depois lançámos o bot.
Criar um cBot de negociação de tendência
Embora o cBot anterior funcionasse muito bem, usava uma lógica simples e não prestava atenção às tendências do mercado. Vamos tentar criar algo mais complexo usando a mesma abordagem para os prompts como antes.
- Frase inicial: "Vamos imaginar que você é um programador de cBot habilidoso para o cTrader. Eu serei o seu cliente."
- Requisitos específicos: "Crie um cBot. Em cada barra, deve verificar se a média móvel de 50 dias está acima ou abaixo da média móvel de 200 dias. Se estiver acima, o bot deve colocar uma ordem de compra. Se estiver abaixo, o bot deve colocar uma ordem de venda. O bot não deve colocar uma ordem se já existir uma posição aberta na mesma direção. O volume da ordem deve ser um parâmetro personalizável."
- Obrigado pela ajuda!
Mais uma vez, vamos simplesmente copiar e colar o código fornecido pelo ChatGPT na janela do editor de código e tentar construir o bot. Eis todos os erros de compilação que obtemos:
- O código está a utilizar o membro da API
MarketSeriesobsoleto. Podemos substituí-lo pela coleçãoBars.ClosePrices. - Temos de substituir novamente o argumento
SymbolporSymbolName. - Devemos também eliminar alguns argumentos desnecessários dos métodos
ExecuteMarketOrder, pois não se enquadram em nenhuma das sobrecargas de método disponíveis.
Podemos também analisar como a nossa lógica foi implementada. No método OnStart(), inicializamos as nossas médias móveis. O ChatGPT definiu os períodos das médias móveis como parâmetros personalizáveis, embora não o tenhamos pedido. Podemos deixar como está sem afetar a lógica principal.
No entanto, no método OnBar(), podemos ver que o bot só coloca novas ordens quando não existem posições abertas (Positions.Count ==0). Isto não é o que pretendemos, pois também queremos verificar a direção da posição. Podemos modificar ligeiramente o código para obtermos o seguinte bot.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | |
Utilizámos o método Positions.FindAll(string label) para obter todas as posições com uma determinada etiqueta e calcular a sua contagem.
Quando construímos o bot, podemos adicioná-lo a um gráfico. Vamos também adicionar médias móveis de 50 e 200 dias para podermos avaliar os comportamentos do cBot. Depois de esperarmos um pouco, podemos ver que o bot funciona como esperado. São colocadas novas ordens quando necessário, mas não existe mais do que uma posição aberta numa determinada direção.
Criar um cBot utilizando outra IA
Resumo
O ChatGPT pode ser uma ferramenta valiosa quando precisa de criar rapidamente um cBot com uma lógica precisamente definida. Embora o ChatGPT produza alguns erros, estes são geralmente insignificantes e podem ser corrigidos rapidamente.
