Matheus, não é todo ativo que permite emitir ORDEM C/ DATA EXPIRAÇÃO, consulte as especificações do ativo. Abaixo WINQ22, só admite expiração no dia exceto os gatilhos de stop SL/TP. Compare com PETR4.
Tendo já visto o que o @Rogerio Giannetti Torres mencionou, no lugar do parâmetro você pode utilizar a função TimeTradeServer()+OtempoEmSegundos;
int meuTempo = 60*60; //1 Hora m_trade.BuyStop(volume,precoDeEntrada,_Symbol,stop,take,ORDER_TIME_SPECIFIED,TimeTradeServer()+meuTempo,comentario);
Olá Rogerio,
Obrigado pelo seu tempo.
Verificando as especificações do ativo que quero operar, acredito que ele apenas permite GTC:
Obs.: a caixa de texto não está permitindo colar imagem aqui, portanto anexei.
Estou correto?
Se estou correto, preciso utilizar outra maneira pra remover minha ordem não executada? Obs.: é intraday.
Abraços.
Tendo já visto o que o @Rogerio Giannetti Torres mencionou, no lugar do parâmetro você pode utilizar a função TimeTradeServer()+OtempoEmSegundos;
Muito obrigado, resolveu meu problema. Parece que a biblioteca Ctrade não aceita o número diretamente e sim apenas através de uma variável.
Ficou assim:
void LongOpened() { // Verificar se existe posição aberta // Se existir não enviar if(m_position.SelectByMagic(_Symbol,inpt_numero_magico)) return; if(Sinaldecompra()) { double stopdecompra = NormalizeDouble(rates[1].low-0.001,3); double alvodecompra = NormalizeDouble(((rates[1].high-rates[1].low)*multiplicadoralvo)+rates[1].high,3); double posicaocompra = NormalizeDouble(rates[1].high+0.001,3); double saldo = (AccountInfoDouble(ACCOUNT_BALANCE)); double riscoporoperacao = ((riscooperacao*saldo)/100); double diferenca = NormalizeDouble(posicaocompra-stopdecompra,3); double lote = NormalizeDouble(riscoporoperacao/diferenca*posicaocompra/100000,2); int meuTempo = 60*10; //10 minutos if//(m_trade.Buy(volumedaoperacao,_Symbol,rates[1].low+0.001,stopdecompra,alvodecompra,"Compra")) (m_trade.BuyStop(lote,posicaocompra,_Symbol,stopdecompra,alvodecompra,ORDER_TIME_SPECIFIED,TimeTradeServer()+meuTempo,"Compra"))
Muito obrigado pessoal.
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- 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
Olá pessoal,
Pesquisei bastante e não encontrei.
Estou programando um robô e estou utilizar a função Buy da biblioteca Ctrade. Porém eu preciso utilizar a BuyStop para ficar idealmente no meu modelo.
Ao colocar isso, algumas ordens naturalmente não são preenchidas e mais nada é executado.
Eu estou tentando então a função BuyStop com ORDERTIMESPECIFIED, porém eu não encontrei como eu coloco o tempo de expiração.
No meu robô está assim:
Retorna data de expiração inválida.
Obs.: ao utilizar a função ORDER_TIME_GTC, funciona normalmente.
Obrigado a todos.