Prezados, boa noite, gostaria de uma ajuda com esse problema de execução que estou tendo e gostaria de opiniões para solucionar
Vou detalhar os acontecimentos para identificação de brechas na execução:
1 º - Hoje por volta das 06:30 abri o meta, abri o grafico de Mils3, coloquei no prazo de operação, inseri o EA, habilitei ele para realizar operações e alterar o sinal, configurei os parametros e dei "ok";
2º - repeti o processo para os demais ativos com números magicos diferentes;
3º - Eu acompanho as operações pelo celular, não consigo acompanhar pelo computador;
4º - por volta das 09:00 pelo meta do celular eu vejo que ele já plotou as ordens no grafico e estão como "placed".
OBS: Nesse momento todas as ordens batem e constam somente 01 ordem para cada ativo que foi inserido, porem o preço de entrada está baseado em D+2, exemplo:
Hoje é 04/11, quando o EA plota a ordem ele entende que o fechamento anterior é 02/11, pois o dia 04/11 ainda não iniciou. E para estrategia o preço de entrada para 04/11 é o fechamento do dia 03/11
5º - Por volta das 10h que é o horario que abre o mercado avista que acontece a duplicidade de ordens
OBS: Eu, leigo, acredito que seja no momento em que o EA por exemplo vai alterar de "buy limit" para "buy stop", dependendo da abertura do dia atual, e nesse momento as 02 ordens são executadas.
O EA utiliza o preço de fechamento do ultimo candle para calcular a entrada para o dia atual e só deveria realizar 01 operação por dia.
Sugestão, e vejam se faz sentido e se é possivel:
o EA só enviar a ordem 01 segundo após a identificação do primeiro tick do dia atual.
Exemplo
- Hoje é 04/11/2022, o primeiro tick do dia foi as 10h 01min e 05s (10:01:05)
- O EA irá calcular a entrada de hoje 04/11, ás 10h 01min e 06s (10:01:05), seguindo os parâmetros configurados.
OBS: se o 1º tick do dia for em cima do preço de entrada (baseado no fechamento anterior) a ordem será "limit"; ou, se o 1º tick do dia for a baixo do preço de entrada (baseado no fechamento anteriro) a ordem será "stop".
Agradeço desde já.
Boa noite .
Ricardo, boa noite e obrigado pela ajuda.
Contratei um programador aqui pelo meta mesmo.
Exatamente, talvez isso só ocorra a pois a corretora deve liberar o envio de ordens no mercado a vista a partir desse horário/momento mencionado, até pq no log aparece essa informação, "negocio aceito" ou algo do tipo.
A melhoria que foi implementada no código é essa que comentei, só enviar a ordem assim que o ocorrer o primeiro tick do dia, ai segunda feira agora vou testar e ver se vai ocorrer essa mudança ou duplicidade.
O limitador de Horário tbm é uma opção viável, mas espero que essa melhoria do primeiro tick resolva.
void OnTick() { if(IsTimeToClose(in_time_to_close)) { CloseAll(in_magic,Symbol()); return; } if(IsNewBar()) OnBar();
Ricardo, boa noite e obrigado pela ajuda.
Contratei um programador aqui pelo meta mesmo.
Exatamente, talvez isso só ocorra a pois a corretora deve liberar o envio de ordens no mercado a vista a partir desse horário/momento mencionado, até pq no log aparece essa informação, "negocio aceito" ou algo do tipo.
A melhoria que foi implementada no código é essa que comentei, só enviar a ordem assim que o ocorrer o primeiro tick do dia, ai segunda feira agora vou testar e ver se vai ocorrer essa mudança ou duplicidade.
O limitador de Horário tbm é uma opção viável, mas espero que essa melhoria do primeiro tick resolva.
void OnTick() { if(IsTimeToClose(in_time_to_close)) { CloseAll(in_magic,Symbol()); return; } if(IsNewBar()) OnBar();
Acredito que voce vai ter ainda o mesmo problema com a solução do primeiro tick e no horario. O que parece estar acontecendo com as ordens duplicadas na minha opinião é a não previsão do leilão. O que quero dizer com isso, quem programou colocou a ordem limit em digamos 7.22 e dai ela foi executada a 7.2. Como o robo desconhece essa ordem ele ignora e coloca outra. Outra possibilidade, seria que a corretora demora um pouco para responder que a compra foi efetivada, isso é, a ordem que tava placed foi transformada em filled. Mas a posição ser criada demora digamos 1 minuto (seja la por qual motivo) e nesse intervalo o robo abre nova ordem porque não tem a posição e não teria uma ordem aguardando...
Então, identificamos que a partir do momento que a corretora aceita ordens o EA já envia, porém quando inicia o novo dia ele precisa recalcular as entradas e alterar de buylimit para buystop ou vice versa, enfim, já alteramos e agora o EA só envia ordem a partir do momento que recebe um novo tick do grafico e não mais do book de ofertas.
Estou testando e tem dado certo.
Qualquer outra fragilidade me informe, quanto mais seguro melhor.
Obrigado pelas informações.
Abraços.
- 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
Prezados, boa noite, gostaria de uma ajuda com esse problema de execução que estou tendo e gostaria de opiniões para solucionar
Vou detalhar os acontecimentos para identificação de brechas na execução:
1 º - Hoje por volta das 06:30 abri o meta, abri o grafico de Mils3, coloquei no prazo de operação, inseri o EA, habilitei ele para realizar operações e alterar o sinal, configurei os parametros e dei "ok";
2º - repeti o processo para os demais ativos com números magicos diferentes;
3º - Eu acompanho as operações pelo celular, não consigo acompanhar pelo computador;
4º - por volta das 09:00 pelo meta do celular eu vejo que ele já plotou as ordens no grafico e estão como "placed".
OBS: Nesse momento todas as ordens batem e constam somente 01 ordem para cada ativo que foi inserido, porem o preço de entrada está baseado em D+2, exemplo:
Hoje é 04/11, quando o EA plota a ordem ele entende que o fechamento anterior é 02/11, pois o dia 04/11 ainda não iniciou. E para estrategia o preço de entrada para 04/11 é o fechamento do dia 03/11
5º - Por volta das 10h que é o horario que abre o mercado avista que acontece a duplicidade de ordens
OBS: Eu, leigo, acredito que seja no momento em que o EA por exemplo vai alterar de "buy limit" para "buy stop", dependendo da abertura do dia atual, e nesse momento as 02 ordens são executadas.
O EA utiliza o preço de fechamento do ultimo candle para calcular a entrada para o dia atual e só deveria realizar 01 operação por dia.
Sugestão, e vejam se faz sentido e se é possivel:
o EA só enviar a ordem 01 segundo após a identificação do primeiro tick do dia atual.
Exemplo
- Hoje é 04/11/2022, o primeiro tick do dia foi as 10h 01min e 05s (10:01:05)
- O EA irá calcular a entrada de hoje 04/11, ás 10h 01min e 06s (10:01:05), seguindo os parâmetros configurados.
OBS: se o 1º tick do dia for em cima do preço de entrada (baseado no fechamento anterior) a ordem será "limit"; ou, se o 1º tick do dia for a baixo do preço de entrada (baseado no fechamento anteriro) a ordem será "stop".
Agradeço desde já.