Uma posição não é uma carteira isolada por robô

Em netting, dois Expert Advisors que negociam o mesmo símbolo alteram uma posição comum. Uma ordem manual também a pode reduzir, aumentar ou inverter. O resultado apresentado na posição não se divide automaticamente entre estratégias. Se um robô A compra e outro B vende, B pode estar a fechar exposição criada por A em vez de abrir uma posição independente.

Separe três perguntas: quem enviou a instrução, que negócios executaram e como atribui economicamente entradas e saídas. Expert Advisor (EA) explica o programa; o identificador do programa não transforma a posição numa conta segregada. Em hedging, posições separadas facilitam algumas ligações, mas continuam a exigir custos e confirmações corretos.

Conserve a cadeia de identificadores

DEAL_MAGIC é uma etiqueta do negócio; DEAL_REASON indica a origem ou motivo documentado. Magic zero, sozinho, não prova intervenção manual: um programa pode usar zero. Comentários são auxiliares, não substitutos da cadeia. Relacione DEAL_ORDER, DEAL_POSITION_ID e POSITION_IDENTIFIER, guardando identificadores como valores exatos, sem arredondamentos de folha de cálculo.

POSITION_IDENTIFIER liga o ciclo; o ticket da posição pode mudar em operações de serviço. HistorySelectByPosition seleciona ordens e negócios desse identificador e devolve sucesso ou falha. Verifique o retorno e a integridade do histórico. Outras funções de seleção podem substituir as listas selecionadas: não percorra uma coleção supondo que permanece intacta depois de outra seleção.

O volume pedido não demonstra o volume executado. Use cada preenchimento real e a sua hora, preço e quantidade. Separe lucro, comissão, fee, swap e lançamentos de saldo que não estejam atribuídos ao negócio. Se falta a entrada, marque o caso por reconciliar; não invente preço a partir do comentário da saída.

Quatro negócios, duas convenções, um total

Modelo sintético, não histórico de cliente: EUR/USD linear, 100 000 EUR por lote, conta USD sem posição inicial. As compras são aos preços Ask indicados e as vendas aos Bid indicados; não subtraímos novamente um spread. Cada negócio custa 1 USD de comissão e não há swap ou outros encargos. Todos pertencem ao ciclo POSITION_IDENTIFIER 5001.

Negócio / ordemIniciadorExecuçãoPosição depois
7001 /5001EA ACompra 0,10 a 1,1000Long 0,10
7002 /5002EA BCompra 0,10 a 1,1020Long 0,20
7003 /5003ManualVenda 0,10 a 1,1010Long 0,10
7004 /5004ManualVenda 0,10 a 1,1030Sem posição

Após as duas entradas, o preço médio comum é 1,1010. A primeira saída realiza 0 USD pelo preço médio; a segunda realiza 20 USD. Resultado do ciclo fechado:20−4=16 USD. Este total não depende da convenção que usamos para apresentar o contributo de cada robô.

Na atribuição analítica FIFO, a saída 7003 é ligada à entrada A: (1,1010−1,1000)× 10 000=10 USD. A saída 7004 é ligada a B: (1,1030−1,1020)× 10 000=10 USD. Alocando uma comissão de entrada e outra de saída por parcela, A fica 8 USD e B 8 USD.

Na atribuição analítica LIFO,7003 fecha primeiro B e dá −10 USD;7004 fica com A e dá 30 USD. Depois das duas comissões por parcela: A 28 USD e B −12 USD. Ambos somam 16 USD. Isto não altera a contabilidade do servidor e não constitui uma regra fiscal portuguesa ou universal. É uma decisão de atribuição interna, a definir antes de avaliar estratégias.

Atribuição por robô: o total permanece 16 USDQuatro preenchimentos sintéticos EUR/USD,0,10 lote por negócio,100000 EUR/lote e 1 USD de comissão por negócio.EXEMPLO DE CÁLCULOFIFOA 8; B 8 USDLIFOA 28; B −12 USD
Atribuição por robô: o total permanece 16 USD. Quatro preenchimentos sintéticos EUR/USD,0,10 lote por negócio,100000 EUR/lote e 1 USD de comissão por negócio.

FIFO: A 8+B 8; LIFO: A 28+B(−12). A convenção muda a atribuição, não o total 16 USD.

FIFO
A 8; B 8 USD – Total 16 USD
LIFO
A 28; B −12 USD – Total 16 USD

Atribuição por robô: o total permanece 16 USD

Atribuição por robô: o total permanece 16 USDQuatro preenchimentos sintéticos EUR/USD,0,10 lote por negócio,100000 EUR/lote e 1 USD de comissão por negócio. FIFO: A 8+B 8; LIFO: A 28+B(−12). A convenção muda a atribuição, não o total 16 USD.Atribuição por robô: o total permanece 16 USDModelo educativo fictício · dados e pressupostos explicitados no texto0 USDFIFO · EA A8 USDFIFO · EA B8 USDLIFO · EA A28 USDLIFO · EA B-12 USDTotal: 16 USDTotal: 16 USDFIFO: A 8+B 8; LIFO: A 28+B(−12). A convenção muda a atribuição, não o total 16 USD.
FIFO: A 8+B 8; LIFO: A 28+B(−12). A convenção muda a atribuição, não o total 16 USD.

Desloque horizontalmente ou amplie o diagrama para ler todos os detalhes.

Comparar apenas lucro realizado dá uma conclusão errada

Pare agora a experiência após 7003 e assuma Bid 1,1010. Pela posição partilhada, o realizado é 0 e o flutuante é 0. Pela atribuição FIFO, A tem +10 realizado e a parcela remanescente B tem −10 não realizado. Com três comissões já cobradas, o resultado combinado é−3 USD nas duas leituras.

Mostrar apenas A com lucro de 7 USD depois das comissões atribuídas e omitir a parcela aberta transforma apresentação em distorção. Compare sempre realizado e não realizado à mesma cotação, hora e moeda. Quando 7004 fecha o ciclo, o flutuante passa a zero e o resultado líquido total passa a 16 USD. Resultado flutuante e realizado: a transferência não cria lucro distingue estas duas componentes.

Uma leitura em EUR sem confundir conversão e execução

Modelo adicional para apresentação numa conta EUR: use uma taxa fixa assumida de 1,10 USD por EUR apenas para converter todos os montantes deste exemplo.16 USD /1,10=14,5454…EUR, ou 14,55 EUR arredondados no total. FIFO dá 7,2727…EUR por robô; LIFO dá 25,4545…EUR para A e −10,9090…EUR para B. Conserve valores não arredondados ao reconciliar; somar duas parcelas já arredondadas pode diferir um cêntimo.

Esta taxa fixa é uma hipótese didática. A corretora pode converter cada lançamento em momento diferente; nesse caso, diferença cambial precisa de coluna própria. Não atribua automaticamente a diferença ao robô ou ao spread. Um relatório em EUR não muda os preços de execução originais em USD.

Procedimento para o diário

  1. Exporte o ciclo completo, incluindo ordens, negócios, identificador da posição, horas e componentes de custo. Confira quantidades executadas e posição atual.
  2. Defina FIFO, LIFO ou outra regra de atribuição antes da comparação. Guarde iniciador da saída e proprietário analítico em colunas diferentes.
  3. Reconcilie a soma das parcelas com a conta, incluindo flutuante se o ciclo continuar aberto e conversões reais se existirem. Mantenha lacunas como pendentes.

Se a convenção mudar, identifique a quebra de metodologia em vez de juntar séries silenciosamente. Netting MT5: como uma operação altera SL e TP explica como outra entrada também pode alterar a proteção partilhada. O diagnóstico serve para detetar interferência entre robôs, não para provar qual teria lucrado numa conta separada com outra execução.