A Kraken restringe os clientes de estarem simultaneamente nas duas pontas de suas próprias ordens, ou seja, estar do lado vendedor e comprador na mesma negociação. Isso previne a prática conhecida como "wash trading", que é uma forma de manipulação do mercado. Nela, um trader compra e vende o mesmo instrumento financeiro para criar uma atividade artificial e enganosa no mercado.
É possível inserir ordens que se complementem (IDs de ordem válidos serão criados), mas a ordem "taker" será imediatamente cancelada. O fluxo específico quando duas ordens a partir da mesma conta são combinadas está descrito abaixo.
Se duas ordens de quantidades iguais resultarem em autoexecução, a ordem maker (limite) permaneceria no livro de ordem e a ordem taker (a mercado) seria cancelada, independentemente do tamanho da ordem.
No caso de uma ordem poder ser parcialmente executada a partir do livro de ordens, o restante do volume que resultaria em uma autoexecução seria cancelado.
Se houver duas ordens em espera, a primeira teria prioridade de tempo e a segunda seria cancelada juntamente com qualquer volume remanescente da terceira ordem.
Dentro da interface da conta, uma ordem cancelada devido à prevenção de autonegociação seria mostrada com o status de "Cancelada" e a razão mostrada seria "Não é possível autonegociação":
A seguir, há um exemplo do fluxo de ordem e do status da ordem por meio da Kraken REST API (https://support.kraken.com/hc/en-us/categories/360000080686-API). A chamada de API insere uma ordem limite de compra no topo do livro de ordem XDG/USD, seguida imediatamente por uma ordem a mercado de venda para XDG/USD, o que resulta no cancelamento automático da ordem a mercado devido a restrição de autoexecução.
$ ./krakenapi AddOrder pair=xdgusd type=buy ordertype=limit price=0.002449 volume=5000
{"error":[],"result":{"descr":{"order":"buy 5000.00000000 XDGUSD @ limit 0.0024490"},"txid":["OQMVWA-LSE57-4LPF45"]}}
{"error":[],"result":{"descr":{"order":"buy 5000.00000000 XDGUSD @ limit 0.0024490"},"txid":["OQMVWA-LSE57-4LPF45"]}}
$ ./krakenapi AddOrder pair=xdgusd type=sell ordertype=market volume=5000
{"error":[],"result":{"descr":{"order":"sell 5000.00000000 XDGUSD @ market"},"txid":["OSLIEB-IQBNV-K7P5ET"]}}
{"error":[],"result":{"descr":{"order":"sell 5000.00000000 XDGUSD @ market"},"txid":["OSLIEB-IQBNV-K7P5ET"]}}
$ ./krakenapi QueryOrders txid=OSLIEB-IQBNV-K7P5ET
{"error":[],"result":{"OSLIEB-IQBNV-K7P5ET":{"refid":null,"userref":0,"status":"canceled","reason":"Cannot trade with self","opentm":1588683502.71,"closetm":1588683502.7117,"starttm":0,"expiretm":0,"descr":{"pair":"XDGUSD","type":"sell","ordertype":"market","price":"0","price2":"0","leverage":"none","order":"sell 5000.00000000 XDGUSD @ market","close":""},"vol":"5000.00000000","vol_exec":"0.00000000","cost":"0.000000000","fee":"0.000000000","price":"0.000000000","stopprice":"0.000000000","limitprice":"0.000000000","misc":"","oflags":"fciq"}}}
{"error":[],"result":{"OSLIEB-IQBNV-K7P5ET":{"refid":null,"userref":0,"status":"canceled","reason":"Cannot trade with self","opentm":1588683502.71,"closetm":1588683502.7117,"starttm":0,"expiretm":0,"descr":{"pair":"XDGUSD","type":"sell","ordertype":"market","price":"0","price2":"0","leverage":"none","order":"sell 5000.00000000 XDGUSD @ market","close":""},"vol":"5000.00000000","vol_exec":"0.00000000","cost":"0.000000000","fee":"0.000000000","price":"0.000000000","stopprice":"0.000000000","limitprice":"0.000000000","misc":"","oflags":"fciq"}}}
O detalhamento completo dos campos ou valores das ordens está disponível na documentação do QueryOrders (https://www.kraken.com/features/api#query-orders-info) e ClosedOrders (https://www.kraken.com/features/api#get-closed-orders).