![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Bom dia!!
Algumas verificações antes de enviar a ordem (podem ser utilizadas no início de OnTick):
Verificação manual: Ctrl+U >> Guia Especificação >> Seleciona o símbolo...
Negociação permitida:
Negociação não permitida:
Bom dia!!
Algumas verificações antes de enviar a ordem (podem ser utilizadas no início de OnTick):
Verificação manual: Ctrl+U >> Guia Especificação >> Seleciona o símbolo...
Negociação permitida:
Negociação não permitida:
Essa mensagem do vinicius eh boa tambem que seria algo que iria comentar, lembrar de ver se o algotrading esta ligado no mt5 e se o algotrading esta permitido no seu robo (eh um checkbox na primeira aba). Isso pode fazer a ordem nem sair do terminal, mas pelo que eu lembro nao devolve rejeitado.
Ainda pra complementar a resposta dele incluiria uma condicao tambem para alertar se o simbolo nao estiver sincronizado (SymbolIsSynchronized retornando false) com o servidor (isso pode ser importante se for um servico).
Bom dia!!
Algumas verificações antes de enviar a ordem (podem ser utilizadas no início de OnTick):
Verificação manual: Ctrl+U >> Guia Especificação >> Seleciona o símbolo...
Negociação permitida:
Negociação não permitida:
Fiz a verificação manual de um ativo que teve a ordem rejeitada, como podem ver no print é permitido.
Bom, então resta fazer as verificações sugeridas pelo Ricardo:
Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação
Ordem rejeitada
Ricardo Rodrigues Lucca, 2022.12.28 18:05
Se estiver usando a classe Ctrade tem como habilitar mais log que dai da proxima vez pode ser que tenha algo que ajude...Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação
Ordem rejeitada
Ricardo Rodrigues Lucca, 2022.12.28 18:05
... Voce chegou a ver questao de margem disponivel ou se o tp nao poderia estar dentro do spread? ...Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação
Ordem rejeitada
Ricardo Rodrigues Lucca, 2022.12.28 18:05
... Outro chute na lua ja que nao parece ter nada errado era verificar os precos informados se estao normalizados ...A função abaixo está disponível também na classe CSymbolInfo, se preferir. Utilize-a para normalizar sellprice (inclusive) antes de enviar a ordem:
Rico
Bom ano novo!
Certifique-se que esteja usando modo de preenchimento RETURN .
ORDER_FILLING_RETURN
Em tempo: Você consegue emitir manualmente uma ordem?
Bom ano novo!
Certifique-se que esteja usando modo de preenchimento RETURN .
ORDER_FILLING_RETURN
Em tempo: Você consegue emitir manualmente uma ordem?
Consigo emitir sim, o que seria o modo de preenchimento retorno?
Opa, é mais fácil você ler no manual o que é o modo de execução ou preenchimento de uma ordem.
Então se você consegue emitir ordens manuais é quase certo que o modo de preenchimento da ordem está incorreto,
Se você estiver usando a classe CTrade ajuste o modo de preenchimento usando: cTrade.SetTypeFilling(ORDER_FILLING_RETURN), só é necessário ajustar uma vez, portanto coloque na seção INIT.
Se você está usando o OrderSend(request,result) ajuste o preenchimento da ordem no campo request.type_filling=ORDER_FILLING_RETURN.
Depois da alteração que fiz obtive esse retorno, das ordens rejeitadas hoje.
Se colocar no OnInit isso acredito que ele te deixa bem verboso o que ele esta fazendo nos rejects. Na chamada do ctrade tem uma função LogLevel que voce pode passar LOG_LEVEL_ALL. Mas, ainda não entendi se voce esta usando a classe ou populando na mão e mandando o OrderSend()... Sobre a imagem o que deu invalid stops pode ter sido porque não estava normalizado corretamente ou porque o preço "correu" deixando o stop invalido. Como eu vi que seus stops parecem meio dentro da volatilidade eu acredito muito mais que voce não esta normalizando o preço. Tem uma função no CSymbol que é NormalizePrice.
O que o Rogerio comentou é importante que tu leia. Na ajuda escreve no editor, seleciona e da F1. Muitas vezes ta até em portugues!Bom, então resta fazer as verificações sugeridas pelo Ricardo:
A função abaixo está disponível também na classe CSymbolInfo, se preferir. Utilize-a para normalizar sellprice (inclusive) antes de enviar a ordem:
Alterei o código para sua sugestão a fim de obter mais logs. O TP creio não estar dentro do spread, pois é uma ordem a mercado com o TP no mínimo 1,5% maior que a ultimo preço (timeframe M1). Com relação a normalização não a fiz por não achar necessária, visto que o único parâmetro que vai preenchido (o TP) é a mínima de um determinado candle, ou seja um valor onde ouve negociação, não há cálculos que retornem números fracionários, somente valores inteiros. Se estiver equivocado peço que me corrijam.
PS.: Também ajustei o preenchimento da ordem, como o Rogerio sugeriu.