Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 1060

 
abeiks:

Aqui você pode encontrar parte das respostas: https://www.mql5.com/ru/forum/131859


1. Obrigado, mas não encontrei a resposta. Existe uma função SetOrder(), mas é a mesma que OrderSend() essencialmente. Não se pode abrir várias ordens ao mesmo tempo com esta função.
 
smart_man:
1. Obrigado, mas ainda não encontrei a resposta. Há uma função SetOrder(), mas é a mesma que OrderSend() em essência. Não se pode abrir várias ordens ao mesmo tempo com esta função.

Você não pode abrir várias ordens ao mesmo tempo com qualquer função, porque o servidor executa as ordens uma a uma e não em paralelo, e as ordens são de todos os clientes, não apenas as suas.

Na melhor das hipóteses, as ordens serão abertas com alguns milissegundos de diferença, uma após a outra, mas somente se houver alguma demanda no mercado.

 
evillive:

Você não pode abrir várias ordens ao mesmo tempo com qualquer função, porque o servidor executa as ordens uma a uma e não em paralelo, e as ordens são de todos os clientes, não apenas as suas.

No melhor dos casos, as ordens serão abertas com alguns milissegundos de diferença, uma após a outra, mas isso só se houver uma demanda no mercado.

Vejo que você entendeu o problema! A única coisa que me vem à mente é se abrirmos estas ordens por pendente. É então possível abri-los ao mesmo tempo?
 
smart_man:
Lá, posso ver que você entende o problema! A única coisa em que consigo pensar é se você abrir estas ordens de forma pendente. Então é possível abri-los ao mesmo tempo?
Não, o servidor ainda as executa uma a uma, pendentes ou no mercado.
 
evillive:
Não, o servidor ainda as executará uma a uma, pendentes ou de mercado.

1. então a questão da "simultaneidade" é eliminada. Então, neste aspecto, não há diferença entre abrir um mercado ou um mercado pendente.

2. É correto verificar manualmente em cada tick se o pedido fechou, a fim de pegar o momento desse mesmo fechamento (por TP ou SL) ou se há funções prontas?

 
smart_man:

1. então a questão da "simultaneidade" é eliminada. Então, neste aspecto, não há diferença entre abertura de mercado ou pendente.

2. É correto verificar manualmente a cada tick se o pedido está fechado, a fim de determinar o momento desse mesmo fechamento (por TP ou SL) ou há funções prontas?

2 Veja com atenção: https://www.mql5.com/ru/forum/131859

isCloseLastPosByStop();
isCloseLastPosByTake();
 
O que significa esta linha: PostMessageA(hwnd, WM_COMMAND, 0x822c, 0)? Não consigo encontrar o propósito disso.
 

Você pode aconselhar qual empresa de corretagem escolher? Interessado em problemas de depósito/retirada, bem como na confiabilidade das cotações. Por exemplo, os resultados de testes do servidor Alpari são muito diferentes das metaquotas em favor deste último. Os parâmetros do castiçal em diferentes servidores têm valores diferentes, etc.

É interessante que a Alpari e o clube forex não tinham licença na semana passada, houve buscas da Teletrade. Como continuar a viver?

 

Olá a todos. Eu quero fazer uma função personalizada totalmente autônoma. Não há problema com a emulação OnInit(). A função do usuário em si é executada por definição. Mas eu tenho problemas com o pseudoOnDeinit(const int razão).

Esclarecendo a tarefa. A função do usuário deve apagar seus objetos gráficos na última passagem e, por exemplo, salvar alguns dados em variáveis globais do terminal.

Em um programa em loop, o sinal de término do programa pode ser IsStopped()==verdadeiro. Em um programa não inclinado, é sempre=0. Não é um método universal.

Eu tentei chamar a função UninitializeReason() da OnTick(). O resultado é sempre=0. No entanto, seria lógico fazê-la dar o valor do motivo da desinicialização iminente no último passe.

Portanto, a função UninitializeReason() é truncada e só pode ser usada dentro do OnDeinit(const int razão).

Todas as funções do usuário podem ser adicionalmente especificadas na função de desinicialização OnDeinit(const int razão) e um dos parâmetros obrigatórios passados para a função do usuário deve ser a razão - o motivoda desinicialização.

A presença de valor não zero passado de OnDeinit(const int razão) para a função do usuário será o sinal de desligamento do programa principal.

Talvez haja outras maneiras e variáveis de sistema necessárias para este fim. Escreva para mim. Compartilhe suas experiências. Se você não está arrependido. ;-)

 
kosmos0975:

Eu tentei chamar a função UninitializeReason() da OnTick(). O resultado é sempre 0, embora fosse lógico fazê-lo dar a razão para a próxima desinicialização no último passe.

De que outra forma poderia ser? Se você fechar o terminal entre carrapatos, OnTick() não é executado, e portanto nenhum evento que chama UninitializeReason() é tratado.
Razão: