Aprender e escrever juntos em MQL5 - página 26

 

Do Manual:

Все возникающие события клиентский терминал складывает в общую очередь.

...A fila do evento tem um tamanho limitado.

A fila do evento já foi falada várias vezes, mas não consegui encontrar o tamanho exacto. Qual é a profundidade da fila do evento? 64? 256? ...eventos?
 

Então, alguém me vai ajudar ou não? Na página 25, dois conselheiros...

Escaldado - repreendido. Agora ajude-me a compreender. Acusou-me de não lhe dar dados suficientes para analisar o problema. Não preciso de mais. Pode verificar o que quiser.

Acho que todos estão a testar os meus robôs... Vou esperar. Provavelmente, é necessário contratar um programador por dinheiro para ajudar a encontrar um bug.

A propósito, mais alguém se lembra como se chama o tópico do fio....?

 
Yedelkin:

Do Manual:

Houve alguma discussão sobre a fila do evento, mas não consegui encontrar o tamanho exacto. Qual é a profundidade da fila do evento? 64? 256? ...eventos?
Também queria perguntar: o que acontecerá se a fila de eventos começar a acumular-se e ficar entupida? Os novos eventos serão ignorados ou os que já estiverem na fila serão reiniciados? E quando isso acontecerá (em que evento da fila)?
 
Urain:
Também queria perguntar o que vai acontecer se a fila de eventos começar a acumular-se e a sufocar? novos eventos serão ignorados ou os que já estão na fila serão reiniciados? e, claro, quando é que isso vai acontecer (em que evento da fila)?

já respondeu

https://www.mql5.com/ru/forum/1621/43941#comment_43941

Таймер
Таймер
  • www.mql5.com
Предпосылки очень просты -- таймер обычно используется для синхронизации (ждем расчета данных) или обсервинга (зацикленный таймером эксперт, имхо, будет гораздо более адекватным).
 

Penso que ainda é necessária uma clarificação, há uma resposta, mas está desfocada, as minhas perguntas nem sequer são sugeridas.

Nem indicação exacta da duração da fila, nem quais os eventos que serão ignorados (o que quer dizer com "parte dos eventos será ignorada"?) que parte?, novos eventos ou aqueles já em fila? lógica é aqui impotente, uma vez que novos eventos podem ser mais importantes do que aqueles em fila, ou vice-versa.

Por isso, é melhor esclarecer este ponto.

 
Khomtchenko:

Então, alguém me vai ajudar ou não? Na página 25, dois conselheiros...

A friagem é repreensão. Agora ajude-me a compreender. Acusou-me de não lhe dar dados suficientes para analisar o problema. Não preciso de mais. Pode verificar o que quiser.

Acho que todos estão a testar os meus robôs... Vou esperar. Provavelmente, é necessário contratar um programador por dinheiro para ajudar a encontrar um bug.

A propósito, mais alguém se lembra como se chama o tópico do fio....?

Tem um deslize de 50 em mql4 e 10 em mql5. Tente definir o mesmo deslize, talvez a situação até se resolva porque muitas encomendas com um tal deslize podem simplesmente entrar em pedidos de reembolso.

Melhor ainda, em ambas as variantes, o deslize para o tamanho de propagação.

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
molotkovsm:

Vou repetir a pergunta:

Como posso eliminar correctamente todas as encomendas com um certo magik?

...

Preciso de percorrer a lista de encomendas de cima para baixo, por exemplo, desta forma:

Tentei fazer como disse, mas o problema mantém-se - a ordem pendente é apagada primeiro, depois é enviado outro pedido para apagar a mesma ordem. Aqui está um exemplo das linhas de registo:

2011.05.12 16:42:57 Traes '726238' : cancelar encomenda #4388299 comprar paragem 0.02 EURUSD a 1.41700 feito - encomenda eliminada com sucesso
2011.05.12 16:42:57 Comércios '726238' : cancelar encomenda #4388299 comprar paragem 0.02 EURUSD a 1.41700 - Outro pedido está a ser enviado
2011.05.12 16:42:58 Comércios '726238' : não conseguiu cancelar a encomenda #4388299 comprar 0,00 a 0,00000 [Pedido inválido] - foi comprada por alguma razão.

Isto não acontece sempre, mas por vezes, e não afecta o funcionamento do Conselheiro Especialista. Só quero fazer tudo certo, não para carregar o servidor comercial com pedidos vazios e para compreender o problema.

Obrigado pelas vossas respostas e pela vossa disponibilidade para ajudar.

-----------------
Vou tentar dar a minha opinião. Eliminar uma ordem com um certo número mágico ou qualquer outro não altera o assunto, bem como percorrer as ordens longitudinalmente ou transversalmente. Pode memorizar uma encomenda e depois apagá-la por bilhete, o erro irá ocasionalmente aparecer.

Como imagino, o servidor apagou de facto a ordem, como evidenciado pela mensagem no registo e na resposta de código retcode do servidor. Mas o terminal ainda não o sabe, ou seja, a encomenda ainda está a funcionar (ou sabe, mas dá informações desactualizadas à EA, embora tivesse falhado a verificação na altura) e no tique seguinte envia outro pedido para o apagar e obter um erro do servidor.

O facto de o servidor ter transformado uma ordem de paragem de compra numa simples ordem de compra, parece ser um erro do servidor: não distingue estas ordens no caso de um erro de pedido. Isto é algo para os criadores se lembrarem.

Como podemos evitar pedidos repetidos ? Penso que só há duas maneiras:

1. Após a eliminação bem sucedida, analisar o último historial, aguardando que a ordem eliminada apareça na mesma, e depois continuar.

2. Basta introduzir um atraso, digamos dois segundos, após a eliminação ter sido feita. Um segundo pode não ser suficiente.

Gostaria também de acrescentar que esta situação acontece não só com ordens pendentes, mas também com ordens de mercado, bem como com posições quando estas são alteradas. Isto acontece muito raramente e só pode ser notado quando se negoceia numa conta de demonstração durante muito tempo, mas no testador, é claro, não aparece. Além disso, após alterar uma posição, acontece que o nível de margem que existia antes da alteração é invertido, provavelmente também outros parâmetros da conta, não verifiquei.

 

У вас в mql4 стоит проскальзывание 50, а в mql5 10. Попробуйте поставить одинаковое проскальзывание возможно ситуация выровняется тк много приказов с таким слипажем может просто попадать на реквот.

E melhor ainda, em ambas as variantes, definir o escorregamento para otamanho do spread.

Vou tentar isso, mas é improvável que a situação melhore em vários aspectos.

Tenho problemas de programação ou está tudo bem?

 
Urain:

Penso que ainda é necessária uma clarificação, há uma resposta, mas está desfocada, as minhas perguntas nem sequer são sugeridas.

Nem a indicação exacta do comprimento da fila, nem quais os eventos que serão ignorados (o que quer dizer com "parte dos eventos será ignorada"?) que parte?, novos eventos ou aqueles já em fila? lógica é aqui impotente, porque talvez novos eventos possam ser mais importantes do que aqueles em fila, e talvez vice versa.

Por isso, é melhor esclarecer este ponto.

1)"pilhas em fila comum" - erro na documentação. Na realidade, há muitas filas de espera. Actualmente, cada programa mql5 e cada gráfico tem as suas próprias filas de espera. Os tamanhos das filas são diferentes e não são pequenos em geral, é pouco provável que o transbordo da fila seja suficiente para um programa correctamente escrito. Não documentaremos o tamanho exacto de cada fila, o seu número, ou qualquer outra descrição detalhada da implementação interna. A razão é bastante óbvia - a implementação interna pode mudar.

2) Quaisquer novos eventos, para os quais não haja espaço suficiente nesta fila em particular, serão ignorados.

Deixem-me lembrar-vos que os eventos de um novo tick e mudança de um gráfico só podem existir numa única instância na fila de eventos de entrada do programa mql5. A geração de eventos de criação e eliminação de objectos gráficos num gráfico pode ser activada/desactivada.

 

Pode dizer-me o que significam essas barras verdes no fundo? Em MT4 significavam volume de lote e foram sorteados quando o lote mudou. Mas para que serve aqui? Ou o volume do meu lote muda? Parece que não o mudo.