Olá, tudo bem?
Estou precisando realizar alterações para que meu robô opere apenas dentro do mercado aberto, que não opere em leilão e depois da call de fechamento, vi que não tinha nada nativo para isso, então desenvolvi os seguintes métodos que rodam a cada tick:
Essa abordagem está correta, e é a melhor a se seguir?
Agradeço antecipadamente!
Recomendaria deixar os horarios de encerramento flexiveis por conta do verao americano que os futuros brasileiros tem horario extendido e nao temos aftermarket... O leilao de abertura tambem tem alguns que recomendam ficar de olho nos trades realizados e esperar vir a informação do primeiro negocio com volume. Isso diz que acabou o leilão, se procurar aqui no forum tem mais informação sobre isso.
Uma outra verificação seria do spread ter que ser positivo (bid < ask), esse é o comportamento normal do mercado e quando violado (bid > ask) tende a ser leilão. Se pretende operar forex transformar essa validacao do spread em um intervalo poderia ser bom.
Recomendaria deixar os horarios de encerramento flexiveis por conta do verao americano que os futuros brasileiros tem horario extendido e nao temos aftermarket... O leilao de abertura tambem tem alguns que recomendam ficar de olho nos trades realizados e esperar vir a informação do primeiro negocio com volume. Isso diz que acabou o leilão, se procurar aqui no forum tem mais informação sobre isso.
Uma outra verificação seria do spread ter que ser positivo (bid < ask), esse é o comportamento normal do mercado e quando violado (bid > ask) tende a ser leilão. Se pretende operar forex transformar essa validacao do spread em um intervalo poderia ser bom.
Olá Ricardo, desenvolvi o método abaixo para saber se o ativo está em leilão, concorda que irá ser eficaz?
// Função para verificar se o ativo está em leilão bool IsAuction(string symbol) { // Obtenção dos dados de bid e ask double bid = SymbolInfoDouble(symbol, SYMBOL_BID); double ask = SymbolInfoDouble(symbol, SYMBOL_ASK); // Verifica se o spread é negativo (bid > ask) bool isSpreadNegative = bid > ask; // Verifica se há negociações recentes bool isNoVolume = true; MqlTick ticks[]; int count = CopyTicks(symbol, ticks, COPY_TICKS_ALL, 0, 1); // Obtém os ticks mais recentes if (count > 0) { // Se houver pelo menos um tick, significa que houve negociações isNoVolume = false; } // Se o spread for negativo ou não houve volume de trades, o ativo está em leilão if (isSpreadNegative || isNoVolume) { Print(symbol + " está em leilão. Spread negativo ou sem volume negociado."); return true; } // Caso contrário, não está em leilão return false; }
Olá Ricardo, desenvolvi o método abaixo para saber se o ativo está em leilão, concorda que irá ser eficaz?
A parte do negocio que tu copiou o os ticks fez errado, voce pediu movimento de ask/bid e negocios fechados. Em leilao o ask/bid move e o numero de negocios é zero. Tem esses topicos aqui com discussões que falam disso:
https://www.mql5.com/pt/forum/438309
- 2022.12.19
- Igor Tiosso
- www.mql5.com
- 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á, tudo bem?
Estou precisando realizar alterações para que meu robô opere apenas dentro do mercado aberto, que não opere em leilão e depois da call de fechamento, vi que não tinha nada nativo para isso, então desenvolvi os seguintes métodos que rodam a cada tick:
Essa abordagem está correta, e é a melhor a se seguir?
Agradeço antecipadamente!