Erros, bugs, perguntas - página 147

 
Vladix:

Existe a possibilidade em mql5 de acompanhar o estado de uma posição aberta, por exemplo, que esteja a ser fechada agora?

...

Mas depois vem o próximo tick, todos os passos acima são repetidos, a selecção da posição é feita, o volume é tirado e mais UMA posição é colocada na direcção do fecho.

O que pode ser feito para evitar isto?

Nada precisa de ser feito. Até o tick actual ser processado pela função OnTick(), todos os tick recebidos são ignorados.

O que acontece à posição em tempo real, pode ser rastreado usando a função OnTrade ().

Обработка торговых событий в эксперте при помощи функции OnTrade()
Обработка торговых событий в эксперте при помощи функции OnTrade()
  • 2010.06.01
  • KlimMalgin
  • www.mql5.com
В 5-ой версии языка MQL появилась масса нововведений, в том числе работа с событиями различных типов (события таймера, торговые события, пользовательские и т.д.). Возможность обработки событий позволяет создавать совершенно новый тип программ для автоматического и полуавтоматического трейдинга. В этой статье мы рассмотрим торговые события и напишем для функции OnTrade() код, который будет обрабатывать событие Trade.
 
Valmars:

Não há necessidade de fazer nada. Desde que o tick actual não seja processado pela função OnTick(), todas as carraças recém-chegadas são ignoradas.

O que acontece à posição em tempo real pode ser rastreado usando a função OnTrade ().

Se não fosse a execução assíncrona do pedido, tudo ficaria bem. Mas quando chega um tick, a posição é fechada, enquanto ainda está na lista quando chega o tick seguinte, então como podemos compreender se a posição é aberta, aberta ou fechada? Como processar eventos comerciais? Imho, uma operação básica não deve ser tão complicada.

Idealmente, ao tentar fechar uma posição, obtém o estatuto de "Fechado" ou "Processamento" ou qualquer outra coisa, pelo qual se pode determinar que está actualmente em processo de alguma acção, depois pode ser deixado sozinho com a consciência tranquila.

E agora, é preciso olhar através de muita história e compreender como tudo aconteceu, e não há garantias de que tudo será correcto.

 
Vladix:

Se não fosse a natureza assíncrona do pedido, tudo estaria bem. Mas quando chega um tick, a posição é fechada, e quando chega o tick seguinte, eles ainda estão na lista, então como podemos entender se estão abertos ou fechados? Como processar eventos comerciais? Imho, uma operação básica não deve ser tão complicada.

Idealmente, quando é feita uma tentativa de fechar uma posição, obterá um estatuto de "Fechado" ou "Processamento" ou o que quer que seja, o que indicaria que está actualmente em processo de algum tipo de acção, e depois pode ser deixado sozinho com a consciência tranquila.

E agora, é preciso olhar através de muita história e compreender como tudo aconteceu, e não há garantias de que tudo será correcto.

Não abrir posições de fecho em cada tic tac, fazer um atraso após cada operação comercial.
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
EQU:

Porquê... Quem pode dizer que NewBar não é um evento? )))))))))

OnNews - a notícia chega, o bot tem de a ler... Oficialmente. Não através do WinAPI de uma forma esquerdina.

1.NewBar - Um evento que pode implementar por si próprio. É provável que seja isto que eles aconselham. Uma vez perguntei sobre Connect e a resposta foi simples: tem de ser você mesmo a implementá-la.

Não é um problema - implementei-o e agora tento localizar quase tudo o que preciso com a ajuda do temporizador (já tenho cerca de 30 eventos). Quando terminar, o utilizador não pode alterar nenhum dos parâmetros em que estou interessado, de modo que o perito não soubesse.

2. OnNews - A ideia em geral é compreensível, poderia aderir. Embora, é provável que os criadores apontem para a presença de News.wav.

Apesar disso, há muito que procuro junto dos criadores expandir a funcionalidade da língua através da possibilidade de trabalhar com o calendário de notícias económicas e outras FA. Acha que eles farão tudo bem? Não me parece.

Já enviei a minha candidatura nesta ocasião, a esperança ainda está viva. Seria bom se um perito fizesse algum trabalho por conta própria...

Документация по MQL5: Основы языка / Функции
Документация по MQL5: Основы языка / Функции
  • www.mql5.com
Основы языка / Функции - Документация по MQL5
 
Vladix:

