[Manual Stark] Filtro de API Externa
No robô Stark é possível realizar integrações de API (RESTful) externas que poderão ser utilizadas como Sinal ou Filtro de entradas, este recurso possibilita a criação de uma inteligência externa para melhorar as tomadas de decisões do robô.
Você poderá utilizar todos os recursos do robô para criação de um sinal entrada e adicionalmente utilizar sua API com um filtro extra, ou ainda, poderá apenas informar o valor "1" nas expressões de Compra e Venda e deixar toda a lógica de entrada com a sua API.
Para utilizar o filtro de API externa basta configurar a URL da sua API nos parâmetros do robô e fazer a liberação do domínio no MT5:
O Stark fará as requisições à sua API de acordo com o tipo do seu setup, podendo ser A CADA TICK (limitado a 1 requisição por segundo) ou A CADA CANDLE;
A requisição será sempre como POST e os dados que serão enviados no POST são:
name_mt5 [string]=> Nome da Conta MT5 onde o robô está rodando.
login_mt5 [int]=> Login da Conta MT5 onde o robô está rodando.
real_account [int]=> Se for uma conta real esse campo será 1, se for demo será 0;
server_mt5 [string]=> Nome do servidor da conta MT5 onde o robô está rodando.
symbol [string]=> Código do ativo do gráfico onde o robô está rodando.
price [double]=> Preço do ultimo negócio do ativo do gráfico onde o robô está rodando.
set_name [string]=> Nome do Set que está rodando.
magic_number [int]=> MagicNumber do Set que está rodando.
open_position [double]=> Valor de lotes da posição aberta. Se maior que zero está comprado, se menor que zero está vendido e zero é sem posição aberta.
open_profit [double]=> Lucro da Posição aberta.
stark_version [double]=> Versão do robô que está rodando.
seu-parametro [string]=> Parâmetro de autenticação personalizado que poderá ser definido nos parâmetros do robô.
Sua API receberá todos os dados acima e poderá tomar a decisão e responder com um sinal de compra ou venda para o Stark, este sinal será dado no Response da requisição em formato JSON, conforme exemplo abaixo:
{ buy: 1, sell: 0 }
No exemplo acima está permitindo abertura de uma posição de compra ou ainda o fechamento de uma posição de venda aberta, caso o robô esteja configurado para isso, como exemplo abaixo:
Você pode ainda informar o TP e SL da operação, para isso deve incluir os dados no Response:
{ buy: 1, sell: 0, tp: 123000, sl: 122000}
Para que o Stark respeite esses valores de TP e SL é preciso fazer a configuração abaixo:
A sua API poderá ser desenvolvida na linguagem que desejar, as linguagens mais comuns para essa finalidade são Python e PHP, clique abaixo nos exemplos de API que deseja baixar;
API em PHP
API em Python
ATENÇÃO: Nenhuma alteração deve ser realizada nos parâmetros do setup enquanto o mesmo estiver com operação aberta, isso poderá causar a perda de informações em memória e prejudicar a operação em andamento. Para realizar qualquer alteração você deve aguardar a posição do magic number estar completamente zerada, é recomendável ainda desligar o algotrading antes da alteração e voltar a ligar somente quando o setup estiver totalmente recarregado.
Você poderá utilizar todos os recursos do robô para criação de um sinal entrada e adicionalmente utilizar sua API com um filtro extra, ou ainda, poderá apenas informar o valor "1" nas expressões de Compra e Venda e deixar toda a lógica de entrada com a sua API.
Para utilizar o filtro de API externa basta configurar a URL da sua API nos parâmetros do robô e fazer a liberação do domínio no MT5:
O Stark fará as requisições à sua API de acordo com o tipo do seu setup, podendo ser A CADA TICK (limitado a 1 requisição por segundo) ou A CADA CANDLE;
A requisição será sempre como POST e os dados que serão enviados no POST são:
name_mt5 [string]=> Nome da Conta MT5 onde o robô está rodando.
login_mt5 [int]=> Login da Conta MT5 onde o robô está rodando.
real_account [int]=> Se for uma conta real esse campo será 1, se for demo será 0;
server_mt5 [string]=> Nome do servidor da conta MT5 onde o robô está rodando.
symbol [string]=> Código do ativo do gráfico onde o robô está rodando.
price [double]=> Preço do ultimo negócio do ativo do gráfico onde o robô está rodando.
set_name [string]=> Nome do Set que está rodando.
magic_number [int]=> MagicNumber do Set que está rodando.
open_position [double]=> Valor de lotes da posição aberta. Se maior que zero está comprado, se menor que zero está vendido e zero é sem posição aberta.
open_profit [double]=> Lucro da Posição aberta.
stark_version [double]=> Versão do robô que está rodando.
seu-parametro [string]=> Parâmetro de autenticação personalizado que poderá ser definido nos parâmetros do robô.
Sua API receberá todos os dados acima e poderá tomar a decisão e responder com um sinal de compra ou venda para o Stark, este sinal será dado no Response da requisição em formato JSON, conforme exemplo abaixo:
{ buy: 1, sell: 0 }
No exemplo acima está permitindo abertura de uma posição de compra ou ainda o fechamento de uma posição de venda aberta, caso o robô esteja configurado para isso, como exemplo abaixo:
Você pode ainda informar o TP e SL da operação, para isso deve incluir os dados no Response:
{ buy: 1, sell: 0, tp: 123000, sl: 122000}
Para que o Stark respeite esses valores de TP e SL é preciso fazer a configuração abaixo:
A sua API poderá ser desenvolvida na linguagem que desejar, as linguagens mais comuns para essa finalidade são Python e PHP, clique abaixo nos exemplos de API que deseja baixar;
API em PHP
API em Python
ATENÇÃO: Nenhuma alteração deve ser realizada nos parâmetros do setup enquanto o mesmo estiver com operação aberta, isso poderá causar a perda de informações em memória e prejudicar a operação em andamento. Para realizar qualquer alteração você deve aguardar a posição do magic number estar completamente zerada, é recomendável ainda desligar o algotrading antes da alteração e voltar a ligar somente quando o setup estiver totalmente recarregado.
Atualizado em: 01/02/2023
Obrigado!