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
Devo ter perdido um tópico como este. Onde posso ver a função de verificação de encomendas da KimV?
É para a 4ª versão, mas pode dar uma vista de olhos, pode ser útil. Pode consultar no seu site, na secção "bibliotecas gratuitas", a biblioteca para fazer encomendas.
de um quatro não vai funcionar. Eu uso
PositionSelect
Selecciona uma posição aberta para posterior manipulação. Retorna verdadeiro se a função for concluída com sucesso. Retorna falso se a função falhar. Para obter a informação sobre o erro, chamar a função GetLastError().
boolPositionSelect(
símbolo de corda// nome da ferramenta
);
Parâmetros
símbolo
[em] Nome do instrumento financeiro.
Valor devolvido
Valor do tipo bool.
Nota
Para cada símbolo, apenas uma posição pode ser aberta em qualquer altura, que é o resultado de um ou vários ofícios. As posições e ordens pendentes activas que também são apresentadas no separador "Comércio" do painel "Caixa de ferramentas" do terminal do cliente não devem ser misturadas.
A função PositionSelect() copia os dados sobre a posição para o ambiente do programa, e as chamadas subsequentes PositionGetDouble(), PositionGetInteger() e PositionGetString() devolvem os dados previamente copiados. Isto significa que a posição em si pode já não existir (ou pode ter mudado em volume, direcção, etc.), mas os dados desta posição ainda podem ser recuperados. A fim de garantir a aquisição de novos dados de posição, recomenda-se que se chame a função PositionSelect() imediatamente antes de se candidatar a eles.
de um quadrigêmeo não vai funcionar. Eu uso PositionSelect para definir a posição
Está a analisar estas situações nas pré-alterações de um tick ou em carraças diferentes?
OK, vou proceder a partir do seguinte:
Um tick é uma alteração no preço de um instrumento. A frequência de tais mudanças é imprevisível: de várias por segundo a várias por hora. De forma correspondente, as funções OrderSend() e PositionSelect() não devem depender da actividade das carraças. E como é assim, penso que devemos verificar para evitar a duplicação de encomendas (e analisar as situações correspondentes) sem relação com o comportamento (frequência) das carraças.
Assim, tenho dificuldade em responder à pergunta com precisão :/.
Não era isso que eu queria dizer quando fiz a minha pergunta. O manipulador de eventos OnTick() é accionado quando chega o próximo tick. Por causa disto, estou a reformular a minha pergunta:
Analisa estas situações dentro de uma chamada OnTick() ou diferentes?
Bem, ainda não consegui obter uma resposta num tick, executa OrderSend() e PositionSelect()?
Quero sugerir-lhe que faça estas consultas não dentro de um tique (accionando OnTick()), mas em dois tques:
- no primeiro tick
ou seja, se o pedido for bem sucedido, o operador coloca a bandeira de abertura de posição para comprar=verdadeiro, e interrompe a execução de OnTick() até ao próximo tick (activando o retorno do operador OnTick()).
- No segundo tick - PositionSelect().
Neste caso, não há duplicação da abertura de posições.
Não há garantia de que a posição já será aberta no próximo tick. Medir o tempo que leva a abrir uma posição quando se estabelece uma ordem manualmente,
Aconselho-o a mover o controlo de execução da ordem para OnTrade(), este evento é gerado apenas como uma resposta do servidor a uma operação comercial.
Embora não esteja muito claro para mim porque existem 4 eventos OnTrade() por encomenda ?
Bem, ainda não consegui obter uma resposta num tick, executa OrderSend() e PositionSelect()?
De acordo com a sua terminologia, acontece que as minhas funções OrderSend() e PositionSelect() são executadas "dentro de um tick".
...quero sugerir que estas consultas sejam executadas não dentro de um único tique (desencadeamento de OnTick()), mas dentro de dois tques:
- no primeiro tick
ou seja, se o pedido responder com sucesso, o utilizador coloca uma bandeira para abrir posição em buy=true, e interrompe a execução de OnTick() até ao próximo tick (desencadeamento do retorno do operador OnTick()).
- No segundo tick - PositionSelect().
Nesta variante não haverá abertura duplicada de posições.
Um pouco antes escrevi, que a execução das funções OrderSend() e PositionSelect() não tem nada a ver com a chegada/não chegada de carraças. E expliquei brevemente porquê. Portanto, a verificação "no segundo tick - PositionSelect()" não nos deve impedir de duplicar as encomendas em todos os casos possíveis.
Embora não esteja muito claro para mim porque existem 4 eventos OnTrade() por encomenda ?
Houve um artigo sobre o assunto no passado sobre a OnTrade().
Não há garantias de que a posição já será aberta no próximo tick...
Bem, ainda não consegui obter uma resposta num tick, executa OrderSend() e PositionSelect()?
Quero sugerir-lhe que faça estas consultas não dentro de um tique (accionando OnTick()), mas em dois tques:
- no primeiro tick
ou seja, se o pedido for bem sucedido, o operador coloca a bandeira de abertura de posição para comprar=verdadeiro, e interrompe a execução de OnTick() até ao próximo tick (activando o retorno do operador OnTick()).
- No segundo tick - PositionSelect().
Neste caso, não há duplicação da abertura de posições.
Não - não no carrapato. No 1º segundo.
Aqui está uma simplificação:
portanto - se sem uma pausa, abrirá 2 ordens seguidas. Mas eu defini-o durante 3 segundos - e não me arrependo de o ter feito )))) Ainda assim, é a abertura da encomenda.
A contabilidade das encomendas no MT5 é uma ciência completa:tratar de eventos comerciais no Expert Advisor utilizando a função OnTrade()
Nenhuma pausa o poupará de reabrir, uma situação pode sempre ocorrer, em que a ordem levará mais 1 segundo a ser executada.
ps: E não se esqueça da magia.