Resposta

1TP9Problema com a exclusão de pedidos pendentes

8 respostas

mikeyc

Cliente, bbp_participant, comunidade, 877 respostas.

Perfil da visita

7 anos atrás #115445

Hi,

 

Tenho uma estratégia que substitui ordens pendentes. No entanto, há um problema com o MQ4 gerado pelo SQ, pois durante uma pequena janela de tempo em que o ECN não aceita ordens, se o EA gerado pelo SQ tentar excluir uma ordem pendente, ele falhará e não excluirá a ordem:

 

2016.08.14 22:00:25.027 '946624': exclusão da ordem pendente #9901877 sell stop 0.01 EURUSD a 1.11528 sl: 1.14488 tp: 1.11008 failed [O mercado está fechado]

2016.08.11 22:00:04.839 '946624': exclusão da ordem pendente #9877449 buy stop 0.01 EURUSD a 1.11581 sl: 1.08621 tp: 1.12101 failed [O mercado está fechado]

 

É necessário haver um mecanismo de repetição para excluir a ordem pendente.

 

Obrigado,

 

Mike

0

mabi

Cliente, bbp_participant, comunidade, 261 respostas.

Perfil da visita

7 anos atrás #138831

 No Ninjatrader, a estratégia se autodestrói quando isso acontece. Portanto, isso também é um problema para essa plataforma.

0

Threshold

Cliente, bbp_participant, comunidade, 723 respostas.

Perfil da visita

7 anos atrás #138835

Além disso, "sair na sexta-feira" parece sair na abertura de segunda-feira. Nunca mencionei isso antes porque tende a funcionar a meu favor (os gaps tendem a ser na direção do momentum de sexta-feira).

0

clonex / Ivan Hudec

Cliente, bbp_participant, comunidade, sq-ultimate, colaborador, autor, editor, 271 respostas.

Perfil da visita

7 anos atrás #138836

Meu problema também. Sair na sexta-feira é sair na quinta-feira às 22:00; tive que desativar essa opção. Mikeyc o mesmo problema.

0

tomas262

Administrador, sq-ultimate, 2 respostas.

Perfil da visita

7 anos atrás #138838

Olá,

A saída de sexta-feira deve funcionar corretamente. Que horário você definiu em seu EA?

0

FILIPE BONALDO ACERBI

Cliente, bbp_participante, comunidade, 27 respostas.

Perfil da visita

6 anos atrás #201039

Olá,

Tenho o mesmo problema uma vez por dia, às 22:00, horário da corretora. Recebi o erro "O mercado está fechado":

2017.11.08 22:02:12.599
USDJPY D1 23.46 USDJPY.m,Diário: 2017.11.09 00:02:19 Ordem modificada, StopLoss: 0, Profit Target: 0
2017.11.08 22:02:12.599
USDJPY D1 23.46 USDJPY.m, Diário: modificar #175062574 vender stop 0.86 USDJPY.m em 111.617 sl: 112.141 tp: 108.668 ok
2017.11.08 22:02:12.162
USDJPY D1 23.46 USDJPY.m,Diário: 2017.11.09 00:02:19 Configuração SL/PT, SL: 112.141, PT: 108.668
2017.11.08 22:02:12.162
USDJPY D1 23.46 USDJPY.m, Diário: 2017.11.09 00:02:19 Ordem aberta: 175062574 ao preço:111.617
2017.11.08 22:02:12.162
USDJPY D1 23.46 USDJPY.m, Diário: abrir #175062574 vender stop 0.86 USDJPY.m em 111.617 ok
2017.11.08 22:02:11.677
USDJPY D1 23.46 USDJPY.m,Diário: 2017.11.09 00:02:19 Ordem de abertura, direção: 5, preço: 111.617, Ask: 113.893, Bid: 113.864
2017.11.08 22:01:37.521
USDJPY D1 23.46 USDJPY.m, Diário: 2017.11.09 00:01:44 Erro ao abrir a ordem: 132 : o mercado está fechado
2017.11.08 22:01:37.396
USDJPY D1 23.46 USDJPY.m,Diário: 2017.11.09 00:01:44 Ordem de abertura, direção: 5, preço: 111.617, Ask: 113.893, Bid: 113.864
2017.11.08 22:01:03.677
USDJPY D1 23.46 USDJPY.m, Diário: 2017.11.09 00:01:12 Erro ao abrir a ordem: 132 : o mercado está fechado
2017.11.08 22:01:03.521
USDJPY D1 23.46 USDJPY.m,Diário: 2017.11.09 00:01:11 Ordem de abertura, direção: 5, preço: 111.617, Ask: 113.893, Bid: 113.864
2017.11.08 22:00:29.568
USDJPY D1 23.46 USDJPY.m,Diário: 2017.11.09 00:00:35 Erro ao abrir a ordem: 132 : o mercado está fechado
2017.11.08 22:00:29.365
USDJPY D1 23.46 USDJPY.m,Diário: 2017.11.09 00:00:35 Ordem de abertura, direção: 5, preço: 111.617, Ask: 113.893, Bid: 113.864
2017.11.08 21:59:55.349
USDJPY D1 23.46 USDJPY.m, Diário: 2017.11.09 00:00:03 Erro ao abrir a ordem: 132 : o mercado está fechado
2017.11.08 21:59:55.052
USDJPY D1 23.46 USDJPY.m,Diário: 2017.11.09 00:00:02 Ordem de abertura, direção: 5, preço: 111.617, Ask: 113.893, Bid: 113.864
2017.11.08 21:59:55.052
USDJPY D1 23.46 USDJPY.m,Diário: 2017.11.09 00:00:02 Não é possível fechar a ordem pendente anterior existente com o ticket: 174815678, motivo: 132