Se não fosse o pedido assíncrono, tudo ficaria bem. Mas quando chega um tick, a posição é fechada e no tick seguinte eles ainda estão na lista, e como podemos compreender se são abertos, abertos ou fechados? Como processar eventos comerciais? Imho, uma operação básica não deve ser tão complicada.

Idealmente, quando se tenta fechar uma posição, obtém-se o estatuto de "Fechado" ou "Processamento" ou o que quer que seja, através do qual se pode determinar que está actualmente no processo de algum tipo de acção, depois pode ser deixado sozinho com a consciência tranquila.

E agora, é preciso olhar através de muita história e compreender como tudo aconteceu, e não há garantias de que tudo será correcto.

Mesmo agora pode ser feito com facilidade, se souber como o fazer. Os programadores prometeram reescrever OnTrade(), acrescentar os parâmetros necessários. se feito, será ainda mais fácil de manusear.

Ninguém impede de lidar com tais situações no local, em OnTick() ou OnTime() - no local da operação comercial; ou em OnTrade(), se quiser apanhar acções dos utilizadores ou operações comerciais não controladas directamente a partir do código.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
Interesting:

1.NewBar - Um evento que você mesmo pode implementar. É provável que seja isto que eles aconselham. Uma vez fiz uma pergunta sobre Connect e a resposta foi simples - deve implementá-la você mesmo.

...

Estou um pouco confuso sobre como vejo OnNewBar...)

OnNewBar(ulong Param), onde Param - bitwise preencheu 1 em posições de tempo com nova barra... - Nem todos os gráficos são actualizados simultaneamente pelo número de barras...

Por exemplo ...

...00001 - apenas actualizado um minuto

...00111 - apenas um minuto, 2 e 3 são actualizados... e assim por diante...

É apenas uma ideia, mas penso que seria útil. Embora....?;)

 
EQU:

Estou um pouco confuso sobre como vejo OnNewBar)

OnNewBar(ulong Param), onde Param - preencher 1 em posições de tempo com uma nova barra... - Nem todos os gráficos são actualizados simultaneamente pelo número de barras...

Por exemplo ...

...00001 - apenas o minuto foi actualizado.

...00111 - apenas um minuto, 2 e 3 são actualizados... etc...

É apenas uma ideia, mas penso que seria útil. Embora....?;)

À custa do parâmetro, é necessário pensar. Vale a pena fazê-lo (pode ser, é mais fácil colocar TF lá como ENUM_TIMEFRAMES)?

Pelo menos, queria fazer algo assim, mas depois desisti...

PS

Esqueci-me de dizer que queria fazer a OnNewBar na classe Chart, na qual estou a trabalhar agora (neste momento ainda estou a empacotar ali coisas normais + as minhas próprias bagatelas agradáveis).

Só não me pergunte porque não gosto do CChart padrão... :)

 

Se precisar de localizar uma nova barra, verifique o meu código. pode ser útil. experimentei diferentes variantes - este método é o mais fiável

https://www.mql5.com/ru/code/107

isNewBar
isNewBar
  • votos: 7
  • 2010.05.07
  • Prival
  • www.mql5.com
Функция анализа появления нового бара на заданном таймфрейме.
 
Prival:

Se precisar de localizar uma nova barra, veja o meu código. pode vir a ser útil. tentei diferentes variantes - este método é o mais fiável

https://www.mql5.com/ru/code/107

O que há de errado com o último tempo de abertura do bar em comparação com o símbolo período SERIES_LASTBAR_DATE? Muito mais fácil do que a sua versão e não precisa de um indicador.


Além disso, para uma EA com várias moedas deve ser definida uma nova barra para cada símbolo, o que significa que o indicador deve ser inicializado para todos os símbolos.

 
Prival:

Se precisar de localizar uma nova barra, veja o meu código. pode vir a ser útil. tentei diferentes variantes - este método é o mais fiável

https://www.mql5.com/ru/code/107

Novamente - código... código... O código é bom... mas também o são as tácticas, os loops... ;)

O gráfico não recebe uma mensagem sobre a criação de um novo bar? Eu não acredito...)))

É um problema fazer dele um evento? É pelo menos uma variável predefinida?

Em geral, é mais fácil processar eventos do que preencher uma montanha de códigos. E para além disso - com erros (PROGRAMAS SEM ERROS NÃO FAZEM TUDO!! )))))

Razão: