ORDER_POSITION_ID - página 17

 

OrderGetInteger - trabalha somente com ordens pendentes no mercado

HistoryOrderGetInteger - trabalha com pedidos preenchidos na história

 

Se alguém mais estiver interessado, o código, o executável e o arquivo de log da EA estão anexados.

FORTES MT-5

Conclusões:

1. Até que a ordem seja completamente executada ou removida, NÃO há nenhum histórico sobre ela.

O ORDER_POSITION_ID para a ordem parcialmente executada não está definido.

Obrigado a todos vocês, eu peguei.

Arquivos anexados:
Test_orders.zip  26 kb
 
йSerj_Che:
HI 0 10:29:25.468 Comércio : troca compra 2,00 SBRF-9.14 no mercado
JE 0 10:29:25.531 Comércio : aceita compra de câmbio 2,00 SBRF-9,14 no mercado
NM 0 10:29:25.562 Comércios : troca compra 2,00 SBRF-9,14 no mercado colocado para execução em 88 ms
MN 0 10:29:25.562 Comércios : negócio #4522433 comprar 2,00 SBRF-9,14 a 6903 feito (com base no pedido #4988264)
IE 0 10:29:26.640 Comércio : venda em bolsa 2,00 SBPR-9,14 no mercado
DL 0 10:29:26.734 Comércio : venda de câmbio aceito 2,00 SBPR-9,14 no mercado
MQ 0 10:29:26.734 Negociações : venda de câmbio 2,00 SBPR-9,14 no mercado colocado para execução em 92 ms
KF 0 10:29:26.734 Negociações : negócio #4522434 vender 1,00 SBPR-9,14 a 5255 feito (com base no pedido #4988265)

DK 0 10:29:26.734 Comércio : negócio #4522435 vender 1,00 SBPR-9,14 a 5255 feito (com base no pedido #4988265)

agora é uma execução parcial.

