Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
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 ().
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.
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.
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...
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.
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....?;)
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
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.
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!! )))))