Integração ao AB
Por: RafaelSilva2015 • 30/3/2015 • Bibliografia • 903 Palavras (4 Páginas) • 584 Visualizações
Terminal Cartezyan - Integração AmiBroker
- Introdução
A Q10 desenvolveu dois plug-ins para integração do terminal Cartezyan com o terminal AmiBroker. O primeiro fornece cotação real-time e base história, e o segundo provê roteamento de ordens para os provedores de OMS. Ambos necessitam que o terminal Cartezyan esteja aberto para funcionar.
No caso do plug-in de roteamento de ordens, é necessário ainda que exista uma conta OMS cadastrada e logada no terminal Cartezyan. Se existir mais de uma conta, o plug-in irá utilizar a conta que estiver marcada como “Conta Principal” em: Editar > Preferencias > Negociação > Contas
Também é necessário que o usuário Cartezyan tenha o serviço “PlugYan” liberado em suas permissões.
- Instalação
Para instalação dos plug-ins é necessário executar o instalador do Terminal Cartezyan. Ao final do processo, o instalador verifica se existe o AmiBroker instalado, caso exista, exibe a opção de instalar os plug-ins.
[pic 1]
Confirme e finalize o processo de instalação.
Caso o AmiBroker possua uma entrada “Default Database path” definido para um diretório diferente do padrão, será exibida a mensagem abaixo, pedindo ao usuário que altere as configurações em seu AmiBroker:
[pic 2]
- Configuração dos plug-ins
Para o correto funcionamento deve-se abrir primeiramente o terminal Cartezyan e depois o AmiBroker. Ao carregar o AmiBroker pela primeira vez após a instalação dos plug-ins, será exibida uma mensagem informando que existe um novo plug-in instalado.
A configuração do plug-in de cotações e histórico no AmiBroker é feita através do menu:
File > Database Settings
[pic 3]
Em Data source escolha “Cartezyan data Plug-in”
Em Number of bars escolha um valor entre 1 e 32.000. Essa é a quantidade de barras históricas que será exportada do Cartezyan para o Amibroker .
Em Base time interval selecione o período desejado. Esse é o período intraday dos candles que será importado para o AmiBroker e que servirá de base para a montagem dos demais períodos.
Exemplo: Em Base time interval foi selecionado 1min. Na tela de gráfico do AmiBroker foi selecionado um período intraday de 15 min, o AmiBroker irá consolidar 15 candles de 1 min. Para 30 min, o AmiBroker irá consolidar 30 candles de 1min. E assim em diante.
No botão Configure digite o mesmo usuário que estiver utilizando no Cartezyan.
Terminado essa etapa é só reiniciar o AmiBroker e aguardar a carga da base histórica e cotação. O Tempo de carga depende do numero de candles definido em Number of bars
- Roteamento de ordens
O plug-in para roteamento de ordens disponibiliza as seguintes funções para serem utilizadas nas formulas AFL:
Envio de nova Ordem. Retorna O Id da ordem
PlaceOrder( "Ativo", "Operação", Qtde, "Tipo", Pco, PcoDisp, "Validade", QtdeAparente, True );
Para tipo são aceitos: Limit, StopLimit, MKT
Exemplo:
orderid = ibc.PlaceOrder( "BVMF3", "Buy", 100, "LIMIT", 11.12, 0, "Day", 0, True );
Alteração de Ordem. Retorna O Id da ordem
ibc.ModifyOrder( "orderid ", "Ativo", "Operação", Qtde, "Tipo", Pco, PcoDisp, "Validade", QtdeAparente, True );
Exemplo:
orderid = ibc.ModifyOrder( "12345678", "WINQ13", "Buy", 2, "LIMIT", 45100, 0, "Day", 0, True );
Cancela Ordem. Retorna True ou False. Indica se houve erro no pedido
ibc.CancelOrder( "orderid") ;
Exemplo:
orderCancel = ibc.CancelOrder( "12345678");
Consulta Status da Ordem. Retorna status da ordem
orderstatus = ibc.OrderStatus("orderid") ;
Exemplo:
orderStatus = ibc.orderStatus( "12345678" );
Consulta Quantidade executada da Ordem. Retorna a quantidade
ibc.OrderQtdExec( "orderid ") ;
Exemplo:
qtdeExec = ibc.OrderQtdExec( "12345678" );
Consulta Quantidade Cancelada da Ordem. Retorna a quantidade
ibc.OrderQtdCancel( "orderid ") ;
Exemplo:
qtdeCancel = ibc.OrderQtdCancel( "12345678" );
Consulta preço medio executado da ordem. Retorna a quantidade
ibc.OrderAvgPrice( "orderid ") ;
Exemplo:
avgPco = ibc.OrderAvgPrice( "12345678" );
- Exemplo de código AFL
A seguir um exemplo de formula AFL.
A formula estancia o plug-in de roteamento de ordens, envia uma ordem e verifica o status da mesma;
ibc = GetTradingInterface("Q10");
if(ibc.IsConnected()){
_TRACE("Cartezyan e OMS Conectados!");
Ativo = "WINZ13";
Operacao = "Buy";
Quantidade = 1;
Tipo = "Limit"
Preco = 50000;
_TRACE("Enviando uma ordem de " + Ativo);
orderid=ibc.PlaceOrder(Ativo,Operacao,Quantidade,Tipo,Preco,0,"Day",0,True );
orderstatus = ibc.OrderStatus(orderid);
...