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
O looping é uma das técnicas de programação mais perigosas. Provoca erros estranhos e infreqüentes que são quase impossíveis de analisar.
Pelo contrário, você deve tentar terminar um fio de usuário o mais rápido possível, em vez de fazer looping. Se você quiser ter uma "mão no pulso" - analise a OnTradeTransaction no MT5. O MT4 geralmente não é adequado para tais jogos, porque a simplicidade é pior do que o roubo, como se diz.
Não me referia a uma realização concreta, mas ao princípio do tremor de TS após qualquer pausa. Bem e onde há uma fixação terrível - não está claro. Como não está claro, por que há uma pressa para terminar um fio do usuário.
Onde está o laço assustador lá - não está claro.
Chamar o OnTick da OnTick é um loop não trivial através da recursividade:
Também não é claro por que existe uma pressa para terminar o fio do usuário.
Estamos trabalhando com um modelo orientado por eventos. Portanto, precisamos lidar com o evento atual o mais rápido possível para esperar pelo próximo. O tempo gasto na rosca é um buraco negro. Quanto mais tempo passarmos no fluxo, mais ultrapassado será o ambiente comercial com o qual estamos trabalhando.
Chamar o OnTick da OnTick é um loop não trivial através da recursividade:
Aparentemente, esta é a única coisa que dissuade.
Estamos trabalhando com um modelo de evento. Portanto, precisamos lidar com o evento atual o mais rápido possível, a fim de esperar pelo próximo. O tempo gasto no fluxo é um buraco negro. Quanto mais tempo passarmos no fluxo, mais ultrapassado será o ambiente comercial com o qual trabalhamos.
s. Nós não nos entendemos de forma alguma. Não creio que possa haver qualquer diálogo entre nós.
:
Onde você viu uma pausa em seu código, cuja simples presença é a única razão para agitar o TS a partir do zero? Você não o tem!
Onde você viu uma pausa em seu código, cuja simples presença é a única razão para sacudir o TS do zero? Você não o tem!
Portanto, este código é uma ilustração do motivo pelo qual a linha atual deve ser encerrada o mais rápido possível. Você não deve sequer tentar solicitar o ambiente comercial na OnTick:
Uma vez que estamos no ponto em que as duas variáveis são comparadas, não podemos compará-las porque o ambiente continua mudando. Os valores em total_1 e total_2 ou não são mais iguais um ao outro, ou ambos são obsoletos, ou não contêm o número existente de pedidos, ou contêm os valores corretos. É inútil combater um ambiente comercial em mudança na OnTick, em vez disso, basta sair da OnTick, imediatamente após o loop for loop, e esperar por novos eventos indicando que o ambiente comercial mudou.
Portanto, este código é uma ilustração do motivo pelo qual a linha atual deve ser encerrada o mais rápido possível. Você não pode sequer tentar consultar o ambiente comercial na OnTick:
Uma vez que estamos no ponto em que as duas variáveis são comparadas, não podemos compará-las porque o ambiente continua mudando. Os valores em total_1 e total_2 ou não são mais iguais um ao outro, ou ambos são obsoletos, ou não contêm o número existente de pedidos, ou contêm os valores corretos. É inútil lutar para mudar o ambiente comercial na OnTick, ao invés disso, só precisamos sair da OnTick, logo após o loop for loop, e esperar por novos eventos indicando que o ambiente comercial mudou.
Então por que você fez pausas?!
Mais uma vez, após qualquer pausa (deslizes ou ordens de negociação síncrona) TC deve ser abalada - a lógica de negociação deve ser iniciada a partir do zero. Assim, se forem usadas ordens de comércio assíncronas, as pausas mencionadas não ocorrem e há uma saída do evento-função esperando por um novo evento. Se não houver operações assíncronas, toda a lógica comercial pode até mesmo ser colocada em um roteiro em loop.
Então por que você fez pausas?!
Mais uma vez, após qualquer pausa (deslizes ou ordens de negociação síncrona) o TS deve ser reiniciado - a lógica de negociação deve ser iniciada a partir do zero. Assim, se forem usadas ordens de comércio assíncronas, as pausas mencionadas não ocorrem e há uma saída do evento-função esperando por um novo evento. Se não houver operações assíncronas, toda a lógica comercial pode até mesmo ser colocada em um roteiro em loop.
Falarei de Thomas, e você falará de Yury. Em resumo, vamos terminar nosso diálogo. Continue a criar seus próprios scripts em loop. Sim, realmente funciona, mas não pode ser recomendado como um método de trabalho.
Estou interessado em saber sua opinião sobre esta situação na MT4, como eles lidam com isso?
O ToR do Expert Advisor é manter ordens pendentes e posições em aberto a uma certa distância fixa do preço atual em cada tick.
Deixe que as modificações do corretor demorem um pouco mais do que o intervalo de tempo médio entre os tiques de preço.
Assim, corremos em um ciclo reverso (na direção decrescente de SELECT_BY_POS) e fazemos a correspondente OrderModify.
Portanto, durante este loop, embalado no OnTick, pode acontecer o seguinte
O que fazer?
A questão está relacionada indiretamente à discussão acima, mas não é para sua continuação (tópico encerrado). Preciso resolver algumas nuances não óbvias no MT4Orders para o MT5. Portanto, seria útil ouvir as opiniões sobre as situações descritas por aqueles que são bons na MT4 especificamente. E não sou o único que pode achá-lo útil.
Resolva o problema através do OnTimer - esta é provavelmente a primeira sugestão. Mas não precisamos dele - apenas da OnTick.
Estou interessado em saber sua opinião sobre esta situação na MT4, como eles lidam com isso?
O ToR do Expert Advisor é manter ordens pendentes e posições em aberto a uma certa distância fixa do preço atual em cada tick.
Deixe que as modificações do corretor demorem um pouco mais do que o intervalo de tempo médio entre os tiques de preço.
Assim, corremos em um ciclo reverso (na direção decrescente de SELECT_BY_POS) e fazemos a correspondente OrderModify.
Portanto, durante este loop, embalado no OnTick, pode acontecer o seguinte
O que fazer?
A questão está relacionada indiretamente à discussão acima, mas não é para sua continuação (tópico encerrado). Preciso resolver algumas nuances não óbvias no MT4Orders para o MT5. Portanto, seria útil ouvir a opinião sobre as situações descritas por aqueles que são bons no MT4 especificamente. E não sou o único que pode achá-lo útil.
Para resolver o problema através do OnTimer - esta é provavelmente a primeira sugestão. Mas deixemos isso de lado - apenas OnTick.
Em primeiro lugar, a situação é não-standard e muito poucas pessoas, se é que alguma vez a resolveram.
Pura e teoricamente:
Não temos que organizar um loop inverso para OrderModify, então que seja direto.
Em seguida, vamos verificar as alterações da lista de pedidos
Se a quantidade de pedidos mudou, recomeçaremos este ciclo com uma nova quantidade de pedidos.
Uma pergunta a mais:
fxsaber:
É compreensível que se eles fossem acrescentados, eles ou outros não serão percebidos. Mas e se eles fossem simplesmente apagados? Não seríamos capazes de ir além da lista de pedidos?