Amigos,
Calor Martins,
o Modo GTC e o termino da validade depende do instrumento, portanto veja nas especificações o que a corretora permitiu para o instrumento.
Na imagem coloquei INDQ20, onde se Lê: No MODO GTC: Válida para o dia TERMINO DE VALIDADE: Hoje e não pode ser alterado.
Olá Rogério,
Eu tentei com o ORDER_TIME_SPECIFIED e também não funciona. Usei todos os tipos.
Att,
Carlos,
Eu controlo de outra forma mas o resultado final creio que é o mesmo que você deseja.
Em vez de colocar a "expiração" na ordem eu coloquei o controle no OnTimer(). Em xx em xx segundos ele checa se existem Ordens Pendentes que não viraram Posição. Se existir, ele exclui as Ordens.
Carlos,
Eu controlo de outra forma mas o resultado final creio que é o mesmo que você deseja.
Em vez de colocar a "expiração" na ordem eu coloquei o controle no OnTimer(). Em xx em xx segundos ele checa se existem Ordens Pendentes que não viraram Posição. Se existir, ele exclui as Ordens.
Boa Ruy,
Isso resolve meu problema.
Obrigado !
Olá Rogério,
Eu tentei com o ORDER_TIME_SPECIFIED e também não funciona. Usei todos os tipos.
Att,
Acho que não fui claro,
você não pode alterar o MODO_GTC e TERMINO DE VALIDADE para WIN/IND DOL/WDO e outros futuros , veja: A especificação não permite.
A especificação só permite, válida para o dia e termino de validade 0(zero == hoje);
Ola a todos..
Eu tambem não consigo fazer funcionar. Se a estrutura do comando tem um espaço para colocar a validade da ordem, porque não funciona. Eu estou tentando utilizar da maneira abaixo, porem o validade é ignorada pelo testador de estratégia.
#include <Trade/Trade.mqh>
CTrade trade;
Expiracao = TimeCurrent()+15*60;
trade.BuyStop(lote,PrecoMaximo[1]+10,_Symbol,PrecoMaximo[1] + 10 - stopLoss,PrecoMaximo[1] + 10 + takeProfit,ORDER_TIME_SPECIFIED,Expiracao,"Compra");
Se alguem tiver uma explicação do porque não funciona, acho que ajudaria muita gente, inclusive eu...
Muito Obrigado
Ola a todos.
Se alguem tiver uma explicação do porque não funciona, acho que ajudaria muita gente, inclusive eu...
Muito Obrigado
Ola Novaes
ja está respondido aqui nesse post, o que que você não entendeu?
Carlos,
Eu controlo de outra forma mas o resultado final creio que é o mesmo que você deseja.
Em vez de colocar a "expiração" na ordem eu coloquei o controle no OnTimer(). Em xx em xx segundos ele checa se existem Ordens Pendentes que não viraram Posição. Se existir, ele exclui as Ordens.
Também estou com o mesmo problema.
O amigo poderia postar aqui um exemplo de bloco de código usando o OnTimer() ?
Também estou com o mesmo problema.
O amigo poderia postar aqui um exemplo de bloco de código usando o OnTimer() ?
EventSetTimer(30); void OnTimer() { if(!SemOrdem()) PendingOrderDelete(); } void PendingOrderDelete() { int o_total=OrdersTotal(); if(o_total==0) return; else { for(int j=o_total-1; j>=0; j--) { ulong o_ticket = OrderGetTicket(j); if(o_ticket != 0) negocio.OrderDelete(o_ticket); } } } bool SemOrdem() { if(OrdersTotal()>0) return false; else return true; }
... e entenda que estou usando o CTrade. Então onde você lê "negocio" é apenas porque estou utilizando uma Instância baseada na Biblioteca do CTrade.
... e entenda que estou usando o CTrade. Então onde você lê "negocio" é apenas porque estou utilizando uma Instância baseada na Biblioteca do CTrade.
Ruy, obrigado por colaborar...
Vou acrescentar meus 0,02 centavos a essa discussão.
É bom validar o numero magico e moeda a qual esta olhando para as ordens, pois OrdesTotal(), olha no âmbito geral....logo ele agrega todas as ordens da plataforma.
int totalOrderBySymbol=0; int total=OrdersTotal(); if(total>0) { for(int i=total-1; i>=0; i--) { OrderSelect(OrderGetTicket(i)); if(OrderGetString(ORDER_SYMBOL)!=Symbol()) continue; if(OrderGetInteger(ORDER_MAGIC)!=InpMagicEA) continue; totalOrderBySymbol += 1; } }
- 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
Amigos,
Estou a um bom tempo tentando colocar uma ordem pendente com tempo de expiração, porém sem sucesso. Testei várias configurações, fiz alguns debugs e parece que essa função não existem
Segue um exemplo :
Apresenta erro de [Invalid expiration]
Se eu uso a Ctrade conforme abaixo, executa sem erro, porém a ordem não expira nunca.
Gostaria de saber se essa função realmente funciona para os futuros, pois caso contrário irei fazer um controle por tempo e exluir a ordem.
Obrigado !