Ir para o conteúdo

Como criar um robô de negociação forex em Python utilizando IA

Este artigo e vídeo demonstram como criar um robô de negociação Python gratuito para o cTrader com IA.

Nota

O cTrader é a única plataforma importante que oferece suporte nativo para Python, permitindo que qualquer pessoa crie robôs Python poderosos para automatizar estratégias de negociação. Não é necessário qualquer adaptador ou solução complexa.

Embora o ChatGPT seja utilizado para a demonstração, os mesmos passos para criar robôs de negociação com IA aplicam-se ao Gemini, Claude, DeepSeek e outros.

Selecione um modelo Python

Abra o cTrader Algo no cTrader Windows ou Mac e, em seguida, clique em Novo para começar a criar um novo robô de negociação.

No assistente de criação de algoritmos, crie um novo algoritmo e atribua-lhe um nome.

Escolha Python como linguagem de programação e, em seguida, selecione a opção Utilizar um modelo.

O cTrader fornece uma grande variedade de modelos Python, abrangendo todos os tipos de estratégias, estilos de análise ou atividades de negociação automatizada. Estes algoritmos pré-construídos já contêm lógica de negociação completa e parâmetros ajustáveis, pelo que estão prontos a utilizar assim que os guardar e criar.

Nota

A coleção completa de modelos de algoritmos está disponível no assistente de criação de algoritmos no cTrader Windows ou Mac, e também pode aceder aos mesmos no nosso repositório público.

Suponhamos que nos especializamos em negociação de quebras. Por conseguinte, escolhemos o Sample Breakout cBot.

Nota

Estão disponíveis descrições detalhadas de modelos de algoritmos populares, incluindo o Breakout cBot, na nossa Base de Conhecimentos.

O Breakout cBot tira partido do movimento do preço para além de um nível de suporte ou resistência predefinido, e o indicador Bollinger Bands orienta as suas decisões. Vamos criar o robô de negociação e testá-lo.

Prima Ctrl+B ou clique em Criar na parte superior do editor de código.

Assim que a criação for bem-sucedida, clique em qualquer instância disponível sob o nome do cBot.

Na grelha principal, navegue até ao separador Testes de verificação. Realize um teste de verificação de um ano utilizando os parâmetros predefinidos para avaliar os resultados do robô. O cBot produz um ganho de 22% para este período, proporcionando 74 transações com ganhos de um total de 194, conforme registado no separador Estatísticas de negociação.

Atualize o cBot com IA

Com a assistência da IA, pode atualizar o código do robô de negociação para obter melhores resultados e identificar combinações de parâmetros que produzam retornos mais elevados.

O RSI é um indicador de momentum que filtra quebras fracas ou sinais falsos. Este indicador deve combinar perfeitamente e complementar as Bollinger Bands utilizadas no Sample Breakout cBot. Para referência, pode obter a integração do RSI para o Super cBot fornecida num artigo do Centro de Ajuda.

Pegue no excerto de integração do RSI, anexe-o a um prompt contendo todas as informações necessárias e, em seguida, introduza tudo na ferramenta de IA:

Prompt

Estude a integração do RSI no Super cBot e, em seguida, implemente os mesmos filtros de RSI no Special cBot.

[Código do Special cBot]

[Código do Super cBot com RSI integrado]

A IA pensa e, em seguida, fornece o código para o Special cBot integrado com RSI.

 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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import clr

clr.AddReference("cAlgo.API")

# Import cAlgo API types
from cAlgo.API import *

# Import trading wrapper functions
from robot_wrapper import *

