Operações de negociação do cBot
Neste guia, explicamos em detalhe as principais operações de negociação que pode executar usando um cBot desenvolvido através da API Algo.
Estas são algumas das operações suportadas para cBots:
- Enviar ordens de mercado.
- Colocar ordens pendentes.
- Modificar ordens pendentes e posições abertas.
- Fechar posições e cancelar ordens.
- Subscrever eventos de negociação (posições, ordens e atividade relacionada).
Enviar ordens de mercado
Uma ordem de mercado é enviada para o servidor de negociação quando o método ExecuteMarketOrder() é chamado. Depois de criar um novo cBot, pode adicionar este método com várias propriedades definidas da ordem de mercado (símbolo, volume, take profit, stop loss, etc.). O exemplo abaixo coloca uma ordem de mercado quando o cBot é iniciado.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
1 2 3 4 5 6 7 8 9 10 | |
Dica
No exemplo, vários parâmetros da ordem foram intencionalmente deixados indefinidos "". Verifique as Referências para as assinaturas e ordem de todos os parâmetros de ExecuteMarketOrder().
Ao construir o cBot e adicionar uma instância, verá que uma ordem de mercado com os parâmetros especificados foi executada no início. Os separadores Posições e Registo no painel Observação da Negociação mostram as entradas correspondentes de posição e registo.
Colocar ordens pendentes
O cTrader suporta três tipos de ordens pendentes, nomeadamente ordens de stop, ordens de limite e ordens de stop-limit. Para colocar ordens pendentes no início, pode substituir a ordem de mercado pelos seguintes fragmentos de código no exemplo anterior do cBot.
1 2 3 | |
1 2 3 | |
Dica
Para inspecionar rapidamente os parâmetros de um método, comece a digitar o nome do método e um parêntese de abertura. Verá um pop-up do IntelliSense com informações adicionais.

Dica
Se clicar num método/parâmetro no cTrader Algo e pressionar F1, o painel de ajuda à direita da janela de código mostrará os resultados de pesquisa correspondentes. Se o cursor de texto permanecer fora da janela de código e pressionar F1, a janela Centro de Ajuda aparecerá para o auxiliar.
Verá os seguintes registos no painel Observação da Negociação após a construção e execução bem-sucedida do cBot.
Modificar ordens pendentes e posições abertas
Quando as ordens pendentes são colocadas, ficam disponíveis na sua coleção PendingOrders do cBot. Através desta coleção, pode aceder e modificá-las. As ordens pendentes existentes podem ser modificadas ajustando o seu nível de stop loss da seguinte forma.
1 2 3 4 5 6 7 8 9 10 11 | |
1 2 3 4 5 6 7 8 | |
O separador Registo do painel Observação da Negociação mostra que as três ordens pendentes foram modificadas com sucesso imediatamente após serem colocadas.

Depois de os diferentes tipos de ordens serem executados com sucesso, as posições serão abertas para a sua conta. Todas as posições abertas estão disponíveis na coleção Positions do seu cBot. De forma semelhante à modificação das ordens pendentes no exemplo anterior, pode modificar a posição aberta. Como as ordens de mercado são a forma mais rápida de abrir posições, vamos adicionar o método OnBar() com uma ação de modificação de posição ao primeiro cBot deste guia.
1 2 3 4 5 6 7 | |
1 2 3 4 | |
Como refletido no registo, a posição aberta foi modificada na primeira barra aberta.

Fechar posições e cancelar ordens
Pode encontrar um exemplo de cBot abaixo que fecha todas as posições abertas e cancela todas as ordens pendentes na sexta-feira às 11:00 (UTC) chamando o método OnTick().
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 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |

Subscrever eventos de negociação
O cTrader permite que os desenvolvedores de algoritmos subscrevam eventos de negociação e monitorizem a atividade de negociação, independentemente de terem sido iniciados por um cBot ou manualmente. Isto é conseguido ouvindo os eventos disponíveis nas duas coleções demonstradas anteriormente, Positions e PendingOrders.
Existem três eventos disponíveis para posições:
OpenModifiedClosed
Eles são acionados quando abre, modifica e fecha as posições na sua conta, respetivamente.
No fragmento de código abaixo, os três eventos são declarados no método OnStart() e os métodos a serem chamados são atribuídos. Estes criarão automaticamente as assinaturas de código para nós usarmos. Depois, as declarações Print() são adicionadas a cada um dos métodos de evento.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Quer seja você ou o cBot a executar os eventos Open, Modified e Closed, o algoritmo irá reagir a eles de cada vez com mensagens impressas, como mostrado no registo abaixo.

Da mesma forma, pode subscrever eventos relacionados com ordens pendentes. Existem quatro eventos disponíveis para ordens pendentes:
CreatedModifiedFilledCancelled
Os quatro eventos são declarados no método OnStart(), e os manipuladores de eventos são adicionados da seguinte forma.
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 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
Se subscrito aos eventos relacionados com ordens pendentes, o cBot irá reagir tanto às atividades de negociação manuais como programadas.

Resumo
Para concluir, o cTrader equipa os desenvolvedores de algoritmos com um impressionante arsenal de operações de negociação que podem ser executadas pelos cBots. Ao aplicá-las habilmente, pode perseguir estratégias de negociação personalizadas e sofisticadas.



