Dúvida acerca da política de preenchimento em ordens pendentes

 

Salve galera!


Sou iniciante na programação MT5 e recentemente terminei o meu EA e, ao executá-lo em conta real (corretora Rico) percebi que as ordens são canceladas quase que instantaneamente.

Conversando com o suporte, fui informado que o motivo dos cancelamentos era porque não havia volume suficiente para o preenchimento destas na ocasião em que foram posicionadas.

Estou utilizando ordens pendentes, do tipo BUY_LIMIT, com a política de preenchimento FOK (IOC apresenta mesmo resultado).


Tenho a seguinte dúvida:

Em ordens pendentes, a verificação quanto ao volume necessário para preenchê-las, não seria feito no momento em que fossem disparadas? Ou essa verificação é mesmo feita no momento

em que são posicionadas?


Desde já, agradeço a todos pela atenção.

Documentação sobre MQL5: Informações de Mercado / SymbolInfoDouble
Documentação sobre MQL5: Informações de Mercado / SymbolInfoDouble
  • www.mql5.com
SymbolInfoDouble - Informações de Mercado - Referência MQL5 - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5
 
Dario Pimenta:

Salve galera!


Sou iniciante na programação MT5 e recentemente terminei o meu EA e, ao executá-lo em conta real (corretora Rico) percebi que as ordens são canceladas quase que instantaneamente.

Conversando com o suporte, fui informado que o motivo dos cancelamentos era porque não havia volume suficiente para o preenchimento destas na ocasião em que foram posicionadas.

Estou utilizando ordens pendentes, do tipo BUY_LIMIT, com a política de preenchimento FOK (IOC apresenta mesmo resultado).


Tenho a seguinte dúvida:

Em ordens pendentes, a verificação quanto ao volume necessário para preenchê-las, não seria feito no momento em que fossem disparadas? Ou essa verificação é mesmo feita no momento

em que são posicionadas?


Desde já, agradeço a todos pela atenção.

Poste os logs da aba diário.

Precisamos saber volume, ativo, niveis de preço, etc.

 
Flavio Jarabeck #:

Poste os logs da aba diário.

Precisamos saber volume, ativo, niveis de preço, etc.


Em anexo, as operações do dia 23/02 e a seguir o log da aba diário:


FP 0 14:04:24.353 Terminal MetaTrader 5 x64 build 3211 started for MetaQuotes Software Corp.

GK 0 14:04:24.417 Terminal Windows 7 Service Pack 1 build 7601 on Wine 6.0 Linux 4.19.0-14-amd64, 8 x  Intel Core i7-3720QM  @ 2.60GHz, 5 / 22 Gb memory, 191 / 277 Gb disk, admin, GMT-3

IL 0 14:04:24.417 Terminal C:\Program Files\MetaTrader 5

KD 0 14:04:37.067 Network '2003166598': authorized on Rico-PRD through MT5 PRD Access Server SP3 02 (ping: 28.92 ms, build 3091)

EG 0 14:04:37.067 Network '2003166598': previous successful authorization performed from 170.84.225.153 on 2022.02.23 13:49:04

JJ 0 14:04:37.521 Network '2003166598': terminal synchronized with Rico (XP Investimentos CCTVM): 0 positions, 0 orders, 22114 symbols, 0 spreads

FK 0 14:04:37.521 Network '2003166598': trading has been enabled - netting mode

JR 0 14:04:38.818 Network '2003166598': scanning network for access points

HL 0 14:04:39.022 MQL5.community activated for 'dariopim', balance: 0.00

CI 0 14:04:39.595 MQL5.chats activated for 'dariopim'

PR 0 14:05:11.595 Network '2003166598': scanning network finished

HF 0 14:05:54.717 Experts expert MaximasMinimas (HYPE3F,H1) loaded successfully

MO 0 15:04:19.721 Trades '2003166598': buy limit 21 HYPE3F at 32.78

LJ 0 15:04:19.752 Trades '2003166598': accepted buy limit 21 HYPE3F at 32.78

FQ 0 15:04:19.753 Trades '2003166598': buy limit 21 HYPE3F at 32.78 placed for execution (Order Ack. Sending to OMS…)

KN 0 15:04:19.760 Trades '2003166598': order #1745378571 buy limit 21 / 21 HYPE3F at 32.78 done in 39.913 ms

CN 0 16:00:25.273 Trades '2003166598': buy limit 21 HYPE3F at 32.74

QE 0 16:00:25.304 Trades '2003166598': accepted buy limit 21 HYPE3F at 32.74

OQ 0 16:00:25.305 Trades '2003166598': buy limit 21 HYPE3F at 32.74 placed for execution (Order Ack. Sending to OMS…)

PN 0 16:00:25.317 Trades '2003166598': order #1745532541 buy limit 21 / 21 HYPE3F at 32.74 done in 43.958 ms

IR 0 16:06:35.662 Experts expert MaximasMinimas (HYPE3F,H1) removed

RE 0 16:08:43.622 Experts expert MaximasMinimas (EQTL3F,H1) loaded successfully

LP 0 17:00:07.444 Trades '2003166598': buy limit 27 EQTL3F at 25.32

JK 0 17:00:07.476 Trades '2003166598': accepted buy limit 27 EQTL3F at 25.32

GS 0 17:00:07.476 Trades '2003166598': buy limit 27 EQTL3F at 25.32 placed for execution (Order Ack. Sending to OMS…)

ML 0 17:00:07.517 Trades '2003166598': order #1745902012 buy limit 27 / 27 EQTL3F at 25.32 done in 72.776 ms

GP 0 17:20:40.935 Experts expert MaximasMinimas (EQTL3F,H1) removed

EK 0 17:21:34.122 Experts expert MaximasMinimas (EQTL3F,H1) loaded successfully

OS 0 20:04:39.882 Network '2003166598': scanning network for access points

PR 0 20:05:12.661 Network '2003166598': scanning network finished

Arquivos anexados:
 
Dario Pimenta #:


Em anexo, as operações do dia 23/02 e a seguir o log da aba diário:


FP 0 14:04:24.353 Terminal MetaTrader 5 x64 build 3211 started for MetaQuotes Software Corp.

GK 0 14:04:24.417 Terminal Windows 7 Service Pack 1 build 7601 on Wine 6.0 Linux 4.19.0-14-amd64, 8 x  Intel Core i7-3720QM  @ 2.60GHz, 5 / 22 Gb memory, 191 / 277 Gb disk, admin, GMT-3

IL 0 14:04:24.417 Terminal C:\Program Files\MetaTrader 5

KD 0 14:04:37.067 Network '2003166598': authorized on Rico-PRD through MT5 PRD Access Server SP3 02 (ping: 28.92 ms, build 3091)

EG 0 14:04:37.067 Network '2003166598': previous successful authorization performed from 170.84.225.153 on 2022.02.23 13:49:04

JJ 0 14:04:37.521 Network '2003166598': terminal synchronized with Rico (XP Investimentos CCTVM): 0 positions, 0 orders, 22114 symbols, 0 spreads

FK 0 14:04:37.521 Network '2003166598': trading has been enabled - netting mode

JR 0 14:04:38.818 Network '2003166598': scanning network for access points

HL 0 14:04:39.022 MQL5.community activated for 'dariopim', balance: 0.00

CI 0 14:04:39.595 MQL5.chats activated for 'dariopim'

PR 0 14:05:11.595 Network '2003166598': scanning network finished

HF 0 14:05:54.717 Experts expert MaximasMinimas (HYPE3F,H1) loaded successfully

MO 0 15:04:19.721 Trades '2003166598': buy limit 21 HYPE3F at 32.78

LJ 0 15:04:19.752 Trades '2003166598': accepted buy limit 21 HYPE3F at 32.78

FQ 0 15:04:19.753 Trades '2003166598': buy limit 21 HYPE3F at 32.78 placed for execution (Order Ack. Sending to OMS…)

KN 0 15:04:19.760 Trades '2003166598': order #1745378571 buy limit 21 / 21 HYPE3F at 32.78 done in 39.913 ms

CN 0 16:00:25.273 Trades '2003166598': buy limit 21 HYPE3F at 32.74

QE 0 16:00:25.304 Trades '2003166598': accepted buy limit 21 HYPE3F at 32.74

OQ 0 16:00:25.305 Trades '2003166598': buy limit 21 HYPE3F at 32.74 placed for execution (Order Ack. Sending to OMS…)

PN 0 16:00:25.317 Trades '2003166598': order #1745532541 buy limit 21 / 21 HYPE3F at 32.74 done in 43.958 ms

IR 0 16:06:35.662 Experts expert MaximasMinimas (HYPE3F,H1) removed

RE 0 16:08:43.622 Experts expert MaximasMinimas (EQTL3F,H1) loaded successfully

LP 0 17:00:07.444 Trades '2003166598': buy limit 27 EQTL3F at 25.32

JK 0 17:00:07.476 Trades '2003166598': accepted buy limit 27 EQTL3F at 25.32

GS 0 17:00:07.476 Trades '2003166598': buy limit 27 EQTL3F at 25.32 placed for execution (Order Ack. Sending to OMS…)

ML 0 17:00:07.517 Trades '2003166598': order #1745902012 buy limit 27 / 27 EQTL3F at 25.32 done in 72.776 ms

GP 0 17:20:40.935 Experts expert MaximasMinimas (EQTL3F,H1) removed

EK 0 17:21:34.122 Experts expert MaximasMinimas (EQTL3F,H1) loaded successfully

OS 0 20:04:39.882 Network '2003166598': scanning network for access points

PR 0 20:05:12.661 Network '2003166598': scanning network finished

Sua corretora permite operar Fracionário via MT5? e ainda por cima, via robô?

 
Flavio Jarabeck #:

Sua corretora permite operar Fracionário via MT5? e ainda por cima, via robô?

Sim, tenho um outro EA que rodou normalmente no ano passado, na mesma corretora e no mercado fracionário a diferença é que trabalhava com ordens à mercado ao invés de ordens

pendentes como é o que estamos discutindo.

 
Dario Pimenta #:


Em anexo, as operações do dia 23/02 e a seguir o log da aba diário:


FP 0 14:04:24.353 Terminal MetaTrader 5 x64 build 3211 started for MetaQuotes Software Corp.

GK 0 14:04:24.417 Terminal Windows 7 Service Pack 1 build 7601 on Wine 6.0 Linux 4.19.0-14-amd64, 8 x  Intel Core i7-3720QM  @ 2.60GHz, 5 / 22 Gb memory, 191 / 277 Gb disk, admin, GMT-3

IL 0 14:04:24.417 Terminal C:\Program Files\MetaTrader 5

KD 0 14:04:37.067 Network '2003166598': authorized on Rico-PRD through MT5 PRD Access Server SP3 02 (ping: 28.92 ms, build 3091)

EG 0 14:04:37.067 Network '2003166598': previous successful authorization performed from 170.84.225.153 on 2022.02.23 13:49:04

JJ 0 14:04:37.521 Network '2003166598': terminal synchronized with Rico (XP Investimentos CCTVM): 0 positions, 0 orders, 22114 symbols, 0 spreads

FK 0 14:04:37.521 Network '2003166598': trading has been enabled - netting mode

JR 0 14:04:38.818 Network '2003166598': scanning network for access points

HL 0 14:04:39.022 MQL5.community activated for 'dariopim', balance: 0.00

CI 0 14:04:39.595 MQL5.chats activated for 'dariopim'

PR 0 14:05:11.595 Network '2003166598': scanning network finished

HF 0 14:05:54.717 Experts expert MaximasMinimas (HYPE3F,H1) loaded successfully

MO 0 15:04:19.721 Trades '2003166598': buy limit 21 HYPE3F at 32.78

LJ 0 15:04:19.752 Trades '2003166598': accepted buy limit 21 HYPE3F at 32.78

FQ 0 15:04:19.753 Trades '2003166598': buy limit 21 HYPE3F at 32.78 placed for execution (Order Ack. Sending to OMS…)

KN 0 15:04:19.760 Trades '2003166598': order #1745378571 buy limit 21 / 21 HYPE3F at 32.78 done in 39.913 ms

CN 0 16:00:25.273 Trades '2003166598': buy limit 21 HYPE3F at 32.74

QE 0 16:00:25.304 Trades '2003166598': accepted buy limit 21 HYPE3F at 32.74

OQ 0 16:00:25.305 Trades '2003166598': buy limit 21 HYPE3F at 32.74 placed for execution (Order Ack. Sending to OMS…)

PN 0 16:00:25.317 Trades '2003166598': order #1745532541 buy limit 21 / 21 HYPE3F at 32.74 done in 43.958 ms

IR 0 16:06:35.662 Experts expert MaximasMinimas (HYPE3F,H1) removed

RE 0 16:08:43.622 Experts expert MaximasMinimas (EQTL3F,H1) loaded successfully

LP 0 17:00:07.444 Trades '2003166598': buy limit 27 EQTL3F at 25.32

JK 0 17:00:07.476 Trades '2003166598': accepted buy limit 27 EQTL3F at 25.32

GS 0 17:00:07.476 Trades '2003166598': buy limit 27 EQTL3F at 25.32 placed for execution (Order Ack. Sending to OMS…)

ML 0 17:00:07.517 Trades '2003166598': order #1745902012 buy limit 27 / 27 EQTL3F at 25.32 done in 72.776 ms

GP 0 17:20:40.935 Experts expert MaximasMinimas (EQTL3F,H1) removed

EK 0 17:21:34.122 Experts expert MaximasMinimas (EQTL3F,H1) loaded successfully

OS 0 20:04:39.882 Network '2003166598': scanning network for access points

PR 0 20:05:12.661 Network '2003166598': scanning network finished

O que vejo esta dentro da normalidade.

A questão me parece esta relacionada ao spread das operações...

Neste caso que recortei, não há erro de cancelamento, pelo contrário, foi efetivada a sua ordem mas o preço em que ela foi efetivada é o mesmo 32.78 que você a colocou;

MO 0 15:04:19.721 Trades '2003166598': buy limit 21 HYPE3F at 32.78

LJ 0 15:04:19.752 Trades '2003166598': accepted buy limit 21 HYPE3F at 32.78

FQ 0 15:04:19.753 Trades '2003166598': buy limit 21 HYPE3F at 32.78 placed for execution (Order Ack. Sending to OMS…)

KN 0 15:04:19.760 Trades '2003166598': order #1745378571 buy limit 21 / 21 HYPE3F at 32.78 done in 39.913 ms

No mini índice, mini dólar é mais difícil termos um spread que nos gere confusões mas em ações não, há um spread relevante que tem de ser levado em consideração quando atuamos com elas. 

No seu algoritmo coloque sua ordem, buy limit abaixo ou acima do bid ou ask a depender do tipo de posição que estiver se posicionando, afim de evitar o spread.

Do contrário já estará colocando-a em um ponto onde ela será executada. 

Sucesso por aí. 

 

Obrigado aos amigos pelas sugestões.

@Adailton Silva, essa ordem também foi cancelada pela corretora, conforme lista em anexo.

A questão é que as ordens são corretamente posicionadas, mas a corretora as exclui de imediato. Segundo os atendentes, as exclusões ocorreram por não ter
volume suficiente para o preenchimento das ordens no momento em foram posicionadas.

O problema não ocorre quando utilizo o filling type = RETURN, mesmo o ativo suportando todas as  políticas de preenchimento de ordem (Modo de execução = BOLSA e Preencher = TUDO), mas para a minha estratégia é interessante utilizar FOK ou IOC.

Mas como são ordens pendentes eu acredito que essa checagem do volume disponível deveria ocorrer no disparo das ordens e não quando estas são colocadas, não é isso?

Arquivos anexados:
 
Dario Pimenta #:

Obrigado aos amigos pelas sugestões.

@Adailton Silva, essa ordem também foi cancelada pela corretora, conforme lista em anexo.