class SampleBreakoutcBot():
    Label = "Sample Breakout cBot"

    def on_start(self):
        # Bollinger Bands for breakout consolidation logic
        self.bollingerBands = api.Indicators.BollingerBands(api.Source, api.Periods, api.Deviations, api.MAType)

        # Track consolidation bars
        self.consolidation = 0

        # --- RSI filter (same style as grid cBot) ---
        self.rsi_period = getattr(api, "RsiPeriod", 14)
        self.rsi_overbought = getattr(api, "RsiOverbought", 70)
        self.rsi_oversold = getattr(api, "RsiOversold", 30)
        self.rsi = api.Indicators.RelativeStrengthIndex(api.Bars.ClosePrices, self.rsi_period)

    def on_bar(self):
        top = self.bollingerBands.Top.Last(1)
        bottom = self.bollingerBands.Bottom.Last(1)

        # Detect consolidation via band height
        if top - bottom <= api.BandHeightPips * api.Symbol.PipSize:
            self.consolidation += 1
        else:
            self.consolidation = 0

        if self.consolidation >= api.ConsolidationPeriods:
            volumeInUnits = api.Symbol.QuantityToVolumeInUnits(api.Quantity)

            # Breakout up
            if api.Ask > top:
                if self.passes_rsi_filter():
                    api.ExecuteMarketOrder(TradeType.Buy, api.SymbolName, volumeInUnits, self.Label, api.StopLossInPips, api.TakeProfitInPips)
                    self.consolidation = 0
                else:
                    api.Print("RSI filter blocked BUY breakout (RSI={:.2f}, range {}-{})"
                              .format(self.get_rsi_value(), self.rsi_oversold, self.rsi_overbought))

            # Breakout down
            elif api.Bid < bottom:
                if self.passes_rsi_filter():
                    api.ExecuteMarketOrder(TradeType.Sell, api.SymbolName, volumeInUnits, self.Label, api.StopLossInPips, api.TakeProfitInPips)
                    self.consolidation = 0
                else:
                    api.Print("RSI filter blocked SELL breakout (RSI={:.2f}, range {}-{})"
                              .format(self.get_rsi_value(), self.rsi_oversold, self.rsi_overbought))

    # --- Helpers copied in spirit from the grid cBot ---
    def get_rsi_value(self):
        # Use the last CLOSED bar for stability
        return self.rsi.Result.Last(1)

    def passes_rsi_filter(self):
        r = self.get_rsi_value()
        return (r > self.rsi_oversold) and (r < self.rsi_overbought)

A seguir, peça à IA para recomendar definições de parâmetros ideais para o robô de negociação com base na nossa estratégia.

Prompt

Quero que o cBot gere sinais mais suaves e lentos que se combinem naturalmente com o filtro RSI.
Prefiro menos negociações, mas com rompimentos mais limpos.
Estou a definir o período de consolidação como 1 porque quero que o cBot atue imediatamente quando
a volatilidade se comprime.

Qual tipo de média móvel é mais indicado para isso?

A IA pensa e, em seguida, fornece algumas informações úteis. Recomenda o Welles Wilder Smoothing como o melhor tipo de média móvel para a nossa estratégia.

Aplique as recomendações da IA

Volte ao editor de código no cTrader e aplique as alterações recomendadas. Cole o código atualizado e, em seguida, crie o cBot atualizado.

Abra novamente o separador Testes de verificação. Defina a média móvel para Welles Wilder Smoothing, conforme recomendado pela IA, e execute um teste de verificação para o mesmo período de um ano.

Desta vez, o relatório de teste de verificação para o mesmo período mostra um ganho de 97%, uma melhoria significativa em comparação com os 22% proporcionados pela lógica original do cBot.

O novo resultado demonstra a eficácia da orientação da IA no aperfeiçoamento do desempenho dos robôs de negociação e na otimização dos seus parâmetros para proporcionar resultados excelentes. A taxa de sucesso do robô também melhorou significativamente, proporcionando 51 transações com ganhos de um total de 93.

Inicie o cBot na Nuvem

Graças à sincronização na nuvem, o novo cBot está automaticamente disponível em todas as aplicações cTrader onde o seu cTrader ID estiver ativo. Pode até iniciar o robô de negociação no cTrader Mobile ou Web.

Basta tocar no ícone Iniciar.

Como o cBot é executado na Nuvem, continua a negociar 24 horas sem parar, mesmo que a sua aplicação cTrader esteja fechada ou o seu dispositivo esteja desligado. Não é necessário VPS.

Monetize o cBot

Opcionalmente, pode monetizar o seu cBot na cTrader Store, uma plataforma de mercado segura e dinâmica que liga compradores e vendedores de produtos de negociação.

Para publicar um produto, selecione o cBot que pretende vender diretamente da Nuvem ou carregue um ficheiro e, em seguida, forneça os detalhes necessários. Após a publicação, o algoritmo fica disponível na cTrader Store, ficando acessível para milhões de utilizadores do cTrader comprarem.

Nota

A distribuição de algoritmos através da cTrader Store é completamente segura, uma vez que o seu código-fonte nunca é revelado ou carregado em nenhum lugar. A sua propriedade intelectual também é respeitada, uma vez que cada compra de produto é para um único utilizador e não é transferível.

Image title