Pessoal, vamos lá, esta listagem mostra que uma ordem (#4988265) foi executada por dois negócios (#4522435 &#4522434) e não tem nada a ver com uma execução parcial.

Digamos que queremos comprar 50 contratos VTBR-9.14 no mercado. Podemos comprar somente de fornecedores de liquidez, aqueles que colocam ordens de venda limite. Seu nível e volume podem ser vistos na metade superior do copo. Vamos dar uma olhada:

Fazemos um pedido de compra. Nosso pedido só pode ser executado por 4 vendedores diferentes. Podemos ver que podemos comprar 1 contrato em 3874, 40 contratos em 3875, 1 contrato em 3876 e 28 contratos em 3877. Isso significa que nosso pedido seria preenchido por 4 vendedores de uma só vez por 4 negócios:

Transação # Transação
Preço

Volume/

volume disponível.

Total

Volume

Hora
1
3874
1/1
112:21:341
2
3875
40/40
4112:21:351
3
3876
1/1
4212:21:363
4
3878
8/28
5012:21:365

Preste atenção ao tempo. O momento de fazer uma troca não coincide necessariamente com o momento de fazer um pedido. Deixe-me dar mais um exemplo para torná-lo mais claro:

Execução parcial.

Suponhamos que queremos comprar 100 contratos VTBR-9.14 a um preço não pior que 3873. Fixamos o BuyLimit para 100 contratos no nível de 3873. Entretanto, no momento em que fazemos o pedido, já existem vários vendedores que vendem seus contratos a um preço melhor que o especificado em nosso pedido:

Volume
Preço
1
3871
3
3872
1
3872
39
3872
263872

Imediatamente após a colocação desta ordem limite, 5 negócios serão realizados, que executará parcialmente nossa ordem de limite. no valor de 70 contratos (1+3+1+39+26).

Os negócios executados entrarão no histórico de transações e a própria ordem de limite ainda estará ativa e será visível na guia "Comércio" como ela é:

Uma vez que nosso pedido se funde, os pedidos de fusão limitam os pedidos da direção oposta, seu preço será a melhor oferta para aqueles que desejam vender seus contratos:

Volume
Preço
30 (Esta é nossa oferta)
3873
2 (as ofertas dos outros participantes são piores)
3872
12
3871

Como nossa oferta é melhor e o mercado é líquido, nossa ordem será preenchida por outros participantes do mercado com ordens opostas, de mercado ou pendentes.

Depois de um tempo, o pedido será preenchido e irá para a "História".

Se analisarmos todo o processo em termos de tempo, o seguinte será obtido:

1. Estabelecemos uma ordem de limite. Seu tempo de configuração corresponde a ORDER_TIME_SETUP_MSC.

2. Os negócios iniciados por esta ordem começam a ser acionados. Estes ofícios são imediatamente acrescentados à história. A ordem em si ainda está na aba "Comércio" e parece como é mostrado na figura acima.

3. Depois de algum tempo todos os negócios são acionados, o pedido ganha o volume necessário e é movido para o histórico de pedidos. Seu tempo de execução ORDER_TIME_DONE corresponde geralmente ao último negócio executado.

O pedido não atingiu o volume necessário devido a algumas razões (falta de liquidez, vencimento do pedido). Neste caso, será movido para a história do estado "parcialmente executado". Isto significa que nem todo o volume solicitado será executado por ofícios.

Observe a captura de tela desta ordem:

A ordem foi executada em 25 segundos (!) e todo esse tempo estava na aba de ordens ativas. E apenas o último comércio foi transferido para a história. Seu ORDER_TIME_DONE, respectivamente, é agora igual ao tempo do último comércio.

 

P/S Como prometi (a respeito da publicação da resposta do servicedesk).

Não receberei uma resposta do Service Desk porque retirei minha solicitação, pois não era mais necessária.

Agradeço ao Komposter por sua proposta de escrever um teste EA com

Eu o manterei atualizado e lhe fornecerei registros detalhados.

 
papaklass:

Tudo bem!? Você não quer agradecer à Integer, que esteve com você toda a noite e o fez PENSAR?

Ajude-se depois de tal atitude...

Você quer continuar?
 
papaklass:

Tudo bem!? Você não quer agradecer à Integer, que esteve com você toda a noite e o fez PENSAR?

Ajude-se depois de tal atitude...

Isso foi culpa dele, você não deveria tê-lo ajudado a pensar, você deveria ter feito isso por ele.
 
sandex:
Esse é o erro dele, ele não deveria ter ajudado a pensar, mas o fez por ele.

sandex:

você está olhando na parte errada,OrderGetInteger(ORDER_POSITION_ID) - você está tentando olhar na parte que não estava envolvida na abertura/modificação/fechamento da posição

você precisa se parecer com este HistoryOrderGetInteger(ticket,ORDER_POSITION_ID)

-----------------

Seu comentário?

Você quer continuar?

 
Mikalas:

sandex:

você está olhando na parte errada,OrderGetInteger(ORDER_POSITION_ID) - você está tentando olhar na parte que não estava envolvida na abertura/mudança/fechamento da posição

você precisa se parecer com este HistoryOrderGetInteger(ticket,ORDER_POSITION_ID)

-----------------

Seu comentário?

Você quer continuar?

Por quê? Por que você está fazendo isso? Como se o homem escrevesse disparates? Não seria um disparate se você não tivesse escrito seus próprios disparates. Você escreveu que a entrada da ordem aparece no histórico da ordem e ainda está no mercado.

Você quer continuar?

 

A conclusão, eu acho, é a última.

Nenhum fórum do qual eu já tenha participado ou no qual esteja participando

Não existe tal atitude dos usuários do fórum uns para com os outros!

Um fórum é uma comunidade de pessoas que pensam da mesma maneira resolvendo (discutindo)

É uma comunidade de pessoas com as mesmas idéias que podem trabalhar juntas para resolver problemas e ajudar umas às outras.

Todas as pessoas são DIFERENTES - uma captura a essência da questão na mosca, e a outra precisa de tempo,

para entendê-lo.

Pense nisso a seu bel-prazer!

P / S E agradeço a Yurich e komposter, precisamente porque.

Eu disse obrigado a Yurich e komposter porque eles não disseram nada desnecessário.

A um homem (mesmo se ele estiver errado ou equivocado).

Eles são um exemplo de usuários reais do fórum!

 
papaklass:

Já estou sentado no parterre. Ansioso por isso.... :)

Sasha, esta é uma posição muito confortável para se...
Razão: