trade.PosititionCLose informei somente o ticket da ordem e a mesma foi cancelada gerando um loss enorme na XP
Boa noite.
Carlito a classe CTrade tem por padrão de preenchimento tipo ORDER_FILLING_FOK, você precisa alterar o padrão para ORDER_FILLING_RETURN, ou faça como mostrado abaixo no OnInit(), serve para FOREX e EXCHANGE.
int fill = (int)SymbolInfoInteger(_Symbol, SYMBOL_FILLING_MODE); cTrade.SetTypeFilling((ENUM_ORDER_TYPE_FILLING)(fill == 0 ? 2 : fill - 1));
Uma pergunta, quantos contratos você pretendia fechar?
Boa noite.
Carlito a classe CTrade tem por padrão de preenchimento tipo ORDER_FILLING_FOK, você precisa alterar o padrão para ORDER_FILLING_RETURN, ou faça como mostrado abaixo no OnInit(), serve para FOREX e EXCHANGE.
Uma pergunta, quantos contratos você pretendia fechar?
Rogerio,
Boa tarde
Em primeiro lugar agradeço imensamente o seu retorno.
na verdade estava operando apenas 1 contrato o mínimo.
adicionando esse comando que você informou na função OnInit() não preciso alterar absolutamente nada trade.buy, trade.sell ou trade.positionClose?
agradeço o retorno.
Carlito
Rogerio,
Boa tarde
Em primeiro lugar agradeço imensamente o seu retorno.
na verdade estava operando apenas 1 contrato o mínimo.
adicionando esse comando que você informou na função OnInit() não preciso alterar absolutamente nada trade.buy, trade.sell ou trade.positionClose?
agradeço o retorno.
Carlito
Não não precisa setar mais nada depois disso. Recomendo, além disso ligar os todos os logs e desativar o async.
trade.SetTypeFilling(ORDER_FILLING_RETURN); trade.SetAsyncMode(false); trade.LogLevel(LOG_LEVEL_ALL);
Rogerio,
Boa tarde
Em primeiro lugar agradeço imensamente o seu retorno.
na verdade estava operando apenas 1 contrato o mínimo.
adicionando esse comando que você informou na função OnInit() não preciso alterar absolutamente nada trade.buy, trade.sell ou trade.positionClose?
agradeço o retorno.
Carlito
Já responderam, mas se o se EA não é só para Exchange então cabe a seguinte nota!
OnInit(){
trade.SetTypeFilling(ORDER_FILLING_RETURN); // Em alguns brokers vai dar erro.
trade.SetAsyncMode(false); // Redundante
...
}
int fill = (int)SymbolInfoInteger(_Symbol, SYMBOL_FILLING_MODE); cTrade.SetTypeFilling((ENUM_ORDER_TYPE_FILLING)(fill == 0 ? 2 : fill - 1));
[ . . . ]
Bom dia, Rogerio! Eu estava verificando/testando a sua sugestão acima e identifiquei uma (possível) falha (no meu caso, negocio Forex)... Quando utilizo o comando:
Print(SymbolInfoInteger(_Symbol, SYMBOL_FILLING_MODE));
Ele me retorna o valor 3:

Ou seja, o símbolo, na minha corretora, permite os modos de preenchimento SYMBOL_FILLING_FOK (=1) e SYMBOL_FILLING_IOC (=2). Então, considerando a sua fórmula, eu acabaria por definir trade.SetTypeFilling também como ORDER_FILLING_RETURN (=2), que corresponde a "fill - 1", entendeu?
Bom dia, Rogerio! Eu estava verificando/testando a sua sugestão acima e identifiquei uma (possível) falha (no meu caso, negocio Forex)... Quando utilizo o comando:
Ele me retorna o valor 3:
Ou seja, o símbolo, na minha corretora, permite os modos de preenchimento SYMBOL_FILLING_FOK (=1) e SYMBOL_FILLING_IOC (=2). Então, considerando a sua fórmula, eu acabaria por definir trade.SetTypeFilling também como ORDER_FILLING_RETURN (=2), que corresponde a "fill - 1", entendeu?
Sim, estou careca de saber disso. Até hoje só deu problema em uma corretora que não aceitou ORDER_FILLING_RETURN <<< Vc é o segundo caso, qual é o Broker?
Sim, estou careca de saber disso. Até hoje só deu problema em uma corretora que não aceitou ORDER_FILLING_RETURN <<< Vc é o segundo caso, qual é o Broker?
bom dia a todos,
muito legal ver os comentários e dicas e sugestões dos amigos aqui.
como eu não opero FOREX, com os comandos que o Rogério sugeriu testei na XP e funcionou perfeitamente, realizei alguma operações como o EA e solicitei o LOG da XP e todas as operações foram consideradas a mercado e não mais "TUDO ou NADA", se um dia tiver condições de operar FOREX volto a pedir uma ajudinha.
Rogerio, muito obrigado pela sua dica, resolveu o meu problema aqui.
Carlito
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Senhores,
tive um problema gravíssimo.
estava posicionado na venda com 1 contrato do ativo WINV25 as 09:30 hs do dia 05/09/2025 o EA identificou o volume excessivo e enviou um ordem utilizando a a função trade.PositionClose(ticket) informando o ticket da ordem a ser encerrada, porém, a ordem foi cancelada e robo ficou posicionado onde no candle de 5M teve um alta de 1.200 pontos.
abri um chamado na XP e a mesma alegou que eu enviei a ordem tipo tudo ou nada, mas eu nem tenho no positionclose como informar isso.
alguem pode dar uma luz de como evitar que isso ocorra novamente?
agredeço imensamte.
obrigado
Carlito