Se observarmos o histórico acima, o EA fez 4 tentativas até abrir com sucesso a ordem 175062574. Porém, o problema são as tentativas fracassadas de alterar ou fechar a ordem anterior. No exemplo acima, o EA tentou fechar sem sucesso a ordem 174815678. Ele tentou uma vez e falhou, portanto, tenho uma ordem aberta que deveria ter sido fechada, mas, devido a esse erro, ela continua aberta.

Tenho que fechar a ordem 174815678 manualmente e reiniciar o EA. Quando fiz isso, o EA abriu a ordem correta (veja o anexo)

Tentei resolver esse problema colocando a função if(sqIsTradeAllowed() == 1) antes do OrderDelete, mas nada aconteceu:

bool closePendingOrder() {

int ticket = OrderTicket();

Se (sqIsTradeAllowed() == 1)  

se(OrderDelete(ticket)) {

lastDeletedOrderTicket = ticket; return(true); }

return(false);}

Acho que a solução é implementar mais tentativas de fechar ou alterar uma ordem quando ela falhar.

O que posso fazer para resolver isso?

0

FILIPE BONALDO ACERBI

Cliente, bbp_participante, comunidade, 27 respostas.

Perfil da visita

6 anos atrás #201067

Procurei no código do EA todas as funções que modificam, excluem e fecham ordens. Para essas funções, adicionei a mesma lógica que fazia novas tentativas de abrir ordens quando falhava, o que é descrito pela função openPosition(). Hoje, recebo o erro "market closed" (mercado fechado), mas o EA tentou modificar/excluir/fechar as ordens com sucesso. Se alguém tiver problemas com o erro de mercado fechado, anexei as funções alteradas para fazer novas tentativas de fechamento, modificação ou exclusão de ordens. Você só precisa substituir as funções no código do EA.

Anexos:
Você deve ser logado para ver os arquivos anexos.

0

afhampton

Cliente, bbp_participante, comunidade, 26 respostas.

Perfil da visita

6 anos atrás #201276

Oi Filipe:

Estou com um problema semelhante e gostaria de saber se suas modificações resolverão o problema. Em uma conta ECN, a negociação pendente era definida pelo EA e, antes que a ordem pendente de modificação para definir o SL e o TP pudesse ser processada, a negociação era ativada. Portanto, a ordem pendente de modificação falhou porque ela não está mais pendente, mas ativada. Nesse caso, se a modificação da pendência falhar, preciso que o EA verifique se a ordem foi aberta e, em caso afirmativo, se o TP e o SL estão definidos corretamente. Caso contrário, defina o TP e o SL para a ordem aberta. Se as tentativas de definir o TP/SL falharem várias vezes, feche a ordem aberta.

Isso é algo que suas modificações farão e, se não, você me ajudaria com o código para fazer isso? Ficarei feliz em compensá-lo por seu tempo.

0

FILIPE BONALDO ACERBI

Cliente, bbp_participante, comunidade, 27 respostas.

Perfil da visita

6 anos atrás #201294

Olá, Afhampton,

Acredito que se o EA fizer algumas tentativas para alterar o ST/TP da ordem aberta, isso funcionará. Para as ordens de parada/limite abertas, acho que o EA precisa testar se a ordem pendente está aberta antes de tentar fechar ou alterar. Se estiverem abertas, o EA chamará a função start() para gerenciar as ordens recém-abertas. Essa poderia ser uma solução. Anexei as funções modificadas e você poderia tentar se ele funciona com essas funções modificadas que fazem novas tentativas e testam se a ordem pendente está aberta. Siga estas etapas:

1- Faça um backup de "MT4Functions.inc" em C:\StrategyQuant\code\Mql_MT4.

2 - Faça o download do arquivo anexado, renomeie e substitua "MT4Functions.inc" em C:\StrategyQuant\code\Mql_MT4.

3 - Exportar o arquivo EA mql4 novamente no SQ.

4 - Teste na conta de demonstração.

Se o EA não conseguir alterar/excluir as ordens, ele fará 60 tentativas de 30 segundos cada até conseguir alterar/excluir a ordem. Se não funcionar, restaure o backup.

 

Anexos:
Você deve ser logado para ver os arquivos anexos.

0

Visualizando 8 respostas - 1 até 8 (de um total de 8)