A questão é que as ordens são corretamente posicionadas, mas a corretora as exclui de imediato. Segundo os atendentes, as exclusões ocorreram por não ter
volume suficiente para o preenchimento das ordens no momento em foram posicionadas.

O problema não ocorre quando utilizo o filling type = RETURN, mesmo o ativo suportando todas as  políticas de preenchimento de ordem (Modo de execução = BOLSA e Preencher = TUDO), mas para a minha estratégia é interessante utilizar FOK ou IOC.

Mas como são ordens pendentes eu acredito que essa checagem do volume disponível deveria ocorrer no disparo das ordens e não quando estas são colocadas, não é isso?

Experimente enviar com stop e profit as suas ordens. 

Houve mudanças além dos valores mínimos de margem como declarado pelas corretoras por exigência da B3, além dessas que são mais evidentes algumas outras políticas foram implementadas pela B3 como normativas às corretoras para àqueles que se utilizam de RLP.

Você pode vê o documento completo aqui; --> https://www.b3.com.br/data/files/91/53/99/8A/7413E7108BD66BD7AC094EA8/OC%20003-2022-VPC%20RLP_LIMPA_REVISADO_RR.pdf

Informativos aos clientes sobre gerenciamento de risco, necessidade de stop loss entre outras são algumas dessas normas, então, pode ser que a corretora já define a "exigência" do stop loss no envio da ordem para evitar problemas com a B3. Vai saber, contudo, acredito que vale a pena você definir algum stop e verificar se o problema continua. 

Dá um retorno, ok?

Boa sorte por aí. 

 

Olá @Adailton Silva,

Fiz novas tentativas seguindo o que foi recomendado (posicionando ordens com sl/tk) , também tentei diretamente no próprio metatrader (fora do EA), testei ainda com o RLP ativado e também desativado, contudo não obtive sucesso, ocorre o mesmo comportamento mencionado anteriormente. Log em anexo.


Como tudo funciona com Filling Type = RETURN pensei simular um IOC, a ideia seria executar a ordem com RETURN e, caso esta não fosse completamente preenchida, excluir a ordem

que executaria o restante do volume, será que é possível?


Desde já, agradeço pelas sugestões.

Arquivos anexados:
20220401.log  4 kb
 
Dario Pimenta #:

Olá @Adailton Silva,

Fiz novas tentativas seguindo o que foi recomendado (posicionando ordens com sl/tk) , também tentei diretamente no próprio metatrader (fora do EA), testei ainda com o RLP ativado e também desativado, contudo não obtive sucesso, ocorre o mesmo comportamento mencionado anteriormente. Log em anexo.


Como tudo funciona com Filling Type = RETURN pensei simular um IOC, a ideia seria executar a ordem com RETURN e, caso esta não fosse completamente preenchida, excluir a ordem

que executaria o restante do volume, será que é possível?


Desde já, agradeço pelas sugestões.

Olá @Dario Pimenta,

Porque 4 centavos de stop? Já reparou o spread deste ativo?

Aumenta esse stop aí....

A ordem foi aceita e executada, como pode ser visto no log


 
Adailton Silva #:

Olá @Dario Pimenta,

Porque 4 centavos de stop? Já reparou o spread deste ativo?

Aumenta esse stop aí....

A ordem foi aceita e executada, como pode ser visto no log



Apesar do log enviado anteriormente indicar que foram aceitas e executadas, as duas ordens foram imediatamente canceladas.


Veja a imagem em anexo.


Observe, na última operação cancelada, que utilizei um stop de 1,47... uma boa "folga" considerando o book na imagem e mesmo assim a ordem foi imediatamente cancelada... mas ela não seria caso o filling type fosse RETURN.


A questão é o motivo das ordens serem canceladas de imediato... a corretora informa que não havia volume suficiente no momento em que foram posicionadas para preenchê-las mas essa verificação não deveria acontecer quando as ordens são disparadas (já que são buy limit)? parece que eles checam quando posiciono as ordens.



Desde já te agradeço pelas dicas.

Arquivos anexados:
meta5.png  218 kb
Razão: